From c6d38e342b0bade2b5107cf6aae03593d11cd2f7 Mon Sep 17 00:00:00 2001 From: Damimani Date: Fri, 6 Mar 2026 07:01:31 +0100 Subject: [PATCH 01/52] Update provinces.png --- map_data/provinces.png | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/map_data/provinces.png b/map_data/provinces.png index 4c4d6d24..05179637 100644 --- a/map_data/provinces.png +++ b/map_data/provinces.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7ffad896d2344a8f82209aa23a5f2d42f391ca90836d6122040ffdc35b4497d -size 276 +oid sha256:bcf7bdbf34361995d565c60a757f1647d8545989c81f424d2ff32681d9010502 +size 922153 From 4adedd60b2af9e3a42330f6c993b6022a68f7a40 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Fri, 6 Mar 2026 09:39:47 +0000 Subject: [PATCH 02/52] Update provinces.png --- map_data/provinces.png | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/map_data/provinces.png b/map_data/provinces.png index 05179637..059e8146 100644 --- a/map_data/provinces.png +++ b/map_data/provinces.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bcf7bdbf34361995d565c60a757f1647d8545989c81f424d2ff32681d9010502 -size 922153 +oid sha256:bf5e9d6853b5dbeb87dbbd8da90b1c1c7ed3339a5d6ccb2ec707a95e5db237b9 +size 3320987 From bbdd8743c29e3e85ecd2709d25e1d9f1de238b7a Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Fri, 6 Mar 2026 10:08:00 +0000 Subject: [PATCH 03/52] positions --- gfx/map/map_object_data/activities.txt | 28 +- gfx/map/map_object_data/building_locators.txt | 30 +-- gfx/map/map_object_data/combat_locators.txt | 26 +- .../generated/reeds_01_generator_1.txt | 72 ++--- .../generated/tree_leaf_high_generator_1.txt | 250 +++++++++--------- .../generated/tree_leaf_high_generator_2.txt | 48 ++-- .../generated/tree_leaf_high_generator_3.txt | 146 +++++----- .../generated/tree_pine_01_b_generator_1.txt | 171 ++++++------ .../map_object_data/player_stack_locators.txt | 24 +- gfx/map/map_object_data/siege_locators.txt | 32 +-- ...religion_tolerance doctrines_l_english.yml | 76 +++--- map_data/default.map | 6 - map_data/definition.csv | 9 +- map_data/nodes.dat | Bin 44739232 -> 44739232 bytes map_data/provinces.png | 4 +- 15 files changed, 458 insertions(+), 464 deletions(-) diff --git a/gfx/map/map_object_data/activities.txt b/gfx/map/map_object_data/activities.txt index a70d4583..0c7e6825 100644 --- a/gfx/map/map_object_data/activities.txt +++ b/gfx/map/map_object_data/activities.txt @@ -9829,7 +9829,7 @@ } { id=2045 - position={ 1403.282837 0.000000 2751.008057 } + position={ 1413.626709 0.000000 2754.532227 } rotation={ -0.000000 0.366755 -0.000000 0.930317 } scale={ 1.000000 1.000000 1.000000 } } @@ -12379,7 +12379,7 @@ } { id=2469 - position={ 1411.015503 0.000000 2755.077637 } + position={ 1403.749268 0.000000 2740.369629 } rotation={ -0.000000 0.193564 -0.000000 0.981088 } scale={ 1.000000 1.000000 1.000000 } } @@ -12463,7 +12463,7 @@ } { id=2483 - position={ 1467.129517 0.000000 2725.912354 } + position={ 1469.458130 0.000000 2734.698730 } rotation={ -0.000000 -0.392994 -0.000000 0.919541 } scale={ 1.000000 1.000000 1.000000 } } @@ -12475,7 +12475,7 @@ } { id=2487 - position={ 1459.608154 0.000000 2742.026855 } + position={ 1464.214478 0.000000 2726.665527 } rotation={ -0.000000 0.291570 -0.000000 0.956549 } scale={ 1.000000 1.000000 1.000000 } } @@ -12733,7 +12733,7 @@ } { id=2530 - position={ 1566.953125 0.000000 2717.369141 } + position={ 1577.432007 0.000000 2728.869873 } rotation={ -0.000000 0.342904 -0.000000 0.939371 } scale={ 1.000000 1.000000 1.000000 } } @@ -12745,7 +12745,7 @@ } { id=2532 - position={ 1526.015869 0.000000 2703.123535 } + position={ 1531.042969 0.000000 2729.244385 } rotation={ -0.000000 0.378847 -0.000000 0.925459 } scale={ 1.000000 1.000000 1.000000 } } @@ -12787,7 +12787,7 @@ } { id=2540 - position={ 1574.146362 0.000000 2704.098145 } + position={ 1559.707642 0.000000 2694.510742 } rotation={ -0.000000 0.322644 -0.000000 0.946520 } scale={ 1.000000 1.000000 1.000000 } } @@ -13531,7 +13531,7 @@ } { id=2666 - position={ 1589.557129 0.000000 2768.855713 } + position={ 1569.898071 0.000000 2761.520020 } rotation={ -0.000000 0.444351 -0.000000 0.895853 } scale={ 1.000000 1.000000 1.000000 } } @@ -47089,7 +47089,7 @@ } { id=8720 - position={ 1354.265991 0.000000 2694.180420 } + position={ 1352.600342 0.000000 2714.070801 } rotation={ 0.000000 0.674694 0.000000 0.738098 } scale={ 1.000000 1.000000 1.000000 } } @@ -47575,31 +47575,31 @@ } { id=8805 - position={ 7193.000000 0.000000 2082.000000 } + position={ 1382.749878 0.000000 2738.235352 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8806 - position={ 7171.000000 0.000000 2106.000000 } + position={ 1597.965210 0.000000 2854.218262 } rotation={ 0.000000 0.447214 0.000000 0.894427 } scale={ 1.000000 1.000000 1.000000 } } { id=8807 - position={ 7159.000000 0.000000 2139.000000 } + position={ 1621.633423 0.000000 2873.759277 } rotation={ 0.000000 0.741453 0.000000 0.671005 } scale={ 1.000000 1.000000 1.000000 } } { id=8808 - position={ 7149.000000 0.000000 2129.000000 } + position={ 1610.778564 0.000000 2856.572998 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8809 - position={ 7202.000000 0.000000 2375.000000 } + position={ 1631.239746 0.000000 2867.109131 } rotation={ 0.000000 0.544914 0.000000 0.838492 } scale={ 1.000000 1.000000 1.000000 } } diff --git a/gfx/map/map_object_data/building_locators.txt b/gfx/map/map_object_data/building_locators.txt index 164e9055..f86a538d 100644 --- a/gfx/map/map_object_data/building_locators.txt +++ b/gfx/map/map_object_data/building_locators.txt @@ -9793,7 +9793,7 @@ } { id=2045 - position={ 1412.120361 0.000000 2741.724121 } + position={ 1426.676392 0.000000 2744.912598 } rotation={ -0.000000 -0.933741 -0.000000 -0.357949 } scale={ 1.000000 1.000000 1.000000 } } @@ -12337,7 +12337,7 @@ } { id=2469 - position={ 1425.134644 0.000000 2743.374023 } + position={ 1400.977295 0.000000 2746.589600 } rotation={ -0.000000 -0.664740 -0.000000 -0.747075 } scale={ 1.000000 1.000000 1.000000 } } @@ -12421,7 +12421,7 @@ } { id=2483 - position={ 1457.473022 0.000000 2731.476807 } + position={ 1469.757202 0.000000 2746.084717 } rotation={ -0.000000 -0.985503 -0.000000 0.169661 } scale={ 1.000000 1.000000 1.000000 } } @@ -12433,7 +12433,7 @@ } { id=2487 - position={ 1464.666138 0.000000 2744.665283 } + position={ 1451.517090 0.000000 2741.303955 } rotation={ -0.000000 -0.984356 -0.000000 -0.176193 } scale={ 1.000000 1.000000 1.000000 } } @@ -12691,7 +12691,7 @@ } { id=2530 - position={ 1564.934814 0.000000 2707.250732 } + position={ 1573.819702 0.000000 2714.479004 } rotation={ -0.000000 -0.848194 -0.000000 0.529686 } scale={ 1.000000 1.000000 1.000000 } } @@ -12703,7 +12703,7 @@ } { id=2532 - position={ 1515.157227 0.000000 2703.235352 } + position={ 1538.323608 0.000000 2720.384521 } rotation={ -0.000000 -0.879584 -0.000000 0.475744 } scale={ 1.000000 1.000000 1.000000 } } @@ -12745,7 +12745,7 @@ } { id=2540 - position={ 1572.727051 0.000000 2710.640625 } + position={ 1563.563110 0.000000 2701.572998 } rotation={ -0.000000 -0.651654 -0.000000 -0.758516 } scale={ 1.000000 1.000000 1.000000 } } @@ -47047,7 +47047,7 @@ } { id=8720 - position={ 1338.748901 0.000000 2686.619629 } + position={ 1355.682495 0.000000 2695.168213 } rotation={ -0.000000 -0.000000 -0.000000 1.000000 } scale={ 1.000000 1.000000 1.000000 } } @@ -47533,31 +47533,31 @@ } { id=8805 - position={ 7193.000000 0.000000 2082.000000 } + position={ 1383.968384 0.000000 2747.897949 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8806 - position={ 7171.000000 0.000000 2106.000000 } + position={ 1586.579224 0.000000 2847.257080 } rotation={ 0.000000 0.447214 0.000000 0.894427 } scale={ 1.000000 1.000000 1.000000 } } { id=8807 - position={ 7159.000000 0.000000 2139.000000 } + position={ 1615.170288 0.000000 2868.090088 } rotation={ 0.000000 0.741453 0.000000 0.671005 } scale={ 1.000000 1.000000 1.000000 } } { id=8808 - position={ 7149.000000 0.000000 2129.000000 } - rotation={ 0.000000 -0.316228 0.000000 0.948683 } + position={ 1610.463257 0.000000 2850.858398 } + rotation={ -0.000000 -0.362610 -0.000000 0.931941 } scale={ 1.000000 1.000000 1.000000 } } { id=8809 - position={ 7202.000000 0.000000 2375.000000 } + position={ 1620.407349 0.000000 2856.925537 } rotation={ 0.000000 0.544914 0.000000 0.838492 } scale={ 1.000000 1.000000 1.000000 } } @@ -51757,7 +51757,7 @@ } { id=9713 - position={ 1419.929199 0.000000 2830.758301 } + position={ 1418.928101 0.000000 2826.027832 } rotation={ 0.000000 0.835271 0.000000 -0.549838 } scale={ 1.000000 1.000000 1.000000 } } diff --git a/gfx/map/map_object_data/combat_locators.txt b/gfx/map/map_object_data/combat_locators.txt index 8de1dd62..53120bee 100644 --- a/gfx/map/map_object_data/combat_locators.txt +++ b/gfx/map/map_object_data/combat_locators.txt @@ -11515,7 +11515,7 @@ } { id=2045 - position={ 1399.453491 0.000000 2749.870850 } + position={ 1427.545654 0.000000 2743.274658 } rotation={ -0.000000 -0.912686 -0.000000 0.408662 } scale={ 1.000000 1.000000 1.000000 } } @@ -14059,7 +14059,7 @@ } { id=2469 - position={ 1421.994629 0.000000 2743.736816 } + position={ 1412.948242 0.000000 2743.091797 } rotation={ -0.000000 -0.698606 -0.000000 0.715506 } scale={ 1.000000 1.000000 1.000000 } } @@ -14143,7 +14143,7 @@ } { id=2483 - position={ 1452.505127 0.000000 2742.161133 } + position={ 1467.217529 0.000000 2742.307373 } rotation={ -0.000000 0.091379 -0.000000 0.995816 } scale={ 1.000000 1.000000 1.000000 } } @@ -14155,7 +14155,7 @@ } { id=2487 - position={ 1462.739014 0.000000 2746.988037 } + position={ 1460.292358 0.000000 2729.144531 } rotation={ 0.000000 0.000000 0.000000 1.000000 } scale={ 1.000000 1.000000 1.000000 } } @@ -14413,8 +14413,8 @@ } { id=2530 - position={ 1563.332153 0.000000 2703.029785 } - rotation={ -0.000000 -0.561344 -0.000000 0.827583 } + position={ 1574.147217 0.000000 2710.347412 } + rotation={ -0.000000 0.665102 -0.000000 0.746753 } scale={ 1.000000 1.000000 1.000000 } } { @@ -14425,7 +14425,7 @@ } { id=2532 - position={ 1524.000000 0.000000 2713.000000 } + position={ 1534.132812 0.000000 2717.060059 } rotation={ -0.000000 -0.735100 -0.000000 0.677959 } scale={ 1.000000 1.000000 1.000000 } } @@ -14467,7 +14467,7 @@ } { id=2540 - position={ 1574.539307 0.000000 2708.362793 } + position={ 1563.835327 0.000000 2700.406006 } rotation={ -0.000000 -0.043443 -0.000000 0.999056 } scale={ 1.000000 1.000000 1.000000 } } @@ -50545,31 +50545,31 @@ } { id=8805 - position={ 7193.000000 0.000000 2082.000000 } + position={ 1383.968384 0.000000 2747.897949 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8806 - position={ 7171.000000 0.000000 2106.000000 } + position={ 1586.579224 0.000000 2847.257080 } rotation={ 0.000000 0.447214 0.000000 0.894427 } scale={ 1.000000 1.000000 1.000000 } } { id=8807 - position={ 7159.000000 0.000000 2139.000000 } + position={ 1615.170288 0.000000 2868.090088 } rotation={ 0.000000 0.741453 0.000000 0.671005 } scale={ 1.000000 1.000000 1.000000 } } { id=8808 - position={ 7149.000000 0.000000 2129.000000 } + position={ 1610.463257 0.000000 2850.858398 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8809 - position={ 7202.000000 0.000000 2375.000000 } + position={ 1624.154053 0.000000 2859.959229 } rotation={ 0.000000 0.544914 0.000000 0.838492 } scale={ 1.000000 1.000000 1.000000 } } diff --git a/gfx/map/map_object_data/generated/reeds_01_generator_1.txt b/gfx/map/map_object_data/generated/reeds_01_generator_1.txt index 3a5d5a14..7b800179 100644 --- a/gfx/map/map_object_data/generated/reeds_01_generator_1.txt +++ b/gfx/map/map_object_data/generated/reeds_01_generator_1.txt @@ -1633,7 +1633,7 @@ 957.370178 0.000000 3370.666016 0.000000 0.126023 0.000000 0.992027 0.718724 0.718724 0.718724 973.417786 0.000000 3369.348633 0.000000 0.722880 0.000000 0.690973 0.824790 0.824790 0.824790 974.997253 0.000000 3363.798828 0.000000 0.420760 0.000000 0.907172 0.809897 0.809897 0.809897 -981.753479 0.000000 3376.611816 0.000000 0.735445 0.000000 0.677585 0.756522 0.756522 0.756522 +981.753479 0.000000 3376.611816 0.000000 0.735445 0.000000 0.677584 0.756522 0.756522 0.756522 978.262512 0.000000 3363.952637 0.000000 0.371960 0.000000 0.928249 0.795064 0.795064 0.795064 977.742981 0.000000 3373.975342 0.000000 0.127294 0.000000 0.991865 0.632503 0.632503 0.632503 985.076599 0.000000 3374.294189 0.000000 0.124066 0.000000 0.992274 0.501677 0.501677 0.501677 @@ -2307,7 +2307,7 @@ 1758.216797 0.000000 2452.584717 0.000000 0.561227 0.000000 0.827662 0.951321 0.951321 0.951321 1761.724854 0.000000 2452.705078 0.000000 0.565445 0.000000 0.824786 0.915258 0.915258 0.915258 1753.755371 0.000000 2450.523682 0.000000 0.048520 0.000000 0.998822 0.920192 0.920192 0.920192 -1755.947754 0.000000 2451.727295 0.000000 0.567824 0.000000 0.823150 0.958962 0.958962 0.958962 +1755.947754 0.000000 2451.727295 0.000000 0.567825 0.000000 0.823150 0.958962 0.958962 0.958962 1758.784058 0.000000 2450.255859 0.000000 0.226701 0.000000 0.973964 0.909533 0.909533 0.909533 1746.363647 0.000000 2449.268555 0.000000 0.518745 0.000000 0.854929 0.874560 0.874560 0.874560 1745.483521 0.000000 2447.584473 0.000000 0.580112 0.000000 0.814537 0.919198 0.919198 0.919198 @@ -2895,7 +2895,7 @@ 1315.488281 0.000000 3410.610596 0.000000 0.142113 0.000000 0.989850 0.850246 0.850246 0.850246 1320.821899 0.000000 3397.771729 0.000000 0.152446 0.000000 0.988312 0.323958 0.323958 0.323958 1319.431885 0.000000 3425.172607 0.000000 0.491564 0.000000 0.870842 0.844321 0.844321 0.844321 -1358.827393 0.000000 3390.062988 0.000000 0.617445 0.000000 0.786614 0.459826 0.459826 0.459826 +1358.827393 0.000000 3390.062988 0.000000 0.617444 0.000000 0.786614 0.459826 0.459826 0.459826 1319.824707 0.000000 3422.639404 0.000000 0.064678 0.000000 0.997906 0.248003 0.248003 0.248003 1367.815796 0.000000 3409.521484 0.000000 0.393407 0.000000 0.919364 0.682578 0.682578 0.682578 1355.948975 0.000000 3396.742432 0.000000 0.116865 0.000000 0.993148 0.437483 0.437483 0.437483 @@ -2973,7 +2973,7 @@ 1309.506226 0.000000 3405.445557 0.000000 0.096203 0.000000 0.995362 0.480976 0.480976 0.480976 1301.450195 0.000000 3395.298584 0.000000 0.253891 0.000000 0.967233 0.816281 0.816281 0.816281 1308.660645 0.000000 3410.228760 0.000000 0.239786 0.000000 0.970826 0.349860 0.349860 0.349860 -1332.884888 0.000000 3416.401123 0.000000 0.526503 0.000000 0.850173 0.558514 0.558514 0.558514 +1332.884888 0.000000 3416.401123 0.000000 0.526504 0.000000 0.850173 0.558514 0.558514 0.558514 1349.217285 0.000000 3411.287598 0.000000 0.660635 0.000000 0.750707 0.811329 0.811329 0.811329 1329.639648 0.000000 3406.895996 0.000000 0.627954 0.000000 0.778250 0.507920 0.507920 0.507920 1301.934326 0.000000 3428.858398 0.000000 0.288267 0.000000 0.957550 0.827657 0.827657 0.827657 @@ -3665,7 +3665,7 @@ 1755.947754 0.000000 3315.539795 0.000000 0.252326 0.000000 0.967642 0.770068 0.770068 0.770068 1784.274658 0.000000 3334.715576 0.000000 0.019479 0.000000 0.999810 0.585596 0.585596 0.585596 1785.434448 0.000000 3317.746094 0.000000 0.351102 0.000000 0.936337 0.267723 0.267723 0.267723 -1749.427856 0.000000 3323.975830 0.000000 0.565999 0.000000 0.824406 0.818535 0.818535 0.818535 +1749.427856 0.000000 3323.975830 0.000000 0.566000 0.000000 0.824406 0.818535 0.818535 0.818535 1747.281738 0.000000 3343.310791 0.000000 0.614333 0.000000 0.789047 0.623180 0.623180 0.623180 1762.480957 0.000000 3311.363281 0.000000 0.483460 0.000000 0.875367 0.773747 0.773747 0.773747 1764.223755 0.000000 3315.615967 0.000000 0.601457 0.000000 0.798905 0.912201 0.912201 0.912201 @@ -4634,7 +4634,7 @@ 491.656494 0.000000 3525.562744 0.000000 0.097146 0.000000 0.995270 0.433487 0.433487 0.433487 489.944336 0.000000 3487.227539 0.000000 0.523422 0.000000 0.852074 0.783563 0.783563 0.783563 464.059967 0.000000 3491.370605 0.000000 0.622098 0.000000 0.782939 0.761994 0.761994 0.761994 -492.254364 0.000000 3523.341553 0.000000 0.599948 0.000000 0.800039 0.717546 0.717546 0.717546 +492.254364 0.000000 3523.341553 0.000000 0.599949 0.000000 0.800039 0.717546 0.717546 0.717546 484.516602 0.000000 3493.524170 0.000000 0.319920 0.000000 0.947445 0.630079 0.630079 0.630079 491.224182 0.000000 3511.079346 0.000000 0.430818 0.000000 0.902439 0.749945 0.749945 0.749945 484.110107 0.000000 3490.353027 0.000000 0.353001 0.000000 0.935623 0.365616 0.365616 0.365616 @@ -6465,7 +6465,7 @@ 2206.379639 0.000000 3635.704834 0.000000 0.352282 0.000000 0.935894 0.591923 0.591923 0.591923 2203.425781 0.000000 3646.587891 0.000000 0.731494 0.000000 0.681848 0.690934 0.690934 0.690934 2209.995361 0.000000 3635.653320 0.000000 0.002853 0.000000 0.999996 0.213196 0.213196 0.213196 -2209.101807 0.000000 3661.400879 0.000000 0.375336 0.000000 0.926889 0.505513 0.505513 0.505513 +2209.101807 0.000000 3661.400879 0.000000 0.375335 0.000000 0.926889 0.505513 0.505513 0.505513 2208.069824 0.000000 3634.193359 0.000000 0.586101 0.000000 0.810238 0.526015 0.526015 0.526015 2196.963379 0.000000 3651.815918 0.000000 0.423725 0.000000 0.905791 0.615230 0.615230 0.615230 2262.099121 0.000000 3646.251221 0.000000 0.639694 0.000000 0.768629 0.875243 0.875243 0.875243 @@ -8867,7 +8867,7 @@ 2433.364502 0.000000 3315.161621 0.000000 0.347050 0.000000 0.937847 0.672033 0.672033 0.672033 2382.478027 0.000000 3323.850830 0.000000 0.040938 0.000000 0.999162 0.896878 0.896878 0.896878 2421.494629 0.000000 3317.232422 0.000000 0.092325 0.000000 0.995729 0.557110 0.557110 0.557110 -2391.950195 0.000000 3313.045654 0.000000 0.502440 0.000000 0.864612 0.973927 0.973927 0.973927 +2391.950195 0.000000 3313.045654 0.000000 0.502441 0.000000 0.864612 0.973927 0.973927 0.973927 2382.554443 0.000000 3335.402588 0.000000 0.661985 0.000000 0.749517 0.968269 0.968269 0.968269 2434.923096 0.000000 3326.220947 0.000000 0.627621 0.000000 0.778519 0.973268 0.973268 0.973268 2411.181396 0.000000 3320.947998 0.000000 0.526275 0.000000 0.850315 0.802040 0.802040 0.802040 @@ -11791,7 +11791,7 @@ 4705.449219 0.000000 3324.190918 0.000000 0.727125 0.000000 0.686505 0.882878 0.882878 0.882878 4747.123535 0.000000 3377.723633 0.000000 0.278602 0.000000 0.960407 0.832732 0.832732 0.832732 4732.152344 0.000000 3322.702148 0.000000 0.263787 0.000000 0.964581 0.863285 0.863285 0.863285 -4741.810547 0.000000 3371.445557 0.000000 0.505764 0.000000 0.862672 0.909079 0.909079 0.909079 +4741.810547 0.000000 3371.445557 0.000000 0.505765 0.000000 0.862672 0.909079 0.909079 0.909079 4725.850586 0.000000 3351.934570 0.000000 0.191657 0.000000 0.981462 0.869276 0.869276 0.869276 4731.020020 0.000000 3324.176758 0.000000 0.561093 0.000000 0.827753 0.822292 0.822292 0.822292 4738.404785 0.000000 3351.056396 0.000000 0.541732 0.000000 0.840551 0.790646 0.790646 0.790646 @@ -14807,7 +14807,7 @@ object={ 477.298340 0.000000 3440.840576 0.000000 0.814823 0.000000 0.579709 0.919723 0.919723 0.919723 458.254944 0.000000 3413.339600 0.000000 0.990008 0.000000 0.141008 0.957968 0.957968 0.957968 444.438263 0.000000 3402.447021 0.000000 0.942932 0.000000 0.332984 0.960168 0.960168 0.960168 -461.874695 0.000000 3426.101318 0.000000 0.953347 0.000000 0.301877 0.933393 0.933393 0.933393 +461.874695 0.000000 3426.101318 0.000000 0.953347 0.000000 0.301876 0.933393 0.933393 0.933393 443.629608 0.000000 3389.621338 0.000000 0.903876 0.000000 0.427794 0.892951 0.892951 0.892951 487.550354 0.000000 3393.977051 0.000000 0.776679 0.000000 0.629896 0.814569 0.814569 0.814569 452.075195 0.000000 3412.872559 0.000000 0.807189 0.000000 0.590293 0.943250 0.943250 0.943250 @@ -18562,7 +18562,7 @@ object={ 2177.807129 0.000000 3531.991455 0.000000 0.793099 0.000000 0.609093 0.686074 0.686074 0.686074 2192.669678 0.000000 3532.006348 0.000000 0.973039 0.000000 0.230640 0.851836 0.851836 0.851836 2195.228760 0.000000 3527.306396 0.000000 0.984059 0.000000 0.177843 0.886176 0.886176 0.886176 -2176.829346 0.000000 3533.560059 0.000000 0.841284 0.000000 0.540593 0.727656 0.727656 0.727656 +2176.829346 0.000000 3533.560059 0.000000 0.841284 0.000000 0.540594 0.727656 0.727656 0.727656 2071.760254 0.000000 3614.386475 0.000000 0.848443 0.000000 0.529287 0.675553 0.675553 0.675553 2084.890381 0.000000 3622.646240 0.000000 0.951881 0.000000 0.306469 0.981337 0.981337 0.981337 2064.389893 0.000000 3623.721924 0.000000 0.970431 0.000000 0.241379 0.852713 0.852713 0.852713 @@ -18931,7 +18931,7 @@ object={ 2241.441162 0.000000 3697.426025 0.000000 0.926317 0.000000 0.376746 0.866917 0.866917 0.866917 2246.573730 0.000000 3711.257812 0.000000 0.992747 0.000000 0.120225 0.965700 0.965700 0.965700 2244.578613 0.000000 3692.348877 0.000000 0.951921 0.000000 0.306345 0.974349 0.974349 0.974349 -2234.876953 0.000000 3691.608887 0.000000 0.752335 0.000000 0.658781 0.870723 0.870723 0.870723 +2234.876953 0.000000 3691.608887 0.000000 0.752335 0.000000 0.658780 0.870723 0.870723 0.870723 2235.095215 0.000000 3728.846191 0.000000 0.993868 0.000000 0.110570 0.980361 0.980361 0.980361 2254.818604 0.000000 3706.877930 0.000000 0.979012 0.000000 0.203801 0.943125 0.943125 0.943125 2234.561035 0.000000 3722.354980 0.000000 0.843856 0.000000 0.536569 0.892539 0.892539 0.892539 @@ -19867,7 +19867,7 @@ object={ 2362.444092 0.000000 3259.444824 0.000000 0.896298 0.000000 0.443453 0.873826 0.873826 0.873826 2373.341553 0.000000 3274.747314 0.000000 0.980264 0.000000 0.197694 0.968203 0.968203 0.968203 2339.899414 0.000000 3239.822754 0.000000 0.922617 0.000000 0.385717 0.963422 0.963422 0.963422 -2335.151855 0.000000 3249.404297 0.000000 0.900930 0.000000 0.433965 0.950690 0.950690 0.950690 +2335.151855 0.000000 3249.404297 0.000000 0.900930 0.000000 0.433966 0.950690 0.950690 0.950690 2335.480225 0.000000 3240.741699 0.000000 0.981357 0.000000 0.192196 0.947854 0.947854 0.947854 2333.844482 0.000000 3240.768311 0.000000 0.885161 0.000000 0.465286 0.886427 0.886427 0.886427 2364.469727 0.000000 3266.614746 0.000000 0.935511 0.000000 0.353298 0.945911 0.945911 0.945911 @@ -21803,7 +21803,7 @@ object={ 3843.728027 0.000000 3336.406006 0.000000 0.984972 0.000000 0.172716 0.988299 0.988299 0.988299 3862.320557 0.000000 3329.745850 0.000000 0.973489 0.000000 0.228734 0.997695 0.997695 0.997695 3860.504883 0.000000 3340.063965 0.000000 0.754684 0.000000 0.656088 0.960695 0.960695 0.960695 -3859.407471 0.000000 3370.219971 0.000000 0.758641 0.000000 0.651509 0.959256 0.959256 0.959256 +3859.407471 0.000000 3370.219971 0.000000 0.758641 0.000000 0.651508 0.959256 0.959256 0.959256 3833.117188 0.000000 3348.349854 0.000000 0.888144 0.000000 0.459565 0.990463 0.990463 0.990463 3827.242920 0.000000 3380.693359 0.000000 0.956345 0.000000 0.292239 0.993336 0.993336 0.993336 3869.420898 0.000000 3321.265381 0.000000 0.988530 0.000000 0.151022 0.995080 0.995080 0.995080 @@ -23959,7 +23959,7 @@ object={ 4815.770508 0.000000 3713.123779 0.000000 0.994911 0.000000 0.100759 0.977070 0.977070 0.977070 4803.313965 0.000000 3717.202393 0.000000 0.858380 0.000000 0.513014 0.864168 0.864168 0.864168 4792.833008 0.000000 3729.020508 0.000000 0.951752 0.000000 0.306867 0.985205 0.985205 0.985205 -4795.279785 0.000000 3720.910889 0.000000 0.860134 0.000000 0.510067 0.981292 0.981292 0.981292 +4795.279785 0.000000 3720.910889 0.000000 0.860134 0.000000 0.510068 0.981292 0.981292 0.981292 4769.977051 0.000000 3719.475342 0.000000 0.978184 0.000000 0.207740 0.949323 0.949323 0.949323 4810.784668 0.000000 3738.796875 0.000000 0.904365 0.000000 0.426761 0.920746 0.920746 0.920746 4781.291992 0.000000 3736.571289 0.000000 0.865677 0.000000 0.500603 0.890050 0.890050 0.890050 @@ -24939,7 +24939,7 @@ object={ 924.644409 0.000000 1149.592041 0.000000 0.545130 0.000000 -0.838351 1.258149 1.258149 1.258149 919.514038 0.000000 1129.835815 0.000000 0.986173 0.000000 -0.165719 1.020366 1.020366 1.020366 879.229736 0.000000 1147.290405 0.000000 0.084248 0.000000 -0.996445 1.389654 1.389654 1.389654 -873.000122 0.000000 1081.271240 0.000000 0.143601 0.000000 -0.989636 1.598386 1.598386 1.598386 +873.000122 0.000000 1081.271240 0.000000 0.143600 0.000000 -0.989636 1.598386 1.598386 1.598386 880.956116 0.000000 1096.224487 0.000000 0.165458 0.000000 -0.986217 1.210395 1.210395 1.210395 894.220764 0.000000 1135.456177 0.000000 0.996645 0.000000 0.081842 0.983636 0.983636 0.983636 872.065857 0.000000 1148.726196 0.000000 0.873811 0.000000 -0.486266 1.154669 1.154669 1.154669 @@ -25470,7 +25470,7 @@ object={ 1484.228027 0.000000 593.183899 0.000000 0.893931 0.000000 -0.448204 1.295873 1.295873 1.295873 1457.084839 0.000000 608.825806 0.000000 0.524109 0.000000 -0.851651 1.282418 1.282418 1.282418 1456.662476 0.000000 604.134827 0.000000 0.834687 0.000000 -0.550725 1.371297 1.371297 1.371297 -1479.534180 0.000000 577.664856 0.000000 0.327184 0.000000 -0.944961 1.308942 1.308942 1.308942 +1479.534180 0.000000 577.664856 0.000000 0.327183 0.000000 -0.944961 1.308942 1.308942 1.308942 1466.890747 0.000000 598.192749 0.000000 0.376175 0.000000 -0.926548 1.431976 1.431976 1.431976 1470.392456 0.000000 595.419800 0.000000 0.977331 0.000000 -0.211719 1.063912 1.063912 1.063912 1461.686646 0.000000 621.674866 0.000000 0.580104 0.000000 -0.814542 1.418275 1.418275 1.418275 @@ -25602,7 +25602,7 @@ object={ 1510.903931 0.000000 592.736450 0.000000 0.998165 0.000000 0.060551 0.961428 0.961428 0.961428 1486.621948 0.000000 591.700073 0.000000 0.539569 0.000000 -0.841941 1.637174 1.637174 1.637174 1511.551392 0.000000 590.806641 0.000000 0.419973 0.000000 -0.907536 1.724079 1.724079 1.724079 -1509.271484 0.000000 586.415344 0.000000 0.556128 0.000000 -0.831096 1.624572 1.624572 1.624572 +1509.271484 0.000000 586.415344 0.000000 0.556129 0.000000 -0.831096 1.624572 1.624572 1.624572 1481.415039 0.000000 612.394775 0.000000 0.999162 0.000000 -0.040931 1.014617 1.014617 1.014617 1503.600830 0.000000 589.795837 0.000000 0.970470 0.000000 -0.241222 1.155096 1.155096 1.155096 1460.458130 0.000000 621.474731 0.000000 0.541453 0.000000 -0.840731 1.438791 1.438791 1.438791 @@ -26281,7 +26281,7 @@ object={ 982.367798 0.000000 1653.077637 0.000000 0.839717 0.000000 -0.543024 1.365441 1.365441 1.365441 985.076599 0.000000 1646.669189 0.000000 0.897828 0.000000 -0.440347 1.235647 1.235647 1.235647 978.066956 0.000000 1640.767334 0.000000 0.081894 0.000000 -0.996641 1.486912 1.486912 1.486912 -991.550171 0.000000 1651.224121 0.000000 0.565325 0.000000 -0.824868 1.401981 1.401981 1.401981 +991.550171 0.000000 1651.224121 0.000000 0.565326 0.000000 -0.824868 1.401981 1.401981 1.401981 989.816223 0.000000 1652.651978 0.000000 0.379759 0.000000 -0.925085 1.297856 1.297856 1.297856 976.585571 0.000000 1640.618042 0.000000 0.664724 0.000000 -0.747089 1.442316 1.442316 1.442316 978.725830 0.000000 1642.765503 0.000000 0.500555 0.000000 -0.865705 1.574811 1.574811 1.574811 @@ -29939,7 +29939,7 @@ object={ 1279.201538 0.000000 3390.759277 0.000000 0.944672 0.000000 -0.328017 1.146846 1.146846 1.146846 1282.206055 0.000000 3400.719971 0.000000 0.008258 0.000000 -0.999966 1.940129 1.940129 1.940129 1292.012817 0.000000 3407.010498 0.000000 0.994971 0.000000 -0.100160 1.053351 1.053351 1.053351 -1237.189087 0.000000 3401.697510 0.000000 0.296493 0.000000 -0.955035 1.475509 1.475509 1.475509 +1237.189087 0.000000 3401.697510 0.000000 0.296492 0.000000 -0.955035 1.475509 1.475509 1.475509 1280.967896 0.000000 3408.787109 0.000000 0.690187 0.000000 -0.723631 1.313073 1.313073 1.313073 1236.884155 0.000000 3403.366455 0.000000 0.991429 0.000000 -0.130644 1.068690 1.068690 1.068690 1282.638306 0.000000 3392.216553 0.000000 0.808116 0.000000 -0.589024 1.275179 1.275179 1.275179 @@ -30155,7 +30155,7 @@ object={ 1298.188354 0.000000 3379.037109 0.000000 0.104239 0.000000 -0.994552 1.933518 1.933518 1.933518 1327.772217 0.000000 3391.889160 0.000000 0.493492 0.000000 -0.869751 1.250145 1.250145 1.250145 1298.082031 0.000000 3431.654785 0.000000 0.164076 0.000000 -0.986448 1.698507 1.698507 1.698507 -1305.047119 0.000000 3416.256592 0.000000 0.984770 0.000000 -0.173860 1.055842 1.055842 1.055842 +1305.047119 0.000000 3416.256592 0.000000 0.984770 0.000000 -0.173859 1.055842 1.055842 1.055842 1333.872314 0.000000 3406.792480 0.000000 0.679322 0.000000 -0.733840 1.347641 1.347641 1.347641 1337.875977 0.000000 3420.538574 0.000000 0.884602 0.000000 -0.466347 1.198640 1.198640 1.198640 1326.200562 0.000000 3430.298096 0.000000 0.736157 0.000000 -0.676810 1.020416 1.020416 1.020416 @@ -31340,7 +31340,7 @@ object={ 1346.513306 0.000000 3423.083008 0.000000 0.992734 0.000000 -0.120326 1.055107 1.055107 1.055107 1328.320801 0.000000 3401.325439 0.000000 0.035755 0.000000 -0.999361 1.720470 1.720470 1.720470 1308.237305 0.000000 3384.832520 0.000000 0.993780 0.000000 -0.111360 1.036496 1.036496 1.036496 -1315.207764 0.000000 3390.354248 0.000000 0.850772 0.000000 -0.525535 1.198929 1.198929 1.198929 +1315.207764 0.000000 3390.354248 0.000000 0.850772 0.000000 -0.525536 1.198929 1.198929 1.198929 1340.681885 0.000000 3440.237305 0.000000 0.962637 0.000000 -0.270795 1.125282 1.125282 1.125282 1296.158691 0.000000 3431.980957 0.000000 0.989116 0.000000 -0.147138 1.092906 1.092906 1.092906 1301.464233 0.000000 3419.930908 0.000000 0.952931 0.000000 -0.303189 1.123045 1.123045 1.123045 @@ -32775,7 +32775,7 @@ object={ 2278.348633 0.000000 3278.035156 0.000000 0.668191 0.000000 -0.743990 1.270211 1.270211 1.270211 2273.705566 0.000000 3271.967773 0.000000 0.992710 0.000000 -0.120524 1.011160 1.011160 1.011160 2292.496094 0.000000 3309.123291 0.000000 0.050751 0.000000 -0.998711 1.079691 1.079691 1.079691 -2257.051758 0.000000 3309.844727 0.000000 0.698280 0.000000 -0.715824 1.121497 1.121497 1.121497 +2257.051758 0.000000 3309.844727 0.000000 0.698281 0.000000 -0.715824 1.121497 1.121497 1.121497 2297.433105 0.000000 3241.511230 0.000000 0.398871 0.000000 -0.917007 1.168042 1.168042 1.168042 2241.776855 0.000000 3305.276123 0.000000 0.468373 0.000000 -0.883531 1.424627 1.424627 1.424627 2286.344727 0.000000 3279.618408 0.000000 0.498773 0.000000 -0.866733 1.060212 1.060212 1.060212 @@ -35186,7 +35186,7 @@ object={ 585.838562 0.000000 3550.104492 0.000000 0.430898 0.000000 -0.902400 1.174182 1.174182 1.174182 591.043701 0.000000 3590.740234 0.000000 0.877019 0.000000 -0.480455 1.032531 1.032531 1.032531 608.004700 0.000000 3598.081787 0.000000 0.986989 0.000000 -0.160790 1.024593 1.024593 1.024593 -610.493225 0.000000 3567.520508 0.000000 0.809768 0.000000 -0.586750 1.018785 1.018785 1.018785 +610.493225 0.000000 3567.520508 0.000000 0.809768 0.000000 -0.586751 1.018785 1.018785 1.018785 620.766296 0.000000 3571.604736 0.000000 0.462559 0.000000 -0.886589 1.024489 1.024489 1.024489 626.502869 0.000000 3592.735596 0.000000 0.428113 0.000000 -0.903725 1.129586 1.129586 1.129586 614.469849 0.000000 3596.033936 0.000000 0.319745 0.000000 -0.947504 1.208306 1.208306 1.208306 @@ -35571,7 +35571,7 @@ object={ 920.347046 0.000000 3458.832275 0.000000 0.982780 0.000000 -0.184777 1.057997 1.057997 1.057997 923.188354 0.000000 3476.446533 0.000000 0.593180 0.000000 -0.805070 1.154193 1.154193 1.154193 912.352783 0.000000 3462.950684 0.000000 0.962817 0.000000 -0.270153 1.060098 1.060098 1.060098 -913.413879 0.000000 3463.773193 0.000000 0.757022 0.000000 -0.653390 1.156435 1.156435 1.156435 +913.413879 0.000000 3463.773193 0.000000 0.757022 0.000000 -0.653389 1.156435 1.156435 1.156435 908.065186 0.000000 3458.143066 0.000000 0.741821 0.000000 -0.670598 1.155975 1.155975 1.155975 903.721436 0.000000 3460.471680 0.000000 0.239976 0.000000 -0.970779 1.242108 1.242108 1.242108 926.837280 0.000000 3467.570312 0.000000 0.980359 0.000000 -0.197222 1.040146 1.040146 1.040146 @@ -36711,7 +36711,7 @@ object={ 2183.052490 0.000000 3516.107422 0.000000 0.821934 0.000000 -0.569583 1.108929 1.108929 1.108929 2172.781738 0.000000 3520.436768 0.000000 0.963772 0.000000 -0.266729 1.171885 1.171885 1.171885 2197.490967 0.000000 3522.987549 0.000000 0.925835 0.000000 -0.377928 1.120944 1.120944 1.120944 -2173.963379 0.000000 3517.473389 0.000000 0.377552 0.000000 -0.925989 1.753532 1.753532 1.753532 +2173.963379 0.000000 3517.473389 0.000000 0.377551 0.000000 -0.925989 1.753532 1.753532 1.753532 2186.905029 0.000000 3509.180176 0.000000 0.984795 0.000000 -0.173719 1.111157 1.111157 1.111157 2191.390137 0.000000 3522.862549 0.000000 0.017805 0.000000 -0.999842 1.988665 1.988665 1.988665 2195.021729 0.000000 3508.949463 0.000000 0.996790 0.000000 -0.080062 1.051024 1.051024 1.051024 @@ -45340,7 +45340,7 @@ object={ 4055.612061 0.000000 3252.376465 0.000000 0.298589 0.000000 -0.954382 1.056962 1.056962 1.056962 4079.282227 0.000000 3281.298828 0.000000 0.392744 0.000000 -0.919648 1.049537 1.049537 1.049537 4052.645264 0.000000 3246.095703 0.000000 0.984949 0.000000 -0.172846 1.003903 1.003903 1.003903 -4075.922363 0.000000 3280.424561 0.000000 0.385719 0.000000 -0.922617 1.070391 1.070391 1.070391 +4075.922363 0.000000 3280.424561 0.000000 0.385718 0.000000 -0.922617 1.070391 1.070391 1.070391 4056.588135 0.000000 3265.399902 0.000000 0.650217 0.000000 -0.759749 1.028006 1.028006 1.028006 4060.591797 0.000000 3255.647949 0.000000 0.731984 0.000000 -0.681321 1.029941 1.029941 1.029941 4041.845703 0.000000 3254.026123 0.000000 0.760312 0.000000 -0.649558 1.035301 1.035301 1.035301 @@ -45571,7 +45571,7 @@ object={ 4190.652832 0.000000 3302.802734 0.000000 0.926317 0.000000 -0.376744 1.014465 1.014465 1.014465 4215.509766 0.000000 3251.835693 0.000000 0.997284 0.000000 -0.073653 1.002209 1.002209 1.002209 4207.916016 0.000000 3256.522217 0.000000 0.748913 0.000000 -0.662668 1.041594 1.041594 1.041594 -4244.476074 0.000000 3279.968994 0.000000 0.838252 0.000000 -0.545283 1.028797 1.028797 1.028797 +4244.476074 0.000000 3279.968994 0.000000 0.838252 0.000000 -0.545284 1.028797 1.028797 1.028797 4207.614258 0.000000 3310.144287 0.000000 0.114909 0.000000 -0.993376 1.054511 1.054511 1.054511 4220.375488 0.000000 3283.667236 0.000000 0.608754 0.000000 -0.793359 1.032027 1.032027 1.032027 4226.415039 0.000000 3280.236328 0.000000 0.987507 0.000000 -0.157573 1.013036 1.013036 1.013036 @@ -47061,7 +47061,7 @@ object={ 4556.590820 0.000000 3678.001953 0.000000 0.776553 0.000000 -0.630052 1.093593 1.093593 1.093593 4563.440918 0.000000 3709.084473 0.000000 0.988716 0.000000 -0.149802 1.004880 1.004880 1.004880 4564.384766 0.000000 3730.482422 0.000000 0.978635 0.000000 -0.205603 1.019645 1.019645 1.019645 -4567.338867 0.000000 3713.202148 0.000000 0.233489 0.000000 -0.972360 1.093330 1.093330 1.093330 +4567.338867 0.000000 3713.202148 0.000000 0.233488 0.000000 -0.972360 1.093330 1.093330 1.093330 4585.713867 0.000000 3733.381592 0.000000 0.495968 0.000000 -0.868341 1.078780 1.078780 1.078780 4594.688477 0.000000 3686.142822 0.000000 0.652817 0.000000 -0.757516 1.075102 1.075102 1.075102 4573.812012 0.000000 3710.600342 0.000000 0.128781 0.000000 -0.991673 1.111574 1.111574 1.111574 @@ -47859,7 +47859,7 @@ object={ 6562.946289 0.000000 1221.161987 0.000000 0.616599 0.000000 -0.787277 1.024891 1.024891 1.024891 6556.814453 0.000000 1211.850098 0.000000 0.638554 0.000000 -0.769577 1.028501 1.028501 1.028501 6561.707520 0.000000 1213.431641 0.000000 0.056868 0.000000 -0.998382 1.117165 1.117165 1.117165 -6566.612305 0.000000 1219.274780 0.000000 0.116846 0.000000 -0.993150 1.039921 1.039921 1.039921 +6566.612305 0.000000 1219.274780 0.000000 0.116845 0.000000 -0.993150 1.039921 1.039921 1.039921 6561.308105 0.000000 1217.729370 0.000000 0.516762 0.000000 -0.856129 1.035921 1.035921 1.035921 6551.523926 0.000000 1198.184326 0.000000 0.950258 0.000000 -0.311463 1.009489 1.009489 1.009489 6551.411133 0.000000 1201.244385 0.000000 0.558475 0.000000 -0.829521 1.036634 1.036634 1.036634 @@ -48291,7 +48291,7 @@ object={ 4717.751465 0.000000 3344.095215 0.000000 0.683229 0.000000 -0.730204 1.126711 1.126711 1.126711 4679.576172 0.000000 3346.242188 0.000000 0.568345 0.000000 -0.822790 1.043424 1.043424 1.043424 4740.658691 0.000000 3372.904785 0.000000 0.371242 0.000000 -0.928536 1.086189 1.086189 1.086189 -4685.577148 0.000000 3367.862793 0.000000 0.849066 0.000000 -0.528287 1.043076 1.043076 1.043076 +4685.577148 0.000000 3367.862793 0.000000 0.849066 0.000000 -0.528288 1.043076 1.043076 1.043076 4721.492676 0.000000 3380.392090 0.000000 0.158896 0.000000 -0.987295 1.253670 1.253670 1.253670 4739.831543 0.000000 3355.441895 0.000000 0.843627 0.000000 -0.536929 1.121692 1.121692 1.121692 4716.774414 0.000000 3376.990234 0.000000 0.368394 0.000000 -0.929670 1.089390 1.089390 1.089390 @@ -48380,7 +48380,7 @@ object={ 4712.416992 0.000000 3348.276855 0.000000 0.966546 0.000000 -0.256494 1.027199 1.027199 1.027199 4712.280762 0.000000 3379.330078 0.000000 0.243772 0.000000 -0.969833 1.102510 1.102510 1.102510 4729.444824 0.000000 3365.141602 0.000000 0.094652 0.000000 -0.995510 1.092123 1.092123 1.092123 -4734.000977 0.000000 3379.413330 0.000000 0.816810 0.000000 -0.576906 1.142775 1.142775 1.142775 +4734.000977 0.000000 3379.413330 0.000000 0.816810 0.000000 -0.576907 1.142775 1.142775 1.142775 4686.800781 0.000000 3372.193115 0.000000 0.968945 0.000000 -0.247276 1.045538 1.045538 1.045538 4725.239258 0.000000 3353.783691 0.000000 0.449590 0.000000 -0.893235 1.184747 1.184747 1.184747 4723.593750 0.000000 3372.148438 0.000000 0.935034 0.000000 -0.354559 1.062435 1.062435 1.062435 @@ -48597,7 +48597,7 @@ object={ 4615.659668 0.000000 3452.226074 0.000000 0.883165 0.000000 -0.469063 1.014627 1.014627 1.014627 4642.217773 0.000000 3451.858887 0.000000 0.934087 0.000000 -0.357045 1.049221 1.049221 1.049221 4610.659180 0.000000 3428.201904 0.000000 0.696167 0.000000 -0.717880 1.103954 1.103954 1.103954 -4644.782227 0.000000 3448.974609 0.000000 0.854798 0.000000 -0.518960 1.074921 1.074921 1.074921 +4644.782227 0.000000 3448.974609 0.000000 0.854798 0.000000 -0.518961 1.074921 1.074921 1.074921 4614.312500 0.000000 3407.386963 0.000000 0.515519 0.000000 -0.856878 1.033402 1.033402 1.033402 4649.823242 0.000000 3409.814697 0.000000 0.998521 0.000000 0.054360 0.993754 0.993754 0.993754 4644.165527 0.000000 3410.132324 0.000000 0.955751 0.000000 -0.294175 1.026836 1.026836 1.026836 @@ -49602,7 +49602,7 @@ object={ 4677.004395 0.000000 3689.727783 0.000000 0.349733 0.000000 -0.936849 1.042414 1.042414 1.042414 4639.752441 0.000000 3730.165527 0.000000 0.430816 0.000000 -0.902440 1.106765 1.106765 1.106765 4669.033691 0.000000 3683.875244 0.000000 0.456068 0.000000 -0.889945 1.065743 1.065743 1.065743 -4664.936523 0.000000 3692.274902 0.000000 0.842885 0.000000 -0.538093 1.022696 1.022696 1.022696 +4664.936523 0.000000 3692.274902 0.000000 0.842885 0.000000 -0.538094 1.022696 1.022696 1.022696 4629.492188 0.000000 3709.597412 0.000000 0.747064 0.000000 -0.664753 1.016339 1.016339 1.016339 4666.573242 0.000000 3728.068604 0.000000 0.987658 0.000000 -0.156626 1.014528 1.014528 1.014528 4663.412109 0.000000 3703.135742 0.000000 0.999620 0.000000 0.027579 0.999311 0.999311 0.999311 @@ -49974,7 +49974,7 @@ object={ 4748.004883 0.000000 3699.797363 0.000000 0.751684 0.000000 -0.659523 1.116868 1.116868 1.116868 4721.653809 0.000000 3671.924561 0.000000 0.720633 0.000000 -0.693317 1.053552 1.053552 1.053552 4688.481445 0.000000 3684.080566 0.000000 0.765660 0.000000 -0.643245 1.033144 1.033144 1.033144 -4692.050293 0.000000 3679.526855 0.000000 0.650041 0.000000 -0.759900 1.045253 1.045253 1.045253 +4692.050293 0.000000 3679.526855 0.000000 0.650040 0.000000 -0.759900 1.045253 1.045253 1.045253 4696.021973 0.000000 3696.621094 0.000000 0.599344 0.000000 -0.800492 1.152928 1.152928 1.152928 4696.857910 0.000000 3743.084961 0.000000 0.209970 0.000000 -0.977708 1.244327 1.244327 1.244327 4740.648438 0.000000 3699.977539 0.000000 0.995923 0.000000 -0.090211 1.021876 1.021876 1.021876 @@ -51816,7 +51816,7 @@ object={ 4835.716797 0.000000 3759.959473 0.000000 0.990645 0.000000 -0.136467 1.031784 1.031784 1.031784 4849.695801 0.000000 3754.885010 0.000000 0.938868 0.000000 -0.344278 1.050015 1.050015 1.050015 4851.028809 0.000000 3748.590576 0.000000 0.765746 0.000000 -0.643143 1.120341 1.120341 1.120341 -4848.929199 0.000000 3743.250732 0.000000 0.701861 0.000000 -0.712313 1.150422 1.150422 1.150422 +4848.929199 0.000000 3743.250732 0.000000 0.701862 0.000000 -0.712313 1.150422 1.150422 1.150422 4841.632812 0.000000 3760.164307 0.000000 0.808044 0.000000 -0.589122 1.152557 1.152557 1.152557 4842.899414 0.000000 3758.018066 0.000000 0.257835 0.000000 -0.966189 1.304158 1.304158 1.304158 4831.062500 0.000000 3746.663330 0.000000 0.916638 0.000000 -0.399717 1.092394 1.092394 1.092394 diff --git a/gfx/map/map_object_data/generated/tree_leaf_high_generator_1.txt b/gfx/map/map_object_data/generated/tree_leaf_high_generator_1.txt index 4cfae73f..008aebcd 100644 --- a/gfx/map/map_object_data/generated/tree_leaf_high_generator_1.txt +++ b/gfx/map/map_object_data/generated/tree_leaf_high_generator_1.txt @@ -1088,7 +1088,7 @@ 278.779694 0.000000 951.200439 0.000000 0.649863 0.000000 0.760051 0.360278 0.360278 0.360278 227.671204 0.000000 975.694946 0.000000 0.886774 0.000000 -0.462204 0.857578 0.857578 0.857578 221.075653 0.000000 940.053528 0.000000 0.081324 0.000000 -0.996688 1.377082 1.377082 1.377082 -284.167786 0.000000 949.796631 0.000000 0.705786 0.000000 0.708425 0.399050 0.399050 0.399050 +284.167786 0.000000 949.796631 0.000000 0.705787 0.000000 0.708425 0.399050 0.399050 0.399050 235.803879 0.000000 989.021423 0.000000 0.420649 0.000000 -0.907223 1.378884 1.378884 1.378884 269.761475 0.000000 987.520569 0.000000 0.854586 0.000000 -0.519310 1.078097 1.078097 1.078097 242.806641 0.000000 935.973389 0.000000 0.597678 0.000000 -0.801736 0.918900 0.918900 0.918900 @@ -1159,7 +1159,7 @@ 138.214325 0.000000 1021.339294 0.000000 0.991166 0.000000 0.132629 0.759883 0.759883 0.759883 132.081802 0.000000 1021.258179 0.000000 0.697884 0.000000 -0.716211 1.039176 1.039176 1.039176 136.357483 0.000000 1011.695068 0.000000 0.982662 0.000000 -0.185408 0.855497 0.855497 0.855497 -168.174438 0.000000 1037.329468 0.000000 0.981511 0.000000 -0.191405 0.804616 0.804616 0.804616 +168.174438 0.000000 1037.329468 0.000000 0.981511 0.000000 -0.191404 0.804616 0.804616 0.804616 180.766357 0.000000 1014.582642 0.000000 0.616067 0.000000 -0.787694 0.823551 0.823551 0.823551 148.673737 0.000000 1009.192078 0.000000 0.887950 0.000000 0.459940 0.556593 0.556593 0.556593 172.624695 0.000000 1009.652100 0.000000 0.373450 0.000000 0.927650 0.194920 0.194920 0.194920 @@ -1640,7 +1640,7 @@ 411.021729 0.000000 987.991577 0.000000 0.801766 0.000000 0.597638 0.473770 0.473770 0.473770 430.785400 0.000000 1006.285583 0.000000 0.836461 0.000000 -0.548026 1.095393 1.095393 1.095393 410.918213 0.000000 991.416748 0.000000 0.999484 0.000000 0.032122 0.784151 0.784151 0.784151 -426.502197 0.000000 992.865540 0.000000 0.379833 0.000000 -0.925055 1.401571 1.401571 1.401571 +426.502197 0.000000 992.865540 0.000000 0.379832 0.000000 -0.925055 1.401571 1.401571 1.401571 405.308563 0.000000 987.675415 0.000000 0.948849 0.000000 0.315729 0.647950 0.647950 0.647950 428.449768 0.000000 995.943359 0.000000 0.992992 0.000000 0.118185 0.742270 0.742270 0.742270 402.079102 0.000000 997.424866 0.000000 0.398406 0.000000 -0.917209 1.391302 1.391302 1.391302 @@ -1678,7 +1678,7 @@ 413.131683 0.000000 992.569214 0.000000 0.997566 0.000000 -0.069724 0.835539 0.835539 0.835539 413.745850 0.000000 987.520569 0.000000 0.574026 0.000000 -0.818837 1.288610 1.288610 1.288610 416.746582 0.000000 965.252625 0.000000 0.867414 0.000000 0.497587 0.534751 0.534751 0.534751 -413.616882 0.000000 995.683594 0.000000 0.888591 0.000000 0.458699 0.557305 0.557305 0.557305 +413.616882 0.000000 995.683594 0.000000 0.888591 0.000000 0.458700 0.557305 0.557305 0.557305 407.436218 0.000000 972.234009 0.000000 0.968335 0.000000 0.249656 0.671492 0.671492 0.671492 404.435303 0.000000 973.262146 0.000000 0.881908 0.000000 -0.471422 1.050015 1.050015 1.050015 416.423035 0.000000 959.231140 0.000000 0.274620 0.000000 -0.961553 1.280184 1.280184 1.280184 @@ -2074,7 +2074,7 @@ 436.074677 0.000000 1007.068604 0.000000 0.898909 0.000000 -0.438135 0.868840 0.868840 0.868840 483.730560 0.000000 999.495483 0.000000 0.528998 0.000000 0.848623 0.409377 0.409377 0.409377 463.135376 0.000000 957.663086 0.000000 0.728846 0.000000 -0.684678 1.152460 1.152460 1.152460 -454.554108 0.000000 976.259399 0.000000 0.580539 0.000000 -0.814232 1.284547 1.284547 1.284547 +454.554108 0.000000 976.259399 0.000000 0.580540 0.000000 -0.814232 1.284547 1.284547 1.284547 455.298065 0.000000 963.270386 0.000000 0.500122 0.000000 0.865955 0.266738 0.266738 0.266738 457.038361 0.000000 946.914917 0.000000 0.441283 0.000000 -0.897368 1.367238 1.367238 1.367238 455.610657 0.000000 958.113525 0.000000 0.497375 0.000000 -0.867536 1.309705 1.309705 1.309705 @@ -3135,7 +3135,7 @@ 442.633331 0.000000 1032.374023 0.000000 0.995248 0.000000 -0.097368 0.846357 0.846357 0.846357 457.910278 0.000000 1020.690979 0.000000 0.959616 0.000000 -0.281312 0.945231 0.945231 0.945231 433.137299 0.000000 1041.086792 0.000000 0.215185 0.000000 0.976573 0.110457 0.110457 0.110457 -465.036530 0.000000 1032.469971 0.000000 0.705682 0.000000 0.708528 0.398975 0.398975 0.398975 +465.036530 0.000000 1032.469971 0.000000 0.705683 0.000000 0.708528 0.398975 0.398975 0.398975 435.263641 0.000000 1024.388306 0.000000 0.991562 0.000000 -0.129635 0.862574 0.862574 0.862574 434.427094 0.000000 1039.230469 0.000000 0.999945 0.000000 -0.010516 0.804663 0.804663 0.804663 437.108612 0.000000 1052.508911 0.000000 0.229998 0.000000 0.973191 0.142259 0.142259 0.142259 @@ -4842,7 +4842,7 @@ 809.960938 0.000000 800.329163 0.000000 0.944230 0.000000 -0.329287 0.970893 0.970893 0.970893 815.291626 0.000000 811.902954 0.000000 0.548032 0.000000 0.836458 0.295396 0.295396 0.295396 822.658813 0.000000 805.208069 0.000000 0.121924 0.000000 0.992539 0.096968 0.096968 0.096968 -814.822998 0.000000 795.913025 0.000000 0.893390 0.000000 0.449281 0.573856 0.573856 0.573856 +814.822998 0.000000 795.913025 0.000000 0.893390 0.000000 0.449282 0.573856 0.573856 0.573856 849.299377 0.000000 803.272217 0.000000 0.319155 0.000000 -0.947703 1.369861 1.369861 1.369861 801.007935 0.000000 793.333740 0.000000 0.999760 0.000000 -0.021903 0.809800 0.809800 0.809800 822.318298 0.000000 796.944214 0.000000 0.808896 0.000000 0.587952 0.479895 0.479895 0.479895 @@ -5116,7 +5116,7 @@ 998.325684 0.000000 690.780701 0.000000 0.338463 0.000000 -0.940980 1.424149 1.424149 1.424149 983.024841 0.000000 691.916565 0.000000 0.911529 0.000000 -0.411236 0.968443 0.968443 0.968443 983.497681 0.000000 717.686218 0.000000 0.439985 0.000000 0.898005 0.232026 0.232026 0.232026 -949.654907 0.000000 716.884338 0.000000 0.832393 0.000000 0.554185 0.612297 0.612297 0.612297 +949.654907 0.000000 716.884338 0.000000 0.832393 0.000000 0.554186 0.612297 0.612297 0.612297 997.611938 0.000000 704.584900 0.000000 0.546150 0.000000 0.837687 0.502501 0.502501 0.502501 975.602417 0.000000 699.426636 0.000000 0.406769 0.000000 0.913531 0.381294 0.381294 0.381294 995.311035 0.000000 708.172852 0.000000 0.490477 0.000000 0.871454 0.261084 0.261084 0.261084 @@ -5641,11 +5641,11 @@ 1037.812256 0.000000 690.695068 0.000000 0.898717 0.000000 0.438529 0.628640 0.628640 0.628640 1029.065063 0.000000 692.729492 0.000000 0.317060 0.000000 0.948405 0.164313 0.164313 0.164313 1044.629883 0.000000 686.099976 0.000000 0.124207 0.000000 0.992256 0.063422 0.063422 0.063422 -1046.007812 0.000000 719.748596 0.000000 0.647645 0.000000 -0.761943 1.241207 1.241207 1.241207 +1046.007812 0.000000 719.748596 0.000000 0.647644 0.000000 -0.761943 1.241207 1.241207 1.241207 1029.280884 0.000000 712.841675 0.000000 0.657792 0.000000 0.753200 0.365615 0.365615 0.365615 1019.982300 0.000000 707.995605 0.000000 0.813872 0.000000 -0.581044 1.115769 1.115769 1.115769 1014.533630 0.000000 706.381775 0.000000 0.658595 0.000000 0.752497 0.366158 0.366158 0.366158 -1015.902039 0.000000 704.950134 0.000000 0.866832 0.000000 0.498599 0.638409 0.638409 0.638409 +1015.902039 0.000000 704.950134 0.000000 0.866832 0.000000 0.498600 0.638409 0.638409 0.638409 1055.893555 0.000000 680.744751 0.000000 0.818974 0.000000 -0.573830 1.111269 1.111269 1.111269 1062.099609 0.000000 719.695862 0.000000 0.218487 0.000000 -0.975840 1.487821 1.487821 1.487821 1028.012695 0.000000 677.466309 0.000000 0.873217 0.000000 -0.487331 0.911832 0.911832 0.911832 @@ -5955,7 +5955,7 @@ 870.064026 0.000000 734.791504 0.000000 0.424578 0.000000 -0.905391 1.376676 1.376676 1.376676 928.795959 0.000000 771.065918 0.000000 0.990381 0.000000 0.138364 0.729305 0.729305 0.729305 888.444885 0.000000 775.324219 0.000000 0.567799 0.000000 -0.823167 1.145696 1.145696 1.145696 -931.769409 0.000000 755.073486 0.000000 0.835177 0.000000 -0.549980 1.060529 1.060529 1.060529 +931.769409 0.000000 755.073486 0.000000 0.835177 0.000000 -0.549981 1.060529 1.060529 1.060529 922.187622 0.000000 789.632874 0.000000 0.841298 0.000000 0.540572 0.509133 0.509133 0.509133 935.715393 0.000000 737.125061 0.000000 0.970210 0.000000 -0.242263 0.915827 0.915827 0.915827 903.894226 0.000000 750.961853 0.000000 0.898897 0.000000 0.438159 0.569009 0.569009 0.569009 @@ -7762,7 +7762,7 @@ 1298.333374 0.000000 751.292908 0.000000 0.280759 0.000000 0.959778 0.365861 0.365861 0.365861 1348.276001 0.000000 744.703552 0.000000 0.003492 0.000000 0.999994 0.414975 0.414975 0.414975 1301.014893 0.000000 764.571472 0.000000 0.380047 0.000000 0.924967 0.552343 0.552343 0.552343 -1356.818237 0.000000 735.554565 0.000000 0.844711 0.000000 0.535222 0.621779 0.621779 0.621779 +1356.818237 0.000000 735.554565 0.000000 0.844711 0.000000 0.535223 0.621779 0.621779 0.621779 1329.415527 0.000000 729.333923 0.000000 0.856867 0.000000 -0.515538 1.058544 1.058544 1.058544 1296.272827 0.000000 774.231323 0.000000 0.864141 0.000000 -0.503250 1.068580 1.068580 1.068580 1364.541748 0.000000 763.781738 0.000000 0.329923 0.000000 -0.944008 1.189587 1.189587 1.189587 @@ -9759,7 +9759,7 @@ 2065.691895 0.000000 829.035767 0.000000 0.984827 0.000000 0.173538 0.711168 0.711168 0.711168 2070.389404 0.000000 820.130188 0.000000 0.980950 0.000000 -0.194262 0.898398 0.898398 0.898398 2086.495850 0.000000 806.893494 0.000000 0.796233 0.000000 0.604991 0.469083 0.469083 0.469083 -2041.642456 0.000000 814.371338 0.000000 0.526915 0.000000 -0.849918 1.315329 1.315329 1.315329 +2041.642456 0.000000 814.371338 0.000000 0.526916 0.000000 -0.849918 1.315329 1.315329 1.315329 2043.365356 0.000000 820.307434 0.000000 0.901916 0.000000 -0.431911 1.027457 1.027457 1.027457 2034.918945 0.000000 847.610168 0.000000 0.978470 0.000000 -0.206390 0.905044 0.905044 0.905044 2039.168701 0.000000 849.393799 0.000000 0.015524 0.000000 0.999879 0.007907 0.007907 0.007907 @@ -10747,7 +10747,7 @@ 2160.993896 0.000000 893.658447 0.000000 0.933645 0.000000 -0.358200 0.952918 0.952918 0.952918 2177.172363 0.000000 882.403015 0.000000 0.814708 0.000000 0.579871 0.484965 0.484965 0.484965 2173.135498 0.000000 899.110535 0.000000 0.912303 0.000000 0.409517 0.585116 0.585116 0.585116 -2168.566406 0.000000 867.370178 0.000000 0.347652 0.000000 0.937624 0.180833 0.180833 0.180833 +2168.566406 0.000000 867.370178 0.000000 0.347651 0.000000 0.937624 0.180833 0.180833 0.180833 2167.858643 0.000000 895.048950 0.000000 0.382469 0.000000 -0.923968 1.171838 1.171838 1.171838 2175.094971 0.000000 881.273499 0.000000 0.307004 0.000000 0.951708 0.158923 0.158923 0.158923 2167.872070 0.000000 891.294739 0.000000 0.036085 0.000000 0.999349 0.373941 0.373941 0.373941 @@ -12485,7 +12485,7 @@ 2738.410889 0.000000 997.912781 0.000000 0.627015 0.000000 -0.779007 1.254842 1.254842 1.254842 2743.874268 0.000000 979.176758 0.000000 0.332258 0.000000 0.943189 0.302919 0.302919 0.302919 2766.151123 0.000000 989.607300 0.000000 0.197630 0.000000 -0.980277 1.498681 1.498681 1.498681 -2772.410400 0.000000 967.582275 0.000000 0.713387 0.000000 -0.700770 1.195457 1.195457 1.195457 +2772.410400 0.000000 967.582275 0.000000 0.713387 0.000000 -0.700771 1.195457 1.195457 1.195457 2773.823730 0.000000 970.495972 0.000000 0.982365 0.000000 0.186975 0.704211 0.704211 0.704211 2751.739990 0.000000 995.508362 0.000000 0.735244 0.000000 -0.677803 1.179308 1.179308 1.179308 2792.102051 0.000000 983.590271 0.000000 0.107235 0.000000 0.994234 0.054719 0.054719 0.054719 @@ -12799,7 +12799,7 @@ 2998.632568 0.000000 749.014221 0.000000 0.652466 0.000000 -0.757818 1.181296 1.181296 1.181296 3012.502930 0.000000 759.410461 0.000000 0.727033 0.000000 -0.686603 1.031263 1.031263 1.031263 2992.751953 0.000000 783.329407 0.000000 0.709088 0.000000 0.705120 0.401429 0.401429 0.401429 -3006.281738 0.000000 750.086914 0.000000 0.846481 0.000000 0.532419 0.521902 0.521902 0.521902 +3006.281738 0.000000 750.086914 0.000000 0.846481 0.000000 0.532420 0.521902 0.521902 0.521902 2995.781250 0.000000 780.710938 0.000000 0.163064 0.000000 0.986616 0.164913 0.164913 0.164913 2997.940918 0.000000 747.199890 0.000000 0.866514 0.000000 -0.499153 0.951351 0.951351 0.951351 2999.682617 0.000000 752.729126 0.000000 0.785010 0.000000 0.619483 0.674574 0.674574 0.674574 @@ -13549,7 +13549,7 @@ 3195.791504 0.000000 724.102295 0.000000 0.026982 0.000000 -0.999636 1.586257 1.586257 1.586257 3234.693115 0.000000 719.975281 0.000000 0.829581 0.000000 -0.558386 1.040198 1.040198 1.040198 3213.402832 0.000000 728.404724 0.000000 0.461070 0.000000 -0.887364 1.355945 1.355945 1.355945 -3173.813965 0.000000 734.791504 0.000000 0.879445 0.000000 0.476000 0.552292 0.552292 0.552292 +3173.813965 0.000000 734.791504 0.000000 0.879445 0.000000 0.476001 0.552292 0.552292 0.552292 3232.374756 0.000000 726.960693 0.000000 0.852084 0.000000 -0.523405 1.080542 1.080542 1.080542 3208.987061 0.000000 730.363770 0.000000 0.785996 0.000000 0.618232 0.460559 0.460559 0.460559 3235.534668 0.000000 722.947327 0.000000 0.519864 0.000000 -0.854249 1.149760 1.149760 1.149760 @@ -14383,7 +14383,7 @@ 2459.342773 0.000000 2258.016602 0.000000 0.974870 0.000000 -0.222774 0.874035 0.874035 0.874035 2501.918213 0.000000 2264.182373 0.000000 0.526546 0.000000 -0.850147 1.053715 1.053715 1.053715 2459.145020 0.000000 2261.076416 0.000000 0.997154 0.000000 -0.075396 0.828186 0.828186 0.828186 -2451.987305 0.000000 2277.785400 0.000000 0.929072 0.000000 0.369900 0.659244 0.659244 0.659244 +2451.987305 0.000000 2277.785400 0.000000 0.929072 0.000000 0.369899 0.659244 0.659244 0.659244 2514.752197 0.000000 2292.427002 0.000000 0.142796 0.000000 0.989752 0.275402 0.275402 0.275402 2520.529541 0.000000 2269.953125 0.000000 0.579809 0.000000 0.814752 0.792392 0.792392 0.792392 2550.471191 0.000000 2244.895508 0.000000 0.894266 0.000000 0.447536 0.580364 0.580364 0.580364 @@ -17107,7 +17107,7 @@ 459.338531 0.000000 2326.919189 0.000000 0.998206 0.000000 -0.059869 0.814956 0.814956 0.814956 463.796417 0.000000 2349.579102 0.000000 0.248427 0.000000 0.968651 0.249110 0.249110 0.249110 492.050476 0.000000 2333.591797 0.000000 0.176504 0.000000 -0.984300 1.186820 1.186820 1.186820 -487.009735 0.000000 2329.787598 0.000000 0.418393 0.000000 0.908266 0.445085 0.445085 0.445085 +487.009735 0.000000 2329.787598 0.000000 0.418394 0.000000 0.908266 0.445085 0.445085 0.445085 448.228302 0.000000 2337.452637 0.000000 0.449685 0.000000 -0.893187 1.324961 1.324961 1.324961 455.918518 0.000000 2342.873779 0.000000 0.303545 0.000000 -0.952817 1.400065 1.400065 1.400065 449.770477 0.000000 2335.051758 0.000000 0.986920 0.000000 -0.161213 0.876967 0.876967 0.876967 @@ -19134,7 +19134,7 @@ 863.966064 0.000000 2535.851807 0.000000 0.957670 0.000000 -0.287867 0.938216 0.938216 0.938216 864.310425 0.000000 2581.255127 0.000000 0.260939 0.000000 0.965355 0.536390 0.536390 0.536390 935.061890 0.000000 2532.462158 0.000000 0.264523 0.000000 -0.964379 1.419413 1.419413 1.419413 -919.873108 0.000000 2524.226562 0.000000 0.649929 0.000000 0.759995 0.389634 0.389634 0.389634 +919.873108 0.000000 2524.226562 0.000000 0.649928 0.000000 0.759995 0.389634 0.389634 0.389634 916.566528 0.000000 2530.874023 0.000000 0.970538 0.000000 0.240948 0.684329 0.684329 0.684329 901.608337 0.000000 2519.687988 0.000000 0.286436 0.000000 -0.958099 1.250040 1.250040 1.250040 881.577271 0.000000 2519.568848 0.000000 0.995450 0.000000 -0.095282 0.844598 0.844598 0.844598 @@ -20162,7 +20162,7 @@ 1070.973633 0.000000 2644.811035 0.000000 0.783433 0.000000 0.621477 0.643290 0.643290 0.643290 1054.362061 0.000000 2655.768066 0.000000 0.931208 0.000000 -0.364487 0.990009 0.990009 0.990009 1049.576294 0.000000 2625.923340 0.000000 0.952922 0.000000 0.303217 0.683712 0.683712 0.683712 -1048.179077 0.000000 2624.773682 0.000000 0.357233 0.000000 -0.934016 1.255047 1.255047 1.255047 +1048.179077 0.000000 2624.773682 0.000000 0.357232 0.000000 -0.934016 1.255047 1.255047 1.255047 1059.798096 0.000000 2661.237549 0.000000 0.090146 0.000000 -0.995929 1.252416 1.252416 1.252416 1062.152100 0.000000 2655.659180 0.000000 0.755863 0.000000 0.654730 0.436452 0.436452 0.436452 1056.846802 0.000000 2657.708740 0.000000 0.604620 0.000000 -0.796514 1.269320 1.269320 1.269320 @@ -20273,7 +20273,7 @@ 1011.810852 0.000000 2732.388428 0.000000 0.055193 0.000000 -0.998476 1.571876 1.571876 1.571876 1063.079956 0.000000 2669.893311 0.000000 0.703985 0.000000 0.710215 0.397757 0.397757 0.397757 1016.050232 0.000000 2732.382324 0.000000 0.773198 0.000000 0.634165 0.450151 0.450151 0.450151 -1029.797974 0.000000 2733.000000 0.000000 0.313330 0.000000 0.949644 0.162311 0.162311 0.162311 +1029.797974 0.000000 2733.000000 0.000000 0.313329 0.000000 0.949644 0.162311 0.162311 0.162311 1078.605103 0.000000 2678.487305 0.000000 0.599423 0.000000 -0.800433 1.272635 1.272635 1.272635 1066.324341 0.000000 2663.913086 0.000000 0.502445 0.000000 0.864609 0.268106 0.268106 0.268106 1020.429688 0.000000 2717.986084 0.000000 0.912879 0.000000 -0.408231 0.826876 0.826876 0.826876 @@ -21077,7 +21077,7 @@ 940.602844 0.000000 2757.712402 0.000000 0.978761 0.000000 0.205005 0.694846 0.694846 0.694846 996.724121 0.000000 2767.263916 0.000000 0.907793 0.000000 0.419419 0.630575 0.630575 0.630575 992.830994 0.000000 2791.834473 0.000000 0.785552 0.000000 0.618796 0.532152 0.532152 0.532152 -940.019958 0.000000 2806.677979 0.000000 0.316029 0.000000 -0.948750 1.044516 1.044516 1.044516 +940.019958 0.000000 2806.677979 0.000000 0.316028 0.000000 -0.948750 1.044516 1.044516 1.044516 967.080688 0.000000 2757.272461 0.000000 0.746420 0.000000 0.665475 0.522238 0.522238 0.522238 958.499390 0.000000 2775.868652 0.000000 0.930008 0.000000 0.367538 0.723328 0.723328 0.723328 969.895996 0.000000 2777.792725 0.000000 0.121611 0.000000 -0.992578 1.537910 1.537910 1.537910 @@ -22408,7 +22408,7 @@ 1132.878052 0.000000 2783.040039 0.000000 0.990607 0.000000 -0.136738 0.836710 0.836710 0.836710 1149.719604 0.000000 2801.860352 0.000000 0.914858 0.000000 0.403776 0.588316 0.588316 0.588316 1135.361328 0.000000 2801.956055 0.000000 0.999395 0.000000 -0.034778 0.817577 0.817577 0.817577 -1112.624634 0.000000 2735.678955 0.000000 0.734102 0.000000 -0.679040 1.180166 1.180166 1.180166 +1112.624634 0.000000 2735.678955 0.000000 0.734102 0.000000 -0.679039 1.180166 1.180166 1.180166 1138.501343 0.000000 2768.342529 0.000000 0.272140 0.000000 0.962258 0.140370 0.140370 0.140370 1127.930786 0.000000 2752.658203 0.000000 0.717777 0.000000 -0.696273 1.189179 1.189179 1.189179 1124.543945 0.000000 2768.752930 0.000000 0.044264 0.000000 -0.999020 1.577449 1.577449 1.577449 @@ -22764,7 +22764,7 @@ 1121.830566 0.000000 2840.061523 0.000000 0.982403 0.000000 -0.186771 0.895684 0.895684 0.895684 1105.768188 0.000000 2852.998779 0.000000 0.604179 0.000000 -0.796848 1.269602 1.269602 1.269602 1099.431641 0.000000 2871.873047 0.000000 0.981455 0.000000 0.191694 0.701763 0.701763 0.701763 -1116.628052 0.000000 2824.720459 0.000000 0.880222 0.000000 -0.474562 0.819751 0.819751 0.819751 +1116.628052 0.000000 2824.720459 0.000000 0.880222 0.000000 -0.474563 0.819751 0.819751 0.819751 1080.116089 0.000000 2859.631836 0.000000 0.661353 0.000000 0.750075 0.368028 0.368028 0.368028 1113.740845 0.000000 2851.911133 0.000000 0.592050 0.000000 -0.805901 1.277310 1.277310 1.277310 1097.638062 0.000000 2848.902588 0.000000 0.157067 0.000000 -0.987588 1.519674 1.519674 1.519674 @@ -25263,7 +25263,7 @@ 1066.630859 0.000000 3047.790039 0.000000 0.917477 0.000000 0.397788 0.591644 0.591644 0.591644 1048.562134 0.000000 3078.441406 0.000000 0.985837 0.000000 0.167704 0.716539 0.716539 0.716539 1042.608521 0.000000 3091.937012 0.000000 0.977699 0.000000 0.210010 0.692240 0.692240 0.692240 -1070.025513 0.000000 3050.098633 0.000000 0.753465 0.000000 0.657489 0.748413 0.748413 0.748413 +1070.025513 0.000000 3050.098633 0.000000 0.753465 0.000000 0.657488 0.748413 0.748413 0.748413 1076.394287 0.000000 3077.709473 0.000000 0.952983 0.000000 0.303023 0.777864 0.777864 0.777864 1033.751831 0.000000 3045.886963 0.000000 0.781384 0.000000 0.624050 0.505233 0.505233 0.505233 1007.970764 0.000000 3044.244141 0.000000 0.863403 0.000000 -0.504516 1.069326 1.069326 1.069326 @@ -27972,7 +27972,7 @@ 1321.613403 0.000000 2650.454346 0.000000 0.927534 0.000000 -0.373739 0.844371 0.844371 0.844371 1302.947754 0.000000 2645.865723 0.000000 0.425837 0.000000 -0.904800 1.321759 1.321759 1.321759 1332.711548 0.000000 2641.872070 0.000000 0.686082 0.000000 0.727524 0.694234 0.694234 0.694234 -1303.420288 0.000000 2641.861328 0.000000 0.700678 0.000000 -0.713477 1.183982 1.183982 1.183982 +1303.420288 0.000000 2641.861328 0.000000 0.700679 0.000000 -0.713477 1.183982 1.183982 1.183982 1304.289062 0.000000 2638.314453 0.000000 0.886923 0.000000 0.461918 0.726158 0.726158 0.726158 1329.017578 0.000000 2655.107178 0.000000 0.698957 0.000000 0.715164 0.687002 0.687002 0.687002 1306.971313 0.000000 2628.937500 0.000000 0.984539 0.000000 0.175167 0.741624 0.741624 0.741624 @@ -28784,7 +28784,7 @@ 1871.834961 0.000000 2491.121338 0.000000 0.432551 0.000000 0.901610 0.227818 0.227818 0.227818 1872.031494 0.000000 2493.903076 0.000000 0.129159 0.000000 -0.991624 1.476464 1.476464 1.476464 1871.918701 0.000000 2496.963135 0.000000 0.992192 0.000000 -0.124717 0.863684 0.863684 0.863684 -1875.988037 0.000000 2495.409668 0.000000 0.231986 0.000000 -0.972719 1.048279 1.048279 1.048279 +1875.988037 0.000000 2495.409668 0.000000 0.231985 0.000000 -0.972719 1.048279 1.048279 1.048279 1873.915649 0.000000 2493.970215 0.000000 0.469282 0.000000 0.883048 0.292013 0.292013 0.292013 1873.069336 0.000000 2492.405762 0.000000 0.388489 0.000000 0.921454 0.250012 0.250012 0.250012 1913.739990 0.000000 2567.018799 0.000000 0.710477 0.000000 0.703720 0.757905 0.757905 0.757905 @@ -30428,7 +30428,7 @@ 2105.025879 0.000000 2850.976318 0.000000 0.481301 0.000000 -0.876555 0.989958 0.989958 0.989958 2108.947998 0.000000 2852.260742 0.000000 0.997736 0.000000 0.067257 0.780373 0.780373 0.780373 2090.245117 0.000000 2860.480713 0.000000 0.937779 0.000000 -0.347234 0.916863 0.916863 0.916863 -2099.449951 0.000000 2813.746338 0.000000 0.458139 0.000000 0.888880 0.579136 0.579136 0.579136 +2099.449951 0.000000 2813.746338 0.000000 0.458140 0.000000 0.888880 0.579136 0.579136 0.579136 2092.945312 0.000000 2840.682129 0.000000 0.947770 0.000000 0.318954 0.685241 0.685241 0.685241 2109.163574 0.000000 2872.373047 0.000000 0.938112 0.000000 0.346331 0.631891 0.631891 0.631891 2098.894531 0.000000 2816.987061 0.000000 0.999365 0.000000 0.035621 0.792386 0.792386 0.792386 @@ -31569,7 +31569,7 @@ 1270.057007 0.000000 2971.765137 0.000000 0.837379 0.000000 -0.546623 1.034476 1.034476 1.034476 1237.237061 0.000000 2986.657471 0.000000 0.100384 0.000000 0.994949 0.341917 0.341917 0.341917 1232.668091 0.000000 2954.916992 0.000000 0.685688 0.000000 -0.727896 0.953055 0.953055 0.953055 -1264.213013 0.000000 2990.589355 0.000000 0.949856 0.000000 -0.312687 0.931479 0.931479 0.931479 +1264.213013 0.000000 2990.589355 0.000000 0.949856 0.000000 -0.312686 0.931479 0.931479 0.931479 1290.618164 0.000000 2996.784180 0.000000 0.253750 0.000000 0.967270 0.130663 0.130663 0.130663 1294.139648 0.000000 2998.983154 0.000000 0.232698 0.000000 0.972549 0.119609 0.119609 0.119609 1275.012939 0.000000 2972.567627 0.000000 0.447949 0.000000 0.894059 0.236553 0.236553 0.236553 @@ -32328,7 +32328,7 @@ 1258.059448 0.000000 3058.580322 0.000000 0.752275 0.000000 -0.658849 1.166331 1.166331 1.166331 1262.171265 0.000000 3062.740967 0.000000 0.979181 0.000000 0.202988 0.695895 0.695895 0.695895 1229.137085 0.000000 3073.431396 0.000000 0.940616 0.000000 0.339473 0.773022 0.773022 0.773022 -1231.208740 0.000000 3086.210693 0.000000 0.335410 0.000000 0.942072 0.174199 0.174199 0.174199 +1231.208740 0.000000 3086.210693 0.000000 0.335409 0.000000 0.942072 0.174199 0.174199 0.174199 1232.350464 0.000000 3082.529785 0.000000 0.538551 0.000000 0.842593 0.289645 0.289645 0.289645 1252.584106 0.000000 3067.761475 0.000000 0.615724 0.000000 -0.787962 1.262182 1.262182 1.262182 1246.507568 0.000000 3086.869385 0.000000 0.630798 0.000000 -0.775947 1.252364 1.252364 1.252364 @@ -32354,7 +32354,7 @@ 1254.630493 0.000000 3091.855469 0.000000 0.722087 0.000000 0.691802 0.702345 0.702345 0.702345 1253.674927 0.000000 3088.711914 0.000000 0.081506 0.000000 -0.996673 1.555469 1.555469 1.555469 1259.794800 0.000000 3045.015137 0.000000 0.402524 0.000000 0.915409 0.647550 0.647550 0.647550 -1258.740845 0.000000 3061.088379 0.000000 0.311420 0.000000 0.950273 0.161287 0.161287 0.161287 +1258.740845 0.000000 3061.088379 0.000000 0.311419 0.000000 0.950273 0.161287 0.161287 0.161287 1244.795898 0.000000 3090.166016 0.000000 0.276367 0.000000 0.961052 0.142609 0.142609 0.142609 1259.288330 0.000000 3075.650391 0.000000 0.222121 0.000000 0.975019 0.321199 0.321199 0.321199 1233.517700 0.000000 3094.331787 0.000000 0.529324 0.000000 0.848420 0.284087 0.284087 0.284087 @@ -32411,7 +32411,7 @@ 1291.575317 0.000000 3028.589111 0.000000 0.475969 0.000000 0.879462 0.252644 0.252644 0.252644 1231.175537 0.000000 3084.255615 0.000000 0.806255 0.000000 -0.591568 1.122385 1.122385 1.122385 1262.458984 0.000000 3025.713379 0.000000 0.665334 0.000000 -0.746546 0.980122 0.980122 0.980122 -1230.389282 0.000000 3093.333008 0.000000 0.192236 0.000000 -0.981349 1.501482 1.501482 1.501482 +1230.389282 0.000000 3093.333008 0.000000 0.192235 0.000000 -0.981349 1.501482 1.501482 1.501482 1260.577881 0.000000 3038.715820 0.000000 0.842656 0.000000 -0.538453 0.944225 0.944225 0.944225 1227.984253 0.000000 3051.174561 0.000000 0.870090 0.000000 -0.492893 0.897793 0.897793 0.897793 1253.788818 0.000000 3066.179443 0.000000 0.680815 0.000000 0.732455 0.381399 0.381399 0.381399 @@ -33581,7 +33581,7 @@ 1567.314453 0.000000 2945.924805 0.000000 0.740255 0.000000 0.672326 0.449508 0.449508 0.449508 1545.390015 0.000000 2918.225830 0.000000 0.919899 0.000000 -0.392156 0.954528 0.954528 0.954528 1578.656372 0.000000 2948.802490 0.000000 0.564611 0.000000 -0.825357 1.261479 1.261479 1.261479 -1562.101562 0.000000 2939.760498 0.000000 0.586903 0.000000 0.809657 0.530512 0.530512 0.530512 +1562.101562 0.000000 2939.760498 0.000000 0.586904 0.000000 0.809657 0.530512 0.530512 0.530512 1544.665649 0.000000 2919.819336 0.000000 0.601074 0.000000 0.799193 0.444925 0.444925 0.444925 1563.351685 0.000000 2936.684326 0.000000 0.977014 0.000000 0.213174 0.718909 0.718909 0.718909 1545.848511 0.000000 2909.653809 0.000000 0.874625 0.000000 0.484800 0.576597 0.576597 0.576597 @@ -34328,7 +34328,7 @@ 1458.577759 0.000000 3135.350098 0.000000 0.783205 0.000000 0.621764 0.458266 0.458266 0.458266 1443.056885 0.000000 3113.961914 0.000000 0.122578 0.000000 0.992459 0.441414 0.441414 0.441414 1456.644043 0.000000 3142.720947 0.000000 0.939998 0.000000 0.341180 0.642148 0.642148 0.642148 -1491.359497 0.000000 3152.637451 0.000000 0.732085 0.000000 0.681214 0.452750 0.452750 0.452750 +1491.359497 0.000000 3152.637451 0.000000 0.732085 0.000000 0.681213 0.452750 0.452750 0.452750 1475.909546 0.000000 3156.751465 0.000000 0.977503 0.000000 0.210921 0.698133 0.698133 0.698133 1462.103760 0.000000 3163.234863 0.000000 0.874099 0.000000 0.485748 0.602458 0.602458 0.602458 1459.236206 0.000000 3137.394043 0.000000 0.953449 0.000000 0.301554 0.655004 0.655004 0.655004 @@ -35215,7 +35215,7 @@ 1184.463867 0.000000 3178.679688 0.000000 0.573858 0.000000 -0.818955 1.288714 1.288714 1.288714 1182.695923 0.000000 3167.448975 0.000000 0.355671 0.000000 -0.934611 1.414804 1.414804 1.414804 1171.955322 0.000000 3203.354492 0.000000 0.935999 0.000000 0.352004 0.764797 0.764797 0.764797 -1209.359131 0.000000 3201.670654 0.000000 0.871662 0.000000 0.490107 0.748849 0.748849 0.748849 +1209.359131 0.000000 3201.670654 0.000000 0.871662 0.000000 0.490108 0.748849 0.748849 0.748849 1165.688721 0.000000 3170.735107 0.000000 0.965047 0.000000 0.262078 0.664948 0.664948 0.664948 1156.974121 0.000000 3171.569092 0.000000 0.805941 0.000000 -0.591995 1.104941 1.104941 1.104941 1189.627808 0.000000 3178.349854 0.000000 0.675222 0.000000 -0.737615 0.877868 0.877868 0.877868 @@ -40682,7 +40682,7 @@ 2110.380615 0.000000 2887.578369 0.000000 0.591476 0.000000 -0.806323 1.204617 1.204617 1.204617 2108.830078 0.000000 2884.184082 0.000000 0.970137 0.000000 -0.242557 0.924778 0.924778 0.924778 2154.587402 0.000000 2920.850586 0.000000 0.294149 0.000000 0.955760 0.332465 0.332465 0.332465 -2113.441650 0.000000 2907.357666 0.000000 0.767393 0.000000 0.641178 0.648475 0.648475 0.648475 +2113.441650 0.000000 2907.357666 0.000000 0.767393 0.000000 0.641177 0.648475 0.648475 0.648475 2110.958984 0.000000 2881.468262 0.000000 0.611633 0.000000 0.791141 0.358876 0.358876 0.358876 2094.051758 0.000000 2931.327637 0.000000 0.173758 0.000000 -0.984788 1.469228 1.469228 1.469228 2142.282227 0.000000 2947.507080 0.000000 0.899255 0.000000 -0.437425 1.000736 1.000736 1.000736 @@ -40953,7 +40953,7 @@ 2155.046631 0.000000 3022.422363 0.000000 0.769457 0.000000 0.638699 0.447157 0.447157 0.447157 2151.742188 0.000000 3013.078857 0.000000 0.640471 0.000000 -0.767982 0.904937 0.904937 0.904937 2159.360107 0.000000 3017.194580 0.000000 0.998212 0.000000 0.059777 0.769538 0.769538 0.769538 -2155.964600 0.000000 2965.359131 0.000000 0.763992 0.000000 0.645226 0.442821 0.442821 0.442821 +2155.964600 0.000000 2965.359131 0.000000 0.763992 0.000000 0.645225 0.442821 0.442821 0.442821 2154.587402 0.000000 2969.065674 0.000000 0.999027 0.000000 0.044112 0.777527 0.777527 0.777527 2155.867188 0.000000 2972.331787 0.000000 0.967792 0.000000 -0.251752 0.929611 0.929611 0.929611 2134.938721 0.000000 3023.284424 0.000000 0.338017 0.000000 0.941140 0.175610 0.175610 0.175610 @@ -41458,7 +41458,7 @@ 2248.768066 0.000000 2901.143066 0.000000 0.816837 0.000000 0.576868 0.486839 0.486839 0.486839 2251.227051 0.000000 2911.404541 0.000000 0.337322 0.000000 0.941389 0.175234 0.175234 0.175234 2236.816162 0.000000 2890.241211 0.000000 0.025066 0.000000 -0.999686 1.587233 1.587233 1.587233 -2248.075928 0.000000 2911.594727 0.000000 0.980608 0.000000 0.195981 0.699538 0.699538 0.699538 +2248.075928 0.000000 2911.594727 0.000000 0.980608 0.000000 0.195980 0.699538 0.699538 0.699538 2242.724365 0.000000 2896.350830 0.000000 0.564017 0.000000 -0.825763 1.294808 1.294808 1.294808 2268.610107 0.000000 2929.809570 0.000000 0.277617 0.000000 0.960692 0.143271 0.143271 0.143271 2247.348877 0.000000 2894.036621 0.000000 0.565548 0.000000 -0.824715 1.293864 1.293864 1.293864 @@ -41602,7 +41602,7 @@ 2243.223389 0.000000 2935.635254 0.000000 0.884335 0.000000 -0.466852 1.020216 1.020216 1.020216 2262.275879 0.000000 2886.835449 0.000000 0.562277 0.000000 -0.826949 1.295881 1.295881 1.295881 2249.739990 0.000000 2932.188965 0.000000 0.990490 0.000000 -0.137587 0.857615 0.857615 0.857615 -2255.267578 0.000000 2910.649170 0.000000 0.834065 0.000000 -0.551666 1.097613 1.097613 1.097613 +2255.267578 0.000000 2910.649170 0.000000 0.834065 0.000000 -0.551667 1.097613 1.097613 1.097613 2258.003662 0.000000 2904.071289 0.000000 0.844866 0.000000 -0.534977 1.087488 1.087488 1.087488 2258.685059 0.000000 2913.158936 0.000000 0.997373 0.000000 -0.072431 0.831274 0.831274 0.831274 2243.317383 0.000000 2892.728027 0.000000 0.870628 0.000000 0.491942 0.538060 0.538060 0.538060 @@ -43366,7 +43366,7 @@ 1982.958984 0.000000 3255.044678 0.000000 0.307212 0.000000 0.951641 0.201765 0.201765 0.201765 1994.817139 0.000000 3265.476562 0.000000 0.295058 0.000000 0.955480 0.678126 0.678126 0.678126 1991.334961 0.000000 3254.732178 0.000000 0.173653 0.000000 -0.984807 1.438604 1.438604 1.438604 -1978.352417 0.000000 3258.586426 0.000000 0.852488 0.000000 -0.522746 1.061472 1.061472 1.061472 +1978.352417 0.000000 3258.586426 0.000000 0.852488 0.000000 -0.522747 1.061472 1.061472 1.061472 1978.795898 0.000000 3263.442871 0.000000 0.316889 0.000000 -0.948463 1.393394 1.393394 1.393394 2004.226929 0.000000 3242.720215 0.000000 0.965982 0.000000 -0.258610 0.924341 0.924341 0.924341 2000.559570 0.000000 3265.791260 0.000000 0.865311 0.000000 0.501235 0.545190 0.545190 0.545190 @@ -44012,7 +44012,7 @@ 1778.873291 0.000000 3435.460449 0.000000 0.279357 0.000000 -0.960187 1.409514 1.409514 1.409514 1797.098755 0.000000 3420.484375 0.000000 0.990522 0.000000 0.137357 0.734501 0.734501 0.734501 1789.947388 0.000000 3410.020508 0.000000 0.822031 0.000000 0.569443 0.512024 0.512024 0.512024 -1766.908569 0.000000 3432.799561 0.000000 0.495673 0.000000 0.868509 0.724347 0.724347 0.724347 +1766.908569 0.000000 3432.799561 0.000000 0.495674 0.000000 0.868509 0.724347 0.724347 0.724347 1798.636963 0.000000 3453.754395 0.000000 0.966923 0.000000 0.255069 0.677915 0.677915 0.677915 1797.426758 0.000000 3387.942871 0.000000 0.995159 0.000000 0.098276 0.753799 0.753799 0.753799 1788.151855 0.000000 3427.426270 0.000000 0.915038 0.000000 0.403368 0.608445 0.608445 0.608445 @@ -44098,7 +44098,7 @@ 1783.640137 0.000000 3425.497803 0.000000 0.876724 0.000000 -0.480993 1.038521 1.038521 1.038521 1783.193848 0.000000 3386.197754 0.000000 0.722590 0.000000 -0.691277 1.088112 1.088112 1.088112 1796.325073 0.000000 3411.859863 0.000000 0.987405 0.000000 0.158214 0.725746 0.725746 0.725746 -1769.974243 0.000000 3383.987061 0.000000 0.293238 0.000000 0.956040 0.568600 0.568600 0.568600 +1769.974243 0.000000 3383.987061 0.000000 0.293237 0.000000 0.956040 0.568600 0.568600 0.568600 1789.540894 0.000000 3391.213135 0.000000 0.878291 0.000000 0.478126 0.563032 0.563032 0.563032 1794.911377 0.000000 3420.915283 0.000000 0.605903 0.000000 -0.795539 1.237266 1.237266 1.237266 1790.865479 0.000000 3386.146240 0.000000 0.971289 0.000000 0.237902 0.685820 0.685820 0.685820 @@ -46751,7 +46751,7 @@ 2124.864258 0.000000 3298.432129 0.000000 0.534976 0.000000 0.844867 0.323664 0.323664 0.323664 2222.059326 0.000000 3190.405029 0.000000 0.758245 0.000000 0.651970 0.791490 0.791490 0.791490 2228.874756 0.000000 3190.739990 0.000000 0.439296 0.000000 0.898342 0.779940 0.779940 0.779940 -2180.107178 0.000000 3226.313965 0.000000 0.297100 0.000000 -0.954847 0.820278 0.820278 0.820278 +2180.107178 0.000000 3226.313965 0.000000 0.297099 0.000000 -0.954847 0.820278 0.820278 0.820278 2173.105225 0.000000 3184.670410 0.000000 0.714226 0.000000 0.699915 0.781419 0.781419 0.781419 2194.333252 0.000000 3217.032227 0.000000 0.787739 0.000000 0.616009 0.461998 0.461998 0.461998 2182.011230 0.000000 3221.694092 0.000000 0.479984 0.000000 -0.877277 0.844885 0.844885 0.844885 @@ -46821,7 +46821,7 @@ 2190.947998 0.000000 3189.178711 0.000000 0.965958 0.000000 -0.258698 0.902435 0.902435 0.902435 2164.023682 0.000000 3176.129883 0.000000 0.712876 0.000000 0.701290 0.410382 0.410382 0.410382 2221.479248 0.000000 3224.038086 0.000000 0.985899 0.000000 0.167339 0.714372 0.714372 0.714372 -2167.223633 0.000000 3186.169922 0.000000 0.463189 0.000000 -0.886259 1.021891 1.021891 1.021891 +2167.223633 0.000000 3186.169922 0.000000 0.463190 0.000000 -0.886259 1.021891 1.021891 1.021891 2199.469482 0.000000 3218.879639 0.000000 0.802169 0.000000 -0.597097 1.099049 1.099049 1.099049 2219.178223 0.000000 3227.625977 0.000000 0.051894 0.000000 0.998653 0.335865 0.335865 0.335865 2165.343262 0.000000 3196.884766 0.000000 0.685599 0.000000 0.727979 0.422191 0.422191 0.422191 @@ -48314,7 +48314,7 @@ 2062.632568 0.000000 3429.464111 0.000000 0.841686 0.000000 0.539967 0.528866 0.528866 0.528866 2064.883789 0.000000 3431.189941 0.000000 0.523247 0.000000 0.852181 0.315084 0.315084 0.315084 2087.669434 0.000000 3424.169678 0.000000 0.920908 0.000000 -0.389781 0.949541 0.949541 0.949541 -2081.507568 0.000000 3388.100098 0.000000 0.947450 0.000000 0.319904 0.645866 0.645866 0.645866 +2081.507568 0.000000 3388.100098 0.000000 0.947450 0.000000 0.319903 0.645866 0.645866 0.645866 2062.946533 0.000000 3455.190674 0.000000 0.732805 0.000000 0.680439 0.445766 0.445766 0.445766 2036.489136 0.000000 3385.698242 0.000000 0.278545 0.000000 0.960423 0.187512 0.187512 0.187512 2083.699463 0.000000 3392.929443 0.000000 0.044944 0.000000 -0.998990 1.525296 1.525296 1.525296 @@ -48951,7 +48951,7 @@ 2116.604004 0.000000 3395.749756 0.000000 0.904445 0.000000 -0.426591 1.009493 1.009493 1.009493 2095.866455 0.000000 3414.501953 0.000000 0.923287 0.000000 0.384110 0.616536 0.616536 0.616536 2159.349854 0.000000 3388.803955 0.000000 0.627129 0.000000 -0.778915 1.252984 1.252984 1.252984 -2122.585693 0.000000 3386.431152 0.000000 0.774786 0.000000 0.632224 0.474666 0.474666 0.474666 +2122.585693 0.000000 3386.431152 0.000000 0.774786 0.000000 0.632223 0.474666 0.474666 0.474666 2110.380615 0.000000 3391.468994 0.000000 0.357540 0.000000 -0.933898 1.120131 1.120131 1.120131 2110.958984 0.000000 3385.358887 0.000000 0.979854 0.000000 0.199717 0.714061 0.714061 0.714061 2112.585205 0.000000 3388.082764 0.000000 0.707296 0.000000 0.706917 0.652599 0.652599 0.652599 @@ -50725,7 +50725,7 @@ 872.154846 0.000000 3534.654541 0.000000 0.623902 0.000000 0.781502 0.443459 0.443459 0.443459 892.666016 0.000000 3584.333252 0.000000 0.717749 0.000000 -0.696302 0.963064 0.963064 0.963064 878.331726 0.000000 3539.239502 0.000000 0.939671 0.000000 0.342080 0.722600 0.722600 0.722600 -879.457947 0.000000 3585.187500 0.000000 0.661180 0.000000 0.750228 0.547524 0.547524 0.547524 +879.457947 0.000000 3585.187500 0.000000 0.661179 0.000000 0.750228 0.547524 0.547524 0.547524 884.654907 0.000000 3553.074463 0.000000 0.911910 0.000000 0.410391 0.723986 0.723986 0.723986 879.798889 0.000000 3531.158203 0.000000 0.551781 0.000000 0.833989 0.358749 0.358749 0.358749 873.971863 0.000000 3595.292725 0.000000 0.646502 0.000000 0.762912 0.387495 0.387495 0.387495 @@ -51147,7 +51147,7 @@ 285.813354 0.000000 4385.516602 0.000000 0.965303 0.000000 0.261133 0.674416 0.674416 0.674416 247.622177 0.000000 4344.945801 0.000000 0.632032 0.000000 0.774943 0.389174 0.389174 0.389174 238.425018 0.000000 4348.267578 0.000000 0.644667 0.000000 0.764463 0.535822 0.535822 0.535822 -241.715637 0.000000 4370.770508 0.000000 0.546379 0.000000 0.837538 0.338012 0.338012 0.338012 +241.715637 0.000000 4370.770508 0.000000 0.546380 0.000000 0.837538 0.338012 0.338012 0.338012 229.097504 0.000000 4349.200684 0.000000 0.012391 0.000000 -0.999923 1.201513 1.201513 1.201513 260.637726 0.000000 4352.409180 0.000000 0.776827 0.000000 -0.629714 1.122436 1.122436 1.122436 271.289856 0.000000 4371.831055 0.000000 0.053249 0.000000 -0.998581 1.521343 1.521343 1.521343 @@ -51543,7 +51543,7 @@ 295.980133 0.000000 4376.153320 0.000000 0.998611 0.000000 -0.052680 0.820842 0.820842 0.820842 290.029449 0.000000 4387.572266 0.000000 0.071880 0.000000 -0.997413 1.512470 1.512470 1.512470 298.248901 0.000000 4378.752441 0.000000 0.844596 0.000000 0.535404 0.531438 0.531438 0.531438 -311.381927 0.000000 4389.780762 0.000000 0.921813 0.000000 0.387636 0.710162 0.710162 0.710162 +311.381927 0.000000 4389.780762 0.000000 0.921813 0.000000 0.387635 0.710162 0.710162 0.710162 288.372894 0.000000 4380.864746 0.000000 0.952250 0.000000 0.305320 0.731214 0.731214 0.731214 299.434418 0.000000 4375.322754 0.000000 0.452254 0.000000 -0.891889 1.319193 1.319193 1.319193 305.950989 0.000000 4371.876465 0.000000 0.968732 0.000000 -0.248108 0.859591 0.859591 0.859591 @@ -52660,7 +52660,7 @@ 1620.466797 0.000000 3596.845947 0.000000 0.017582 0.000000 0.999845 0.216798 0.216798 0.216798 1613.878296 0.000000 3588.159668 0.000000 0.700718 0.000000 -0.713439 1.133184 1.133184 1.133184 1624.173950 0.000000 3566.464355 0.000000 0.102888 0.000000 -0.994693 1.547507 1.547507 1.547507 -1597.933960 0.000000 3580.590576 0.000000 0.496203 0.000000 0.868206 0.606777 0.606777 0.606777 +1597.933960 0.000000 3580.590576 0.000000 0.496204 0.000000 0.868206 0.606777 0.606777 0.606777 1599.634155 0.000000 3569.152100 0.000000 0.823992 0.000000 -0.566601 1.044227 1.044227 1.044227 1629.575317 0.000000 3569.736816 0.000000 0.970634 0.000000 0.240563 0.676269 0.676269 0.676269 1620.567383 0.000000 3565.474854 0.000000 0.907443 0.000000 0.420175 0.639775 0.639775 0.639775 @@ -54425,7 +54425,7 @@ 2156.286133 0.000000 3483.844238 0.000000 0.423262 0.000000 0.906007 0.261078 0.261078 0.261078 2104.383789 0.000000 3465.453613 0.000000 0.843449 0.000000 -0.537210 0.993689 0.993689 0.993689 2154.872314 0.000000 3492.899658 0.000000 0.187521 0.000000 -0.982261 1.456999 1.456999 1.456999 -2096.202881 0.000000 3476.170410 0.000000 0.903130 0.000000 0.429366 0.573979 0.573979 0.573979 +2096.202881 0.000000 3476.170410 0.000000 0.903130 0.000000 0.429367 0.573979 0.573979 0.573979 2104.788818 0.000000 3494.596436 0.000000 0.059964 0.000000 -0.998201 1.484955 1.484955 1.484955 2151.338379 0.000000 3480.213379 0.000000 0.805268 0.000000 0.592911 0.498315 0.498315 0.498315 2145.428467 0.000000 3504.315430 0.000000 0.382348 0.000000 -0.924018 1.353112 1.353112 1.353112 @@ -55951,7 +55951,7 @@ 2179.499512 0.000000 3489.468506 0.000000 0.837540 0.000000 0.546376 0.525237 0.525237 0.525237 2192.507568 0.000000 3455.522705 0.000000 0.037755 0.000000 -0.999287 1.198038 1.198038 1.198038 2179.759766 0.000000 3468.592285 0.000000 0.293330 0.000000 -0.956011 1.405153 1.405153 1.405153 -2194.541748 0.000000 3501.259766 0.000000 0.717378 0.000000 0.696684 0.458253 0.458253 0.458253 +2194.541748 0.000000 3501.259766 0.000000 0.717378 0.000000 0.696685 0.458253 0.458253 0.458253 2163.308594 0.000000 3504.834229 0.000000 0.997881 0.000000 -0.065059 0.830947 0.830947 0.830947 2172.886475 0.000000 3485.388184 0.000000 0.963084 0.000000 0.269201 0.670439 0.670439 0.670439 2188.356445 0.000000 3455.298828 0.000000 0.900792 0.000000 -0.434250 1.010835 1.010835 1.010835 @@ -59112,7 +59112,7 @@ 2748.823975 0.000000 2405.622559 0.000000 0.273832 0.000000 -0.961778 1.210740 1.210740 1.210740 2780.364258 0.000000 2408.831055 0.000000 0.598497 0.000000 0.801125 0.460392 0.460392 0.460392 2763.088623 0.000000 2398.903564 0.000000 0.972986 0.000000 0.230862 0.708804 0.708804 0.708804 -2778.474854 0.000000 2397.173340 0.000000 0.977503 0.000000 0.210922 0.691766 0.691766 0.691766 +2778.474854 0.000000 2397.173340 0.000000 0.977503 0.000000 0.210921 0.691766 0.691766 0.691766 2806.987061 0.000000 2426.304688 0.000000 0.474730 0.000000 0.880131 0.406677 0.406677 0.406677 2839.994385 0.000000 2441.520508 0.000000 0.973625 0.000000 -0.228155 0.917231 0.917231 0.917231 2864.905518 0.000000 2447.458252 0.000000 0.693684 0.000000 0.720279 0.390422 0.390422 0.390422 @@ -62971,7 +62971,7 @@ 3065.014404 0.000000 2759.761475 0.000000 0.952586 0.000000 0.304270 0.642540 0.642540 0.642540 3056.050537 0.000000 2750.318115 0.000000 0.474894 0.000000 -0.880043 0.948277 0.948277 0.948277 3092.184570 0.000000 2764.000488 0.000000 0.925565 0.000000 0.378589 0.602255 0.602255 0.602255 -3090.770752 0.000000 2773.055908 0.000000 0.172737 0.000000 -0.984968 1.511583 1.511583 1.511583 +3090.770752 0.000000 2773.055908 0.000000 0.172736 0.000000 -0.984968 1.511583 1.511583 1.511583 3032.101318 0.000000 2756.326660 0.000000 0.925542 0.000000 0.378644 0.602225 0.602225 0.602225 3029.671875 0.000000 2803.502197 0.000000 0.463017 0.000000 0.886350 0.641167 0.641167 0.641167 3040.687256 0.000000 2774.752686 0.000000 0.766842 0.000000 0.641835 0.445077 0.445077 0.445077 @@ -63552,7 +63552,7 @@ 3191.483887 0.000000 2660.121826 0.000000 0.993896 0.000000 0.110322 0.749660 0.749660 0.749660 3206.307373 0.000000 2609.664307 0.000000 0.999999 0.000000 0.001600 0.799275 0.799275 0.799275 3199.982178 0.000000 2647.983887 0.000000 0.061102 0.000000 -0.998132 1.330665 1.330665 1.330665 -3196.416016 0.000000 2648.536377 0.000000 0.982609 0.000000 -0.185689 0.895123 0.895123 0.895123 +3196.416016 0.000000 2648.536377 0.000000 0.982608 0.000000 -0.185689 0.895123 0.895123 0.895123 3226.891113 0.000000 2613.894043 0.000000 0.455159 0.000000 0.890410 0.240668 0.240668 0.240668 3226.918213 0.000000 2646.041260 0.000000 0.995489 0.000000 0.094878 0.751606 0.751606 0.751606 3230.656738 0.000000 2602.635986 0.000000 0.998270 0.000000 -0.058798 0.829963 0.829963 0.829963 @@ -63578,7 +63578,7 @@ 3187.774170 0.000000 2660.159424 0.000000 0.411880 0.000000 0.911238 0.216204 0.216204 0.216204 3213.541748 0.000000 2645.293701 0.000000 0.752462 0.000000 -0.658636 1.123105 1.123105 1.123105 3209.662598 0.000000 2651.110840 0.000000 0.966790 0.000000 0.255571 0.668379 0.668379 0.668379 -3222.031494 0.000000 2611.193848 0.000000 0.749233 0.000000 -0.662307 1.160001 1.160001 1.160001 +3222.031494 0.000000 2611.193848 0.000000 0.749233 0.000000 -0.662306 1.160001 1.160001 1.160001 3238.838379 0.000000 2614.270508 0.000000 0.145987 0.000000 -0.989287 1.525383 1.525383 1.525383 3204.085205 0.000000 2645.475342 0.000000 0.466745 0.000000 -0.884392 1.179292 1.179292 1.179292 3208.288330 0.000000 2605.874512 0.000000 0.296899 0.000000 -0.954909 1.400842 1.400842 1.400842 @@ -64103,7 +64103,7 @@ 2345.946045 0.000000 3063.277588 0.000000 0.487941 0.000000 0.872877 0.645298 0.645298 0.645298 2315.681152 0.000000 3068.091309 0.000000 0.230995 0.000000 0.972955 0.612981 0.612981 0.612981 2310.874756 0.000000 3068.179688 0.000000 0.989055 0.000000 0.147549 0.780479 0.780479 0.780479 -2333.717529 0.000000 3041.749756 0.000000 0.879957 0.000000 0.475052 0.711019 0.711019 0.711019 +2333.717529 0.000000 3041.749756 0.000000 0.879957 0.000000 0.475053 0.711019 0.711019 0.711019 2352.577148 0.000000 3079.464600 0.000000 0.188599 0.000000 0.982054 0.353154 0.353154 0.353154 2364.906250 0.000000 3052.118164 0.000000 0.685093 0.000000 -0.728456 0.932020 0.932020 0.932020 2342.676270 0.000000 3067.290771 0.000000 0.970002 0.000000 -0.243095 0.904953 0.904953 0.904953 @@ -64581,7 +64581,7 @@ 2454.749268 0.000000 3023.982666 0.000000 0.864769 0.000000 0.502169 0.694924 0.694924 0.694924 2480.817871 0.000000 3048.032471 0.000000 0.571632 0.000000 0.820510 0.361796 0.361796 0.361796 2499.854736 0.000000 3073.959961 0.000000 0.502545 0.000000 -0.864551 1.064875 1.064875 1.064875 -2484.143555 0.000000 3042.800293 0.000000 0.546756 0.000000 0.837292 0.595866 0.595866 0.595866 +2484.143555 0.000000 3042.800293 0.000000 0.546757 0.000000 0.837292 0.595866 0.595866 0.595866 2498.374023 0.000000 3062.332520 0.000000 0.910546 0.000000 0.413408 0.626353 0.626353 0.626353 2503.701172 0.000000 3028.117188 0.000000 0.241823 0.000000 0.970321 0.365491 0.365491 0.365491 2457.658691 0.000000 3054.363281 0.000000 0.222672 0.000000 0.974893 0.531123 0.531123 0.531123 @@ -65114,7 +65114,7 @@ 2715.712891 0.000000 3105.183350 0.000000 0.061897 0.000000 0.998083 0.266601 0.266601 0.266601 2345.605957 0.000000 3218.971436 0.000000 0.262271 0.000000 0.964994 0.797393 0.797393 0.797393 2340.972656 0.000000 3203.605469 0.000000 0.995390 0.000000 -0.095910 0.803837 0.803837 0.803837 -2362.822998 0.000000 3224.177979 0.000000 0.717732 0.000000 -0.696319 0.827691 0.827691 0.827691 +2362.822998 0.000000 3224.177979 0.000000 0.717732 0.000000 -0.696320 0.827691 0.827691 0.827691 2359.662354 0.000000 3199.245117 0.000000 0.994295 0.000000 -0.106664 0.852933 0.852933 0.852933 2354.964355 0.000000 3172.854736 0.000000 0.755878 0.000000 -0.654712 1.149280 1.149280 1.149280 2369.116211 0.000000 3187.328369 0.000000 0.020044 0.000000 0.999799 0.050473 0.050473 0.050473 @@ -65444,7 +65444,7 @@ 2397.251465 0.000000 3189.079102 0.000000 0.118000 0.000000 0.993014 0.060237 0.060237 0.060237 2443.339355 0.000000 3199.612061 0.000000 0.916049 0.000000 0.401065 0.650816 0.650816 0.650816 2429.527100 0.000000 3219.036133 0.000000 0.136997 0.000000 0.990571 0.098620 0.098620 0.098620 -2446.715088 0.000000 3222.446289 0.000000 0.646111 0.000000 -0.763244 1.238763 1.238763 1.238763 +2446.715088 0.000000 3222.446289 0.000000 0.646110 0.000000 -0.763244 1.238763 1.238763 1.238763 2404.676758 0.000000 3190.082275 0.000000 0.432721 0.000000 -0.901528 1.244208 1.244208 1.244208 2438.434570 0.000000 3201.206543 0.000000 0.907376 0.000000 -0.420319 1.020931 1.020931 1.020931 2445.354736 0.000000 3218.470703 0.000000 0.342925 0.000000 0.939363 0.285547 0.285547 0.285547 @@ -65799,7 +65799,7 @@ 2429.250000 0.000000 3213.369629 0.000000 0.915977 0.000000 -0.401231 0.983882 0.983882 0.983882 2383.988770 0.000000 3207.411621 0.000000 0.366132 0.000000 -0.930563 1.409091 1.409091 1.409091 2390.503906 0.000000 3172.442383 0.000000 0.707488 0.000000 -0.706726 1.179348 1.179348 1.179348 -2430.041748 0.000000 3167.386719 0.000000 0.972082 0.000000 -0.234643 0.914004 0.914004 0.914004 +2430.041748 0.000000 3167.386719 0.000000 0.972082 0.000000 -0.234642 0.914004 0.914004 0.914004 2447.698486 0.000000 3193.568359 0.000000 0.450276 0.000000 0.892889 0.462727 0.462727 0.462727 2375.874023 0.000000 3185.957275 0.000000 0.039310 0.000000 0.999227 0.062847 0.062847 0.062847 2437.270996 0.000000 3202.383301 0.000000 0.999311 0.000000 0.037119 0.781907 0.781907 0.781907 @@ -66024,7 +66024,7 @@ 2448.960449 0.000000 3193.746582 0.000000 0.943716 0.000000 0.330757 0.696315 0.696315 0.696315 2489.972900 0.000000 3233.755859 0.000000 0.598006 0.000000 -0.801492 1.273536 1.273536 1.273536 2510.702393 0.000000 3174.109863 0.000000 0.702938 0.000000 -0.711251 1.060761 1.060761 1.060761 -2452.398438 0.000000 3193.569092 0.000000 0.495609 0.000000 0.868545 0.406998 0.406998 0.406998 +2452.398438 0.000000 3193.569092 0.000000 0.495610 0.000000 0.868545 0.406998 0.406998 0.406998 2454.971680 0.000000 3196.379395 0.000000 0.841652 0.000000 -0.540021 1.085976 1.085976 1.085976 2512.101074 0.000000 3207.519287 0.000000 0.760162 0.000000 -0.649734 1.007640 1.007640 1.007640 2512.099609 0.000000 3171.226318 0.000000 0.999239 0.000000 0.039000 0.786833 0.786833 0.786833 @@ -66902,7 +66902,7 @@ 2314.030273 0.000000 3370.971436 0.000000 0.259164 0.000000 -0.965833 1.048298 1.048298 1.048298 2330.750000 0.000000 3382.679443 0.000000 0.859635 0.000000 0.510909 0.631852 0.631852 0.631852 2347.916504 0.000000 3338.344482 0.000000 0.903485 0.000000 -0.428619 0.908819 0.908819 0.908819 -2338.437012 0.000000 3381.760498 0.000000 0.854524 0.000000 0.519412 0.578564 0.578564 0.578564 +2338.437012 0.000000 3381.760498 0.000000 0.854524 0.000000 0.519413 0.578564 0.578564 0.578564 2329.507568 0.000000 3358.791992 0.000000 0.919306 0.000000 -0.393543 0.979342 0.979342 0.979342 2304.163574 0.000000 3365.668701 0.000000 0.999537 0.000000 0.030432 0.786748 0.786748 0.786748 2327.163086 0.000000 3381.999512 0.000000 0.894015 0.000000 -0.448037 0.889074 0.889074 0.889074 @@ -66914,7 +66914,7 @@ 2342.229492 0.000000 3352.613281 0.000000 0.479630 0.000000 0.877471 0.282563 0.282563 0.282563 2365.736084 0.000000 3356.479248 0.000000 0.682330 0.000000 -0.731044 1.024329 1.024329 1.024329 2370.090332 0.000000 3345.381836 0.000000 0.806677 0.000000 -0.590993 1.113182 1.113182 1.113182 -2372.205811 0.000000 3367.592285 0.000000 0.225516 0.000000 0.974240 0.274144 0.274144 0.274144 +2372.205811 0.000000 3367.592285 0.000000 0.225515 0.000000 0.974240 0.274144 0.274144 0.274144 2345.394531 0.000000 3364.781738 0.000000 0.302303 0.000000 -0.953212 1.193727 1.193727 1.193727 2305.868652 0.000000 3357.782715 0.000000 0.067886 0.000000 0.997693 0.430807 0.430807 0.430807 2320.234863 0.000000 3340.689453 0.000000 0.429257 0.000000 -0.903182 1.108406 1.108406 1.108406 @@ -68845,7 +68845,7 @@ 2458.469238 0.000000 3426.254150 0.000000 0.663001 0.000000 0.748618 0.369148 0.369148 0.369148 2452.029297 0.000000 3438.621094 0.000000 0.266523 0.000000 0.963829 0.316692 0.316692 0.316692 2491.799316 0.000000 3390.579834 0.000000 0.895824 0.000000 -0.444409 0.978433 0.978433 0.978433 -2489.183838 0.000000 3387.734619 0.000000 0.946465 0.000000 0.322808 0.663452 0.663452 0.663452 +2489.183838 0.000000 3387.734619 0.000000 0.946465 0.000000 0.322807 0.663452 0.663452 0.663452 2462.991211 0.000000 3429.986084 0.000000 0.673833 0.000000 0.738884 0.647231 0.647231 0.647231 2489.536133 0.000000 3391.789062 0.000000 0.982387 0.000000 -0.186859 0.876959 0.876959 0.876959 2465.640137 0.000000 3411.081299 0.000000 0.097349 0.000000 0.995250 0.073198 0.073198 0.073198 @@ -70834,7 +70834,7 @@ 2799.268066 0.000000 3264.260254 0.000000 0.416718 0.000000 -0.909036 1.381089 1.381089 1.381089 2787.884277 0.000000 3310.913818 0.000000 0.999868 0.000000 -0.016244 0.805808 0.805808 0.805808 2762.976074 0.000000 3308.844482 0.000000 0.232115 0.000000 -0.972688 1.400615 1.400615 1.400615 -2767.924316 0.000000 3293.651855 0.000000 0.945657 0.000000 0.325166 0.746422 0.746422 0.746422 +2767.924316 0.000000 3293.651855 0.000000 0.945657 0.000000 0.325165 0.746422 0.746422 0.746422 2768.861328 0.000000 3302.966553 0.000000 0.934507 0.000000 0.355944 0.614655 0.614655 0.614655 2765.309326 0.000000 3278.646729 0.000000 0.459556 0.000000 0.888149 0.339264 0.339264 0.339264 2800.500000 0.000000 3303.123291 0.000000 0.141487 0.000000 -0.989940 1.493454 1.493454 1.493454 @@ -70898,7 +70898,7 @@ 2780.468994 0.000000 3304.419922 0.000000 0.898274 0.000000 -0.439436 1.031715 1.031715 1.031715 2753.109863 0.000000 3257.887451 0.000000 0.923062 0.000000 -0.384651 0.937999 0.937999 0.937999 2787.583984 0.000000 3300.297607 0.000000 0.904396 0.000000 -0.426695 1.024515 1.024515 1.024515 -2765.753418 0.000000 3300.222168 0.000000 0.848648 0.000000 0.528958 0.595170 0.595170 0.595170 +2765.753418 0.000000 3300.222168 0.000000 0.848648 0.000000 0.528959 0.595170 0.595170 0.595170 2740.429199 0.000000 3280.119141 0.000000 0.536036 0.000000 0.844195 0.332288 0.332288 0.332288 2787.908203 0.000000 3293.255371 0.000000 0.452092 0.000000 -0.891971 1.361085 1.361085 1.361085 2766.790283 0.000000 3303.096924 0.000000 0.954940 0.000000 -0.296798 0.936618 0.936618 0.936618 @@ -77420,7 +77420,7 @@ 3140.325195 0.000000 3272.643555 0.000000 0.871298 0.000000 -0.490755 0.923964 0.923964 0.923964 3150.977295 0.000000 3292.065674 0.000000 0.864437 0.000000 0.502740 0.531720 0.531720 0.531720 3114.063477 0.000000 3274.889893 0.000000 0.889269 0.000000 -0.457385 1.030556 1.030556 1.030556 -3118.845703 0.000000 3265.012695 0.000000 0.740444 0.000000 0.672119 0.449641 0.449641 0.449641 +3118.845703 0.000000 3265.012695 0.000000 0.740444 0.000000 0.672118 0.449641 0.449641 0.449641 3154.481445 0.000000 3241.907959 0.000000 0.550779 0.000000 0.834651 0.415407 0.415407 0.415407 3162.484375 0.000000 3308.724365 0.000000 0.972999 0.000000 0.230808 0.689289 0.689289 0.689289 3126.286621 0.000000 3277.211182 0.000000 0.473243 0.000000 -0.880932 1.247757 1.247757 1.247757 @@ -77939,7 +77939,7 @@ 2893.730713 0.000000 3356.517090 0.000000 0.432297 0.000000 -0.901731 1.275815 1.275815 1.275815 2923.432861 0.000000 3336.350098 0.000000 0.982780 0.000000 -0.184781 0.888342 0.888342 0.888342 2919.360107 0.000000 3364.819092 0.000000 0.588062 0.000000 0.808816 0.429311 0.429311 0.429311 -2923.663818 0.000000 3350.521729 0.000000 0.511266 0.000000 0.859422 0.281579 0.281579 0.281579 +2923.663818 0.000000 3350.521729 0.000000 0.511267 0.000000 0.859422 0.281579 0.281579 0.281579 2926.022461 0.000000 3343.274658 0.000000 0.708106 0.000000 -0.706106 1.172661 1.172661 1.172661 2924.531738 0.000000 3313.191895 0.000000 0.841583 0.000000 0.540127 0.528775 0.528775 0.528775 2924.584473 0.000000 3329.706299 0.000000 0.185927 0.000000 -0.982564 1.457771 1.457771 1.457771 @@ -80438,7 +80438,7 @@ 3110.443115 0.000000 3383.326172 0.000000 0.515334 0.000000 -0.856989 1.324269 1.324269 1.324269 3109.696289 0.000000 3409.801025 0.000000 0.996107 0.000000 -0.088151 0.841957 0.841957 0.841957 3165.841797 0.000000 3392.849121 0.000000 0.011872 0.000000 -0.999930 1.108241 1.108241 1.108241 -3120.151855 0.000000 3407.424561 0.000000 0.833417 0.000000 -0.552644 0.932148 0.932148 0.932148 +3120.151855 0.000000 3407.424561 0.000000 0.833417 0.000000 -0.552645 0.932148 0.932148 0.932148 3096.892334 0.000000 3413.111572 0.000000 0.407032 0.000000 0.913414 0.319298 0.319298 0.319298 3113.070801 0.000000 3401.856201 0.000000 0.190524 0.000000 -0.981683 1.455546 1.455546 1.455546 3100.390137 0.000000 3424.087891 0.000000 0.619806 0.000000 -0.784755 1.129786 1.129786 1.129786 @@ -81281,7 +81281,7 @@ 3313.539062 0.000000 3282.386719 0.000000 0.278653 0.000000 0.960392 0.542675 0.542675 0.542675 3351.287109 0.000000 3296.029053 0.000000 0.773439 0.000000 -0.633871 1.149656 1.149656 1.149656 3328.893066 0.000000 3282.882568 0.000000 0.440916 0.000000 -0.897548 1.267308 1.267308 1.267308 -3341.562256 0.000000 3282.132568 0.000000 0.940757 0.000000 -0.339082 0.960986 0.960986 0.960986 +3341.562256 0.000000 3282.132568 0.000000 0.940757 0.000000 -0.339081 0.960986 0.960986 0.960986 3366.242676 0.000000 3269.540039 0.000000 0.127281 0.000000 0.991867 0.065000 0.065000 0.065000 3332.815186 0.000000 3284.166992 0.000000 0.998768 0.000000 0.049623 0.776501 0.776501 0.776501 3355.742188 0.000000 3300.164062 0.000000 0.696476 0.000000 0.717580 0.392399 0.392399 0.392399 @@ -85067,7 +85067,7 @@ 3432.859619 0.000000 3412.692871 0.000000 0.142508 0.000000 -0.989794 1.367480 1.367480 1.367480 3431.846924 0.000000 3405.912109 0.000000 0.999709 0.000000 -0.024143 0.806173 0.806173 0.806173 3444.591553 0.000000 3398.976562 0.000000 0.970519 0.000000 0.241024 0.676027 0.676027 0.676027 -3417.188965 0.000000 3392.755859 0.000000 0.963356 0.000000 0.268228 0.696410 0.696410 0.696410 +3417.188965 0.000000 3392.755859 0.000000 0.963356 0.000000 0.268227 0.696410 0.696410 0.696410 3454.788574 0.000000 3396.274658 0.000000 0.576896 0.000000 0.816818 0.345632 0.345632 0.345632 3421.334961 0.000000 3383.500488 0.000000 0.422406 0.000000 0.906407 0.260630 0.260630 0.260630 3394.705811 0.000000 3383.366943 0.000000 0.604385 0.000000 -0.796692 1.164530 1.164530 1.164530 @@ -85441,7 +85441,7 @@ 4012.974609 0.000000 2676.669189 0.000000 0.903569 0.000000 0.428442 0.610757 0.610757 0.610757 4025.520264 0.000000 2703.015869 0.000000 0.951955 0.000000 -0.306237 0.822378 0.822378 0.822378 3982.210693 0.000000 2726.947510 0.000000 0.751819 0.000000 0.659369 0.508092 0.508092 0.508092 -4012.554932 0.000000 2694.723389 0.000000 0.809011 0.000000 -0.587793 0.876550 0.876550 0.876550 +4012.554932 0.000000 2694.723389 0.000000 0.809011 0.000000 -0.587794 0.876550 0.876550 0.876550 4010.875732 0.000000 2671.770752 0.000000 0.993539 0.000000 0.113493 0.746617 0.746617 0.746617 3992.159180 0.000000 2674.789062 0.000000 0.639375 0.000000 -0.768895 1.188900 1.188900 1.188900 4008.672852 0.000000 2711.346191 0.000000 0.688685 0.000000 -0.725060 1.124001 1.124001 1.124001 @@ -85971,7 +85971,7 @@ 4408.900879 0.000000 2450.588623 0.000000 0.997241 0.000000 -0.074234 0.820182 0.820182 0.820182 4379.062500 0.000000 2557.493896 0.000000 0.906663 0.000000 -0.421856 1.021794 1.021794 1.021794 4380.697754 0.000000 2581.076660 0.000000 0.718217 0.000000 -0.695819 0.839962 0.839962 0.839962 -4385.481445 0.000000 2559.047119 0.000000 0.492023 0.000000 -0.870582 1.287375 1.287375 1.287375 +4385.481445 0.000000 2559.047119 0.000000 0.492024 0.000000 -0.870582 1.287375 1.287375 1.287375 4348.569824 0.000000 2590.442871 0.000000 0.934334 0.000000 0.356399 0.650798 0.650798 0.650798 4338.023926 0.000000 2567.725342 0.000000 0.531089 0.000000 0.847316 0.688953 0.688953 0.688953 4342.630859 0.000000 2564.757080 0.000000 0.604581 0.000000 0.796544 0.676682 0.676682 0.676682 @@ -87715,7 +87715,7 @@ 3565.206299 0.000000 3431.483643 0.000000 0.122972 0.000000 -0.992410 1.369532 1.369532 1.369532 3543.423340 0.000000 3425.183350 0.000000 0.070171 0.000000 -0.997535 1.513284 1.513284 1.513284 3579.151367 0.000000 3419.318604 0.000000 0.999954 0.000000 0.009549 0.795136 0.795136 0.795136 -3534.386475 0.000000 3431.921143 0.000000 0.937422 0.000000 -0.348196 0.905836 0.905836 0.905836 +3534.386475 0.000000 3431.921143 0.000000 0.937422 0.000000 -0.348195 0.905836 0.905836 0.905836 3577.365479 0.000000 3441.100342 0.000000 0.585483 0.000000 0.810685 0.545116 0.545116 0.545116 3574.570068 0.000000 3412.436035 0.000000 0.728275 0.000000 0.685285 0.415484 0.415484 0.415484 3581.992432 0.000000 3403.021973 0.000000 0.209555 0.000000 -0.977797 1.459891 1.459891 1.459891 @@ -88845,7 +88845,7 @@ 3747.851807 0.000000 3320.098633 0.000000 0.060963 0.000000 0.998140 0.489412 0.489412 0.489412 3756.611084 0.000000 3382.133057 0.000000 0.882335 0.000000 0.470621 0.591550 0.591550 0.591550 3760.188477 0.000000 3380.412598 0.000000 0.312748 0.000000 -0.949836 1.438001 1.438001 1.438001 -3763.711670 0.000000 3380.003174 0.000000 0.930798 0.000000 0.365535 0.623618 0.623618 0.623618 +3763.711670 0.000000 3380.003174 0.000000 0.930798 0.000000 0.365534 0.623618 0.623618 0.623618 3764.051758 0.000000 3382.089844 0.000000 0.138834 0.000000 0.990316 0.436898 0.436898 0.436898 3772.701660 0.000000 3380.486816 0.000000 0.859916 0.000000 -0.510435 0.947647 0.947647 0.947647 3747.042969 0.000000 3316.194824 0.000000 0.043994 0.000000 -0.999032 1.172022 1.172022 1.172022 @@ -91634,7 +91634,7 @@ 3861.910889 0.000000 3477.685791 0.000000 0.975518 0.000000 -0.219919 0.912927 0.912927 0.912927 3820.347900 0.000000 3473.131592 0.000000 0.971081 0.000000 0.238749 0.677220 0.677220 0.677220 3868.678711 0.000000 3492.508057 0.000000 0.771096 0.000000 -0.636718 1.151534 1.151534 1.151534 -3865.355469 0.000000 3472.727783 0.000000 0.294577 0.000000 -0.955628 0.937163 0.937163 0.937163 +3865.355469 0.000000 3472.727783 0.000000 0.294576 0.000000 -0.955628 0.937163 0.937163 0.937163 3818.520996 0.000000 3481.464355 0.000000 0.161939 0.000000 -0.986801 1.511536 1.511536 1.511536 3847.476318 0.000000 3488.470947 0.000000 0.621299 0.000000 0.783574 0.341431 0.341431 0.341431 3844.285889 0.000000 3489.528809 0.000000 0.187832 0.000000 0.982201 0.096234 0.096234 0.096234 @@ -92989,7 +92989,7 @@ 4605.619629 0.000000 3552.648438 0.000000 0.071030 0.000000 0.997474 0.036206 0.036206 0.036206 4606.689941 0.000000 3550.067383 0.000000 0.545094 0.000000 -0.838375 1.306390 1.306390 1.306390 4596.331055 0.000000 3566.801025 0.000000 0.962499 0.000000 -0.271285 0.931687 0.931687 0.931687 -4595.056641 0.000000 3553.600342 0.000000 0.872313 0.000000 -0.488947 1.060190 1.060190 1.060190 +4595.056641 0.000000 3553.600342 0.000000 0.872313 0.000000 -0.488948 1.060190 1.060190 1.060190 4603.670410 0.000000 3585.390869 0.000000 0.555109 0.000000 0.831777 0.603811 0.603811 0.603811 4602.840820 0.000000 3551.688477 0.000000 0.267133 0.000000 -0.963660 1.462278 1.462278 1.462278 4606.663574 0.000000 3540.243408 0.000000 0.959848 0.000000 0.280519 0.729014 0.729014 0.729014 @@ -93430,7 +93430,7 @@ 5174.498047 0.000000 1082.646240 0.000000 0.951013 0.000000 0.309152 0.756686 0.756686 0.756686 5147.481934 0.000000 1124.562988 0.000000 0.146648 0.000000 -0.989189 1.072957 1.072957 1.072957 5177.191895 0.000000 1088.845337 0.000000 0.999999 0.000000 0.001592 0.799704 0.799704 0.799704 -5150.371582 0.000000 1123.712524 0.000000 0.973087 0.000000 -0.230437 0.837617 0.837617 0.837617 +5150.371582 0.000000 1123.712524 0.000000 0.973087 0.000000 -0.230436 0.837617 0.837617 0.837617 5164.600586 0.000000 1106.407104 0.000000 0.739431 0.000000 -0.673233 0.937185 0.937185 0.937185 5173.872559 0.000000 1122.686890 0.000000 0.996894 0.000000 -0.078758 0.811810 0.811810 0.811810 5143.498047 0.000000 1086.238892 0.000000 0.963452 0.000000 0.267881 0.749628 0.749628 0.749628 @@ -93628,7 +93628,7 @@ 5311.026855 0.000000 874.523987 0.000000 0.913308 0.000000 -0.407269 0.902207 0.902207 0.902207 5292.168945 0.000000 902.053101 0.000000 0.339701 0.000000 -0.940534 1.115407 1.115407 1.115407 5299.032715 0.000000 869.082092 0.000000 0.603895 0.000000 -0.797064 1.004494 1.004494 1.004494 -5326.629395 0.000000 864.087097 0.000000 0.750163 0.000000 0.661254 0.566237 0.566237 0.566237 +5326.629395 0.000000 864.087097 0.000000 0.750163 0.000000 0.661253 0.566237 0.566237 0.566237 5293.131836 0.000000 864.047485 0.000000 0.996866 0.000000 0.079107 0.779914 0.779914 0.779914 5310.015625 0.000000 872.064514 0.000000 0.499751 0.000000 0.866169 0.331375 0.331375 0.331375 5293.909180 0.000000 905.144592 0.000000 0.894007 0.000000 0.448054 0.681230 0.681230 0.681230 @@ -93659,7 +93659,7 @@ 5189.364746 0.000000 982.681763 0.000000 0.693971 0.000000 0.720003 0.756654 0.756654 0.756654 5193.456543 0.000000 1001.776245 0.000000 0.688886 0.000000 -0.724869 0.843725 0.843725 0.843725 5213.841797 0.000000 940.912964 0.000000 0.251771 0.000000 -0.967787 0.865724 0.865724 0.865724 -5191.968262 0.000000 988.277832 0.000000 0.509850 0.000000 -0.860263 0.849649 0.849649 0.849649 +5191.968262 0.000000 988.277832 0.000000 0.509851 0.000000 -0.860263 0.849649 0.849649 0.849649 5199.218750 0.000000 984.602295 0.000000 0.510589 0.000000 0.859825 0.735923 0.735923 0.735923 5208.556641 0.000000 944.711731 0.000000 0.537671 0.000000 0.843155 0.725871 0.725871 0.725871 5214.634277 0.000000 959.894409 0.000000 0.541098 0.000000 0.840960 0.716195 0.716195 0.716195 @@ -94061,7 +94061,7 @@ 6427.493652 0.000000 781.663208 0.000000 0.828756 0.000000 -0.559610 0.869985 0.869985 0.869985 6402.435547 0.000000 799.002930 0.000000 0.516287 0.000000 0.856416 0.783570 0.783570 0.783570 6398.206055 0.000000 796.951782 0.000000 0.622937 0.000000 0.782272 0.764117 0.764117 0.764117 -6489.197754 0.000000 742.713745 0.000000 0.853342 0.000000 -0.521351 0.805477 0.805477 0.805477 +6489.197754 0.000000 742.713745 0.000000 0.853342 0.000000 -0.521352 0.805477 0.805477 0.805477 6507.937012 0.000000 721.714600 0.000000 0.743932 0.000000 -0.668255 0.832157 0.832157 0.832157 6484.265625 0.000000 756.989136 0.000000 0.662337 0.000000 0.749206 0.762789 0.762789 0.762789 6485.423828 0.000000 751.462891 0.000000 0.853201 0.000000 -0.521583 0.836164 0.836164 0.836164 @@ -96764,7 +96764,7 @@ 5477.333496 0.000000 1630.541138 0.000000 0.693973 0.000000 0.720001 0.756655 0.756655 0.756655 5481.425293 0.000000 1649.635620 0.000000 0.867404 0.000000 0.497605 0.770873 0.770873 0.770873 5517.158691 0.000000 1589.607422 0.000000 0.443007 0.000000 0.896518 0.733381 0.733381 0.733381 -5517.803711 0.000000 1649.957397 0.000000 0.710089 0.000000 0.704111 0.759435 0.759435 0.759435 +5517.803711 0.000000 1649.957397 0.000000 0.710089 0.000000 0.704112 0.759435 0.759435 0.759435 5483.945312 0.000000 1638.220459 0.000000 0.345703 0.000000 0.938344 0.688116 0.688116 0.688116 5476.676270 0.000000 1633.743774 0.000000 0.497363 0.000000 0.867542 0.718194 0.718194 0.718194 5482.430664 0.000000 1618.998291 0.000000 0.964555 0.000000 0.263883 0.663995 0.663995 0.663995 @@ -99493,7 +99493,7 @@ 5871.712891 0.000000 1262.964355 0.000000 0.525835 0.000000 0.850587 0.515605 0.515605 0.515605 5875.343262 0.000000 1262.974854 0.000000 0.755979 0.000000 0.654596 0.634662 0.634662 0.634662 5873.052734 0.000000 1258.220337 0.000000 0.571422 0.000000 0.820656 0.409741 0.409741 0.409741 -5880.540527 0.000000 1316.731201 0.000000 0.846388 0.000000 -0.532567 0.831408 0.831408 0.831408 +5880.540527 0.000000 1316.731201 0.000000 0.846388 0.000000 -0.532568 0.831408 0.831408 0.831408 5877.113770 0.000000 1304.279663 0.000000 0.175821 0.000000 -0.984422 1.008820 1.008820 1.008820 5879.351074 0.000000 1296.538086 0.000000 0.968032 0.000000 0.250827 0.746325 0.746325 0.746325 5882.901367 0.000000 1331.771729 0.000000 0.921954 0.000000 -0.387299 0.874664 0.874664 0.874664 @@ -99536,7 +99536,7 @@ 6299.180664 0.000000 1423.647949 0.000000 0.460524 0.000000 -0.887647 1.138118 1.138118 1.138118 6316.186035 0.000000 1388.827148 0.000000 0.211159 0.000000 0.977452 0.444686 0.444686 0.444686 6288.395508 0.000000 1425.217896 0.000000 0.861264 0.000000 0.508158 0.634984 0.634984 0.634984 -6314.689941 0.000000 1398.443848 0.000000 0.744928 0.000000 0.667145 0.509715 0.509715 0.509715 +6314.689941 0.000000 1398.443848 0.000000 0.744928 0.000000 0.667144 0.509715 0.509715 0.509715 6009.602539 0.000000 1496.971191 0.000000 0.921204 0.000000 0.389079 0.653139 0.653139 0.653139 6007.572754 0.000000 1494.042603 0.000000 0.999764 0.000000 -0.021745 0.804039 0.804039 0.804039 6007.677734 0.000000 1496.233765 0.000000 0.168646 0.000000 -0.985677 1.261804 1.261804 1.261804 @@ -101490,7 +101490,7 @@ 6425.797363 0.000000 2063.834717 0.000000 0.573714 0.000000 -0.819056 1.256217 1.256217 1.256217 6431.160645 0.000000 2022.163818 0.000000 0.688940 0.000000 -0.724819 1.097952 1.097952 1.097952 6466.604980 0.000000 2083.156250 0.000000 0.999967 0.000000 0.008131 0.798814 0.798814 0.798814 -6475.541016 0.000000 2041.684937 0.000000 0.673720 0.000000 -0.738987 1.155419 1.155419 1.155419 +6475.541016 0.000000 2041.684937 0.000000 0.673719 0.000000 -0.738987 1.155419 1.155419 1.155419 6419.945801 0.000000 2082.558105 0.000000 0.961800 0.000000 -0.273752 0.927932 0.927932 0.927932 6427.131836 0.000000 2068.787109 0.000000 0.775672 0.000000 0.631137 0.464419 0.464419 0.464419 6471.096191 0.000000 2071.643311 0.000000 0.418967 0.000000 -0.908001 1.279779 1.279779 1.279779 @@ -102169,7 +102169,7 @@ 6441.868164 0.000000 2106.836426 0.000000 0.071931 0.000000 0.997410 0.090548 0.090548 0.090548 6463.358398 0.000000 2151.605469 0.000000 0.306620 0.000000 0.951832 0.191410 0.191410 0.191410 6464.075195 0.000000 2114.041260 0.000000 1.000000 0.000000 -0.000507 0.800255 0.800255 0.800255 -6458.610352 0.000000 2095.895752 0.000000 0.573440 0.000000 -0.819247 1.200766 1.200766 1.200766 +6458.610352 0.000000 2095.895752 0.000000 0.573441 0.000000 -0.819247 1.200766 1.200766 1.200766 6474.497559 0.000000 2139.512207 0.000000 0.594348 0.000000 -0.804208 0.919431 0.919431 0.919431 6441.854980 0.000000 2103.096436 0.000000 0.669551 0.000000 0.742766 0.468930 0.468930 0.468930 6471.669434 0.000000 2115.970703 0.000000 0.926990 0.000000 -0.375086 0.993515 0.993515 0.993515 @@ -103480,7 +103480,7 @@ 6445.955566 0.000000 2249.742432 0.000000 0.960897 0.000000 0.276905 0.657106 0.657106 0.657106 6422.561523 0.000000 2278.236084 0.000000 0.775262 0.000000 -0.631640 1.040318 1.040318 1.040318 6439.630859 0.000000 2288.062012 0.000000 0.859942 0.000000 -0.510392 0.982936 0.982936 0.982936 -6449.106445 0.000000 2240.039062 0.000000 0.491938 0.000000 0.870630 0.498264 0.498264 0.498264 +6449.106445 0.000000 2240.039062 0.000000 0.491939 0.000000 0.870630 0.498264 0.498264 0.498264 6425.210449 0.000000 2259.331299 0.000000 0.309508 0.000000 -0.950897 1.043351 1.043351 1.043351 6436.064453 0.000000 2288.614502 0.000000 0.712808 0.000000 -0.701359 0.964561 0.964561 0.964561 6424.746094 0.000000 2286.083740 0.000000 0.989175 0.000000 -0.146743 0.844122 0.844122 0.844122 @@ -104727,7 +104727,7 @@ 6792.340820 0.000000 2145.061523 0.000000 0.010587 0.000000 -0.999944 1.242488 1.242488 1.242488 6776.031738 0.000000 2149.581299 0.000000 0.191025 0.000000 -0.981585 1.488343 1.488343 1.488343 6864.081055 0.000000 2137.749023 0.000000 0.996876 0.000000 -0.078988 0.801737 0.801737 0.801737 -6871.556641 0.000000 2153.583008 0.000000 0.937706 0.000000 0.347429 0.629209 0.629209 0.629209 +6871.556641 0.000000 2153.583008 0.000000 0.937706 0.000000 0.347428 0.629209 0.629209 0.629209 6861.165039 0.000000 2157.125000 0.000000 0.996839 0.000000 0.079452 0.760287 0.760287 0.760287 6876.540039 0.000000 2153.255859 0.000000 1.000000 0.000000 0.000227 0.799885 0.799885 0.799885 6857.500977 0.000000 2154.630859 0.000000 0.349964 0.000000 0.936763 0.673995 0.673995 0.673995 @@ -106186,7 +106186,7 @@ 7184.965820 0.000000 2104.101562 0.000000 0.968138 0.000000 -0.250417 0.878861 0.878861 0.878861 7151.408691 0.000000 2131.031982 0.000000 0.185138 0.000000 0.982713 0.564946 0.564946 0.564946 7131.417969 0.000000 2135.487793 0.000000 0.442504 0.000000 -0.896767 1.151035 1.151035 1.151035 -7128.454590 0.000000 2117.392822 0.000000 0.938731 0.000000 0.344651 0.740265 0.740265 0.740265 +7128.454590 0.000000 2117.392822 0.000000 0.938731 0.000000 0.344650 0.740265 0.740265 0.740265 7133.995605 0.000000 2136.202393 0.000000 0.870987 0.000000 -0.491306 0.909756 0.909756 0.909756 7132.381836 0.000000 2132.274658 0.000000 0.660252 0.000000 0.751044 0.489460 0.489460 0.489460 7188.185547 0.000000 2103.257812 0.000000 0.825050 0.000000 -0.565060 0.915138 0.915138 0.915138 @@ -106234,7 +106234,7 @@ 6946.235840 0.000000 2185.564209 0.000000 0.184961 0.000000 0.982746 0.495773 0.495773 0.495773 6949.649414 0.000000 2186.795166 0.000000 0.995999 0.000000 -0.089370 0.820018 0.820018 0.820018 6912.727051 0.000000 2199.671875 0.000000 0.011319 0.000000 0.999936 0.301656 0.301656 0.301656 -6970.067383 0.000000 2162.142334 0.000000 0.951928 0.000000 0.306322 0.690564 0.690564 0.690564 +6970.067383 0.000000 2162.142334 0.000000 0.951928 0.000000 0.306321 0.690564 0.690564 0.690564 6976.507812 0.000000 2176.365234 0.000000 0.820156 0.000000 -0.572141 0.956934 0.956934 0.956934 6974.217773 0.000000 2166.328613 0.000000 0.208006 0.000000 -0.978128 1.441628 1.441628 1.441628 6924.679688 0.000000 2191.364746 0.000000 0.879720 0.000000 0.475493 0.630765 0.630765 0.630765 @@ -107170,7 +107170,7 @@ 7436.912598 0.000000 2196.240234 0.000000 0.306099 0.000000 -0.952000 1.434014 1.434014 1.434014 7499.745605 0.000000 1879.917480 0.000000 0.028359 0.000000 -0.999598 1.046449 1.046449 1.046449 7496.748047 0.000000 1877.525391 0.000000 0.705530 0.000000 0.708680 0.575050 0.575050 0.575050 -7494.202637 0.000000 1872.232666 0.000000 0.707620 0.000000 0.706593 0.600968 0.600968 0.600968 +7494.202637 0.000000 1872.232666 0.000000 0.707620 0.000000 0.706594 0.600968 0.600968 0.600968 4667.579102 0.000000 2305.005127 0.000000 0.798309 0.000000 0.602248 0.642517 0.642517 0.642517 4666.317383 0.000000 2306.111084 0.000000 0.931317 0.000000 -0.364211 0.896046 0.896046 0.896046 4699.212891 0.000000 2303.506836 0.000000 0.963415 0.000000 0.268013 0.785368 0.785368 0.785368 @@ -107434,7 +107434,7 @@ 5515.052734 0.000000 2842.351318 0.000000 0.945854 0.000000 -0.324593 0.829711 0.829711 0.829711 5515.201660 0.000000 2857.098389 0.000000 0.970955 0.000000 -0.239261 0.829918 0.829918 0.829918 5513.602051 0.000000 2847.324463 0.000000 0.305107 0.000000 0.952318 0.623739 0.623739 0.623739 -5578.627930 0.000000 2870.317871 0.000000 0.827531 0.000000 0.561419 0.796428 0.796428 0.796428 +5578.627930 0.000000 2870.317871 0.000000 0.827531 0.000000 0.561420 0.796428 0.796428 0.796428 5588.227051 0.000000 2851.760986 0.000000 0.994666 0.000000 -0.103148 0.801857 0.801857 0.801857 5607.179688 0.000000 2851.937744 0.000000 0.113460 0.000000 -0.993543 0.829102 0.829102 0.829102 5602.471680 0.000000 2864.256104 0.000000 0.876663 0.000000 -0.481105 0.819046 0.819046 0.819046 @@ -107928,7 +107928,7 @@ 5344.432129 0.000000 3117.096191 0.000000 0.471096 0.000000 0.882082 0.646814 0.646814 0.646814 5359.643066 0.000000 3149.683105 0.000000 0.943572 0.000000 0.331167 0.733934 0.733934 0.733934 5367.161621 0.000000 3142.666016 0.000000 0.709943 0.000000 -0.704259 0.923287 0.923287 0.923287 -5363.915039 0.000000 3152.926025 0.000000 0.749092 0.000000 -0.662466 0.937390 0.937390 0.937390 +5363.915039 0.000000 3152.926025 0.000000 0.749092 0.000000 -0.662465 0.937390 0.937390 0.937390 5359.748047 0.000000 3151.874512 0.000000 0.382114 0.000000 -0.924115 1.063667 1.063667 1.063667 5341.454102 0.000000 3121.863525 0.000000 0.275691 0.000000 -0.961246 1.019250 1.019250 1.019250 5357.472168 0.000000 3156.253418 0.000000 0.994081 0.000000 0.108643 0.778259 0.778259 0.778259 @@ -109486,7 +109486,7 @@ 6467.725586 0.000000 2354.435791 0.000000 0.390147 0.000000 0.920753 0.428452 0.428452 0.428452 6405.251465 0.000000 2432.958008 0.000000 0.955210 0.000000 0.295928 0.793400 0.793400 0.793400 6404.926758 0.000000 2380.161621 0.000000 0.540767 0.000000 0.841173 0.726143 0.726143 0.726143 -6402.585938 0.000000 2446.547363 0.000000 0.797186 0.000000 0.603733 0.556622 0.556622 0.556622 +6402.585938 0.000000 2446.547363 0.000000 0.797186 0.000000 0.603734 0.556622 0.556622 0.556622 6399.104004 0.000000 2431.565186 0.000000 0.847911 0.000000 -0.530138 0.865843 0.865843 0.865843 6405.818359 0.000000 2443.525391 0.000000 0.996809 0.000000 0.079823 0.762336 0.762336 0.762336 6400.109375 0.000000 2439.310791 0.000000 0.782207 0.000000 0.623019 0.563573 0.563573 0.563573 @@ -110056,7 +110056,7 @@ 6571.752441 0.000000 2344.228027 0.000000 0.671170 0.000000 0.741303 0.398081 0.398081 0.398081 6582.052246 0.000000 2372.011719 0.000000 0.619836 0.000000 -0.784731 1.246904 1.246904 1.246904 6572.217773 0.000000 2370.322266 0.000000 0.608553 0.000000 0.793513 0.441204 0.441204 0.441204 -6564.818359 0.000000 2360.388672 0.000000 0.338548 0.000000 -0.940949 0.978665 0.978665 0.978665 +6564.818359 0.000000 2360.388672 0.000000 0.338547 0.000000 -0.940949 0.978665 0.978665 0.978665 6570.829590 0.000000 2342.048828 0.000000 0.994060 0.000000 -0.108837 0.837027 0.837027 0.837027 6568.394531 0.000000 2368.394775 0.000000 0.999782 0.000000 0.020890 0.789360 0.789360 0.789360 6558.377441 0.000000 2357.928223 0.000000 0.792366 0.000000 -0.610046 0.879936 0.879936 0.879936 @@ -110535,7 +110535,7 @@ 6416.003906 0.000000 2472.027100 0.000000 0.690137 0.000000 0.723679 0.499424 0.499424 0.499424 6408.000488 0.000000 2470.206787 0.000000 0.072479 0.000000 -0.997370 1.365558 1.365558 1.365558 6444.015625 0.000000 2462.840820 0.000000 0.996413 0.000000 -0.084628 0.816584 0.816584 0.816584 -6439.667969 0.000000 2451.614502 0.000000 0.702590 0.000000 0.711594 0.605495 0.605495 0.605495 +6439.667969 0.000000 2451.614502 0.000000 0.702591 0.000000 0.711594 0.605495 0.605495 0.605495 6418.425781 0.000000 2457.065186 0.000000 0.760541 0.000000 0.649290 0.529021 0.529021 0.529021 6424.755859 0.000000 2471.079590 0.000000 0.526888 0.000000 0.849935 0.414506 0.414506 0.414506 6417.984863 0.000000 2472.061523 0.000000 0.233418 0.000000 -0.972376 1.296010 1.296010 1.296010 @@ -112351,7 +112351,7 @@ 6873.808105 0.000000 2535.002686 0.000000 0.411651 0.000000 0.911342 0.685505 0.685505 0.685505 6876.153320 0.000000 2549.463135 0.000000 0.988146 0.000000 0.153514 0.779684 0.779684 0.779684 6865.270508 0.000000 2538.341309 0.000000 0.829030 0.000000 -0.559205 0.859261 0.859261 0.859261 -6907.449219 0.000000 2533.452881 0.000000 0.951837 0.000000 0.306605 0.764524 0.764524 0.764524 +6907.449219 0.000000 2533.452881 0.000000 0.951837 0.000000 0.306604 0.764524 0.764524 0.764524 6882.000977 0.000000 2531.982666 0.000000 0.119946 0.000000 0.992780 0.629070 0.629070 0.629070 6859.084961 0.000000 2572.677734 0.000000 0.964605 0.000000 0.263700 0.770153 0.770153 0.770153 6876.725586 0.000000 2533.042725 0.000000 0.866505 0.000000 0.499169 0.722756 0.722756 0.722756 @@ -113600,7 +113600,7 @@ 6063.551758 0.000000 3385.030029 0.000000 0.755104 0.000000 0.655605 0.747164 0.747164 0.747164 6105.777344 0.000000 3383.756836 0.000000 0.983643 0.000000 0.180128 0.788786 0.788786 0.788786 6081.594727 0.000000 3440.549316 0.000000 0.981869 0.000000 0.189558 0.778289 0.778289 0.778289 -6062.465332 0.000000 3444.596191 0.000000 0.562076 0.000000 0.827085 0.638555 0.638555 0.638555 +6062.465332 0.000000 3444.596191 0.000000 0.562077 0.000000 0.827085 0.638555 0.638555 0.638555 6094.279297 0.000000 3387.559814 0.000000 0.498152 0.000000 0.867089 0.508689 0.508689 0.508689 6085.045898 0.000000 3383.500488 0.000000 0.422496 0.000000 0.906365 0.580192 0.580192 0.580192 6092.187988 0.000000 3385.176270 0.000000 0.499648 0.000000 0.866229 0.571938 0.571938 0.571938 @@ -114403,7 +114403,7 @@ 6869.572266 0.000000 3079.034180 0.000000 0.670830 0.000000 0.741612 0.756616 0.756616 0.756616 6845.342773 0.000000 3079.925293 0.000000 0.997064 0.000000 -0.076566 0.804745 0.804745 0.804745 6898.438477 0.000000 3038.283447 0.000000 0.618138 0.000000 0.786069 0.734971 0.734971 0.734971 -6890.035645 0.000000 3034.438721 0.000000 0.894219 0.000000 0.447630 0.765703 0.765703 0.765703 +6890.035645 0.000000 3034.438721 0.000000 0.894219 0.000000 0.447631 0.765703 0.765703 0.765703 6895.065430 0.000000 3041.679199 0.000000 0.802719 0.000000 0.596358 0.742573 0.742573 0.742573 6877.376465 0.000000 3043.633545 0.000000 0.895620 0.000000 0.444819 0.765014 0.765014 0.765014 6871.067383 0.000000 3085.243164 0.000000 0.982175 0.000000 0.187969 0.784516 0.784516 0.784516 @@ -115453,7 +115453,7 @@ 4702.093262 0.000000 3495.712402 0.000000 0.884524 0.000000 -0.466494 0.963813 0.963813 0.963813 4713.489746 0.000000 3497.636475 0.000000 0.869711 0.000000 -0.493562 0.875258 0.875258 0.875258 4702.836914 0.000000 3482.723389 0.000000 0.723561 0.000000 -0.690261 1.162140 1.162140 1.162140 -4703.149902 0.000000 3477.566650 0.000000 0.555876 0.000000 0.831265 0.386430 0.386430 0.386430 +4703.149902 0.000000 3477.566650 0.000000 0.555877 0.000000 0.831265 0.386430 0.386430 0.386430 4735.409180 0.000000 3525.197754 0.000000 0.856717 0.000000 -0.515787 1.076001 1.076001 1.076001 4715.985352 0.000000 3512.847900 0.000000 0.263003 0.000000 0.964795 0.135541 0.135541 0.135541 4697.536133 0.000000 3518.195312 0.000000 0.432880 0.000000 0.901451 0.306514 0.306514 0.306514 @@ -117394,7 +117394,7 @@ 6423.074219 0.000000 3535.349121 0.000000 0.150158 0.000000 0.988662 0.592956 0.592956 0.592956 6423.547852 0.000000 3578.000488 0.000000 0.812239 0.000000 -0.583325 0.925635 0.925635 0.925635 6445.421875 0.000000 3599.123535 0.000000 0.769696 0.000000 -0.638410 0.974252 0.974252 0.974252 -6461.513672 0.000000 3599.070801 0.000000 0.962810 0.000000 0.270181 0.716946 0.716946 0.716946 +6461.513672 0.000000 3599.070801 0.000000 0.962810 0.000000 0.270180 0.716946 0.716946 0.716946 6452.191895 0.000000 3598.533447 0.000000 0.833610 0.000000 -0.552353 0.962457 0.962457 0.962457 6534.486328 0.000000 3461.721436 0.000000 0.517096 0.000000 0.855927 0.736393 0.736393 0.736393 6537.730469 0.000000 3455.741211 0.000000 0.847339 0.000000 -0.531052 0.842489 0.842489 0.842489 @@ -117631,7 +117631,7 @@ 6624.553711 0.000000 3500.187012 0.000000 0.122483 0.000000 -0.992471 1.141257 1.141257 1.141257 6643.275391 0.000000 3468.592285 0.000000 0.308747 0.000000 -0.951144 1.169025 1.169025 1.169025 6642.528809 0.000000 3512.858154 0.000000 0.703381 0.000000 0.710813 0.561552 0.561552 0.561552 -6624.507324 0.000000 3481.684082 0.000000 0.983848 0.000000 0.179005 0.728828 0.728828 0.728828 +6624.507324 0.000000 3481.684082 0.000000 0.983848 0.000000 0.179004 0.728828 0.728828 0.728828 6649.659180 0.000000 3492.321777 0.000000 0.963540 0.000000 -0.267564 0.904950 0.904950 0.904950 6642.673828 0.000000 3497.315918 0.000000 0.849539 0.000000 -0.527526 0.940949 0.940949 0.940949 6650.666504 0.000000 3478.669189 0.000000 0.989740 0.000000 0.142880 0.750749 0.750749 0.750749 @@ -119938,7 +119938,7 @@ 7034.776367 0.000000 2627.490479 0.000000 0.303847 0.000000 0.952721 0.535331 0.535331 0.535331 7032.867676 0.000000 2633.949463 0.000000 0.975823 0.000000 0.218562 0.761714 0.761714 0.761714 7050.950195 0.000000 2596.682861 0.000000 0.999620 0.000000 0.027582 0.785951 0.785951 0.785951 -7004.363770 0.000000 2611.246338 0.000000 0.838423 0.000000 -0.545020 0.966929 0.966929 0.966929 +7004.363770 0.000000 2611.246338 0.000000 0.838423 0.000000 -0.545021 0.966929 0.966929 0.966929 7054.424316 0.000000 2614.270508 0.000000 0.430146 0.000000 0.902759 0.296185 0.296185 0.296185 7044.065430 0.000000 2631.004150 0.000000 0.838708 0.000000 -0.544581 1.010484 1.010484 1.010484 7028.989258 0.000000 2633.939941 0.000000 0.078173 0.000000 0.996940 0.284293 0.284293 0.284293 @@ -121095,7 +121095,7 @@ 7661.139648 0.000000 2825.796631 0.000000 0.917421 0.000000 -0.397918 0.867024 0.867024 0.867024 7692.056641 0.000000 2832.317383 0.000000 0.990780 0.000000 -0.135478 0.822528 0.822528 0.822528 7690.686523 0.000000 2819.242188 0.000000 0.648654 0.000000 -0.761083 0.953754 0.953754 0.953754 -7694.172363 0.000000 2818.589111 0.000000 0.472731 0.000000 -0.881207 1.125230 1.125230 1.125230 +7694.172363 0.000000 2818.589111 0.000000 0.472732 0.000000 -0.881207 1.125230 1.125230 1.125230 7687.412109 0.000000 2853.319092 0.000000 0.070908 0.000000 0.997483 0.299749 0.299749 0.299749 7677.361816 0.000000 2827.796387 0.000000 0.988633 0.000000 0.150351 0.737905 0.737905 0.737905 7679.155762 0.000000 2808.209961 0.000000 0.982989 0.000000 -0.183664 0.851279 0.851279 0.851279 @@ -122702,7 +122702,7 @@ 7416.672363 0.000000 3063.484375 0.000000 0.897378 0.000000 0.441263 0.690470 0.690470 0.690470 7424.013184 0.000000 3077.819580 0.000000 0.378282 0.000000 -0.925691 1.081131 1.081131 1.081131 7473.813965 0.000000 3056.280029 0.000000 0.487915 0.000000 -0.872891 1.064908 1.064908 1.064908 -7459.856445 0.000000 3056.690430 0.000000 0.909692 0.000000 -0.415283 0.955669 0.955669 0.955669 +7459.856445 0.000000 3056.690430 0.000000 0.909692 0.000000 -0.415284 0.955669 0.955669 0.955669 7417.538574 0.000000 3060.973389 0.000000 0.902529 0.000000 -0.430628 0.990278 0.990278 0.990278 7445.817871 0.000000 3061.258057 0.000000 0.706198 0.000000 -0.708015 1.200654 1.200654 1.200654 7433.929199 0.000000 3063.365723 0.000000 0.999135 0.000000 0.041583 0.778816 0.778816 0.778816 @@ -124142,7 +124142,7 @@ 7131.343750 0.000000 3411.096436 0.000000 0.834205 0.000000 -0.551455 0.999489 0.999489 0.999489 7136.787109 0.000000 3389.197266 0.000000 0.489679 0.000000 0.871903 0.260618 0.260618 0.260618 7138.902832 0.000000 3389.621338 0.000000 0.126551 0.000000 0.991960 0.194397 0.194397 0.194397 -7132.398438 0.000000 3416.557129 0.000000 0.630502 0.000000 0.776188 0.491195 0.491195 0.491195 +7132.398438 0.000000 3416.557129 0.000000 0.630501 0.000000 0.776188 0.491195 0.491195 0.491195 7187.305664 0.000000 3384.770752 0.000000 0.476746 0.000000 0.879041 0.368909 0.368909 0.368909 7128.530273 0.000000 3385.289551 0.000000 0.974468 0.000000 -0.224528 0.878246 0.878246 0.878246 7138.347656 0.000000 3392.862061 0.000000 0.886983 0.000000 0.461802 0.561277 0.561277 0.561277 @@ -126684,7 +126684,7 @@ 7426.733887 0.000000 3369.551514 0.000000 0.221501 0.000000 -0.975160 1.421659 1.421659 1.421659 7434.614258 0.000000 3355.123047 0.000000 0.805872 0.000000 -0.592090 1.122715 1.122715 1.122715 7447.784180 0.000000 3322.648438 0.000000 0.940166 0.000000 -0.340716 0.974293 0.974293 0.974293 -7446.016113 0.000000 3311.417725 0.000000 0.681990 0.000000 0.731362 0.716443 0.716443 0.716443 +7446.016113 0.000000 3311.417725 0.000000 0.681990 0.000000 0.731361 0.716443 0.716443 0.716443 7466.833008 0.000000 3379.353271 0.000000 0.342484 0.000000 0.939524 0.178029 0.178029 0.178029 7435.275391 0.000000 3347.323242 0.000000 0.023453 0.000000 0.999725 0.011945 0.011945 0.011945 7449.745605 0.000000 3326.830811 0.000000 0.267201 0.000000 0.963641 0.654566 0.654566 0.654566 @@ -126941,7 +126941,7 @@ 7459.361816 0.000000 3338.344482 0.000000 0.603587 0.000000 -0.797297 1.269980 1.269980 1.269980 7482.826660 0.000000 3377.723633 0.000000 0.017031 0.000000 -0.999855 1.591326 1.591326 1.591326 7476.154297 0.000000 3326.992188 0.000000 0.239794 0.000000 -0.970824 1.367874 1.367874 1.367874 -7448.751465 0.000000 3320.771484 0.000000 0.662554 0.000000 -0.749015 1.200722 1.200722 1.200722 +7448.751465 0.000000 3320.771484 0.000000 0.662553 0.000000 -0.749015 1.200722 1.200722 1.200722 7415.608887 0.000000 3365.668701 0.000000 0.162117 0.000000 0.986772 0.091368 0.091368 0.091368 7483.877930 0.000000 3355.219238 0.000000 0.700004 0.000000 0.714139 0.398087 0.398087 0.398087 7446.051270 0.000000 3327.257568 0.000000 0.516228 0.000000 0.856451 0.498081 0.498081 0.498081 @@ -127968,7 +127968,7 @@ 7642.138184 0.000000 2896.350830 0.000000 0.875242 0.000000 0.483686 0.625559 0.625559 0.625559 7668.023926 0.000000 2929.809570 0.000000 0.987995 0.000000 0.154487 0.778315 0.778315 0.778315 7631.173340 0.000000 2945.064209 0.000000 0.635546 0.000000 0.772063 0.352521 0.352521 0.352521 -7641.571289 0.000000 2933.154541 0.000000 0.896236 0.000000 0.443577 0.720142 0.720142 0.720142 +7641.571289 0.000000 2933.154541 0.000000 0.896236 0.000000 0.443578 0.720142 0.720142 0.720142 7696.869141 0.000000 2947.440918 0.000000 0.110495 0.000000 0.993877 0.275099 0.275099 0.275099 7695.968750 0.000000 2943.201416 0.000000 0.909418 0.000000 -0.415882 0.975611 0.975611 0.975611 7635.268555 0.000000 2944.797852 0.000000 0.480794 0.000000 -0.876833 1.344557 1.344557 1.344557 @@ -128402,7 +128402,7 @@ 7530.729492 0.000000 3037.462646 0.000000 0.991239 0.000000 -0.132078 0.828837 0.828837 0.828837 7526.679688 0.000000 3034.124756 0.000000 0.773468 0.000000 0.633835 0.521665 0.521665 0.521665 7523.047852 0.000000 3079.288574 0.000000 0.042418 0.000000 0.999100 0.021610 0.021610 0.021610 -7536.193848 0.000000 3075.736816 0.000000 0.493960 0.000000 -0.869484 1.185289 1.185289 1.185289 +7536.193848 0.000000 3075.736816 0.000000 0.493961 0.000000 -0.869484 1.185289 1.185289 1.185289 7547.927246 0.000000 3076.399414 0.000000 0.632363 0.000000 0.774673 0.481410 0.481410 0.481410 7534.103027 0.000000 3033.352783 0.000000 0.912052 0.000000 -0.410075 1.015196 1.015196 1.015196 7557.204590 0.000000 3076.847168 0.000000 0.840002 0.000000 -0.542583 1.005033 1.005033 1.005033 @@ -129104,7 +129104,7 @@ 7655.297363 0.000000 3303.915771 0.000000 0.273243 0.000000 -0.961945 1.459046 1.459046 1.459046 7702.406250 0.000000 3298.053467 0.000000 0.965835 0.000000 -0.259157 0.917281 0.917281 0.917281 7690.567871 0.000000 3301.509033 0.000000 0.986215 0.000000 0.165468 0.755179 0.755179 0.755179 -7690.084473 0.000000 3279.072021 0.000000 0.711408 0.000000 -0.702779 0.999225 0.999225 0.999225 +7690.084473 0.000000 3279.072021 0.000000 0.711408 0.000000 -0.702780 0.999225 0.999225 0.999225 7672.954102 0.000000 3310.575439 0.000000 0.483206 0.000000 -0.875507 1.132283 1.132283 1.132283 7662.372559 0.000000 3290.559570 0.000000 0.711820 0.000000 0.702362 0.403406 0.403406 0.403406 7698.308594 0.000000 3303.622559 0.000000 0.911216 0.000000 -0.411930 0.968746 0.968746 0.968746 @@ -129387,7 +129387,7 @@ 7493.830566 0.000000 3369.803711 0.000000 0.732901 0.000000 0.680335 0.421923 0.421923 0.421923 7495.198730 0.000000 3368.372070 0.000000 0.885974 0.000000 -0.463736 1.040771 1.040771 1.040771 7489.248047 0.000000 3379.791016 0.000000 0.998762 0.000000 -0.049753 0.825349 0.825349 0.825349 -7488.371582 0.000000 3344.586670 0.000000 0.977716 0.000000 0.209934 0.731566 0.731566 0.731566 +7488.371582 0.000000 3344.586670 0.000000 0.977715 0.000000 0.209934 0.731566 0.731566 0.731566 7490.498047 0.000000 3327.888184 0.000000 0.895620 0.000000 0.444820 0.683995 0.683995 0.683995 7490.851074 0.000000 3370.831787 0.000000 0.022670 0.000000 -0.999743 1.365831 1.365831 1.365831 7489.661621 0.000000 3342.730469 0.000000 0.477310 0.000000 -0.878735 1.074361 1.074361 1.074361 @@ -130244,7 +130244,7 @@ 7561.240234 0.000000 3451.775391 0.000000 0.491087 0.000000 0.871111 0.432512 0.432512 0.432512 7626.512695 0.000000 3407.719727 0.000000 0.816251 0.000000 0.577698 0.547828 0.547828 0.547828 7611.324219 0.000000 3397.959717 0.000000 0.439847 0.000000 -0.898073 1.040587 1.040587 1.040587 -7614.239746 0.000000 3439.342529 0.000000 0.940169 0.000000 0.340709 0.713897 0.713897 0.713897 +7614.239746 0.000000 3439.342529 0.000000 0.940169 0.000000 0.340708 0.713897 0.713897 0.713897 7630.379395 0.000000 3383.540283 0.000000 0.863574 0.000000 -0.504223 0.978380 0.978380 0.978380 7620.138672 0.000000 3398.976562 0.000000 0.891223 0.000000 -0.453566 1.039758 1.039758 1.039758 7590.035645 0.000000 3399.241943 0.000000 0.858470 0.000000 0.512864 0.687068 0.687068 0.687068 @@ -130438,7 +130438,7 @@ 7758.477539 0.000000 3364.050049 0.000000 0.393025 0.000000 -0.919528 1.352336 1.352336 1.352336 7754.679688 0.000000 3368.590576 0.000000 0.837548 0.000000 -0.546363 1.035505 1.035505 1.035505 7768.091309 0.000000 3368.949463 0.000000 0.935762 0.000000 0.352631 0.706430 0.706430 0.706430 -7745.516113 0.000000 3366.372803 0.000000 0.558350 0.000000 0.829605 0.313429 0.313429 0.313429 +7745.516113 0.000000 3366.372803 0.000000 0.558351 0.000000 0.829605 0.313429 0.313429 0.313429 7728.239258 0.000000 3368.795898 0.000000 0.770988 0.000000 -0.636850 1.012351 1.012351 1.012351 7770.181641 0.000000 3372.192627 0.000000 0.235454 0.000000 0.971886 0.395294 0.395294 0.395294 7737.056641 0.000000 3370.319580 0.000000 0.880594 0.000000 -0.473872 0.935082 0.935082 0.935082 @@ -131221,7 +131221,7 @@ 7837.194336 0.000000 3363.063965 0.000000 0.254134 0.000000 -0.967169 1.314316 1.314316 1.314316 7839.520996 0.000000 3339.705078 0.000000 0.380019 0.000000 -0.924979 1.399109 1.399109 1.399109 7798.988281 0.000000 3358.933594 0.000000 0.949494 0.000000 -0.313787 0.962556 0.962556 0.962556 -7839.442383 0.000000 3353.201904 0.000000 0.739392 0.000000 0.673276 0.423819 0.423819 0.423819 +7839.442383 0.000000 3353.201904 0.000000 0.739392 0.000000 0.673275 0.423819 0.423819 0.423819 7829.740723 0.000000 3345.680664 0.000000 0.998462 0.000000 0.055443 0.771748 0.771748 0.771748 7795.345215 0.000000 3373.100830 0.000000 0.692659 0.000000 0.721265 0.412224 0.412224 0.412224 7822.007324 0.000000 3357.479736 0.000000 0.917197 0.000000 -0.398435 0.984160 0.984160 0.984160 @@ -131283,7 +131283,7 @@ 7827.703613 0.000000 3350.714111 0.000000 0.667650 0.000000 -0.744475 1.128727 1.128727 1.128727 7843.668945 0.000000 3339.875488 0.000000 0.953970 0.000000 0.299901 0.655216 0.655216 0.655216 7842.255371 0.000000 3348.930908 0.000000 0.878339 0.000000 0.478039 0.546156 0.546156 0.546156 -7838.721191 0.000000 3336.244629 0.000000 0.869122 0.000000 0.494598 0.594370 0.594370 0.594370 +7838.721191 0.000000 3336.244629 0.000000 0.869122 0.000000 0.494599 0.594370 0.594370 0.594370 7832.811523 0.000000 3360.346680 0.000000 0.448634 0.000000 -0.893716 1.226157 1.226157 1.226157 7802.429199 0.000000 3380.828857 0.000000 0.416027 0.000000 0.909352 0.218524 0.218524 0.218524 7791.686035 0.000000 3336.699219 0.000000 0.962827 0.000000 -0.270120 0.854082 0.854082 0.854082 @@ -132513,7 +132513,7 @@ 7883.008789 0.000000 3439.210449 0.000000 0.959508 0.000000 -0.281680 0.934020 0.934020 0.934020 7876.256348 0.000000 3452.471191 0.000000 0.997382 0.000000 -0.072307 0.835557 0.835557 0.835557 7872.517090 0.000000 3449.136963 0.000000 0.942125 0.000000 -0.335263 0.972072 0.972072 0.972072 -7858.756836 0.000000 3409.766602 0.000000 0.956583 0.000000 -0.291460 0.950625 0.950625 0.950625 +7858.756836 0.000000 3409.766602 0.000000 0.956583 0.000000 -0.291459 0.950625 0.950625 0.950625 7866.189453 0.000000 3443.569580 0.000000 0.455434 0.000000 -0.890270 1.359175 1.359175 1.359175 7887.501465 0.000000 3451.747314 0.000000 0.797790 0.000000 0.602935 0.471689 0.471689 0.471689 7858.559082 0.000000 3412.826416 0.000000 0.709112 0.000000 -0.705096 1.134473 1.134473 1.134473 @@ -132964,7 +132964,7 @@ 8224.487305 0.000000 2954.479248 0.000000 0.451851 0.000000 -0.892093 1.270986 1.270986 1.270986 8239.939453 0.000000 2991.803711 0.000000 0.893231 0.000000 -0.449599 0.932251 0.932251 0.932251 8257.520508 0.000000 3001.393799 0.000000 0.967655 0.000000 -0.252277 0.887610 0.887610 0.887610 -8249.460938 0.000000 3006.450928 0.000000 0.708152 0.000000 0.706060 0.458683 0.458683 0.458683 +8249.460938 0.000000 3006.450928 0.000000 0.708152 0.000000 0.706061 0.458683 0.458683 0.458683 8226.738281 0.000000 2978.704346 0.000000 0.418272 0.000000 -0.908322 1.364290 1.364290 1.364290 8234.495117 0.000000 2974.778564 0.000000 0.904471 0.000000 0.426534 0.638062 0.638062 0.638062 8238.953125 0.000000 2997.438477 0.000000 0.941642 0.000000 -0.336617 0.965253 0.965253 0.965253 @@ -133165,7 +133165,7 @@ 8461.677734 0.000000 3097.697754 0.000000 0.942616 0.000000 0.333878 0.717054 0.717054 0.717054 8427.203125 0.000000 3123.158936 0.000000 0.199867 0.000000 0.979823 0.343194 0.343194 0.343194 8425.559570 0.000000 3126.777344 0.000000 0.365522 0.000000 0.930803 0.295731 0.295731 0.295731 -8425.240234 0.000000 3123.369141 0.000000 0.861524 0.000000 0.507717 0.633015 0.633015 0.633015 +8425.240234 0.000000 3123.369141 0.000000 0.861524 0.000000 0.507718 0.633015 0.633015 0.633015 8427.411133 0.000000 3126.591064 0.000000 0.706393 0.000000 -0.707820 0.985336 0.985336 0.985336 8472.041992 0.000000 3161.599365 0.000000 0.152448 0.000000 0.988311 0.202535 0.202535 0.202535 8426.628906 0.000000 3144.912354 0.000000 0.863670 0.000000 0.504058 0.662834 0.662834 0.662834 @@ -133316,7 +133316,7 @@ 8400.980469 0.000000 3447.092529 0.000000 0.995163 0.000000 -0.098234 0.844412 0.844412 0.844412 8494.365234 0.000000 3446.345947 0.000000 0.615475 0.000000 -0.788157 0.821757 0.821757 0.821757 8493.185547 0.000000 3428.430420 0.000000 0.444527 0.000000 0.895765 0.236822 0.236822 0.236822 -8429.259766 0.000000 3403.879150 0.000000 0.520474 0.000000 -0.853877 0.859275 0.859275 0.859275 +8429.259766 0.000000 3403.879150 0.000000 0.520475 0.000000 -0.853877 0.859275 0.859275 0.859275 8482.617188 0.000000 3421.306396 0.000000 0.453905 0.000000 -0.891050 1.305142 1.305142 1.305142 8432.088867 0.000000 3412.653564 0.000000 0.149136 0.000000 0.988817 0.703499 0.703499 0.703499 8492.372070 0.000000 3420.484375 0.000000 0.615477 0.000000 -0.788155 0.848954 0.848954 0.848954 @@ -134547,7 +134547,7 @@ 7439.683105 0.000000 3479.408936 0.000000 0.594517 0.000000 -0.804083 1.105972 1.105972 1.105972 7419.921387 0.000000 3496.072266 0.000000 0.035700 0.000000 -0.999363 1.109660 1.109660 1.109660 7423.400879 0.000000 3470.021240 0.000000 0.405018 0.000000 0.914309 0.422077 0.422077 0.422077 -7472.822266 0.000000 3468.894043 0.000000 0.851171 0.000000 -0.524888 0.995345 0.995345 0.995345 +7472.822266 0.000000 3468.894043 0.000000 0.851171 0.000000 -0.524889 0.995345 0.995345 0.995345 7428.565430 0.000000 3490.548096 0.000000 0.806125 0.000000 -0.591745 0.977057 0.977057 0.977057 7443.211914 0.000000 3473.329834 0.000000 0.985263 0.000000 0.171048 0.727561 0.727561 0.727561 7427.680664 0.000000 3474.431396 0.000000 0.720203 0.000000 0.693763 0.447804 0.447804 0.447804 @@ -134821,7 +134821,7 @@ 7502.484863 0.000000 3478.632324 0.000000 0.765412 0.000000 0.643540 0.780452 0.780452 0.780452 7515.633301 0.000000 3475.447266 0.000000 0.699133 0.000000 -0.714992 0.823865 0.823865 0.823865 7491.876953 0.000000 3456.660889 0.000000 0.617039 0.000000 0.786932 0.767435 0.767435 0.767435 -7510.096191 0.000000 3459.334961 0.000000 0.560274 0.000000 -0.828307 1.240579 1.240579 1.240579 +7510.096191 0.000000 3459.334961 0.000000 0.560275 0.000000 -0.828307 1.240579 1.240579 1.240579 7490.950684 0.000000 3469.946289 0.000000 0.992176 0.000000 0.124843 0.741251 0.741251 0.741251 7501.233398 0.000000 3465.226562 0.000000 0.374227 0.000000 0.927337 0.195347 0.195347 0.195347 7557.901855 0.000000 3470.315430 0.000000 0.985752 0.000000 -0.168205 0.810126 0.810126 0.810126 @@ -135886,7 +135886,7 @@ 7782.244629 0.000000 3509.678223 0.000000 0.981437 0.000000 0.191783 0.771093 0.771093 0.771093 7798.959961 0.000000 3507.621094 0.000000 0.906081 0.000000 -0.423104 0.976251 0.976251 0.976251 7787.087402 0.000000 3499.997559 0.000000 0.215013 0.000000 -0.976611 1.340889 1.340889 1.340889 -7792.166504 0.000000 3477.018066 0.000000 0.628765 0.000000 0.777596 0.684352 0.684352 0.684352 +7792.166504 0.000000 3477.018066 0.000000 0.628764 0.000000 0.777596 0.684352 0.684352 0.684352 7786.122559 0.000000 3472.225830 0.000000 0.971053 0.000000 0.238863 0.684868 0.684868 0.684868 7790.747070 0.000000 3469.911621 0.000000 0.188968 0.000000 -0.981983 1.023362 1.023362 1.023362 7820.802246 0.000000 3466.469238 0.000000 0.237407 0.000000 0.971410 0.146003 0.146003 0.146003 diff --git a/gfx/map/map_object_data/generated/tree_leaf_high_generator_2.txt b/gfx/map/map_object_data/generated/tree_leaf_high_generator_2.txt index f74797cf..21259850 100644 --- a/gfx/map/map_object_data/generated/tree_leaf_high_generator_2.txt +++ b/gfx/map/map_object_data/generated/tree_leaf_high_generator_2.txt @@ -2217,7 +2217,7 @@ 2216.993164 0.000000 2213.812744 0.000000 0.955512 0.000000 0.294954 0.390731 0.390731 0.390731 2212.987549 0.000000 2201.846191 0.000000 0.731816 0.000000 0.681503 0.362187 0.362187 0.362187 2268.821289 0.000000 2202.189941 0.000000 0.953280 0.000000 0.302088 0.392032 0.392032 0.392032 -2280.860352 0.000000 2207.455566 0.000000 0.875358 0.000000 0.483475 0.377071 0.377071 0.377071 +2280.860352 0.000000 2207.455566 0.000000 0.875358 0.000000 0.483476 0.377071 0.377071 0.377071 2280.584961 0.000000 2215.652100 0.000000 0.197245 0.000000 0.980354 0.317779 0.317779 0.317779 2237.335449 0.000000 2189.103516 0.000000 0.872184 0.000000 -0.489177 0.431137 0.431137 0.431137 2194.566162 0.000000 2263.308594 0.000000 0.097654 0.000000 -0.995220 0.405884 0.405884 0.405884 @@ -3156,7 +3156,7 @@ 2670.381348 0.000000 2266.096191 0.000000 0.872362 0.000000 0.488860 0.378832 0.378832 0.378832 2674.735352 0.000000 2266.857666 0.000000 0.960098 0.000000 0.279665 0.390659 0.390659 0.390659 2698.584717 0.000000 2269.260254 0.000000 0.204748 0.000000 -0.978815 0.514467 0.514467 0.514467 -2680.726318 0.000000 2270.862061 0.000000 0.512604 0.000000 0.858625 0.339677 0.339677 0.339677 +2680.726318 0.000000 2270.862061 0.000000 0.512605 0.000000 0.858625 0.339677 0.339677 0.339677 2666.386475 0.000000 2232.198975 0.000000 0.782733 0.000000 -0.622357 0.436224 0.436224 0.436224 2687.892822 0.000000 2275.000732 0.000000 0.922619 0.000000 0.385712 0.377065 0.377065 0.377065 2761.271484 0.000000 2175.641602 0.000000 0.943902 0.000000 -0.330224 0.436968 0.436968 0.436968 @@ -3782,7 +3782,7 @@ 3982.631104 0.000000 2267.190430 0.000000 0.646677 0.000000 -0.762764 0.437687 0.437687 0.437687 4007.045654 0.000000 2267.952881 0.000000 0.623769 0.000000 0.781609 0.348928 0.348928 0.348928 4007.893066 0.000000 2296.057373 0.000000 0.359786 0.000000 0.933035 0.328535 0.328535 0.328535 -3981.185547 0.000000 2244.210205 0.000000 0.993429 0.000000 -0.114450 0.405441 0.405441 0.405441 +3981.185547 0.000000 2244.210205 0.000000 0.993429 0.000000 -0.114449 0.405441 0.405441 0.405441 3980.906982 0.000000 2288.180176 0.000000 0.804335 0.000000 0.594177 0.354254 0.354254 0.354254 4054.471436 0.000000 1731.709961 0.000000 0.997904 0.000000 0.064708 0.398771 0.398771 0.398771 4041.935303 0.000000 1735.387939 0.000000 0.985372 0.000000 0.170416 0.395383 0.395383 0.395383 @@ -5347,7 +5347,7 @@ 969.103943 0.000000 2926.539307 0.000000 0.637492 0.000000 0.770457 0.325780 0.325780 0.325780 959.736877 0.000000 2912.452393 0.000000 0.958611 0.000000 -0.284718 0.414272 0.414272 0.414272 970.149231 0.000000 2936.658691 0.000000 0.284775 0.000000 -0.958594 0.465933 0.465933 0.465933 -1006.894470 0.000000 2939.936279 0.000000 0.755978 0.000000 -0.654597 0.457726 0.457726 0.457726 +1006.894470 0.000000 2939.936279 0.000000 0.755978 0.000000 -0.654596 0.457726 0.457726 0.457726 945.548950 0.000000 2950.363037 0.000000 0.044639 0.000000 -0.999003 0.468582 0.468582 0.468582 971.685059 0.000000 2926.875732 0.000000 0.359558 0.000000 0.933123 0.349544 0.349544 0.349544 1006.871460 0.000000 2934.508789 0.000000 0.624149 0.000000 -0.781305 0.443880 0.443880 0.443880 @@ -5429,7 +5429,7 @@ 1023.155457 0.000000 2923.196533 0.000000 0.839002 0.000000 0.544129 0.374145 0.374145 0.374145 1073.616943 0.000000 2884.209473 0.000000 0.489729 0.000000 0.871875 0.317511 0.317511 0.317511 1027.717896 0.000000 2932.599609 0.000000 0.777051 0.000000 -0.629437 0.457791 0.457791 0.457791 -1030.990234 0.000000 2924.678955 0.000000 0.645379 0.000000 -0.763863 0.470748 0.470748 0.470748 +1030.990234 0.000000 2924.678955 0.000000 0.645378 0.000000 -0.763863 0.470748 0.470748 0.470748 1056.213379 0.000000 2943.916748 0.000000 0.610297 0.000000 0.792173 0.331518 0.331518 0.331518 1052.375977 0.000000 2942.214111 0.000000 0.999763 0.000000 -0.021765 0.401782 0.401782 0.401782 1072.406250 0.000000 2879.454346 0.000000 0.764496 0.000000 -0.644628 0.457714 0.457714 0.457714 @@ -8981,7 +8981,7 @@ 1713.393433 0.000000 3372.669189 0.000000 0.155870 0.000000 -0.987778 0.568068 0.568068 0.568068 1702.434814 0.000000 3313.611816 0.000000 0.620423 0.000000 -0.784267 0.509383 0.509383 0.509383 1693.696777 0.000000 3357.259766 0.000000 0.441557 0.000000 -0.897233 0.527871 0.527871 0.527871 -1661.729614 0.000000 3354.068848 0.000000 0.735650 0.000000 0.677362 0.317883 0.317883 0.317883 +1661.729614 0.000000 3354.068848 0.000000 0.735650 0.000000 0.677361 0.317883 0.317883 0.317883 1662.094727 0.000000 3383.213623 0.000000 0.720816 0.000000 -0.693126 0.491006 0.491006 0.491006 1714.828857 0.000000 3339.522705 0.000000 0.997033 0.000000 0.076969 0.390844 0.390844 0.390844 1671.552002 0.000000 3367.149658 0.000000 0.902953 0.000000 0.429740 0.347878 0.347878 0.347878 @@ -9973,7 +9973,7 @@ 2277.504395 0.000000 3103.889160 0.000000 0.930203 0.000000 -0.367046 0.430776 0.430776 0.430776 2289.379883 0.000000 3101.792969 0.000000 0.929539 0.000000 -0.368723 0.419044 0.419044 0.419044 2248.863037 0.000000 3160.222900 0.000000 0.838750 0.000000 0.544516 0.361186 0.361186 0.361186 -2273.088623 0.000000 3105.848145 0.000000 0.645712 0.000000 0.763581 0.339699 0.339699 0.339699 +2273.088623 0.000000 3105.848145 0.000000 0.645711 0.000000 0.763581 0.339699 0.339699 0.339699 2299.636230 0.000000 3098.431641 0.000000 0.015806 0.000000 0.999875 0.299065 0.299065 0.299065 2248.773193 0.000000 3134.674561 0.000000 0.112020 0.000000 -0.993706 0.496859 0.496859 0.496859 2283.938965 0.000000 3166.945068 0.000000 0.540993 0.000000 -0.841027 0.462362 0.462362 0.462362 @@ -11389,7 +11389,7 @@ 2200.590820 0.000000 3401.885254 0.000000 0.971160 0.000000 0.238427 0.371992 0.371992 0.371992 2212.160400 0.000000 3402.763672 0.000000 0.912710 0.000000 -0.408608 0.448760 0.448760 0.448760 2183.143066 0.000000 3403.340332 0.000000 0.026833 0.000000 0.999640 0.229628 0.229628 0.229628 -2230.850586 0.000000 3391.031494 0.000000 0.972791 0.000000 0.231686 0.395213 0.395213 0.395213 +2230.850586 0.000000 3391.031494 0.000000 0.972790 0.000000 0.231686 0.395213 0.395213 0.395213 2223.336914 0.000000 3392.483154 0.000000 0.141246 0.000000 -0.989974 0.429969 0.429969 0.429969 2176.815430 0.000000 3399.724365 0.000000 0.512236 0.000000 0.858845 0.374210 0.374210 0.374210 2185.626709 0.000000 3405.808838 0.000000 0.593473 0.000000 -0.804854 0.498552 0.498552 0.498552 @@ -12937,7 +12937,7 @@ 2172.569580 0.000000 3600.104492 0.000000 0.813244 0.000000 -0.581923 0.473808 0.473808 0.473808 2170.649902 0.000000 3610.745605 0.000000 0.169358 0.000000 0.985555 0.234256 0.234256 0.234256 2184.036621 0.000000 3599.617432 0.000000 0.874145 0.000000 -0.485665 0.460011 0.460011 0.460011 -2185.333984 0.000000 3615.329102 0.000000 0.844426 0.000000 -0.535672 0.466896 0.466896 0.466896 +2185.333984 0.000000 3615.329102 0.000000 0.844426 0.000000 -0.535673 0.466896 0.466896 0.466896 2178.432129 0.000000 3603.443359 0.000000 0.236098 0.000000 -0.971729 0.558342 0.558342 0.558342 2229.119629 0.000000 3600.125977 0.000000 0.972216 0.000000 0.234087 0.371804 0.371804 0.371804 2176.347168 0.000000 3611.780273 0.000000 0.592068 0.000000 -0.805888 0.510902 0.510902 0.510902 @@ -13019,7 +13019,7 @@ 2565.473145 0.000000 2384.045410 0.000000 0.896352 0.000000 0.443342 0.372479 0.372479 0.372479 2590.923584 0.000000 2378.354004 0.000000 0.532466 0.000000 0.846452 0.329951 0.329951 0.329951 2562.891357 0.000000 2393.139160 0.000000 0.040740 0.000000 0.999170 0.320548 0.320548 0.320548 -2583.291504 0.000000 2400.447754 0.000000 0.844560 0.000000 -0.535460 0.438371 0.438371 0.438371 +2583.291504 0.000000 2400.447754 0.000000 0.844560 0.000000 -0.535461 0.438371 0.438371 0.438371 2585.473389 0.000000 2384.563965 0.000000 0.141355 0.000000 0.989959 0.308672 0.308672 0.308672 2563.791504 0.000000 2382.798584 0.000000 0.678981 0.000000 -0.734156 0.446104 0.446104 0.446104 2588.917725 0.000000 2382.457275 0.000000 0.243875 0.000000 -0.969807 0.486631 0.486631 0.486631 @@ -16000,7 +16000,7 @@ 2702.965576 0.000000 3232.048096 0.000000 0.270165 0.000000 -0.962814 0.477726 0.477726 0.477726 2733.888672 0.000000 3176.895996 0.000000 0.881593 0.000000 0.472010 0.367601 0.367601 0.367601 2693.294434 0.000000 3196.609863 0.000000 0.982144 0.000000 0.188130 0.387715 0.387715 0.387715 -2719.951172 0.000000 3213.240967 0.000000 0.699418 0.000000 0.714712 0.351101 0.351101 0.351101 +2719.951172 0.000000 3213.240967 0.000000 0.699419 0.000000 0.714712 0.351101 0.351101 0.351101 2668.437012 0.000000 3208.134766 0.000000 0.309140 0.000000 0.951016 0.315930 0.315930 0.315930 2643.344482 0.000000 3288.011475 0.000000 0.221953 0.000000 -0.975057 0.405380 0.405380 0.405380 2660.648193 0.000000 3279.968994 0.000000 0.953637 0.000000 0.300959 0.363062 0.363062 0.363062 @@ -16512,7 +16512,7 @@ 2594.604004 0.000000 3314.565674 0.000000 0.819688 0.000000 0.572811 0.356450 0.356450 0.356450 2619.854004 0.000000 3315.539795 0.000000 0.044954 0.000000 -0.998989 0.489899 0.489899 0.489899 2637.465332 0.000000 3319.842285 0.000000 0.559538 0.000000 0.828805 0.320487 0.320487 0.320487 -2659.582031 0.000000 3346.510986 0.000000 0.847832 0.000000 0.530265 0.363442 0.363442 0.363442 +2659.582031 0.000000 3346.510986 0.000000 0.847832 0.000000 0.530266 0.363442 0.363442 0.363442 2610.155518 0.000000 3325.376221 0.000000 0.863177 0.000000 -0.504902 0.438848 0.438848 0.438848 2648.677002 0.000000 3363.263428 0.000000 0.287218 0.000000 0.957865 0.311838 0.311838 0.311838 2607.488281 0.000000 3319.395996 0.000000 0.463538 0.000000 -0.886077 0.453822 0.453822 0.453822 @@ -19250,7 +19250,7 @@ 3847.416992 0.000000 3425.264648 0.000000 0.844901 0.000000 0.534923 0.342791 0.342791 0.342791 3830.997559 0.000000 3453.989990 0.000000 0.416688 0.000000 -0.909049 0.434183 0.434183 0.434183 3847.476318 0.000000 3416.486572 0.000000 0.251465 0.000000 0.967866 0.361871 0.361871 0.361871 -3830.412598 0.000000 3413.715820 0.000000 0.239842 0.000000 0.970812 0.360197 0.360197 0.360197 +3830.412598 0.000000 3413.715820 0.000000 0.239841 0.000000 0.970812 0.360197 0.360197 0.360197 3826.610352 0.000000 3418.607666 0.000000 0.309449 0.000000 0.950916 0.279573 0.279573 0.279573 3827.280518 0.000000 3423.163818 0.000000 0.212964 0.000000 0.977060 0.280820 0.280820 0.280820 3860.100586 0.000000 3414.835205 0.000000 0.993032 0.000000 -0.117845 0.405249 0.405249 0.405249 @@ -20675,7 +20675,7 @@ 5072.276855 0.000000 1203.843018 0.000000 0.065929 0.000000 -0.997824 0.448088 0.448088 0.448088 5098.179199 0.000000 1182.910645 0.000000 0.992009 0.000000 0.126168 0.394505 0.394505 0.394505 5055.818848 0.000000 1157.669800 0.000000 0.824724 0.000000 -0.565535 0.425211 0.425211 0.425211 -5071.152344 0.000000 1201.252686 0.000000 0.836399 0.000000 -0.548120 0.420276 0.420276 0.420276 +5071.152344 0.000000 1201.252686 0.000000 0.836399 0.000000 -0.548121 0.420276 0.420276 0.420276 5103.817871 0.000000 1180.173950 0.000000 0.532972 0.000000 0.846133 0.353161 0.353161 0.353161 5072.658691 0.000000 1198.914307 0.000000 0.014789 0.000000 -0.999891 0.467593 0.467593 0.467593 5069.336426 0.000000 1162.563110 0.000000 0.649987 0.000000 -0.759945 0.435344 0.435344 0.435344 @@ -21377,7 +21377,7 @@ 5220.500977 0.000000 1338.377441 0.000000 0.164633 0.000000 -0.986355 0.440701 0.440701 0.440701 5207.486816 0.000000 1308.798340 0.000000 0.961969 0.000000 -0.273157 0.407736 0.407736 0.407736 5204.628906 0.000000 1323.721924 0.000000 0.530016 0.000000 0.847988 0.366644 0.366644 0.366644 -5209.450195 0.000000 1359.930054 0.000000 0.862002 0.000000 0.506904 0.382216 0.382216 0.382216 +5209.450195 0.000000 1359.930054 0.000000 0.862002 0.000000 0.506905 0.382216 0.382216 0.382216 5217.349609 0.000000 1300.955078 0.000000 0.914901 0.000000 -0.403679 0.441911 0.441911 0.441911 5221.741699 0.000000 1335.115967 0.000000 0.306911 0.000000 -0.951738 0.442742 0.442742 0.442742 5234.215332 0.000000 1306.813721 0.000000 0.478267 0.000000 0.878214 0.368952 0.368952 0.368952 @@ -22053,7 +22053,7 @@ 4970.795898 0.000000 1901.315063 0.000000 0.638007 0.000000 0.770030 0.379375 0.379375 0.379375 5005.765137 0.000000 1910.990967 0.000000 0.573192 0.000000 -0.819421 0.434047 0.434047 0.434047 5039.033691 0.000000 1920.768555 0.000000 0.247285 0.000000 -0.968943 0.440232 0.440232 0.440232 -4975.944336 0.000000 1930.779785 0.000000 0.981104 0.000000 -0.193482 0.407194 0.407194 0.407194 +4975.944336 0.000000 1930.779785 0.000000 0.981104 0.000000 -0.193481 0.407194 0.407194 0.407194 5015.379883 0.000000 1883.585693 0.000000 0.962392 0.000000 -0.271664 0.408929 0.408929 0.408929 4986.958984 0.000000 1883.170044 0.000000 0.938686 0.000000 0.344773 0.388576 0.388576 0.388576 5021.897461 0.000000 1893.327026 0.000000 0.487661 0.000000 -0.873033 0.434977 0.434977 0.434977 @@ -22196,7 +22196,7 @@ 4889.195312 0.000000 2134.670166 0.000000 0.261854 0.000000 0.965108 0.345882 0.345882 0.345882 4880.960938 0.000000 2121.905029 0.000000 0.756203 0.000000 -0.654337 0.430986 0.430986 0.430986 4887.762695 0.000000 2129.467529 0.000000 0.637731 0.000000 -0.770259 0.435121 0.435121 0.435121 -4878.061035 0.000000 2121.946289 0.000000 0.751172 0.000000 -0.660107 0.465877 0.465877 0.465877 +4878.061035 0.000000 2121.946289 0.000000 0.751172 0.000000 -0.660106 0.465877 0.465877 0.465877 4859.735840 0.000000 2121.692139 0.000000 0.989760 0.000000 -0.142739 0.406865 0.406865 0.406865 4890.575684 0.000000 2125.196533 0.000000 0.827672 0.000000 -0.561213 0.438974 0.438974 0.438974 4654.405273 0.000000 2222.038086 0.000000 0.334133 0.000000 -0.942526 0.419040 0.419040 0.419040 @@ -23592,7 +23592,7 @@ 5865.630859 0.000000 2023.102539 0.000000 0.179679 0.000000 0.983725 0.290331 0.290331 0.290331 5846.958008 0.000000 2030.223999 0.000000 0.748310 0.000000 -0.663349 0.447441 0.447441 0.447441 5852.704102 0.000000 2072.227051 0.000000 0.043662 0.000000 -0.999046 0.492263 0.492263 0.492263 -5893.794434 0.000000 2058.483887 0.000000 0.485053 0.000000 -0.874484 0.465369 0.465369 0.465369 +5893.794434 0.000000 2058.483887 0.000000 0.485054 0.000000 -0.874484 0.465369 0.465369 0.465369 5894.260742 0.000000 2092.670654 0.000000 0.980976 0.000000 -0.194131 0.421754 0.421754 0.421754 5875.726074 0.000000 2087.607910 0.000000 0.181189 0.000000 0.983448 0.267572 0.267572 0.267572 5880.414062 0.000000 2122.026855 0.000000 0.489547 0.000000 0.871977 0.307446 0.307446 0.307446 @@ -24516,7 +24516,7 @@ 6482.416016 0.000000 2179.937012 0.000000 0.998967 0.000000 0.045446 0.398525 0.398525 0.398525 6518.911133 0.000000 2185.425049 0.000000 0.210232 0.000000 -0.977651 0.518068 0.518068 0.518068 6510.996094 0.000000 2209.033936 0.000000 0.906972 0.000000 -0.421192 0.437989 0.437989 0.437989 -6490.835449 0.000000 2217.801514 0.000000 0.588128 0.000000 -0.808767 0.433867 0.433867 0.433867 +6490.835449 0.000000 2217.801514 0.000000 0.588129 0.000000 -0.808767 0.433867 0.433867 0.433867 6536.781250 0.000000 2193.889404 0.000000 0.183836 0.000000 0.982957 0.337028 0.337028 0.337028 6531.126465 0.000000 2205.530518 0.000000 0.790861 0.000000 -0.611996 0.427622 0.427622 0.427622 6512.502441 0.000000 2206.695557 0.000000 0.889711 0.000000 -0.456524 0.422014 0.422014 0.422014 @@ -24639,7 +24639,7 @@ 6519.000977 0.000000 2283.082764 0.000000 0.982983 0.000000 -0.183696 0.410700 0.410700 0.410700 6484.874512 0.000000 2261.087891 0.000000 0.597100 0.000000 -0.802167 0.454848 0.454848 0.454848 6483.591797 0.000000 2286.871094 0.000000 0.413688 0.000000 0.910419 0.325152 0.325152 0.325152 -6540.538574 0.000000 2298.199951 0.000000 0.770529 0.000000 0.637405 0.352723 0.352723 0.352723 +6540.538574 0.000000 2298.199951 0.000000 0.770529 0.000000 0.637404 0.352723 0.352723 0.352723 6585.825684 0.000000 2286.267822 0.000000 0.428377 0.000000 -0.903600 0.405633 0.405633 0.405633 6557.320312 0.000000 2258.883789 0.000000 0.130829 0.000000 0.991405 0.384905 0.384905 0.384905 6605.124023 0.000000 2241.499756 0.000000 0.996168 0.000000 -0.087465 0.401006 0.401006 0.401006 @@ -30098,7 +30098,7 @@ 6454.957031 0.000000 3585.201172 0.000000 0.143362 0.000000 0.989670 0.370788 0.370788 0.370788 6462.739746 0.000000 3585.237305 0.000000 0.518419 0.000000 -0.855127 0.419975 0.419975 0.419975 6458.261719 0.000000 3582.854248 0.000000 0.784209 0.000000 0.620496 0.385628 0.385628 0.385628 -6423.670410 0.000000 3533.154053 0.000000 0.619769 0.000000 -0.784785 0.430638 0.430638 0.430638 +6423.670410 0.000000 3533.154053 0.000000 0.619768 0.000000 -0.784785 0.430638 0.430638 0.430638 6467.204102 0.000000 3576.570801 0.000000 0.999735 0.000000 0.023003 0.398978 0.398978 0.398978 6454.469727 0.000000 3599.159424 0.000000 0.006296 0.000000 -0.999980 0.483585 0.483585 0.483585 6459.485840 0.000000 3598.851318 0.000000 0.720743 0.000000 -0.693202 0.447422 0.447422 0.447422 @@ -31709,7 +31709,7 @@ 7044.775879 0.000000 2964.031494 0.000000 0.687290 0.000000 -0.726383 0.409337 0.409337 0.409337 7034.456543 0.000000 2956.901611 0.000000 0.981754 0.000000 0.190157 0.396752 0.396752 0.396752 7047.952637 0.000000 3021.487549 0.000000 0.831533 0.000000 -0.555476 0.410586 0.410586 0.410586 -6992.335938 0.000000 2952.864990 0.000000 0.928784 0.000000 0.370621 0.391469 0.391469 0.391469 +6992.335938 0.000000 2952.864990 0.000000 0.928784 0.000000 0.370620 0.391469 0.391469 0.391469 6999.450195 0.000000 2953.123779 0.000000 0.916487 0.000000 0.400064 0.389519 0.389519 0.389519 7008.268066 0.000000 2977.462402 0.000000 0.926013 0.000000 0.377493 0.386277 0.386277 0.386277 7011.941895 0.000000 2985.638184 0.000000 0.138367 0.000000 -0.990381 0.452195 0.452195 0.452195 @@ -31941,7 +31941,7 @@ 7293.118164 0.000000 3092.921875 0.000000 0.146895 0.000000 0.989152 0.366597 0.366597 0.366597 7277.295898 0.000000 3079.925293 0.000000 0.613631 0.000000 -0.789593 0.419996 0.419996 0.419996 7331.550293 0.000000 3067.504395 0.000000 0.165140 0.000000 0.986270 0.360016 0.360016 0.360016 -7336.929688 0.000000 3070.467041 0.000000 0.818173 0.000000 0.574971 0.342804 0.342804 0.342804 +7336.929688 0.000000 3070.467041 0.000000 0.818173 0.000000 0.574972 0.342804 0.342804 0.342804 7332.625977 0.000000 3070.324951 0.000000 0.006683 0.000000 0.999978 0.347675 0.347675 0.347675 7274.548340 0.000000 3080.986816 0.000000 0.956157 0.000000 -0.292854 0.411130 0.411130 0.411130 7328.695312 0.000000 3057.701904 0.000000 0.040924 0.000000 0.999162 0.336598 0.336598 0.336598 @@ -35848,7 +35848,7 @@ 7780.214844 0.000000 4041.991211 0.000000 0.739760 0.000000 0.672871 0.345457 0.345457 0.345457 7783.361816 0.000000 4045.896240 0.000000 0.827584 0.000000 0.561341 0.361016 0.361016 0.361016 8075.368652 0.000000 3519.457764 0.000000 0.174283 0.000000 0.984696 0.351918 0.351918 0.351918 -8086.957031 0.000000 3502.902344 0.000000 0.938983 0.000000 -0.343965 0.413500 0.413500 0.413500 +8086.957031 0.000000 3502.902344 0.000000 0.938983 0.000000 -0.343964 0.413500 0.413500 0.413500 8076.143066 0.000000 3517.047607 0.000000 0.951240 0.000000 -0.308451 0.424737 0.424737 0.424737 8095.346191 0.000000 3509.604980 0.000000 0.642825 0.000000 0.766013 0.342487 0.342487 0.342487 8088.974121 0.000000 3594.851562 0.000000 0.975683 0.000000 0.219188 0.388414 0.388414 0.388414 diff --git a/gfx/map/map_object_data/generated/tree_leaf_high_generator_3.txt b/gfx/map/map_object_data/generated/tree_leaf_high_generator_3.txt index 13457c9e..1c3da346 100644 --- a/gfx/map/map_object_data/generated/tree_leaf_high_generator_3.txt +++ b/gfx/map/map_object_data/generated/tree_leaf_high_generator_3.txt @@ -192,7 +192,7 @@ 277.911957 0.000000 864.658752 0.000000 0.497902 0.000000 0.867233 0.681767 0.681767 0.681767 257.832550 0.000000 915.471313 0.000000 0.672570 0.000000 -0.740033 0.927291 0.927291 0.927291 264.335175 0.000000 872.753113 0.000000 0.794644 0.000000 0.607076 0.742149 0.742149 0.742149 -281.689270 0.000000 879.028931 0.000000 0.771998 0.000000 -0.635625 0.878829 0.878829 0.878829 +281.689270 0.000000 879.028931 0.000000 0.771998 0.000000 -0.635624 0.878829 0.878829 0.878829 257.993164 0.000000 901.085449 0.000000 0.519174 0.000000 0.854669 0.643405 0.643405 0.643405 251.206055 0.000000 926.739746 0.000000 0.286279 0.000000 0.958146 0.768544 0.768544 0.768544 267.326141 0.000000 922.826294 0.000000 0.753755 0.000000 0.657155 0.791407 0.791407 0.791407 @@ -284,7 +284,7 @@ 189.346329 0.000000 1005.482422 0.000000 0.906258 0.000000 0.422726 0.792416 0.792416 0.792416 163.183807 0.000000 955.392517 0.000000 0.655691 0.000000 -0.755029 0.817432 0.817432 0.817432 153.172180 0.000000 968.787964 0.000000 0.948199 0.000000 0.317676 0.769008 0.769008 0.769008 -181.997299 0.000000 959.323792 0.000000 0.624317 0.000000 -0.781172 0.805372 0.805372 0.805372 +181.997299 0.000000 959.323792 0.000000 0.624316 0.000000 -0.781172 0.805372 0.805372 0.805372 195.333939 0.000000 994.810669 0.000000 0.062307 0.000000 -0.998057 0.823499 0.823499 0.823499 200.641907 0.000000 1003.740234 0.000000 0.447064 0.000000 -0.894502 0.936675 0.936675 0.936675 156.778488 0.000000 978.332275 0.000000 0.995398 0.000000 -0.095824 0.812133 0.812133 0.812133 @@ -830,7 +830,7 @@ 440.436401 0.000000 994.982971 0.000000 0.915377 0.000000 0.402598 0.770456 0.770456 0.770456 460.670105 0.000000 980.214539 0.000000 0.025344 0.000000 0.999679 0.668509 0.668509 0.668509 434.888184 0.000000 962.011230 0.000000 0.803429 0.000000 0.595401 0.748030 0.748030 0.748030 -474.071289 0.000000 997.424866 0.000000 0.486049 0.000000 0.873931 0.714634 0.714634 0.714634 +474.071289 0.000000 997.424866 0.000000 0.486050 0.000000 0.873931 0.714634 0.714634 0.714634 448.027527 0.000000 988.720215 0.000000 0.559276 0.000000 0.828981 0.730904 0.730904 0.730904 444.196869 0.000000 1000.004761 0.000000 0.219854 0.000000 0.975533 0.707038 0.707038 0.707038 450.196106 0.000000 1002.880981 0.000000 0.511849 0.000000 -0.859075 0.879879 0.879879 0.879879 @@ -1218,7 +1218,7 @@ 833.770020 0.000000 699.518188 0.000000 0.955049 0.000000 -0.296448 0.845985 0.845985 0.845985 804.717896 0.000000 648.745056 0.000000 0.991863 0.000000 -0.127307 0.808414 0.808414 0.808414 837.276001 0.000000 717.544922 0.000000 0.207453 0.000000 0.978245 0.622935 0.622935 0.622935 -833.930664 0.000000 685.132324 0.000000 0.875209 0.000000 -0.483745 0.813312 0.813312 0.813312 +833.930664 0.000000 685.132324 0.000000 0.875209 0.000000 -0.483746 0.813312 0.813312 0.813312 827.143555 0.000000 710.786621 0.000000 0.818771 0.000000 -0.574120 0.816855 0.816855 0.816855 843.263611 0.000000 706.873169 0.000000 0.988105 0.000000 -0.153783 0.823590 0.823590 0.823590 802.798279 0.000000 659.386230 0.000000 0.500212 0.000000 -0.865903 0.872140 0.872140 0.872140 @@ -1475,7 +1475,7 @@ 726.006714 0.000000 776.425354 0.000000 0.469411 0.000000 0.882980 0.694310 0.694310 0.694310 756.569458 0.000000 721.875427 0.000000 0.784078 0.000000 -0.620662 0.860581 0.860581 0.860581 745.783020 0.000000 742.386963 0.000000 0.910401 0.000000 -0.413727 0.852137 0.852137 0.852137 -735.703125 0.000000 768.649170 0.000000 0.644288 0.000000 -0.764783 0.890776 0.890776 0.890776 +735.703125 0.000000 768.649170 0.000000 0.644287 0.000000 -0.764783 0.890776 0.890776 0.890776 786.463135 0.000000 776.912415 0.000000 0.209947 0.000000 0.977713 0.739731 0.739731 0.739731 732.460938 0.000000 774.407898 0.000000 0.638924 0.000000 0.769270 0.754773 0.754773 0.754773 744.947571 0.000000 745.946716 0.000000 0.332284 0.000000 0.943179 0.662691 0.662691 0.662691 @@ -1955,7 +1955,7 @@ 1148.003418 0.000000 716.171997 0.000000 0.965553 0.000000 -0.260205 0.811514 0.811514 0.811514 1148.991943 0.000000 671.286865 0.000000 0.883137 0.000000 -0.469115 0.819895 0.819895 0.819895 1079.997314 0.000000 716.566772 0.000000 0.096866 0.000000 -0.995297 0.888305 0.888305 0.888305 -1095.614502 0.000000 703.727905 0.000000 0.953553 0.000000 -0.301225 0.813750 0.813750 0.813750 +1095.614502 0.000000 703.727905 0.000000 0.953553 0.000000 -0.301224 0.813750 0.813750 0.813750 1079.920898 0.000000 691.512024 0.000000 0.826507 0.000000 -0.562927 0.878100 0.878100 0.878100 1093.448608 0.000000 699.221619 0.000000 0.998701 0.000000 -0.050949 0.801832 0.801832 0.801832 1149.651123 0.000000 681.499634 0.000000 0.004733 0.000000 -0.999989 0.843164 0.843164 0.843164 @@ -2678,7 +2678,7 @@ 1296.118530 0.000000 675.848755 0.000000 0.905082 0.000000 -0.425236 0.856582 0.856582 0.856582 1296.662231 0.000000 686.296997 0.000000 0.108557 0.000000 0.994090 0.694880 0.694880 0.694880 1322.489380 0.000000 704.578491 0.000000 0.756415 0.000000 -0.654092 0.885867 0.885867 0.885867 -1347.485107 0.000000 696.573975 0.000000 0.813007 0.000000 -0.582254 0.894958 0.894958 0.894958 +1347.485107 0.000000 696.573975 0.000000 0.813007 0.000000 -0.582255 0.894958 0.894958 0.894958 1305.760498 0.000000 670.729370 0.000000 0.658895 0.000000 0.752235 0.758677 0.758677 0.758677 1310.965576 0.000000 711.365173 0.000000 0.791786 0.000000 0.610798 0.699607 0.699607 0.699607 1355.117554 0.000000 699.970093 0.000000 0.170623 0.000000 -0.985336 0.914028 0.914028 0.914028 @@ -4443,7 +4443,7 @@ 1964.460327 0.000000 878.784912 0.000000 0.456628 0.000000 0.889658 0.759263 0.759263 0.759263 2001.411377 0.000000 867.692932 0.000000 0.828364 0.000000 0.560191 0.782186 0.782186 0.782186 1995.003540 0.000000 869.354858 0.000000 0.631122 0.000000 -0.775683 0.864365 0.864365 0.864365 -1997.375000 0.000000 926.292725 0.000000 0.628247 0.000000 -0.778014 0.830447 0.830447 0.830447 +1997.375000 0.000000 926.292725 0.000000 0.628246 0.000000 -0.778014 0.830447 0.830447 0.830447 1989.541504 0.000000 869.763611 0.000000 0.875862 0.000000 -0.482562 0.863967 0.863967 0.863967 1960.838989 0.000000 880.271301 0.000000 0.991408 0.000000 -0.130805 0.811790 0.811790 0.811790 1990.186523 0.000000 930.113647 0.000000 0.946198 0.000000 0.323587 0.779467 0.779467 0.779467 @@ -5612,7 +5612,7 @@ 2744.890869 0.000000 968.787964 0.000000 0.513676 0.000000 0.857984 0.732026 0.732026 0.732026 2754.199219 0.000000 986.826172 0.000000 0.888082 0.000000 0.459684 0.727022 0.727022 0.727022 2777.719727 0.000000 973.069824 0.000000 0.176756 0.000000 -0.984255 1.012851 1.012851 1.012851 -2766.044434 0.000000 982.829468 0.000000 0.940595 0.000000 -0.339530 0.852929 0.852929 0.852929 +2766.044434 0.000000 982.829468 0.000000 0.940595 0.000000 -0.339529 0.852929 0.852929 0.852929 2770.932617 0.000000 998.724121 0.000000 0.861969 0.000000 0.506961 0.742342 0.742342 0.742342 2748.497314 0.000000 978.332275 0.000000 0.573782 0.000000 0.819008 0.653372 0.653372 0.653372 2745.334473 0.000000 991.900208 0.000000 0.916918 0.000000 -0.399076 0.862721 0.862721 0.862721 @@ -5805,7 +5805,7 @@ 2919.670166 0.000000 754.993958 0.000000 0.380100 0.000000 -0.924945 0.877124 0.877124 0.877124 2891.382080 0.000000 759.741821 0.000000 0.950640 0.000000 -0.310296 0.830436 0.830436 0.830436 2899.106445 0.000000 763.685486 0.000000 0.347927 0.000000 -0.937522 0.873554 0.873554 0.873554 -3005.992920 0.000000 744.530945 0.000000 0.520057 0.000000 -0.854131 0.831287 0.831287 0.831287 +3005.992920 0.000000 744.530945 0.000000 0.520058 0.000000 -0.854131 0.831287 0.831287 0.831287 3015.400391 0.000000 778.743835 0.000000 0.279897 0.000000 0.960030 0.761440 0.761440 0.761440 2993.535645 0.000000 771.502563 0.000000 0.659645 0.000000 0.751577 0.787770 0.787770 0.787770 3009.839111 0.000000 761.283752 0.000000 0.994098 0.000000 0.108484 0.792054 0.792054 0.792054 @@ -8341,7 +8341,7 @@ 3743.826904 0.000000 2283.756836 0.000000 0.511328 0.000000 0.859386 0.764684 0.764684 0.764684 3753.612793 0.000000 2297.494873 0.000000 0.606583 0.000000 -0.795020 0.898569 0.898569 0.898569 3773.908203 0.000000 2287.206055 0.000000 0.152068 0.000000 -0.988370 0.938502 0.938502 0.938502 -3802.507568 0.000000 2296.560059 0.000000 0.986649 0.000000 -0.162859 0.806077 0.806077 0.806077 +3802.507568 0.000000 2296.560059 0.000000 0.986649 0.000000 -0.162858 0.806077 0.806077 0.806077 3749.678711 0.000000 2288.097168 0.000000 0.942954 0.000000 -0.332923 0.822776 0.822776 0.822776 3782.689941 0.000000 2281.049561 0.000000 0.821561 0.000000 -0.570120 0.854160 0.854160 0.854160 3746.363770 0.000000 2272.801025 0.000000 0.561630 0.000000 0.827389 0.695489 0.695489 0.695489 @@ -9292,7 +9292,7 @@ 707.460999 0.000000 2413.525146 0.000000 0.658282 0.000000 -0.752772 0.859236 0.859236 0.859236 716.433350 0.000000 2429.850098 0.000000 0.980462 0.000000 -0.196706 0.817795 0.817795 0.817795 651.088745 0.000000 2420.420654 0.000000 0.588886 0.000000 0.808216 0.706394 0.706394 0.706394 -654.056519 0.000000 2407.103516 0.000000 0.353338 0.000000 -0.935496 0.909444 0.909444 0.909444 +654.056519 0.000000 2407.103516 0.000000 0.353337 0.000000 -0.935496 0.909444 0.909444 0.909444 714.470947 0.000000 2432.552979 0.000000 0.931986 0.000000 -0.362495 0.815114 0.815114 0.815114 675.363159 0.000000 2423.871338 0.000000 0.700565 0.000000 -0.713589 0.863322 0.863322 0.863322 659.761658 0.000000 2406.801758 0.000000 0.986600 0.000000 -0.163158 0.811391 0.811391 0.811391 @@ -10375,7 +10375,7 @@ 807.645752 0.000000 2647.305908 0.000000 0.987517 0.000000 0.157510 0.797441 0.797441 0.797441 819.239319 0.000000 2602.602295 0.000000 0.999401 0.000000 -0.034608 0.800913 0.800913 0.800913 793.376343 0.000000 2655.053467 0.000000 0.426625 0.000000 -0.904428 0.837240 0.837240 0.837240 -805.479858 0.000000 2642.799805 0.000000 0.840446 0.000000 0.541895 0.780098 0.780098 0.780098 +805.479858 0.000000 2642.799805 0.000000 0.840446 0.000000 0.541896 0.780098 0.780098 0.780098 849.536377 0.000000 2595.317871 0.000000 0.999278 0.000000 -0.038001 0.802414 0.802414 0.802414 820.554382 0.000000 2593.308350 0.000000 0.827242 0.000000 0.561845 0.781054 0.781054 0.781054 798.649902 0.000000 2604.007080 0.000000 0.151178 0.000000 -0.988507 0.965798 0.965798 0.965798 @@ -12243,7 +12243,7 @@ 960.924133 0.000000 3121.431152 0.000000 0.974612 0.000000 -0.223900 0.817995 0.817995 0.817995 971.337585 0.000000 3104.994873 0.000000 0.561453 0.000000 -0.827508 0.872998 0.872998 0.872998 1007.471191 0.000000 3144.502930 0.000000 0.875036 0.000000 -0.484057 0.854798 0.854798 0.854798 -964.598328 0.000000 3129.606934 0.000000 0.717953 0.000000 0.696091 0.717884 0.717884 0.717884 +964.598328 0.000000 3129.606934 0.000000 0.717953 0.000000 0.696092 0.717884 0.717884 0.717884 1001.617065 0.000000 3142.451416 0.000000 0.716317 0.000000 -0.697775 0.849512 0.849512 0.849512 950.725037 0.000000 3125.778320 0.000000 0.969200 0.000000 0.246276 0.779574 0.779574 0.779574 983.444336 0.000000 3110.763428 0.000000 0.576922 0.000000 -0.816799 0.896216 0.896216 0.896216 @@ -12339,7 +12339,7 @@ 1148.003418 0.000000 3091.656494 0.000000 0.165275 0.000000 -0.986248 0.916995 0.916995 0.916995 1106.512817 0.000000 3080.062744 0.000000 0.999560 0.000000 0.029661 0.799431 0.799431 0.799431 1124.801758 0.000000 3052.126465 0.000000 0.095722 0.000000 0.995408 0.743441 0.743441 0.743441 -1112.251831 0.000000 3040.569092 0.000000 0.701973 0.000000 0.712203 0.756782 0.756782 0.756782 +1112.251831 0.000000 3040.569092 0.000000 0.701974 0.000000 0.712203 0.756782 0.756782 0.756782 1147.005859 0.000000 3030.518555 0.000000 0.363924 0.000000 0.931429 0.779178 0.779178 0.779178 1123.704346 0.000000 3082.282471 0.000000 0.346346 0.000000 -0.938107 0.848132 0.848132 0.848132 1089.171875 0.000000 3072.274170 0.000000 0.460349 0.000000 0.887738 0.678256 0.678256 0.678256 @@ -12630,7 +12630,7 @@ 721.611633 0.000000 3257.136230 0.000000 0.873161 0.000000 -0.487432 0.821965 0.821965 0.821965 745.767334 0.000000 3274.658936 0.000000 0.203298 0.000000 -0.979117 1.008720 1.008720 1.008720 751.834717 0.000000 3247.920410 0.000000 0.356195 0.000000 -0.934412 0.984355 0.984355 0.984355 -732.725708 0.000000 3240.182617 0.000000 0.722756 0.000000 -0.691103 0.821030 0.821030 0.821030 +732.725708 0.000000 3240.182617 0.000000 0.722756 0.000000 -0.691104 0.821030 0.821030 0.821030 729.109680 0.000000 3272.287842 0.000000 0.401333 0.000000 0.915932 0.623097 0.623097 0.623097 757.934814 0.000000 3262.823730 0.000000 0.980425 0.000000 -0.196894 0.818762 0.818762 0.818762 761.938477 0.000000 3276.569824 0.000000 0.868662 0.000000 -0.495405 0.823291 0.823291 0.823291 @@ -12648,7 +12648,7 @@ 729.822937 0.000000 3262.166992 0.000000 0.073154 0.000000 -0.997321 0.954337 0.954337 0.954337 754.722351 0.000000 3271.089844 0.000000 0.583006 0.000000 -0.812468 0.844323 0.844323 0.844323 759.885010 0.000000 3251.835693 0.000000 0.190727 0.000000 0.981643 0.698378 0.698378 0.698378 -752.290894 0.000000 3256.522217 0.000000 0.830636 0.000000 0.556816 0.768154 0.768154 0.768154 +752.290894 0.000000 3256.522217 0.000000 0.830636 0.000000 0.556817 0.768154 0.768154 0.768154 742.000549 0.000000 3282.294922 0.000000 0.756253 0.000000 0.654279 0.720514 0.720514 0.720514 754.477600 0.000000 3279.583008 0.000000 0.089431 0.000000 -0.995993 0.955316 0.955316 0.955316 737.453125 0.000000 3276.365479 0.000000 0.783341 0.000000 -0.621592 0.840995 0.840995 0.840995 @@ -12828,7 +12828,7 @@ 844.889709 0.000000 3255.761719 0.000000 0.180538 0.000000 0.983568 0.728413 0.728413 0.728413 849.141663 0.000000 3293.578369 0.000000 0.448700 0.000000 -0.893682 0.891408 0.891408 0.891408 840.639343 0.000000 3307.347168 0.000000 0.844097 0.000000 -0.536190 0.839673 0.839673 0.839673 -854.717163 0.000000 3254.700439 0.000000 0.969501 0.000000 -0.245089 0.816913 0.816913 0.816913 +854.717163 0.000000 3254.700439 0.000000 0.969501 0.000000 -0.245088 0.816913 0.816913 0.816913 852.297668 0.000000 3260.007812 0.000000 0.830115 0.000000 -0.557592 0.845718 0.845718 0.845718 803.608704 0.000000 3279.195068 0.000000 0.269075 0.000000 0.963119 0.713648 0.713648 0.713648 853.951965 0.000000 3291.079590 0.000000 0.028454 0.000000 0.999595 0.688181 0.688181 0.688181 @@ -12993,7 +12993,7 @@ 776.061218 0.000000 3420.038574 0.000000 0.424095 0.000000 -0.905618 0.900457 0.900457 0.900457 754.489563 0.000000 3432.985352 0.000000 0.996323 0.000000 0.085678 0.797995 0.797995 0.797995 789.426453 0.000000 3401.790283 0.000000 0.197324 0.000000 -0.980338 0.849330 0.849330 0.849330 -781.455383 0.000000 3395.937744 0.000000 0.465341 0.000000 -0.885131 0.895070 0.895070 0.895070 +781.455383 0.000000 3395.937744 0.000000 0.465342 0.000000 -0.885131 0.895070 0.895070 0.895070 789.690186 0.000000 3416.905762 0.000000 0.111018 0.000000 0.993818 0.721293 0.721293 0.721293 766.512695 0.000000 3422.003906 0.000000 0.797406 0.000000 0.603443 0.759244 0.759244 0.759244 782.672180 0.000000 3422.969727 0.000000 0.223849 0.000000 -0.974624 0.851578 0.851578 0.851578 @@ -13114,7 +13114,7 @@ 901.919189 0.000000 3262.823730 0.000000 0.117775 0.000000 0.993040 0.752996 0.752996 0.752996 930.585083 0.000000 3269.215088 0.000000 0.133695 0.000000 -0.991023 0.807747 0.807747 0.807747 892.048279 0.000000 3264.421631 0.000000 0.858400 0.000000 0.512981 0.753847 0.753847 0.753847 -882.137939 0.000000 3269.208984 0.000000 0.176584 0.000000 0.984286 0.784139 0.784139 0.784139 +882.137939 0.000000 3269.208984 0.000000 0.176584 0.000000 0.984285 0.784139 0.784139 0.784139 864.469604 0.000000 3296.804688 0.000000 0.951303 0.000000 0.308257 0.777094 0.777094 0.777094 879.012451 0.000000 3302.802734 0.000000 0.999713 0.000000 -0.023940 0.801750 0.801750 0.801750 898.706726 0.000000 3271.089844 0.000000 0.886812 0.000000 -0.462130 0.812089 0.812089 0.812089 @@ -15774,7 +15774,7 @@ 1238.693726 0.000000 2909.825195 0.000000 0.278837 0.000000 0.960338 0.731304 0.731304 0.731304 1239.941650 0.000000 2932.298340 0.000000 0.918065 0.000000 0.396430 0.768982 0.768982 0.768982 1236.110962 0.000000 2943.582764 0.000000 0.846838 0.000000 0.531851 0.747919 0.747919 0.747919 -1242.110107 0.000000 2946.458984 0.000000 0.486337 0.000000 -0.873771 0.886613 0.886613 0.886613 +1242.110107 0.000000 2946.458984 0.000000 0.486338 0.000000 -0.873771 0.886613 0.886613 0.886613 1235.405518 0.000000 2937.645264 0.000000 0.124732 0.000000 0.992190 0.696051 0.696051 0.696051 1267.662354 0.000000 2929.082764 0.000000 0.035017 0.000000 0.999387 0.672094 0.672094 0.672094 1153.564697 0.000000 2969.198730 0.000000 0.822112 0.000000 0.569326 0.786209 0.786209 0.786209 @@ -17662,7 +17662,7 @@ 1154.481567 0.000000 3249.942139 0.000000 0.736323 0.000000 -0.676630 0.913549 0.913549 0.913549 1157.784302 0.000000 3282.084473 0.000000 0.996718 0.000000 -0.080957 0.812383 0.812383 0.812383 1221.813843 0.000000 3296.770508 0.000000 0.898428 0.000000 -0.439121 0.822336 0.822336 0.822336 -1200.483521 0.000000 3263.800049 0.000000 0.961647 0.000000 -0.274290 0.811154 0.811154 0.811154 +1200.483521 0.000000 3263.800049 0.000000 0.961647 0.000000 -0.274289 0.811154 0.811154 0.811154 1192.700195 0.000000 3257.916504 0.000000 0.314306 0.000000 0.949322 0.719043 0.719043 0.719043 1181.410156 0.000000 3291.481934 0.000000 0.099734 0.000000 -0.995014 0.874031 0.874031 0.874031 1202.973755 0.000000 3268.401855 0.000000 0.798637 0.000000 -0.601813 0.825924 0.825924 0.825924 @@ -18316,7 +18316,7 @@ 1560.444458 0.000000 3263.800049 0.000000 0.942730 0.000000 -0.333556 0.807947 0.807947 0.807947 1577.427979 0.000000 3275.285645 0.000000 0.356963 0.000000 -0.934118 0.918485 0.918485 0.918485 1554.567993 0.000000 3303.902100 0.000000 0.993000 0.000000 -0.118115 0.804114 0.804114 0.804114 -1517.361206 0.000000 3299.396973 0.000000 0.714361 0.000000 0.699777 0.767956 0.767956 0.767956 +1517.361206 0.000000 3299.396973 0.000000 0.714361 0.000000 0.699778 0.767956 0.767956 0.767956 1527.567627 0.000000 3295.165283 0.000000 0.983314 0.000000 -0.181915 0.804823 0.804823 0.804823 1564.230835 0.000000 3258.794922 0.000000 0.961121 0.000000 -0.276126 0.842744 0.842744 0.842744 1525.451660 0.000000 3245.604492 0.000000 0.969072 0.000000 0.246778 0.795518 0.795518 0.795518 @@ -19104,7 +19104,7 @@ 1656.417847 0.000000 3383.434570 0.000000 0.995203 0.000000 0.097829 0.795244 0.795244 0.795244 1663.979858 0.000000 3452.226074 0.000000 0.962090 0.000000 0.272734 0.766070 0.766070 0.766070 1664.822754 0.000000 3412.653564 0.000000 0.319412 0.000000 -0.947616 0.929124 0.929124 0.929124 -1696.491821 0.000000 3438.363281 0.000000 0.480013 0.000000 -0.877261 0.919902 0.919902 0.919902 +1696.491821 0.000000 3438.363281 0.000000 0.480014 0.000000 -0.877261 0.919902 0.919902 0.919902 1672.028198 0.000000 3385.030029 0.000000 0.232323 0.000000 -0.972639 0.898485 0.898485 0.898485 1669.866455 0.000000 3393.242188 0.000000 0.994755 0.000000 -0.102284 0.804911 0.804911 0.804911 1661.905151 0.000000 3439.847168 0.000000 0.783327 0.000000 -0.621610 0.833762 0.833762 0.833762 @@ -19451,7 +19451,7 @@ 1932.963501 0.000000 3012.982910 0.000000 0.020428 0.000000 -0.999791 0.869670 0.869670 0.869670 1914.085205 0.000000 2966.809082 0.000000 0.778797 0.000000 -0.627276 0.830470 0.830470 0.830470 1930.710571 0.000000 3016.403809 0.000000 0.424628 0.000000 -0.905368 0.845453 0.845453 0.845453 -1932.136230 0.000000 2995.520020 0.000000 0.490500 0.000000 -0.871441 0.841210 0.841210 0.841210 +1932.136230 0.000000 2995.520020 0.000000 0.490501 0.000000 -0.871441 0.841210 0.841210 0.841210 1898.026001 0.000000 2983.462158 0.000000 0.163582 0.000000 0.986530 0.736796 0.736796 0.736796 1900.826172 0.000000 2967.710449 0.000000 0.899030 0.000000 0.437886 0.779632 0.779632 0.779632 1936.735962 0.000000 2984.180664 0.000000 0.496595 0.000000 -0.867982 0.847235 0.847235 0.847235 @@ -21093,7 +21093,7 @@ 1799.888672 0.000000 3274.257812 0.000000 0.943380 0.000000 -0.331713 0.836669 0.836669 0.836669 1808.807129 0.000000 3268.684814 0.000000 0.725294 0.000000 0.688439 0.714465 0.714465 0.714465 1813.850830 0.000000 3249.273438 0.000000 0.477894 0.000000 -0.878417 0.847555 0.847555 0.847555 -1815.585938 0.000000 3288.102295 0.000000 0.545230 0.000000 0.838286 0.737456 0.737456 0.737456 +1815.585938 0.000000 3288.102295 0.000000 0.545231 0.000000 0.838286 0.737456 0.737456 0.737456 1802.963745 0.000000 3284.233154 0.000000 0.243277 0.000000 0.969957 0.744425 0.744425 0.744425 1805.931519 0.000000 3270.916016 0.000000 0.789246 0.000000 0.614078 0.738592 0.738592 0.738592 1837.087036 0.000000 3305.005859 0.000000 0.841183 0.000000 -0.540751 0.848952 0.848952 0.848952 @@ -22205,7 +22205,7 @@ 2141.445557 0.000000 3309.275146 0.000000 0.888437 0.000000 0.458999 0.779999 0.779999 0.779999 2147.304688 0.000000 3277.337646 0.000000 0.013344 0.000000 0.999911 0.742143 0.742143 0.742143 2134.170898 0.000000 3305.598145 0.000000 0.189779 0.000000 0.981827 0.625551 0.625551 0.625551 -2137.684082 0.000000 3276.504395 0.000000 0.962878 0.000000 0.269937 0.767574 0.767574 0.767574 +2137.684082 0.000000 3276.504395 0.000000 0.962878 0.000000 0.269936 0.767574 0.767574 0.767574 2136.946777 0.000000 3260.309326 0.000000 0.961659 0.000000 0.274249 0.781191 0.781191 0.781191 2157.059570 0.000000 3276.515625 0.000000 0.489924 0.000000 0.871765 0.687711 0.687711 0.687711 2122.491211 0.000000 3307.890137 0.000000 0.999997 0.000000 -0.002410 0.800220 0.800220 0.800220 @@ -22379,7 +22379,7 @@ 2271.111084 0.000000 3171.481934 0.000000 0.042483 0.000000 0.999097 0.659896 0.659896 0.659896 2286.365967 0.000000 3195.614502 0.000000 0.108211 0.000000 -0.994128 0.896383 0.896383 0.896383 2239.917480 0.000000 3236.272949 0.000000 0.975617 0.000000 -0.219479 0.811137 0.811137 0.811137 -2257.618896 0.000000 3189.855713 0.000000 0.976731 0.000000 -0.214470 0.810231 0.810231 0.810231 +2257.618896 0.000000 3189.855713 0.000000 0.976731 0.000000 -0.214469 0.810231 0.810231 0.810231 2253.396240 0.000000 3218.573975 0.000000 0.840283 0.000000 -0.542148 0.844288 0.844288 0.844288 2267.197021 0.000000 3176.979248 0.000000 0.757503 0.000000 -0.652831 0.833244 0.833244 0.833244 2277.293457 0.000000 3192.830078 0.000000 0.966653 0.000000 0.256091 0.782931 0.782931 0.782931 @@ -23013,7 +23013,7 @@ 2109.866943 0.000000 3393.417725 0.000000 0.952631 0.000000 -0.304129 0.832588 0.832588 0.832588 2139.678711 0.000000 3417.338867 0.000000 0.463033 0.000000 -0.886341 0.966445 0.966445 0.966445 2106.005127 0.000000 3413.177734 0.000000 0.710416 0.000000 0.703782 0.784563 0.784563 0.784563 -2088.336670 0.000000 3440.773438 0.000000 0.997253 0.000000 0.074075 0.799334 0.799334 0.799334 +2088.336670 0.000000 3440.773438 0.000000 0.997253 0.000000 0.074074 0.799334 0.799334 0.799334 2122.573975 0.000000 3415.058594 0.000000 0.862394 0.000000 -0.506238 0.837212 0.837212 0.837212 2132.692383 0.000000 3412.048340 0.000000 0.831319 0.000000 0.555796 0.735735 0.735735 0.735735 2120.142578 0.000000 3400.490967 0.000000 0.997318 0.000000 -0.073192 0.806365 0.806365 0.806365 @@ -25693,7 +25693,7 @@ 2206.500244 0.000000 3545.698975 0.000000 0.925982 0.000000 -0.377569 0.802784 0.802784 0.802784 2177.997314 0.000000 3557.146484 0.000000 0.208666 0.000000 0.977987 0.657336 0.657336 0.657336 2194.566162 0.000000 3559.027344 0.000000 0.939178 0.000000 0.343430 0.746437 0.746437 0.746437 -2199.728760 0.000000 3539.773193 0.000000 0.672737 0.000000 0.739882 0.754587 0.754587 0.754587 +2199.728760 0.000000 3539.773193 0.000000 0.672736 0.000000 0.739882 0.754587 0.754587 0.754587 2204.684570 0.000000 3556.017090 0.000000 0.984352 0.000000 0.176213 0.773572 0.773572 0.773572 2192.134766 0.000000 3544.459717 0.000000 0.760496 0.000000 -0.649342 0.814821 0.814821 0.814821 2228.695068 0.000000 3567.906494 0.000000 0.804915 0.000000 -0.593390 0.844153 0.844153 0.844153 @@ -26109,7 +26109,7 @@ 2133.037842 0.000000 3612.758789 0.000000 0.390175 0.000000 0.920741 0.633158 0.633158 0.633158 2138.872070 0.000000 3628.323730 0.000000 0.754905 0.000000 0.655834 0.698427 0.698427 0.698427 2134.302490 0.000000 3648.184326 0.000000 0.827309 0.000000 -0.561747 0.885062 0.885062 0.885062 -2110.019043 0.000000 3653.600342 0.000000 0.581185 0.000000 0.813771 0.664440 0.664440 0.664440 +2110.019043 0.000000 3653.600342 0.000000 0.581186 0.000000 0.813771 0.664440 0.664440 0.664440 2101.339111 0.000000 3650.581055 0.000000 0.817572 0.000000 -0.575826 0.831986 0.831986 0.831986 2120.025879 0.000000 3658.181152 0.000000 0.817055 0.000000 -0.576560 0.887631 0.887631 0.887631 2116.118896 0.000000 3666.816406 0.000000 0.611111 0.000000 -0.791545 0.929697 0.929697 0.929697 @@ -26699,7 +26699,7 @@ 2827.193115 0.000000 2315.076416 0.000000 0.302357 0.000000 0.953195 0.685673 0.685673 0.685673 2840.519287 0.000000 2355.593018 0.000000 0.416720 0.000000 0.909035 0.736422 0.736422 0.736422 2836.733887 0.000000 2374.489746 0.000000 0.362237 0.000000 -0.932086 0.871189 0.871189 0.871189 -2754.902588 0.000000 2395.080078 0.000000 0.508946 0.000000 -0.860798 0.819259 0.819259 0.819259 +2754.902588 0.000000 2395.080078 0.000000 0.508947 0.000000 -0.860798 0.819259 0.819259 0.819259 2759.974121 0.000000 2375.883057 0.000000 0.922934 0.000000 0.384957 0.787688 0.787688 0.787688 2763.845215 0.000000 2400.609131 0.000000 0.978491 0.000000 -0.206291 0.822410 0.822410 0.822410 2757.796631 0.000000 2385.636475 0.000000 0.360451 0.000000 0.932778 0.770471 0.770471 0.770471 @@ -27482,7 +27482,7 @@ 2349.502441 0.000000 2813.341797 0.000000 0.489547 0.000000 0.871977 0.662279 0.662279 0.662279 2358.939209 0.000000 2813.862061 0.000000 0.999303 0.000000 -0.037325 0.802953 0.802953 0.802953 2334.064453 0.000000 2863.081055 0.000000 0.650203 0.000000 0.759761 0.740539 0.740539 0.740539 -2343.103271 0.000000 2811.560059 0.000000 0.651905 0.000000 0.758301 0.738631 0.738631 0.738631 +2343.103271 0.000000 2811.560059 0.000000 0.651904 0.000000 0.758301 0.738631 0.738631 0.738631 2321.141357 0.000000 2868.275879 0.000000 0.046025 0.000000 -0.998940 0.868519 0.868519 0.868519 2306.520020 0.000000 2848.676025 0.000000 0.691842 0.000000 0.722049 0.708640 0.708640 0.708640 2373.364258 0.000000 2812.067871 0.000000 0.577857 0.000000 0.816138 0.714196 0.714196 0.714196 @@ -27540,7 +27540,7 @@ 2453.990967 0.000000 2801.283447 0.000000 0.814584 0.000000 -0.580046 0.855243 0.855243 0.855243 2456.922119 0.000000 2768.397217 0.000000 0.999777 0.000000 -0.021111 0.802365 0.802365 0.802365 2448.152832 0.000000 2739.111572 0.000000 0.916467 0.000000 -0.400110 0.862894 0.862894 0.862894 -2504.391846 0.000000 2803.349609 0.000000 0.663330 0.000000 0.748327 0.762003 0.762003 0.762003 +2504.391846 0.000000 2803.349609 0.000000 0.663329 0.000000 0.748327 0.762003 0.762003 0.762003 2460.528564 0.000000 2777.941650 0.000000 0.446625 0.000000 0.894721 0.763493 0.763493 0.763493 2457.365723 0.000000 2791.509521 0.000000 0.806322 0.000000 -0.591477 0.896698 0.896698 0.896698 2447.993652 0.000000 2763.395752 0.000000 0.797307 0.000000 -0.603575 0.899004 0.899004 0.899004 @@ -28124,7 +28124,7 @@ 2887.364502 0.000000 2536.220459 0.000000 0.820831 0.000000 0.571171 0.785794 0.785794 0.785794 2902.047607 0.000000 2543.617676 0.000000 0.976479 0.000000 -0.215614 0.804167 0.804167 0.804167 2933.522461 0.000000 2529.437256 0.000000 0.876474 0.000000 0.481450 0.772612 0.772612 0.772612 -2929.900635 0.000000 2533.694824 0.000000 0.819701 0.000000 -0.572791 0.814252 0.814252 0.814252 +2929.900635 0.000000 2533.694824 0.000000 0.819701 0.000000 -0.572792 0.814252 0.814252 0.814252 2888.874756 0.000000 2557.910645 0.000000 0.985047 0.000000 -0.172287 0.804254 0.804254 0.804254 2894.984863 0.000000 2542.835449 0.000000 0.290876 0.000000 0.956761 0.718980 0.718980 0.718980 2882.325195 0.000000 2542.604736 0.000000 0.416733 0.000000 -0.909029 0.824610 0.824610 0.824610 @@ -31404,7 +31404,7 @@ 2411.201660 0.000000 3370.868164 0.000000 0.615173 0.000000 -0.788392 0.840268 0.840268 0.840268 2390.558105 0.000000 3351.335938 0.000000 0.365346 0.000000 0.930872 0.678813 0.678813 0.678813 2427.319336 0.000000 3334.410645 0.000000 0.003737 0.000000 0.999993 0.643197 0.643197 0.643197 -2424.012695 0.000000 3338.976318 0.000000 0.757457 0.000000 -0.652885 0.879281 0.879281 0.879281 +2424.012695 0.000000 3338.976318 0.000000 0.757457 0.000000 -0.652884 0.879281 0.879281 0.879281 2388.562988 0.000000 3332.427002 0.000000 0.583724 0.000000 -0.811952 0.879479 0.879479 0.879479 2387.574219 0.000000 3342.598633 0.000000 0.694196 0.000000 0.719786 0.759560 0.759560 0.759560 2384.225342 0.000000 3370.467285 0.000000 0.602906 0.000000 0.797812 0.720860 0.720860 0.720860 @@ -32333,7 +32333,7 @@ 2641.931885 0.000000 3181.554199 0.000000 0.644237 0.000000 -0.764826 0.831304 0.831304 0.831304 2600.906006 0.000000 3205.770020 0.000000 0.865236 0.000000 -0.501366 0.839649 0.839649 0.839649 2607.016113 0.000000 3190.694824 0.000000 0.974815 0.000000 -0.223014 0.816710 0.816710 0.816710 -2645.992188 0.000000 3221.537842 0.000000 0.594274 0.000000 0.804262 0.696981 0.696981 0.696981 +2645.992188 0.000000 3221.537842 0.000000 0.594275 0.000000 0.804262 0.696981 0.696981 0.696981 2605.334473 0.000000 3173.620117 0.000000 0.893620 0.000000 0.448824 0.780757 0.780757 0.780757 2631.200439 0.000000 3196.124023 0.000000 0.771516 0.000000 -0.636210 0.850820 0.850820 0.850820 2609.008545 0.000000 3213.056152 0.000000 0.857173 0.000000 0.515028 0.755912 0.755912 0.755912 @@ -33313,7 +33313,7 @@ 2832.187500 0.000000 3228.453613 0.000000 0.967117 0.000000 0.254333 0.784592 0.784592 0.784592 2854.600342 0.000000 3229.819336 0.000000 0.052158 0.000000 -0.998639 0.993811 0.993811 0.993811 2857.804199 0.000000 3237.925781 0.000000 0.773544 0.000000 0.633742 0.725151 0.725151 0.725151 -2868.433594 0.000000 3237.138916 0.000000 0.486709 0.000000 0.873564 0.717878 0.717878 0.717878 +2868.433594 0.000000 3237.138916 0.000000 0.486710 0.000000 0.873564 0.717878 0.717878 0.717878 2832.989258 0.000000 3237.860352 0.000000 0.993854 0.000000 -0.110697 0.806248 0.806248 0.806248 2839.994385 0.000000 3233.348633 0.000000 0.547535 0.000000 -0.836783 0.835640 0.835640 0.835640 2863.302979 0.000000 3217.382812 0.000000 0.997782 0.000000 -0.066562 0.801876 0.801876 0.801876 @@ -34852,7 +34852,7 @@ 2744.233887 0.000000 3435.746582 0.000000 0.580268 0.000000 -0.814426 0.891811 0.891811 0.891811 2760.698975 0.000000 3424.068604 0.000000 0.091292 0.000000 0.995824 0.678563 0.678563 0.678563 2736.300781 0.000000 3383.434570 0.000000 0.319906 0.000000 0.947449 0.721663 0.721663 0.721663 -2785.613770 0.000000 3420.473145 0.000000 0.669857 0.000000 0.742491 0.740838 0.740838 0.740838 +2785.613770 0.000000 3420.473145 0.000000 0.669856 0.000000 0.742491 0.740838 0.740838 0.740838 2773.962646 0.000000 3416.079590 0.000000 0.946031 0.000000 0.324076 0.771327 0.771327 0.771327 2746.075928 0.000000 3391.028564 0.000000 0.990584 0.000000 0.136905 0.787328 0.787328 0.787328 2790.311279 0.000000 3411.567627 0.000000 0.980745 0.000000 -0.195293 0.822848 0.822848 0.822848 @@ -36131,7 +36131,7 @@ 2993.627441 0.000000 3343.952148 0.000000 0.077398 0.000000 -0.997000 1.012952 1.012952 1.012952 3015.004395 0.000000 3360.510498 0.000000 0.024451 0.000000 -0.999701 1.020513 1.020513 1.020513 3007.592041 0.000000 3343.213867 0.000000 0.525222 0.000000 -0.850965 0.906724 0.906724 0.906724 -3002.894043 0.000000 3316.823486 0.000000 0.581534 0.000000 0.813522 0.762425 0.762425 0.762425 +3002.894043 0.000000 3316.823486 0.000000 0.581535 0.000000 0.813522 0.762425 0.762425 0.762425 2980.320068 0.000000 3313.152100 0.000000 0.618870 0.000000 -0.785493 0.832481 0.832481 0.832481 2971.228516 0.000000 3375.763672 0.000000 0.999904 0.000000 -0.013823 0.801690 0.801690 0.801690 3017.045898 0.000000 3331.297119 0.000000 0.427649 0.000000 0.903945 0.681629 0.681629 0.681629 @@ -37049,7 +37049,7 @@ 3231.437744 0.000000 3355.828369 0.000000 0.875688 0.000000 0.482878 0.749877 0.749877 0.749877 3218.221680 0.000000 3376.782471 0.000000 0.439962 0.000000 -0.898016 0.970396 0.970396 0.970396 3237.010254 0.000000 3312.188477 0.000000 0.782200 0.000000 -0.623027 0.808463 0.808463 0.808463 -3180.995850 0.000000 3328.639160 0.000000 0.868533 0.000000 0.495630 0.790368 0.790368 0.790368 +3180.995850 0.000000 3328.639160 0.000000 0.868533 0.000000 0.495631 0.790368 0.790368 0.790368 3186.075195 0.000000 3381.192627 0.000000 0.384954 0.000000 -0.922936 0.979624 0.979624 0.979624 3215.591309 0.000000 3365.096924 0.000000 0.991397 0.000000 0.130893 0.792056 0.792056 0.792056 3230.267822 0.000000 3376.252197 0.000000 0.879392 0.000000 -0.476099 0.856788 0.856788 0.856788 @@ -40707,7 +40707,7 @@ 4154.332520 0.000000 3538.329346 0.000000 0.720062 0.000000 -0.693910 0.867088 0.867088 0.867088 4147.398438 0.000000 3547.315186 0.000000 0.256730 0.000000 -0.966483 0.920984 0.920984 0.920984 4151.825195 0.000000 3554.929443 0.000000 0.812646 0.000000 0.582758 0.755269 0.755269 0.755269 -4149.879395 0.000000 3549.670166 0.000000 0.819701 0.000000 -0.572791 0.854085 0.854085 0.854085 +4149.879395 0.000000 3549.670166 0.000000 0.819701 0.000000 -0.572792 0.854085 0.854085 0.854085 4163.992676 0.000000 3530.657715 0.000000 0.030887 0.000000 -0.999523 0.924560 0.924560 0.924560 4175.965332 0.000000 3458.955322 0.000000 0.812277 0.000000 0.583272 0.795896 0.795896 0.795896 4175.661621 0.000000 3523.957520 0.000000 0.386229 0.000000 0.922403 0.753564 0.753564 0.753564 @@ -41280,7 +41280,7 @@ 5005.473633 0.000000 1103.292480 0.000000 0.983476 0.000000 0.181037 0.798691 0.798691 0.798691 5033.173828 0.000000 1094.982056 0.000000 0.649187 0.000000 -0.760629 0.803625 0.803625 0.803625 5035.581543 0.000000 1148.078247 0.000000 0.201271 0.000000 0.979536 0.753274 0.753274 0.753274 -4977.092285 0.000000 1135.869019 0.000000 0.470020 0.000000 0.882656 0.794816 0.794816 0.794816 +4977.092285 0.000000 1135.869019 0.000000 0.470021 0.000000 0.882656 0.794816 0.794816 0.794816 4982.566895 0.000000 1143.271362 0.000000 0.488994 0.000000 0.872287 0.746022 0.746022 0.746022 5036.390137 0.000000 1120.437744 0.000000 0.276611 0.000000 -0.960982 0.831703 0.831703 0.831703 5029.754883 0.000000 1102.858154 0.000000 0.994318 0.000000 0.106448 0.798530 0.798530 0.798530 @@ -41482,7 +41482,7 @@ 5090.321289 0.000000 1120.705078 0.000000 0.199506 0.000000 0.979897 0.698217 0.698217 0.698217 5108.562500 0.000000 1103.193115 0.000000 0.693597 0.000000 -0.720364 0.809639 0.809639 0.809639 5039.567871 0.000000 1148.473022 0.000000 0.194814 0.000000 0.980840 0.710217 0.710217 0.710217 -5045.362305 0.000000 1122.553101 0.000000 0.228672 0.000000 -0.973504 0.849782 0.849782 0.849782 +5045.362305 0.000000 1122.553101 0.000000 0.228671 0.000000 -0.973504 0.849782 0.849782 0.849782 5108.807129 0.000000 1080.672974 0.000000 0.711504 0.000000 -0.702682 0.818207 0.818207 0.818207 5057.872070 0.000000 1149.677124 0.000000 0.994840 0.000000 -0.101455 0.803958 0.803958 0.803958 5063.643066 0.000000 1109.313843 0.000000 0.766328 0.000000 -0.642449 0.836369 0.836369 0.836369 @@ -41619,7 +41619,7 @@ 5305.995117 0.000000 857.329346 0.000000 0.999714 0.000000 0.023920 0.797563 0.797563 0.797563 5293.961914 0.000000 860.627625 0.000000 0.999997 0.000000 0.002360 0.799852 0.799852 0.799852 5318.041016 0.000000 856.799194 0.000000 0.901204 0.000000 0.433395 0.779051 0.779051 0.779051 -5326.708984 0.000000 854.908386 0.000000 0.711135 0.000000 0.703055 0.735531 0.735531 0.735531 +5326.708984 0.000000 854.908386 0.000000 0.711135 0.000000 0.703056 0.735531 0.735531 0.735531 5298.161621 0.000000 856.433350 0.000000 0.959261 0.000000 0.282522 0.775802 0.775802 0.775802 5294.167480 0.000000 850.323975 0.000000 0.287555 0.000000 0.957764 0.762446 0.762446 0.762446 5322.012695 0.000000 854.336243 0.000000 0.609876 0.000000 -0.792497 0.826313 0.826313 0.826313 @@ -43331,7 +43331,7 @@ 4898.576172 0.000000 1616.892334 0.000000 0.905225 0.000000 0.424933 0.785537 0.785537 0.785537 4917.828613 0.000000 1607.820923 0.000000 0.969996 0.000000 0.243121 0.791466 0.791466 0.791466 4936.293945 0.000000 1602.275879 0.000000 0.990933 0.000000 -0.134358 0.807025 0.807025 0.807025 -4910.766113 0.000000 1607.038574 0.000000 0.750356 0.000000 0.661035 0.786153 0.786153 0.786153 +4910.766113 0.000000 1607.038574 0.000000 0.750356 0.000000 0.661034 0.786153 0.786153 0.786153 4934.950684 0.000000 1612.467651 0.000000 0.896726 0.000000 -0.442587 0.812911 0.812911 0.812911 4941.772461 0.000000 1617.581421 0.000000 0.995863 0.000000 0.090866 0.797492 0.797492 0.797492 4938.766113 0.000000 1606.914917 0.000000 0.393793 0.000000 -0.919199 0.821658 0.821658 0.821658 @@ -43790,7 +43790,7 @@ 5209.450195 0.000000 1287.945679 0.000000 0.804527 0.000000 -0.593916 0.829720 0.829720 0.829720 5217.629883 0.000000 1258.971069 0.000000 0.142402 0.000000 0.989809 0.722144 0.722144 0.722144 5221.741699 0.000000 1263.131592 0.000000 0.972161 0.000000 0.234314 0.784837 0.784837 0.784837 -5210.871094 0.000000 1272.121338 0.000000 0.847783 0.000000 0.530343 0.770190 0.770190 0.770190 +5210.871094 0.000000 1272.121338 0.000000 0.847783 0.000000 0.530344 0.770190 0.770190 0.770190 5205.075684 0.000000 1274.995850 0.000000 0.872090 0.000000 0.489346 0.764460 0.764460 0.764460 5185.275879 0.000000 1284.170654 0.000000 0.992315 0.000000 0.123734 0.790858 0.790858 0.790858 5202.608887 0.000000 1246.502319 0.000000 0.316363 0.000000 0.948638 0.722176 0.722176 0.722176 @@ -47261,7 +47261,7 @@ 5703.964355 0.000000 1884.155151 0.000000 0.674217 0.000000 -0.738534 0.883141 0.883141 0.883141 5690.490234 0.000000 1904.829834 0.000000 0.901395 0.000000 -0.432998 0.827637 0.827637 0.827637 5700.948730 0.000000 1922.956055 0.000000 0.019526 0.000000 -0.999809 0.932915 0.932915 0.932915 -5719.681641 0.000000 1937.630005 0.000000 0.749239 0.000000 0.662300 0.751422 0.751422 0.751422 +5719.681641 0.000000 1937.630005 0.000000 0.749239 0.000000 0.662299 0.751422 0.751422 0.751422 5690.541992 0.000000 1916.530151 0.000000 0.948997 0.000000 -0.315284 0.813645 0.813645 0.813645 5700.746094 0.000000 1885.414551 0.000000 0.502082 0.000000 0.864820 0.752423 0.752423 0.752423 5706.880859 0.000000 1883.170044 0.000000 0.150381 0.000000 0.988628 0.679196 0.679196 0.679196 @@ -47365,7 +47365,7 @@ 5230.342773 0.000000 2078.069336 0.000000 0.235243 0.000000 -0.971937 0.833553 0.833553 0.833553 5225.385254 0.000000 2048.233398 0.000000 0.147192 0.000000 0.989108 0.753956 0.753956 0.753956 5246.331055 0.000000 2020.686157 0.000000 0.979154 0.000000 0.203120 0.790686 0.790686 0.790686 -5190.173340 0.000000 2028.131958 0.000000 0.880623 0.000000 -0.473817 0.827802 0.827802 0.827802 +5190.173340 0.000000 2028.131958 0.000000 0.880624 0.000000 -0.473817 0.827802 0.827802 0.827802 5201.484375 0.000000 2024.063599 0.000000 0.147442 0.000000 -0.989071 0.882693 0.882693 0.882693 5196.487793 0.000000 2062.342285 0.000000 0.928960 0.000000 -0.370180 0.830900 0.830900 0.830900 5192.929688 0.000000 2060.480225 0.000000 0.700640 0.000000 -0.713515 0.874739 0.874739 0.874739 @@ -47732,7 +47732,7 @@ 6311.678711 0.000000 1448.628052 0.000000 0.707517 0.000000 -0.706696 0.810345 0.810345 0.810345 6305.336914 0.000000 1476.960449 0.000000 0.467249 0.000000 0.884126 0.777904 0.777904 0.777904 6310.054688 0.000000 1458.151978 0.000000 0.256713 0.000000 -0.966488 0.825140 0.825140 0.825140 -6308.239258 0.000000 1468.470215 0.000000 0.657090 0.000000 0.753813 0.792838 0.792838 0.792838 +6308.239258 0.000000 1468.470215 0.000000 0.657089 0.000000 0.753813 0.792838 0.792838 0.792838 6301.852539 0.000000 1508.486938 0.000000 0.963766 0.000000 0.266749 0.796926 0.796926 0.796926 6306.052246 0.000000 1504.292725 0.000000 0.895903 0.000000 -0.444250 0.807999 0.807999 0.807999 6313.533203 0.000000 1453.929077 0.000000 0.935693 0.000000 0.352816 0.789846 0.789846 0.789846 @@ -47826,7 +47826,7 @@ 6567.870605 0.000000 1236.295776 0.000000 0.604312 0.000000 -0.796748 0.814914 0.814914 0.814914 6621.057129 0.000000 1257.374634 0.000000 0.918271 0.000000 -0.395952 0.825856 0.825856 0.825856 6605.485352 0.000000 1268.115601 0.000000 0.871459 0.000000 -0.490467 0.820886 0.820886 0.820886 -6600.566406 0.000000 1268.824219 0.000000 0.518252 0.000000 -0.855228 0.864548 0.864548 0.864548 +6600.566406 0.000000 1268.824219 0.000000 0.518253 0.000000 -0.855228 0.864548 0.864548 0.864548 6335.427246 0.000000 1436.410522 0.000000 0.985208 0.000000 -0.171363 0.804850 0.804850 0.804850 6524.658691 0.000000 1365.404297 0.000000 0.137366 0.000000 0.990520 0.785404 0.785404 0.785404 6533.610352 0.000000 1392.390259 0.000000 0.583664 0.000000 0.811995 0.774451 0.774451 0.774451 @@ -49664,7 +49664,7 @@ 6484.265625 0.000000 2052.708008 0.000000 0.866337 0.000000 0.499460 0.783706 0.783706 0.783706 6479.530273 0.000000 2067.803711 0.000000 0.779032 0.000000 0.626984 0.718385 0.718385 0.718385 6497.052246 0.000000 2057.074463 0.000000 0.964053 0.000000 -0.265711 0.825460 0.825460 0.825460 -6492.553223 0.000000 2052.876953 0.000000 0.476529 0.000000 0.879158 0.759455 0.759455 0.759455 +6492.553223 0.000000 2052.876953 0.000000 0.476530 0.000000 0.879158 0.759455 0.759455 0.759455 6497.980957 0.000000 2041.461182 0.000000 0.993582 0.000000 0.113114 0.795517 0.795517 0.795517 6485.919922 0.000000 2024.445435 0.000000 0.953163 0.000000 -0.302458 0.817122 0.817122 0.817122 6483.060059 0.000000 2030.258911 0.000000 0.740835 0.000000 -0.671687 0.897082 0.897082 0.897082 @@ -51659,7 +51659,7 @@ 7637.907715 0.000000 1380.272583 0.000000 0.803123 0.000000 -0.595813 0.819122 0.819122 0.819122 7637.794922 0.000000 1376.586060 0.000000 0.998048 0.000000 0.062455 0.797940 0.797940 0.797940 7645.217773 0.000000 1377.679688 0.000000 0.009995 0.000000 0.999950 0.736407 0.736407 0.736407 -7772.932129 0.000000 1401.343384 0.000000 0.244434 0.000000 0.969666 0.707987 0.707987 0.707987 +7772.932129 0.000000 1401.343384 0.000000 0.244433 0.000000 0.969666 0.707987 0.707987 0.707987 7772.450195 0.000000 1404.921875 0.000000 0.391194 0.000000 0.920308 0.738369 0.738369 0.738369 7768.103027 0.000000 1400.524292 0.000000 0.657939 0.000000 -0.753072 0.847005 0.847005 0.847005 7773.467773 0.000000 1398.142578 0.000000 0.561988 0.000000 0.827145 0.739889 0.739889 0.739889 @@ -52101,7 +52101,7 @@ 7084.152344 0.000000 2150.314453 0.000000 0.618140 0.000000 -0.786068 0.813006 0.813006 0.813006 7117.845703 0.000000 2152.517822 0.000000 0.798765 0.000000 -0.601644 0.876973 0.876973 0.876973 7114.242676 0.000000 2115.788330 0.000000 0.892984 0.000000 0.450088 0.780139 0.780139 0.780139 -7062.911621 0.000000 2104.314209 0.000000 0.825082 0.000000 0.565012 0.789567 0.789567 0.789567 +7062.911621 0.000000 2104.314209 0.000000 0.825082 0.000000 0.565013 0.789567 0.789567 0.789567 7120.826660 0.000000 2123.535645 0.000000 0.679223 0.000000 0.733932 0.734822 0.734822 0.734822 7060.759766 0.000000 2147.646973 0.000000 0.956598 0.000000 0.291410 0.792381 0.792381 0.792381 7094.716309 0.000000 2116.358398 0.000000 0.914757 0.000000 -0.404004 0.820683 0.820683 0.820683 @@ -52349,7 +52349,7 @@ 6959.858398 0.000000 2256.018799 0.000000 0.544932 0.000000 -0.838480 0.884613 0.884613 0.884613 6976.842285 0.000000 2267.504395 0.000000 0.999907 0.000000 -0.013617 0.802081 0.802081 0.802081 6914.357422 0.000000 2264.751709 0.000000 0.999523 0.000000 0.030886 0.799371 0.799371 0.799371 -6965.084961 0.000000 2241.499756 0.000000 0.782060 0.000000 0.623204 0.746785 0.746785 0.746785 +6965.084961 0.000000 2241.499756 0.000000 0.782060 0.000000 0.623203 0.746785 0.746785 0.746785 6952.075195 0.000000 2250.135254 0.000000 0.923393 0.000000 -0.383855 0.806137 0.806137 0.806137 6963.645020 0.000000 2251.013672 0.000000 0.975978 0.000000 -0.217867 0.811975 0.811975 0.811975 6961.462891 0.000000 2245.757324 0.000000 0.566119 0.000000 -0.824324 0.945150 0.945150 0.945150 @@ -52915,7 +52915,7 @@ 4815.265625 0.000000 2492.015869 0.000000 0.091512 0.000000 0.995804 0.733530 0.733530 0.733530 4817.137207 0.000000 2473.278076 0.000000 0.370015 0.000000 0.929026 0.755727 0.755727 0.755727 4811.015625 0.000000 2485.509521 0.000000 0.634907 0.000000 -0.772589 0.839676 0.839676 0.839676 -4818.355957 0.000000 2490.918457 0.000000 0.702781 0.000000 -0.711406 0.842208 0.842208 0.842208 +4818.355957 0.000000 2490.918457 0.000000 0.702782 0.000000 -0.711406 0.842208 0.842208 0.842208 4842.675781 0.000000 2467.064453 0.000000 0.999348 0.000000 -0.036104 0.801558 0.801558 0.801558 4824.279297 0.000000 2485.906250 0.000000 0.757795 0.000000 -0.652493 0.837056 0.837056 0.837056 4845.569824 0.000000 2457.620850 0.000000 0.810783 0.000000 0.585347 0.794005 0.794005 0.794005 @@ -53063,7 +53063,7 @@ 5348.739746 0.000000 2840.964844 0.000000 0.888945 0.000000 0.458014 0.780616 0.780616 0.780616 5353.307129 0.000000 2852.998779 0.000000 0.300335 0.000000 0.953834 0.743120 0.743120 0.743120 5348.518555 0.000000 2855.045410 0.000000 0.857886 0.000000 0.513840 0.776072 0.776072 0.776072 -5345.468750 0.000000 2815.891602 0.000000 0.871533 0.000000 0.490336 0.737974 0.737974 0.737974 +5345.468750 0.000000 2815.891602 0.000000 0.871533 0.000000 0.490337 0.737974 0.737974 0.737974 5373.174316 0.000000 2813.341797 0.000000 0.440516 0.000000 -0.897745 0.842742 0.842742 0.842742 5370.367676 0.000000 2810.219238 0.000000 0.548009 0.000000 -0.836472 0.836807 0.836807 0.836807 5408.703125 0.000000 2856.321045 0.000000 0.920831 0.000000 -0.389961 0.833603 0.833603 0.833603 @@ -54262,7 +54262,7 @@ 5450.442383 0.000000 3337.460938 0.000000 0.448979 0.000000 0.893542 0.711267 0.711267 0.711267 5434.420898 0.000000 3335.427246 0.000000 0.774819 0.000000 -0.632183 0.857818 0.857818 0.857818 5424.214355 0.000000 3349.231934 0.000000 0.995897 0.000000 -0.090489 0.805646 0.805646 0.805646 -5432.002930 0.000000 3322.648438 0.000000 0.945603 0.000000 0.325322 0.770021 0.770021 0.770021 +5432.002930 0.000000 3322.648438 0.000000 0.945603 0.000000 0.325321 0.770021 0.770021 0.770021 5422.474609 0.000000 3346.956055 0.000000 0.914608 0.000000 0.404343 0.772565 0.772565 0.772565 5463.700195 0.000000 3353.201904 0.000000 0.657274 0.000000 -0.753651 0.876207 0.876207 0.876207 5431.112305 0.000000 3331.058105 0.000000 0.931841 0.000000 0.362866 0.769295 0.769295 0.769295 @@ -55442,7 +55442,7 @@ 6488.390625 0.000000 2376.989990 0.000000 0.023861 0.000000 -0.999715 0.982595 0.982595 0.982595 6515.525879 0.000000 2447.204590 0.000000 0.360939 0.000000 -0.932589 0.931745 0.931745 0.931745 6509.611328 0.000000 2431.174805 0.000000 0.945017 0.000000 -0.327021 0.841719 0.841719 0.841719 -6517.556152 0.000000 2408.298340 0.000000 0.691022 0.000000 -0.722833 0.866801 0.866801 0.866801 +6517.556152 0.000000 2408.298340 0.000000 0.691023 0.000000 -0.722833 0.866801 0.866801 0.866801 6528.470215 0.000000 2396.496826 0.000000 0.711354 0.000000 0.702834 0.703335 0.703335 0.703335 6479.380859 0.000000 2410.445312 0.000000 0.809969 0.000000 0.586472 0.740671 0.740671 0.740671 6521.584961 0.000000 2390.934082 0.000000 0.208846 0.000000 0.977948 0.662246 0.662246 0.662246 @@ -56362,7 +56362,7 @@ 6641.513184 0.000000 2477.380859 0.000000 0.975202 0.000000 -0.221319 0.809226 0.809226 0.809226 6663.244141 0.000000 2460.007568 0.000000 0.330365 0.000000 -0.943853 0.825141 0.825141 0.825141 6655.650391 0.000000 2464.694092 0.000000 0.138945 0.000000 0.990300 0.666206 0.666206 0.666206 -6692.210449 0.000000 2488.140869 0.000000 0.958662 0.000000 0.284549 0.786342 0.786342 0.786342 +6692.210449 0.000000 2488.140869 0.000000 0.958662 0.000000 0.284548 0.786342 0.786342 0.786342 6645.359863 0.000000 2490.466797 0.000000 0.082542 0.000000 0.996588 0.777708 0.777708 0.777708 6676.775391 0.000000 2449.075928 0.000000 0.779732 0.000000 -0.626113 0.846618 0.846618 0.846618 6682.539551 0.000000 2499.579346 0.000000 0.746888 0.000000 -0.664950 0.811332 0.811332 0.811332 @@ -56555,7 +56555,7 @@ 6755.483398 0.000000 2553.455078 0.000000 0.028645 0.000000 0.999590 0.702979 0.702979 0.702979 6746.141602 0.000000 2560.392578 0.000000 0.985106 0.000000 -0.171948 0.804763 0.804763 0.804763 6765.212402 0.000000 2576.926758 0.000000 0.834550 0.000000 0.550932 0.767836 0.767836 0.767836 -6759.054688 0.000000 2564.000244 0.000000 0.630169 0.000000 -0.776458 0.847941 0.847941 0.847941 +6759.054688 0.000000 2564.000244 0.000000 0.630168 0.000000 -0.776458 0.847941 0.847941 0.847941 6733.805664 0.000000 2588.252686 0.000000 0.662254 0.000000 -0.749280 0.844151 0.844151 0.844151 6754.281738 0.000000 2547.694580 0.000000 0.156197 0.000000 0.987726 0.739001 0.739001 0.739001 6760.865723 0.000000 2555.441895 0.000000 0.214394 0.000000 0.976747 0.692042 0.692042 0.692042 @@ -58053,7 +58053,7 @@ 5816.760254 0.000000 3394.709717 0.000000 0.991016 0.000000 0.133742 0.787381 0.787381 0.787381 5809.230469 0.000000 3383.438232 0.000000 0.622274 0.000000 -0.782799 0.849026 0.849026 0.849026 5813.047363 0.000000 3453.243896 0.000000 0.370712 0.000000 0.928748 0.728637 0.728637 0.728637 -5782.762695 0.000000 3440.831299 0.000000 0.639371 0.000000 -0.768899 0.858335 0.858335 0.858335 +5782.762695 0.000000 3440.831299 0.000000 0.639370 0.000000 -0.768899 0.858335 0.858335 0.858335 5825.916504 0.000000 3440.334229 0.000000 0.762397 0.000000 0.647110 0.760783 0.760783 0.760783 5796.040527 0.000000 3410.132324 0.000000 0.417180 0.000000 -0.908824 0.885416 0.885416 0.885416 5825.249512 0.000000 3448.999023 0.000000 0.915107 0.000000 -0.403210 0.826359 0.826359 0.826359 @@ -64776,7 +64776,7 @@ 7964.502441 0.000000 2661.123047 0.000000 0.841169 0.000000 0.540772 0.786991 0.786991 0.786991 7919.559082 0.000000 2595.142822 0.000000 0.117294 0.000000 0.993097 0.761688 0.761688 0.761688 7941.233887 0.000000 2601.589600 0.000000 0.992836 0.000000 -0.119485 0.815142 0.815142 0.815142 -7951.509766 0.000000 2608.662842 0.000000 0.784411 0.000000 0.620242 0.790379 0.790379 0.790379 +7951.509766 0.000000 2608.662842 0.000000 0.784411 0.000000 0.620241 0.790379 0.790379 0.790379 7944.708984 0.000000 2607.547852 0.000000 0.589299 0.000000 0.807915 0.779711 0.779711 0.779711 7958.622559 0.000000 2620.249023 0.000000 0.520642 0.000000 -0.853775 0.816553 0.816553 0.816553 7952.406738 0.000000 2618.025879 0.000000 0.741430 0.000000 0.671030 0.752399 0.752399 0.752399 @@ -65280,7 +65280,7 @@ 7056.696777 0.000000 3158.944092 0.000000 0.845276 0.000000 0.534330 0.719613 0.719613 0.719613 7090.196289 0.000000 3108.167725 0.000000 0.653691 0.000000 -0.756762 0.818515 0.818515 0.818515 7124.738770 0.000000 3113.852783 0.000000 0.900025 0.000000 -0.435838 0.839991 0.839991 0.839991 -7083.580078 0.000000 3162.925781 0.000000 0.884811 0.000000 -0.465949 0.824976 0.824976 0.824976 +7083.580078 0.000000 3162.925781 0.000000 0.884812 0.000000 -0.465949 0.824976 0.824976 0.824976 7105.343262 0.000000 3165.941406 0.000000 0.723755 0.000000 0.690057 0.777641 0.777641 0.777641 7081.119629 0.000000 3140.936279 0.000000 0.353831 0.000000 0.935310 0.754358 0.754358 0.754358 7083.874512 0.000000 3097.198975 0.000000 0.804322 0.000000 0.594193 0.725660 0.725660 0.725660 @@ -65957,7 +65957,7 @@ 6980.754395 0.000000 3185.837158 0.000000 0.553206 0.000000 -0.833045 0.901469 0.901469 0.901469 6976.616211 0.000000 3187.328369 0.000000 0.984393 0.000000 -0.175982 0.807844 0.807844 0.807844 6976.902832 0.000000 3193.121826 0.000000 0.643578 0.000000 -0.765381 0.850137 0.850137 0.850137 -6966.439453 0.000000 3173.783936 0.000000 0.853436 0.000000 -0.521198 0.821681 0.821681 0.821681 +6966.439453 0.000000 3173.783936 0.000000 0.853436 0.000000 -0.521199 0.821681 0.821681 0.821681 6981.964355 0.000000 3182.377930 0.000000 0.673294 0.000000 -0.739374 0.834902 0.834902 0.834902 6977.472168 0.000000 3190.200195 0.000000 0.654177 0.000000 -0.756341 0.864753 0.864753 0.864753 6981.991699 0.000000 3188.229492 0.000000 0.910941 0.000000 0.412536 0.768151 0.768151 0.768151 @@ -66579,7 +66579,7 @@ 7133.153809 0.000000 3430.150391 0.000000 0.999954 0.000000 -0.009606 0.800368 0.800368 0.800368 7150.135254 0.000000 3387.350586 0.000000 0.583742 0.000000 -0.811939 0.842009 0.842009 0.842009 7177.082031 0.000000 3383.438232 0.000000 0.978360 0.000000 0.206912 0.792382 0.792382 0.792382 -7133.849609 0.000000 3392.148438 0.000000 0.756573 0.000000 0.653910 0.756868 0.756868 0.756868 +7133.849609 0.000000 3392.148438 0.000000 0.756573 0.000000 0.653909 0.756868 0.756868 0.756868 7157.630859 0.000000 3388.381592 0.000000 0.971593 0.000000 -0.236657 0.808303 0.808303 0.808303 7172.979004 0.000000 3389.216797 0.000000 0.139377 0.000000 -0.990239 0.893456 0.893456 0.893456 7127.824219 0.000000 3383.434570 0.000000 0.732015 0.000000 0.681288 0.748804 0.748804 0.748804 @@ -67336,7 +67336,7 @@ 7262.939453 0.000000 3370.181396 0.000000 0.439152 0.000000 -0.898413 0.814044 0.814044 0.814044 7201.441406 0.000000 3359.670410 0.000000 0.745115 0.000000 -0.666936 0.808749 0.808749 0.808749 7241.074707 0.000000 3362.940186 0.000000 0.178507 0.000000 0.983939 0.768322 0.768322 0.768322 -7257.378418 0.000000 3352.721191 0.000000 0.805195 0.000000 0.593010 0.793154 0.793154 0.793154 +7257.378418 0.000000 3352.721191 0.000000 0.805195 0.000000 0.593011 0.793154 0.793154 0.793154 7208.406738 0.000000 3344.272217 0.000000 0.999090 0.000000 -0.042642 0.800230 0.800230 0.800230 7264.931641 0.000000 3326.497803 0.000000 0.843020 0.000000 -0.537881 0.814632 0.814632 0.814632 7241.235352 0.000000 3348.554199 0.000000 0.996937 0.000000 0.078213 0.791744 0.791744 0.791744 @@ -67420,7 +67420,7 @@ 7284.004883 0.000000 3353.816650 0.000000 0.369560 0.000000 0.929207 0.784284 0.784284 0.784284 7299.353027 0.000000 3336.406006 0.000000 0.827933 0.000000 -0.560826 0.807491 0.807491 0.807491 7327.189941 0.000000 3326.448975 0.000000 0.181544 0.000000 0.983383 0.769224 0.769224 0.769224 -7303.580078 0.000000 3328.506592 0.000000 0.994745 0.000000 -0.102388 0.800860 0.800860 0.800860 +7303.580078 0.000000 3328.506592 0.000000 0.994745 0.000000 -0.102387 0.800860 0.800860 0.800860 7305.766602 0.000000 3351.567383 0.000000 0.210574 0.000000 -0.977578 0.835818 0.835818 0.835818 7338.333984 0.000000 3318.456055 0.000000 0.866064 0.000000 0.499933 0.743851 0.743851 0.743851 7331.420898 0.000000 3345.283203 0.000000 0.646437 0.000000 0.762968 0.776599 0.776599 0.776599 @@ -69246,7 +69246,7 @@ 7493.096680 0.000000 3426.053223 0.000000 0.821169 0.000000 -0.570685 0.817467 0.817467 0.817467 7498.844727 0.000000 3452.677734 0.000000 0.052634 0.000000 -0.998614 0.996479 0.996479 0.996479 7535.122559 0.000000 3437.081299 0.000000 0.629733 0.000000 0.776812 0.664081 0.664081 0.664081 -7493.461914 0.000000 3455.197998 0.000000 0.838252 0.000000 -0.545283 0.852525 0.852525 0.852525 +7493.461914 0.000000 3455.197998 0.000000 0.838252 0.000000 -0.545284 0.852525 0.852525 0.852525 7546.195801 0.000000 3411.507080 0.000000 0.878339 0.000000 0.478038 0.747141 0.747141 0.747141 7511.377441 0.000000 3412.813721 0.000000 0.021002 0.000000 0.999779 0.575281 0.575281 0.575281 7494.864746 0.000000 3400.032959 0.000000 0.972266 0.000000 -0.233878 0.810043 0.810043 0.810043 @@ -70550,7 +70550,7 @@ 8289.520508 0.000000 3013.041016 0.000000 0.090110 0.000000 0.995932 0.762741 0.762741 0.762741 8316.324219 0.000000 2987.652344 0.000000 0.777583 0.000000 -0.628780 0.822816 0.822816 0.822816 8319.617188 0.000000 2993.144043 0.000000 0.972367 0.000000 0.233457 0.788141 0.788141 0.788141 -8338.174805 0.000000 3008.224854 0.000000 0.273359 0.000000 -0.961912 0.872101 0.872101 0.872101 +8338.174805 0.000000 3008.224854 0.000000 0.273358 0.000000 -0.961912 0.872101 0.872101 0.872101 8282.791992 0.000000 2957.965332 0.000000 0.298292 0.000000 0.954475 0.702760 0.702760 0.702760 8349.593750 0.000000 2978.715576 0.000000 0.837585 0.000000 -0.546307 0.815929 0.815929 0.815929 8279.236328 0.000000 2965.408691 0.000000 0.582048 0.000000 -0.813155 0.843240 0.843240 0.843240 @@ -71241,7 +71241,7 @@ 7127.485840 0.000000 3555.223877 0.000000 0.423888 0.000000 0.905715 0.756550 0.756550 0.756550 7127.790039 0.000000 3584.742188 0.000000 0.503394 0.000000 0.864057 0.785623 0.785623 0.785623 7159.293945 0.000000 3598.081787 0.000000 0.620199 0.000000 -0.784445 0.811887 0.811887 0.811887 -7134.862793 0.000000 3532.508301 0.000000 0.704607 0.000000 0.709597 0.790546 0.790546 0.790546 +7134.862793 0.000000 3532.508301 0.000000 0.704608 0.000000 0.709597 0.790546 0.790546 0.790546 7147.568359 0.000000 3586.235840 0.000000 0.752580 0.000000 0.658500 0.775881 0.775881 0.775881 7181.061523 0.000000 3537.218506 0.000000 0.957686 0.000000 0.287815 0.795102 0.795102 0.795102 7132.751953 0.000000 3587.334473 0.000000 0.951742 0.000000 0.306898 0.794393 0.794393 0.794393 @@ -71283,7 +71283,7 @@ 7008.810547 0.000000 3615.329102 0.000000 0.825962 0.000000 0.563726 0.792106 0.792106 0.792106 7029.856934 0.000000 3601.549316 0.000000 0.114244 0.000000 -0.993453 0.842756 0.842756 0.842756 7009.658691 0.000000 3605.185059 0.000000 0.692611 0.000000 -0.721312 0.831861 0.831861 0.831861 -7022.724121 0.000000 3628.030273 0.000000 0.856697 0.000000 -0.515819 0.813639 0.813639 0.813639 +7022.724121 0.000000 3628.030273 0.000000 0.856697 0.000000 -0.515820 0.813639 0.813639 0.813639 7012.705566 0.000000 3630.539062 0.000000 0.587016 0.000000 0.809575 0.758735 0.758735 0.758735 7026.539551 0.000000 3622.477295 0.000000 0.561545 0.000000 0.827446 0.694311 0.694311 0.694311 7014.256836 0.000000 3635.501465 0.000000 0.414938 0.000000 0.909850 0.778086 0.778086 0.778086 @@ -72409,7 +72409,7 @@ 7803.739746 0.000000 3496.573242 0.000000 0.624693 0.000000 -0.780871 0.827918 0.827918 0.827918 7781.187500 0.000000 3482.618164 0.000000 0.572933 0.000000 -0.819602 0.845475 0.845475 0.845475 7782.833496 0.000000 3472.017334 0.000000 0.088386 0.000000 0.996086 0.582404 0.582404 0.582404 -7846.435547 0.000000 3518.330322 0.000000 0.986635 0.000000 0.162945 0.781563 0.781563 0.781563 +7846.435547 0.000000 3518.330322 0.000000 0.986635 0.000000 0.162944 0.781563 0.781563 0.781563 7828.991211 0.000000 3465.234131 0.000000 0.992619 0.000000 0.121272 0.782081 0.782081 0.782081 7817.888184 0.000000 3519.855225 0.000000 0.030650 0.000000 0.999530 0.745554 0.745554 0.745554 7780.681641 0.000000 3515.350098 0.000000 0.657214 0.000000 -0.753704 0.817903 0.817903 0.817903 diff --git a/gfx/map/map_object_data/generated/tree_pine_01_b_generator_1.txt b/gfx/map/map_object_data/generated/tree_pine_01_b_generator_1.txt index 605e00fc..63b8ef39 100644 --- a/gfx/map/map_object_data/generated/tree_pine_01_b_generator_1.txt +++ b/gfx/map/map_object_data/generated/tree_pine_01_b_generator_1.txt @@ -5,7 +5,7 @@ generated_content=yes layer="tree_high_layer" pdxmesh="tree_pine_01_b_mesh" - count=97362 + count=97361 transform="668.392944 0.000000 2272.243652 0.000000 0.999225 0.000000 0.039361 0.400000 0.400000 0.400000 738.418030 0.000000 2210.560547 0.000000 0.987297 0.000000 -0.158887 0.400000 0.400000 0.400000 733.487671 0.000000 2210.893555 0.000000 0.974668 0.000000 0.223657 0.400000 0.400000 0.400000 @@ -2087,7 +2087,6 @@ 1617.020630 0.000000 2809.330322 0.000000 0.942262 0.000000 0.334875 0.400000 0.400000 0.400000 1641.401245 0.000000 2868.778564 0.000000 0.037764 0.000000 -0.999287 0.400000 0.400000 0.400000 1602.494751 0.000000 2811.615234 0.000000 0.915105 0.000000 0.403216 0.400000 0.400000 0.400000 -1604.169800 0.000000 2866.392090 0.000000 0.660116 0.000000 -0.751164 0.400000 0.400000 0.400000 1630.442627 0.000000 2809.721191 0.000000 0.513920 0.000000 0.857838 0.400000 0.400000 0.400000 1589.737427 0.000000 2850.178223 0.000000 0.231136 0.000000 0.972921 0.400000 0.400000 0.400000 1653.766968 0.000000 2864.864258 0.000000 0.911309 0.000000 0.411724 0.400000 0.400000 0.400000 @@ -2831,7 +2830,7 @@ 1880.327515 0.000000 2715.902832 0.000000 0.838870 0.000000 0.544332 0.400000 0.400000 0.400000 1931.328125 0.000000 2701.462646 0.000000 0.965675 0.000000 -0.259754 0.400000 0.400000 0.400000 1926.986206 0.000000 2669.893311 0.000000 0.836059 0.000000 -0.548639 0.400000 0.400000 0.400000 -1882.087036 0.000000 2682.770508 0.000000 0.280243 0.000000 0.959929 0.400000 0.400000 0.400000 +1882.087036 0.000000 2682.770508 0.000000 0.280242 0.000000 0.959929 0.400000 0.400000 0.400000 1879.956421 0.000000 2732.382324 0.000000 0.999973 0.000000 0.007339 0.400000 0.400000 0.400000 1933.931763 0.000000 2690.176758 0.000000 0.246389 0.000000 0.969171 0.400000 0.400000 0.400000 1895.846436 0.000000 2676.501465 0.000000 0.900519 0.000000 0.434816 0.400000 0.400000 0.400000 @@ -2962,7 +2961,7 @@ 1729.502197 0.000000 2825.229980 0.000000 0.079422 0.000000 0.996841 0.400000 0.400000 0.400000 1782.125732 0.000000 2832.077881 0.000000 0.951580 0.000000 -0.307402 0.400000 0.400000 0.400000 1791.533325 0.000000 2866.290771 0.000000 0.187648 0.000000 -0.982236 0.400000 0.400000 0.400000 -1753.657959 0.000000 2842.752686 0.000000 0.181061 0.000000 0.983472 0.400000 0.400000 0.400000 +1753.657959 0.000000 2842.752686 0.000000 0.181060 0.000000 0.983472 0.400000 0.400000 0.400000 1759.725342 0.000000 2816.014160 0.000000 0.541667 0.000000 0.840593 0.400000 0.400000 0.400000 1730.035156 0.000000 2855.779785 0.000000 0.471715 0.000000 -0.881751 0.400000 0.400000 0.400000 1769.668457 0.000000 2859.049561 0.000000 0.961374 0.000000 -0.275245 0.400000 0.400000 0.400000 @@ -3447,7 +3446,7 @@ 2178.432129 0.000000 2739.630859 0.000000 0.997176 0.000000 -0.075097 0.400000 0.400000 0.400000 2206.380127 0.000000 2737.736816 0.000000 0.494346 0.000000 -0.869265 0.400000 0.400000 0.400000 2229.704590 0.000000 2792.879883 0.000000 0.987223 0.000000 -0.159344 0.400000 0.400000 0.400000 -2173.105225 0.000000 2752.764160 0.000000 0.703364 0.000000 0.710829 0.400000 0.400000 0.400000 +2173.105225 0.000000 2752.764160 0.000000 0.703365 0.000000 0.710829 0.400000 0.400000 0.400000 2222.377197 0.000000 2800.377197 0.000000 0.763329 0.000000 -0.646010 0.400000 0.400000 0.400000 2186.182129 0.000000 2741.372559 0.000000 0.428005 0.000000 -0.903776 0.400000 0.400000 0.400000 2176.347168 0.000000 2747.967773 0.000000 0.830480 0.000000 0.557048 0.400000 0.400000 0.400000 @@ -3839,7 +3838,7 @@ 2296.043945 0.000000 2849.311279 0.000000 0.271492 0.000000 -0.962441 0.400000 0.400000 0.400000 1175.462036 0.000000 2945.803955 0.000000 0.844349 0.000000 0.535794 0.400000 0.400000 0.400000 1158.131714 0.000000 2945.252197 0.000000 0.398939 0.000000 0.916977 0.400000 0.400000 0.400000 -1197.236938 0.000000 2949.060547 0.000000 0.497454 0.000000 -0.867490 0.400000 0.400000 0.400000 +1197.236938 0.000000 2949.060547 0.000000 0.497455 0.000000 -0.867490 0.400000 0.400000 0.400000 1170.371216 0.000000 2930.404297 0.000000 0.444375 0.000000 -0.895841 0.400000 0.400000 0.400000 1187.104492 0.000000 2942.302246 0.000000 0.996467 0.000000 -0.083985 0.400000 0.400000 0.400000 1203.224609 0.000000 2938.388916 0.000000 0.206327 0.000000 -0.978483 0.400000 0.400000 0.400000 @@ -3964,7 +3963,7 @@ 1356.198730 0.000000 2923.535645 0.000000 0.997829 0.000000 -0.065852 0.400000 0.400000 0.400000 1309.222900 0.000000 2893.195801 0.000000 0.154353 0.000000 0.988016 0.400000 0.400000 0.400000 1343.579102 0.000000 2921.376953 0.000000 0.002228 0.000000 0.999997 0.400000 0.400000 0.400000 -1311.657593 0.000000 2907.009277 0.000000 0.400871 0.000000 -0.916134 0.400000 0.400000 0.400000 +1311.657593 0.000000 2907.009277 0.000000 0.400871 0.000000 -0.916135 0.400000 0.400000 0.400000 1317.051025 0.000000 2907.378174 0.000000 0.767108 0.000000 0.641518 0.400000 0.400000 0.400000 1340.219238 0.000000 2920.502686 0.000000 0.176502 0.000000 0.984300 0.400000 0.400000 0.400000 1324.576294 0.000000 2923.792725 0.000000 0.678377 0.000000 0.734714 0.400000 0.400000 0.400000 @@ -7031,7 +7030,7 @@ 1807.441040 0.000000 3316.555176 0.000000 0.350856 0.000000 -0.936430 0.400000 0.400000 0.400000 1810.223145 0.000000 3372.962891 0.000000 0.470641 0.000000 -0.882325 0.400000 0.400000 0.400000 1815.128174 0.000000 3378.805908 0.000000 0.885751 0.000000 -0.464160 0.400000 0.400000 0.400000 -1808.898560 0.000000 3312.786865 0.000000 0.503414 0.000000 0.864045 0.400000 0.400000 0.400000 +1808.898560 0.000000 3312.786865 0.000000 0.503415 0.000000 0.864045 0.400000 0.400000 0.400000 1809.823730 0.000000 3377.260498 0.000000 0.102180 0.000000 -0.994766 0.400000 0.400000 0.400000 1866.345947 0.000000 3368.349854 0.000000 0.641066 0.000000 -0.767486 0.400000 0.400000 0.400000 1808.287964 0.000000 3370.467285 0.000000 0.559873 0.000000 -0.828578 0.400000 0.400000 0.400000 @@ -7362,7 +7361,7 @@ 753.188049 0.000000 3769.775879 0.000000 0.105446 0.000000 0.994425 0.400000 0.400000 0.400000 740.593140 0.000000 3758.159912 0.000000 0.608100 0.000000 0.793861 0.400000 0.400000 0.400000 786.504822 0.000000 3805.695557 0.000000 0.579730 0.000000 -0.814808 0.400000 0.400000 0.400000 -777.132019 0.000000 3815.161377 0.000000 0.581855 0.000000 -0.813292 0.400000 0.400000 0.400000 +777.132019 0.000000 3815.161377 0.000000 0.581856 0.000000 -0.813292 0.400000 0.400000 0.400000 729.940918 0.000000 3809.166748 0.000000 0.992678 0.000000 -0.120793 0.400000 0.400000 0.400000 728.081482 0.000000 3812.147949 0.000000 0.296147 0.000000 -0.955142 0.400000 0.400000 0.400000 789.536072 0.000000 3747.864746 0.000000 0.199975 0.000000 0.979801 0.400000 0.400000 0.400000 @@ -7692,7 +7691,7 @@ 817.799438 0.000000 3860.780029 0.000000 0.912165 0.000000 0.409823 0.400000 0.400000 0.400000 841.191406 0.000000 3860.261719 0.000000 0.853595 0.000000 0.520938 0.400000 0.400000 0.400000 813.010620 0.000000 3862.826660 0.000000 0.994283 0.000000 0.106779 0.400000 0.400000 0.400000 -796.882751 0.000000 3852.317383 0.000000 0.662170 0.000000 -0.749354 0.400000 0.400000 0.400000 +796.882751 0.000000 3852.317383 0.000000 0.662169 0.000000 -0.749354 0.400000 0.400000 0.400000 804.964539 0.000000 3861.951660 0.000000 0.581198 0.000000 -0.813762 0.400000 0.400000 0.400000 825.772095 0.000000 3859.692383 0.000000 0.709133 0.000000 0.705075 0.400000 0.400000 0.400000 815.291626 0.000000 3835.246582 0.000000 0.989727 0.000000 -0.142970 0.400000 0.400000 0.400000 @@ -7751,7 +7750,7 @@ 865.596008 0.000000 3761.026855 0.000000 0.949835 0.000000 -0.312750 0.400000 0.400000 0.400000 889.751709 0.000000 3778.549561 0.000000 0.844141 0.000000 0.536121 0.400000 0.400000 0.400000 873.094055 0.000000 3776.178467 0.000000 0.907664 0.000000 -0.419699 0.400000 0.400000 0.400000 -864.324646 0.000000 3746.892822 0.000000 0.322411 0.000000 -0.946600 0.400000 0.400000 0.400000 +864.324646 0.000000 3746.892822 0.000000 0.322410 0.000000 -0.946600 0.400000 0.400000 0.400000 894.247437 0.000000 3790.219971 0.000000 0.741838 0.000000 -0.670579 0.400000 0.400000 0.400000 874.790466 0.000000 3754.714355 0.000000 0.999936 0.000000 0.011288 0.400000 0.400000 0.400000 876.700378 0.000000 3785.722900 0.000000 0.943507 0.000000 0.331352 0.400000 0.400000 0.400000 @@ -7847,7 +7846,7 @@ 333.330688 0.000000 4460.732422 0.000000 0.099820 0.000000 -0.995005 0.400000 0.400000 0.400000 323.198242 0.000000 4453.974121 0.000000 0.178387 0.000000 0.983960 0.400000 0.400000 0.400000 288.227905 0.000000 4419.036133 0.000000 0.921908 0.000000 -0.387409 0.400000 0.400000 0.400000 -310.047424 0.000000 4434.044922 0.000000 0.643825 0.000000 0.765173 0.400000 0.400000 0.400000 +310.047424 0.000000 4434.044922 0.000000 0.643824 0.000000 0.765173 0.400000 0.400000 0.400000 326.501099 0.000000 4459.846191 0.000000 0.530683 0.000000 0.847570 0.400000 0.400000 0.400000 305.258484 0.000000 4436.790527 0.000000 0.979632 0.000000 0.200803 0.400000 0.400000 0.400000 361.650665 0.000000 4408.886230 0.000000 0.879629 0.000000 -0.475661 0.400000 0.400000 0.400000 @@ -10868,7 +10867,7 @@ 2276.232178 0.000000 3708.668457 0.000000 0.445856 0.000000 -0.895105 0.400000 0.400000 0.400000 2273.953857 0.000000 3711.136963 0.000000 0.906580 0.000000 -0.422034 0.400000 0.400000 0.400000 2262.994141 0.000000 3715.599365 0.000000 0.668355 0.000000 -0.743842 0.400000 0.400000 0.400000 -1791.533325 0.000000 3802.087646 0.000000 0.749278 0.000000 0.662256 0.400000 0.400000 0.400000 +1791.533325 0.000000 3802.087646 0.000000 0.749278 0.000000 0.662255 0.400000 0.400000 0.400000 1759.725342 0.000000 3751.811035 0.000000 0.870752 0.000000 -0.491723 0.400000 0.400000 0.400000 1730.035156 0.000000 3791.576660 0.000000 0.955584 0.000000 -0.294721 0.400000 0.400000 0.400000 1789.747925 0.000000 3744.033691 0.000000 0.997585 0.000000 0.069461 0.400000 0.400000 0.400000 @@ -13030,7 +13029,7 @@ 2297.349854 0.000000 3779.176270 0.000000 0.415343 0.000000 0.909665 0.400000 0.400000 0.400000 2234.865479 0.000000 3776.423584 0.000000 0.943117 0.000000 0.332461 0.400000 0.400000 0.400000 2303.037109 0.000000 3806.267822 0.000000 0.090351 0.000000 -0.995910 0.400000 0.400000 0.400000 -2285.592773 0.000000 3753.171631 0.000000 0.862250 0.000000 -0.506483 0.400000 0.400000 0.400000 +2285.592773 0.000000 3753.171631 0.000000 0.862250 0.000000 -0.506484 0.400000 0.400000 0.400000 2284.152588 0.000000 3762.685547 0.000000 0.749713 0.000000 -0.661763 0.400000 0.400000 0.400000 2240.945068 0.000000 3781.645020 0.000000 0.619635 0.000000 0.784890 0.400000 0.400000 0.400000 2245.373535 0.000000 3749.495117 0.000000 0.882380 0.000000 0.470538 0.400000 0.400000 0.400000 @@ -13985,7 +13984,7 @@ 2080.720215 0.000000 3991.961914 0.000000 0.280304 0.000000 -0.959911 0.400000 0.400000 0.400000 2049.693604 0.000000 3964.376953 0.000000 0.822667 0.000000 0.568524 0.400000 0.400000 0.400000 2049.973633 0.000000 3994.377197 0.000000 0.972774 0.000000 0.231758 0.400000 0.400000 0.400000 -2054.085449 0.000000 3998.537842 0.000000 0.707110 0.000000 0.707103 0.400000 0.400000 0.400000 +2054.085449 0.000000 3998.537842 0.000000 0.707110 0.000000 0.707104 0.400000 0.400000 0.400000 2030.597046 0.000000 3999.195312 0.000000 0.735102 0.000000 -0.677957 0.400000 0.400000 0.400000 2051.220459 0.000000 3968.807373 0.000000 0.853748 0.000000 0.520686 0.400000 0.400000 0.400000 2061.316895 0.000000 3984.658203 0.000000 0.386668 0.000000 0.922219 0.400000 0.400000 0.400000 @@ -14272,7 +14271,7 @@ 2103.430908 0.000000 3978.924316 0.000000 0.994051 0.000000 0.108916 0.400000 0.400000 0.400000 2154.314697 0.000000 4016.209229 0.000000 0.999129 0.000000 -0.041722 0.400000 0.400000 0.400000 2087.829346 0.000000 3990.623291 0.000000 0.330526 0.000000 0.943797 0.400000 0.400000 0.400000 -2113.741455 0.000000 4012.550049 0.000000 0.780041 0.000000 -0.625729 0.400000 0.400000 0.400000 +2113.741455 0.000000 4012.550049 0.000000 0.780041 0.000000 -0.625728 0.400000 0.400000 0.400000 2153.647949 0.000000 4024.874023 0.000000 0.586010 0.000000 0.810304 0.400000 0.400000 0.400000 2135.493164 0.000000 4001.142578 0.000000 0.571918 0.000000 -0.820311 0.400000 0.400000 0.400000 2108.856201 0.000000 3965.939453 0.000000 0.994029 0.000000 0.109115 0.400000 0.400000 0.400000 @@ -14401,7 +14400,7 @@ 2204.684570 0.000000 3915.938965 0.000000 0.850360 0.000000 0.526201 0.400000 0.400000 0.400000 2192.134766 0.000000 3904.381592 0.000000 0.765037 0.000000 -0.643986 0.400000 0.400000 0.400000 2219.023682 0.000000 3939.266846 0.000000 0.187977 0.000000 0.982174 0.400000 0.400000 0.400000 -2194.302246 0.000000 3941.908447 0.000000 0.762741 0.000000 0.646705 0.400000 0.400000 0.400000 +2194.302246 0.000000 3941.908447 0.000000 0.762741 0.000000 0.646704 0.400000 0.400000 0.400000 2204.594482 0.000000 3931.526611 0.000000 0.271487 0.000000 0.962442 0.400000 0.400000 0.400000 2219.975586 0.000000 3921.158203 0.000000 0.883332 0.000000 -0.468749 0.400000 0.400000 0.400000 2177.296875 0.000000 3924.224854 0.000000 0.555586 0.000000 0.831459 0.400000 0.400000 0.400000 @@ -15173,7 +15172,7 @@ 1472.212769 0.000000 4048.350342 0.000000 0.336744 0.000000 -0.941596 0.400000 0.400000 0.400000 1500.053589 0.000000 4065.126953 0.000000 0.709750 0.000000 -0.704453 0.400000 0.400000 0.400000 1476.588989 0.000000 4048.454834 0.000000 0.357462 0.000000 0.933928 0.400000 0.400000 0.400000 -1477.962402 0.000000 4051.414795 0.000000 0.752515 0.000000 -0.658576 0.400000 0.400000 0.400000 +1477.962402 0.000000 4051.414795 0.000000 0.752515 0.000000 -0.658575 0.400000 0.400000 0.400000 1512.638794 0.000000 4069.562500 0.000000 0.451577 0.000000 -0.892232 0.400000 0.400000 0.400000 1514.943481 0.000000 4064.361084 0.000000 0.063085 0.000000 -0.998008 0.400000 0.400000 0.400000 1569.995361 0.000000 4144.549316 0.000000 0.993572 0.000000 0.113202 0.400000 0.400000 0.400000 @@ -16646,7 +16645,7 @@ 1818.036377 0.000000 4205.005859 0.000000 0.300721 0.000000 0.953712 0.400000 0.400000 0.400000 1809.705811 0.000000 4197.963867 0.000000 0.264392 0.000000 -0.964415 0.400000 0.400000 0.400000 1800.368042 0.000000 4232.601562 0.000000 0.915810 0.000000 0.401611 0.400000 0.400000 0.400000 -1839.767822 0.000000 4187.632324 0.000000 0.395354 0.000000 0.918529 0.400000 0.400000 0.400000 +1839.767822 0.000000 4187.632324 0.000000 0.395353 0.000000 0.918529 0.400000 0.400000 0.400000 1832.173706 0.000000 4192.319336 0.000000 0.494030 0.000000 -0.869445 0.400000 0.400000 0.400000 1868.734131 0.000000 4215.766113 0.000000 0.769413 0.000000 -0.638752 0.400000 0.400000 0.400000 1853.298828 0.000000 4176.700684 0.000000 0.538667 0.000000 -0.842519 0.400000 0.400000 0.400000 @@ -16721,7 +16720,7 @@ 1863.129395 0.000000 4224.323242 0.000000 0.266029 0.000000 -0.963965 0.400000 0.400000 0.400000 1849.913574 0.000000 4245.707031 0.000000 0.974922 0.000000 -0.222549 0.400000 0.400000 0.400000 1855.716919 0.000000 4207.026367 0.000000 0.272328 0.000000 -0.962205 0.400000 0.400000 0.400000 -1851.019165 0.000000 4180.636230 0.000000 0.853028 0.000000 -0.521865 0.400000 0.400000 0.400000 +1851.019165 0.000000 4180.636230 0.000000 0.853028 0.000000 -0.521866 0.400000 0.400000 0.400000 1828.445068 0.000000 4176.964355 0.000000 0.039068 0.000000 0.999237 0.400000 0.400000 0.400000 1860.542847 0.000000 4244.919922 0.000000 0.020737 0.000000 -0.999785 0.400000 0.400000 0.400000 1865.171021 0.000000 4195.109863 0.000000 0.482062 0.000000 -0.876137 0.400000 0.400000 0.400000 @@ -17410,7 +17409,7 @@ 1941.565186 0.000000 4280.718262 0.000000 0.996481 0.000000 0.083823 0.400000 0.400000 0.400000 1892.468140 0.000000 4262.050781 0.000000 0.180093 0.000000 -0.983650 0.400000 0.400000 0.400000 1929.233154 0.000000 4268.149902 0.000000 0.613105 0.000000 -0.790001 0.400000 0.400000 0.400000 -1905.125732 0.000000 4268.919922 0.000000 0.168412 0.000000 0.985717 0.400000 0.400000 0.400000 +1905.125732 0.000000 4268.919922 0.000000 0.168411 0.000000 0.985717 0.400000 0.400000 0.400000 1912.312988 0.000000 4288.862793 0.000000 0.236031 0.000000 -0.971746 0.400000 0.400000 0.400000 1893.789062 0.000000 4285.472168 0.000000 0.227678 0.000000 -0.973737 0.400000 0.400000 0.400000 1925.993042 0.000000 4291.459473 0.000000 0.969221 0.000000 0.246192 0.400000 0.400000 0.400000 @@ -17504,7 +17503,7 @@ 1893.394531 0.000000 4264.801270 0.000000 0.037680 0.000000 0.999290 0.400000 0.400000 0.400000 1922.824951 0.000000 4273.257812 0.000000 0.998244 0.000000 0.059228 0.400000 0.400000 0.400000 1926.494263 0.000000 4294.348145 0.000000 0.863976 0.000000 -0.503533 0.400000 0.400000 0.400000 -1921.232666 0.000000 4250.127930 0.000000 0.982651 0.000000 0.185466 0.400000 0.400000 0.400000 +1921.232666 0.000000 4250.127930 0.000000 0.982651 0.000000 0.185465 0.400000 0.400000 0.400000 1919.342773 0.000000 4262.513672 0.000000 0.456308 0.000000 -0.889822 0.400000 0.400000 0.400000 1897.739746 0.000000 4250.133301 0.000000 0.024274 0.000000 -0.999705 0.400000 0.400000 0.400000 1934.599976 0.000000 4262.481445 0.000000 0.012324 0.000000 0.999924 0.400000 0.400000 0.400000 @@ -19933,7 +19932,7 @@ 2110.019043 0.000000 4301.459961 0.000000 0.285454 0.000000 -0.958393 0.400000 0.400000 0.400000 2159.312012 0.000000 4299.786621 0.000000 0.959600 0.000000 0.281368 0.400000 0.400000 0.400000 2157.278076 0.000000 4265.602539 0.000000 0.585959 0.000000 0.810341 0.400000 0.400000 0.400000 -2120.025879 0.000000 4306.040527 0.000000 0.268410 0.000000 0.963305 0.400000 0.400000 0.400000 +2120.025879 0.000000 4306.040527 0.000000 0.268409 0.000000 0.963305 0.400000 0.400000 0.400000 2116.118896 0.000000 4314.675781 0.000000 0.775503 0.000000 0.631344 0.400000 0.400000 0.400000 2149.306885 0.000000 4259.750000 0.000000 0.264884 0.000000 0.964280 0.400000 0.400000 0.400000 2157.541748 0.000000 4280.718262 0.000000 0.501769 0.000000 0.865001 0.400000 0.400000 0.400000 @@ -20764,7 +20763,7 @@ 2283.663086 0.000000 4281.151367 0.000000 0.927355 0.000000 -0.374182 0.400000 0.400000 0.400000 2249.989502 0.000000 4276.990234 0.000000 0.571319 0.000000 -0.820728 0.400000 0.400000 0.400000 2241.658936 0.000000 4269.948242 0.000000 0.106814 0.000000 -0.994279 0.400000 0.400000 0.400000 -2232.321045 0.000000 4304.585938 0.000000 0.213133 0.000000 -0.977023 0.400000 0.400000 0.400000 +2232.321045 0.000000 4304.585938 0.000000 0.213132 0.000000 -0.977023 0.400000 0.400000 0.400000 2246.864014 0.000000 4310.583984 0.000000 0.976753 0.000000 0.214369 0.400000 0.400000 0.400000 2266.558350 0.000000 4278.871094 0.000000 0.727836 0.000000 0.685751 0.400000 0.400000 0.400000 2276.676758 0.000000 4275.860840 0.000000 0.987155 0.000000 -0.159766 0.400000 0.400000 0.400000 @@ -22561,7 +22560,7 @@ 2070.389404 0.000000 4419.349121 0.000000 0.817008 0.000000 0.576626 0.400000 0.400000 0.400000 2019.116211 0.000000 4420.768066 0.000000 0.093067 0.000000 -0.995660 0.400000 0.400000 0.400000 2023.940796 0.000000 4460.007324 0.000000 0.429771 0.000000 0.902938 0.400000 0.400000 0.400000 -2064.954590 0.000000 4412.059082 0.000000 0.992312 0.000000 0.123758 0.400000 0.400000 0.400000 +2064.954590 0.000000 4412.059082 0.000000 0.992312 0.000000 0.123757 0.400000 0.400000 0.400000 2033.172607 0.000000 4451.932129 0.000000 0.706469 0.000000 -0.707744 0.400000 0.400000 0.400000 2015.865234 0.000000 4426.007812 0.000000 0.909525 0.000000 -0.415649 0.400000 0.400000 0.400000 2076.947754 0.000000 4452.670410 0.000000 0.164016 0.000000 -0.986458 0.400000 0.400000 0.400000 @@ -22763,7 +22762,7 @@ 2144.430908 0.000000 4458.990234 0.000000 0.504147 0.000000 -0.863618 0.400000 0.400000 0.400000 2100.567627 0.000000 4433.582031 0.000000 0.297631 0.000000 -0.954681 0.400000 0.400000 0.400000 2097.404785 0.000000 4447.150391 0.000000 0.968744 0.000000 0.248064 0.400000 0.400000 0.400000 -2088.032715 0.000000 4419.036133 0.000000 0.998708 0.000000 -0.050807 0.400000 0.400000 0.400000 +2088.032715 0.000000 4419.036133 0.000000 0.998708 0.000000 -0.050806 0.400000 0.400000 0.400000 2088.576416 0.000000 4429.484375 0.000000 0.053659 0.000000 -0.998559 0.400000 0.400000 0.400000 2115.915527 0.000000 4416.171387 0.000000 0.807922 0.000000 -0.589290 0.400000 0.400000 0.400000 2114.403564 0.000000 4447.766113 0.000000 0.957289 0.000000 0.289134 0.400000 0.400000 0.400000 @@ -22844,7 +22843,7 @@ 2116.118896 0.000000 4458.644531 0.000000 0.683765 0.000000 -0.729702 0.400000 0.400000 0.400000 2149.306885 0.000000 4403.718750 0.000000 0.749731 0.000000 -0.661743 0.400000 0.400000 0.400000 2157.541748 0.000000 4424.687012 0.000000 0.507418 0.000000 0.861700 0.400000 0.400000 0.400000 -2124.996094 0.000000 4427.339844 0.000000 0.875237 0.000000 0.483694 0.400000 0.400000 0.400000 +2124.996094 0.000000 4427.339844 0.000000 0.875237 0.000000 0.483695 0.400000 0.400000 0.400000 2108.444580 0.000000 4406.019531 0.000000 0.995561 0.000000 0.094113 0.400000 0.400000 0.400000 2145.209717 0.000000 4412.118652 0.000000 0.759522 0.000000 -0.650482 0.400000 0.400000 0.400000 2121.102295 0.000000 4412.888672 0.000000 0.304491 0.000000 -0.952515 0.400000 0.400000 0.400000 @@ -24941,7 +24940,7 @@ 2215.905029 0.000000 4499.804199 0.000000 0.994118 0.000000 -0.108302 0.400000 0.400000 0.400000 2206.294678 0.000000 4511.997070 0.000000 0.990392 0.000000 0.138287 0.400000 0.400000 0.400000 2194.727539 0.000000 4475.871094 0.000000 0.610472 0.000000 0.792037 0.400000 0.400000 0.400000 -2182.011230 0.000000 4517.413086 0.000000 0.511673 0.000000 0.859180 0.400000 0.400000 0.400000 +2182.011230 0.000000 4517.413086 0.000000 0.511674 0.000000 0.859180 0.400000 0.400000 0.400000 2229.533936 0.000000 4496.671387 0.000000 0.999582 0.000000 0.028914 0.400000 0.400000 0.400000 2196.988281 0.000000 4499.324219 0.000000 0.704002 0.000000 0.710198 0.400000 0.400000 0.400000 2180.436768 0.000000 4478.003906 0.000000 0.807265 0.000000 0.590189 0.400000 0.400000 0.400000 @@ -27694,7 +27693,7 @@ 3451.648193 0.000000 2640.724609 0.000000 0.643982 0.000000 0.765040 0.400000 0.400000 0.400000 3440.290283 0.000000 2659.380859 0.000000 0.128838 0.000000 -0.991666 0.400000 0.400000 0.400000 3393.264160 0.000000 2647.540771 0.000000 0.308123 0.000000 0.951347 0.400000 0.400000 0.400000 -3383.892090 0.000000 2619.427002 0.000000 0.468800 0.000000 0.883304 0.400000 0.400000 0.400000 +3383.892090 0.000000 2619.427002 0.000000 0.468800 0.000000 0.883305 0.400000 0.400000 0.400000 3384.435791 0.000000 2629.875000 0.000000 0.914741 0.000000 0.404040 0.400000 0.400000 0.400000 3410.262939 0.000000 2648.156494 0.000000 0.497042 0.000000 -0.867727 0.400000 0.400000 0.400000 3430.367432 0.000000 2609.902100 0.000000 0.586369 0.000000 -0.810044 0.400000 0.400000 0.400000 @@ -32407,7 +32406,7 @@ 2485.853027 0.000000 3619.508545 0.000000 0.263986 0.000000 0.964526 0.400000 0.400000 0.400000 2476.529297 0.000000 3607.447754 0.000000 0.957399 0.000000 0.288767 0.400000 0.400000 0.400000 2460.555176 0.000000 3620.364502 0.000000 0.755391 0.000000 0.655274 0.400000 0.400000 0.400000 -2472.853516 0.000000 3608.133545 0.000000 0.314637 0.000000 0.949212 0.400000 0.400000 0.400000 +2472.853516 0.000000 3608.133545 0.000000 0.314636 0.000000 0.949212 0.400000 0.400000 0.400000 2459.566406 0.000000 3630.536133 0.000000 0.832881 0.000000 0.553452 0.400000 0.400000 0.400000 2478.931152 0.000000 3623.316162 0.000000 0.582520 0.000000 -0.812816 0.400000 0.400000 0.400000 2479.624756 0.000000 3632.439697 0.000000 0.343125 0.000000 -0.939290 0.400000 0.400000 0.400000 @@ -33318,7 +33317,7 @@ 2669.837891 0.000000 3558.853516 0.000000 0.999905 0.000000 0.013751 0.400000 0.400000 0.400000 2671.052490 0.000000 3590.101318 0.000000 0.708339 0.000000 -0.705872 0.400000 0.400000 0.400000 2710.035889 0.000000 3549.670166 0.000000 0.393145 0.000000 -0.919476 0.400000 0.400000 0.400000 -2666.645996 0.000000 3553.448730 0.000000 0.715079 0.000000 -0.699043 0.400000 0.400000 0.400000 +2666.645996 0.000000 3553.448730 0.000000 0.715079 0.000000 -0.699044 0.400000 0.400000 0.400000 2708.070068 0.000000 3527.295410 0.000000 0.943135 0.000000 0.332409 0.400000 0.400000 0.400000 2668.037109 0.000000 3590.103516 0.000000 0.578517 0.000000 0.815670 0.400000 0.400000 0.400000 2666.286865 0.000000 3563.153320 0.000000 0.980378 0.000000 0.197127 0.400000 0.400000 0.400000 @@ -36758,7 +36757,7 @@ 2383.083740 0.000000 3950.023193 0.000000 0.956856 0.000000 0.290563 0.400000 0.400000 0.400000 2406.938965 0.000000 3911.253662 0.000000 0.968068 0.000000 -0.250688 0.400000 0.400000 0.400000 2384.225342 0.000000 3946.342285 0.000000 0.980077 0.000000 0.198618 0.400000 0.400000 0.400000 -2404.459229 0.000000 3931.573975 0.000000 0.936547 0.000000 -0.350542 0.400000 0.400000 0.400000 +2404.459229 0.000000 3931.573975 0.000000 0.936547 0.000000 -0.350541 0.400000 0.400000 0.400000 2444.618652 0.000000 3952.170898 0.000000 0.028152 0.000000 0.999604 0.400000 0.400000 0.400000 2428.834961 0.000000 3924.414307 0.000000 0.921767 0.000000 0.387745 0.400000 0.400000 0.400000 2447.719727 0.000000 3911.760254 0.000000 0.676723 0.000000 -0.736238 0.400000 0.400000 0.400000 @@ -37798,7 +37797,7 @@ 2572.121338 0.000000 3906.654297 0.000000 0.859997 0.000000 0.510300 0.400000 0.400000 0.400000 2569.939697 0.000000 3901.397949 0.000000 0.529317 0.000000 -0.848424 0.400000 0.400000 0.400000 2535.023926 0.000000 3910.538574 0.000000 0.755680 0.000000 -0.654941 0.400000 0.400000 0.400000 -2574.000000 0.000000 3941.381592 0.000000 0.846157 0.000000 0.532933 0.400000 0.400000 0.400000 +2574.000000 0.000000 3941.381592 0.000000 0.846157 0.000000 0.532934 0.400000 0.400000 0.400000 2533.342285 0.000000 3893.463867 0.000000 0.828406 0.000000 0.560129 0.400000 0.400000 0.400000 2559.208252 0.000000 3915.967773 0.000000 0.908051 0.000000 0.418859 0.400000 0.400000 0.400000 2522.364258 0.000000 3910.307861 0.000000 0.998535 0.000000 0.054110 0.400000 0.400000 0.400000 @@ -38605,7 +38604,7 @@ 2635.552002 0.000000 3810.373047 0.000000 0.338985 0.000000 -0.940792 0.400000 0.400000 0.400000 2615.574951 0.000000 3749.788818 0.000000 0.021149 0.000000 -0.999776 0.400000 0.400000 0.400000 2651.019043 0.000000 3810.781250 0.000000 0.872432 0.000000 -0.488735 0.400000 0.400000 0.400000 -2621.602051 0.000000 3754.000488 0.000000 0.631513 0.000000 -0.775366 0.400000 0.400000 0.400000 +2621.602051 0.000000 3754.000488 0.000000 0.631512 0.000000 -0.775366 0.400000 0.400000 0.400000 2621.526611 0.000000 3808.555664 0.000000 0.999958 0.000000 0.009139 0.400000 0.400000 0.400000 2626.592529 0.000000 3780.932129 0.000000 0.251166 0.000000 -0.967944 0.400000 0.400000 0.400000 2662.714844 0.000000 3803.748779 0.000000 0.688263 0.000000 -0.725462 0.400000 0.400000 0.400000 @@ -38771,7 +38770,7 @@ 2712.884277 0.000000 3764.199951 0.000000 0.812431 0.000000 0.583058 0.400000 0.400000 0.400000 2681.102295 0.000000 3804.072754 0.000000 0.970613 0.000000 0.240644 0.400000 0.400000 0.400000 2663.794922 0.000000 3778.148438 0.000000 0.028882 0.000000 -0.999583 0.400000 0.400000 0.400000 -2705.999268 0.000000 3758.637207 0.000000 0.539137 0.000000 0.842218 0.400000 0.400000 0.400000 +2705.999268 0.000000 3758.637207 0.000000 0.539138 0.000000 0.842218 0.400000 0.400000 0.400000 2722.624756 0.000000 3808.231934 0.000000 0.578345 0.000000 -0.815793 0.400000 0.400000 0.400000 2704.382568 0.000000 3798.285156 0.000000 0.629455 0.000000 -0.777037 0.400000 0.400000 0.400000 2714.771729 0.000000 3795.382324 0.000000 0.148120 0.000000 0.988969 0.400000 0.400000 0.400000 @@ -40352,7 +40351,7 @@ 2605.764893 0.000000 3897.132812 0.000000 0.999609 0.000000 -0.027969 0.400000 0.400000 0.400000 2662.433350 0.000000 3902.221680 0.000000 0.405094 0.000000 -0.914275 0.400000 0.400000 0.400000 2653.853760 0.000000 3913.911133 0.000000 0.771548 0.000000 0.636171 0.400000 0.400000 0.400000 -2650.152588 0.000000 3887.647461 0.000000 0.991578 0.000000 -0.129514 0.400000 0.400000 0.400000 +2650.152588 0.000000 3887.647461 0.000000 0.991578 0.000000 -0.129513 0.400000 0.400000 0.400000 2662.543213 0.000000 3957.645020 0.000000 0.925405 0.000000 0.378979 0.400000 0.400000 0.400000 2661.333008 0.000000 3891.833496 0.000000 0.997464 0.000000 0.071176 0.400000 0.400000 0.400000 2660.222412 0.000000 3941.521973 0.000000 0.800420 0.000000 -0.599439 0.400000 0.400000 0.400000 @@ -42146,7 +42145,7 @@ 2991.642822 0.000000 3467.788818 0.000000 0.998679 0.000000 -0.051378 0.400000 0.400000 0.400000 2996.598633 0.000000 3484.032715 0.000000 0.895707 0.000000 -0.444646 0.400000 0.400000 0.400000 2984.048828 0.000000 3472.475342 0.000000 0.097072 0.000000 0.995277 0.400000 0.400000 0.400000 -3010.937744 0.000000 3507.360596 0.000000 0.710052 0.000000 -0.704149 0.400000 0.400000 0.400000 +3010.937744 0.000000 3507.360596 0.000000 0.710052 0.000000 -0.704150 0.400000 0.400000 0.400000 3013.973389 0.000000 3478.342529 0.000000 0.828228 0.000000 -0.560392 0.400000 0.400000 0.400000 3011.174805 0.000000 3463.466797 0.000000 0.105051 0.000000 0.994467 0.400000 0.400000 0.400000 2995.501221 0.000000 3514.188721 0.000000 0.948550 0.000000 -0.316627 0.400000 0.400000 0.400000 @@ -42459,7 +42458,7 @@ 2931.264648 0.000000 3550.363770 0.000000 0.335371 0.000000 0.942086 0.400000 0.400000 0.400000 2942.154053 0.000000 3563.691650 0.000000 0.422219 0.000000 0.906494 0.400000 0.400000 0.400000 2925.035156 0.000000 3579.113037 0.000000 0.970646 0.000000 0.240514 0.400000 0.400000 0.400000 -2951.260254 0.000000 3576.409180 0.000000 0.896568 0.000000 -0.442906 0.400000 0.400000 0.400000 +2951.260254 0.000000 3576.409180 0.000000 0.896568 0.000000 -0.442907 0.400000 0.400000 0.400000 2945.637451 0.000000 3566.828369 0.000000 0.192655 0.000000 -0.981267 0.400000 0.400000 0.400000 2908.482422 0.000000 3535.463379 0.000000 0.536674 0.000000 -0.843790 0.400000 0.400000 0.400000 2904.806641 0.000000 3536.149170 0.000000 0.055266 0.000000 -0.998472 0.400000 0.400000 0.400000 @@ -43636,7 +43635,7 @@ 2892.491455 0.000000 3600.104492 0.000000 0.278516 0.000000 -0.960432 0.400000 0.400000 0.400000 2885.944092 0.000000 3665.095947 0.000000 0.075611 0.000000 0.997137 0.400000 0.400000 0.400000 2925.049561 0.000000 3668.904297 0.000000 0.911342 0.000000 0.411650 0.400000 0.400000 0.400000 -2898.886963 0.000000 3618.814453 0.000000 0.509269 0.000000 -0.860607 0.400000 0.400000 0.400000 +2898.886963 0.000000 3618.814453 0.000000 0.509270 0.000000 -0.860607 0.400000 0.400000 0.400000 2898.183594 0.000000 3650.248047 0.000000 0.764123 0.000000 0.645070 0.400000 0.400000 0.400000 2880.105957 0.000000 3602.924072 0.000000 0.202065 0.000000 0.979372 0.400000 0.400000 0.400000 2914.916992 0.000000 3662.145996 0.000000 0.834296 0.000000 -0.551317 0.400000 0.400000 0.400000 @@ -44106,7 +44105,7 @@ 2913.879883 0.000000 3706.439697 0.000000 0.847536 0.000000 0.530739 0.400000 0.400000 0.400000 2907.120850 0.000000 3719.590088 0.000000 0.999486 0.000000 0.032057 0.400000 0.400000 0.400000 2901.325928 0.000000 3722.464600 0.000000 0.839799 0.000000 -0.542897 0.400000 0.400000 0.400000 -2895.099121 0.000000 3741.927490 0.000000 0.735599 0.000000 -0.677418 0.400000 0.400000 0.400000 +2895.099121 0.000000 3741.927490 0.000000 0.735599 0.000000 -0.677417 0.400000 0.400000 0.400000 2887.029053 0.000000 3734.070068 0.000000 0.984363 0.000000 0.176149 0.400000 0.400000 0.400000 2888.170654 0.000000 3730.389160 0.000000 0.602080 0.000000 -0.798436 0.400000 0.400000 0.400000 2908.404541 0.000000 3715.620850 0.000000 0.099169 0.000000 -0.995071 0.400000 0.400000 0.400000 @@ -46590,7 +46589,7 @@ 3169.849854 0.000000 3665.776367 0.000000 0.480491 0.000000 0.877000 0.400000 0.400000 0.400000 3178.680664 0.000000 3634.560791 0.000000 0.873435 0.000000 -0.486940 0.400000 0.400000 0.400000 3222.093018 0.000000 3620.951904 0.000000 0.910786 0.000000 0.412879 0.400000 0.400000 0.400000 -3208.326904 0.000000 3620.997070 0.000000 0.192692 0.000000 -0.981259 0.400000 0.400000 0.400000 +3208.326904 0.000000 3620.997070 0.000000 0.192691 0.000000 -0.981259 0.400000 0.400000 0.400000 3206.826172 0.000000 3614.966553 0.000000 0.433703 0.000000 0.901056 0.400000 0.400000 0.400000 3200.480225 0.000000 3651.311768 0.000000 0.735763 0.000000 -0.677239 0.400000 0.400000 0.400000 3226.382324 0.000000 3630.379395 0.000000 0.762805 0.000000 -0.646628 0.400000 0.400000 0.400000 @@ -46605,7 +46604,7 @@ 3202.219727 0.000000 3618.508301 0.000000 0.934597 0.000000 -0.355708 0.400000 0.400000 0.400000 3230.645264 0.000000 3667.059326 0.000000 0.380829 0.000000 0.924646 0.400000 0.400000 0.400000 3185.899170 0.000000 3666.302734 0.000000 0.767326 0.000000 -0.641257 0.400000 0.400000 0.400000 -3228.093994 0.000000 3602.642090 0.000000 0.658405 0.000000 -0.752664 0.400000 0.400000 0.400000 +3228.093994 0.000000 3602.642090 0.000000 0.658404 0.000000 -0.752664 0.400000 0.400000 0.400000 3224.426758 0.000000 3625.713135 0.000000 0.750863 0.000000 0.660458 0.400000 0.400000 0.400000 3218.961670 0.000000 3607.567627 0.000000 0.630612 0.000000 0.776098 0.400000 0.400000 0.400000 3199.355469 0.000000 3648.721436 0.000000 0.984716 0.000000 0.174170 0.400000 0.400000 0.400000 @@ -47490,7 +47489,7 @@ 3377.293701 0.000000 3625.028076 0.000000 0.498231 0.000000 0.867044 0.400000 0.400000 0.400000 3335.018066 0.000000 3619.293457 0.000000 0.140122 0.000000 0.990134 0.400000 0.400000 0.400000 3367.248291 0.000000 3649.289062 0.000000 0.776931 0.000000 0.629586 0.400000 0.400000 0.400000 -3374.211182 0.000000 3629.773438 0.000000 0.637281 0.000000 0.770632 0.400000 0.400000 0.400000 +3374.211182 0.000000 3629.773438 0.000000 0.637280 0.000000 0.770632 0.400000 0.400000 0.400000 3317.814453 0.000000 3619.832275 0.000000 0.485909 0.000000 -0.874010 0.400000 0.400000 0.400000 3382.132812 0.000000 3626.574951 0.000000 0.283814 0.000000 0.958879 0.400000 0.400000 0.400000 3311.775879 0.000000 3613.268066 0.000000 0.948862 0.000000 -0.315691 0.400000 0.400000 0.400000 @@ -49319,7 +49318,7 @@ 3371.540283 0.000000 3792.523926 0.000000 0.664689 0.000000 0.747121 0.400000 0.400000 0.400000 3343.339844 0.000000 3792.690186 0.000000 0.933604 0.000000 0.358305 0.400000 0.400000 0.400000 3339.147705 0.000000 3757.217041 0.000000 0.262022 0.000000 0.965062 0.400000 0.400000 0.400000 -3332.103760 0.000000 3783.915527 0.000000 0.961424 0.000000 -0.275072 0.400000 0.400000 0.400000 +3332.103760 0.000000 3783.915527 0.000000 0.961423 0.000000 -0.275072 0.400000 0.400000 0.400000 3360.687500 0.000000 3777.667480 0.000000 0.963281 0.000000 -0.268496 0.400000 0.400000 0.400000 3331.059570 0.000000 3787.029297 0.000000 0.575985 0.000000 -0.817460 0.400000 0.400000 0.400000 3331.720947 0.000000 3779.229492 0.000000 0.924097 0.000000 -0.382158 0.400000 0.400000 0.400000 @@ -51426,7 +51425,7 @@ 2557.008789 0.000000 4096.833984 0.000000 0.973230 0.000000 -0.229835 0.400000 0.400000 0.400000 2573.591797 0.000000 4097.080078 0.000000 0.841283 0.000000 0.540595 0.400000 0.400000 0.400000 2526.538818 0.000000 4055.246338 0.000000 0.887564 0.000000 0.460684 0.400000 0.400000 0.400000 -2533.090088 0.000000 4044.945801 0.000000 0.512314 0.000000 -0.858798 0.400000 0.400000 0.400000 +2533.090088 0.000000 4044.945801 0.000000 0.512315 0.000000 -0.858798 0.400000 0.400000 0.400000 2562.049561 0.000000 4057.674072 0.000000 0.370185 0.000000 -0.928958 0.400000 0.400000 0.400000 2586.267822 0.000000 4088.193604 0.000000 0.391950 0.000000 0.919986 0.400000 0.400000 0.400000 2519.782471 0.000000 4062.607666 0.000000 0.990004 0.000000 0.141041 0.400000 0.400000 0.400000 @@ -51488,7 +51487,7 @@ 2560.201904 0.000000 4097.724121 0.000000 0.208801 0.000000 0.977958 0.400000 0.400000 0.400000 2567.272461 0.000000 4046.560303 0.000000 0.932528 0.000000 -0.361098 0.400000 0.400000 0.400000 2582.715576 0.000000 4098.965820 0.000000 0.335920 0.000000 0.941891 0.400000 0.400000 0.400000 -2575.780273 0.000000 4095.183594 0.000000 0.725747 0.000000 -0.687962 0.400000 0.400000 0.400000 +2575.780273 0.000000 4095.183594 0.000000 0.725747 0.000000 -0.687961 0.400000 0.400000 0.400000 2536.092529 0.000000 4037.044678 0.000000 0.988280 0.000000 0.152651 0.400000 0.400000 0.400000 2576.497070 0.000000 4057.619385 0.000000 0.526771 0.000000 -0.850007 0.400000 0.400000 0.400000 2519.961182 0.000000 4077.559326 0.000000 0.790175 0.000000 -0.612881 0.400000 0.400000 0.400000 @@ -52136,7 +52135,7 @@ 2340.972656 0.000000 4211.386719 0.000000 0.764477 0.000000 0.644651 0.400000 0.400000 0.400000 2361.186279 0.000000 4196.165527 0.000000 0.820242 0.000000 0.572016 0.400000 0.400000 0.400000 2344.266113 0.000000 4216.878418 0.000000 0.733701 0.000000 0.679472 0.400000 0.400000 0.400000 -2350.340820 0.000000 4213.832031 0.000000 0.460054 0.000000 -0.887891 0.400000 0.400000 0.400000 +2350.340820 0.000000 4213.832031 0.000000 0.460055 0.000000 -0.887891 0.400000 0.400000 0.400000 2370.333008 0.000000 4237.602051 0.000000 0.666379 0.000000 -0.745613 0.400000 0.400000 0.400000 2357.946289 0.000000 4219.475098 0.000000 0.519384 0.000000 -0.854541 0.400000 0.400000 0.400000 2366.500244 0.000000 4214.797852 0.000000 0.072064 0.000000 0.997400 0.400000 0.400000 0.400000 @@ -52323,7 +52322,7 @@ 2399.119629 0.000000 4195.168457 0.000000 0.603974 0.000000 -0.797004 0.400000 0.400000 0.400000 2379.432617 0.000000 4181.699707 0.000000 0.409999 0.000000 -0.912086 0.400000 0.400000 0.400000 2375.877441 0.000000 4189.143066 0.000000 0.371182 0.000000 0.928560 0.400000 0.400000 0.400000 -2398.651123 0.000000 4179.178711 0.000000 0.773579 0.000000 0.633700 0.400000 0.400000 0.400000 +2398.651123 0.000000 4179.178711 0.000000 0.773579 0.000000 0.633699 0.400000 0.400000 0.400000 2379.662354 0.000000 4244.060547 0.000000 0.854216 0.000000 -0.519919 0.400000 0.400000 0.400000 2384.835938 0.000000 4176.599609 0.000000 0.119643 0.000000 -0.992817 0.400000 0.400000 0.400000 2385.761230 0.000000 4241.073242 0.000000 0.990008 0.000000 0.141014 0.400000 0.400000 0.400000 @@ -53840,7 +53839,7 @@ 2720.128174 0.000000 4112.030762 0.000000 0.609125 0.000000 -0.793075 0.400000 0.400000 0.400000 2735.599121 0.000000 4144.013672 0.000000 0.921463 0.000000 -0.388467 0.400000 0.400000 0.400000 2731.629150 0.000000 4112.773438 0.000000 0.800650 0.000000 0.599133 0.400000 0.400000 0.400000 -2717.376465 0.000000 4107.502930 0.000000 0.588128 0.000000 -0.808767 0.400000 0.400000 0.400000 +2717.376465 0.000000 4107.502930 0.000000 0.588129 0.000000 -0.808767 0.400000 0.400000 0.400000 2697.961670 0.000000 4160.393066 0.000000 0.780221 0.000000 -0.625504 0.400000 0.400000 0.400000 2714.998291 0.000000 4146.636719 0.000000 0.888441 0.000000 -0.458990 0.400000 0.400000 0.400000 2701.387207 0.000000 4163.826660 0.000000 0.605796 0.000000 -0.795620 0.400000 0.400000 0.400000 @@ -54193,7 +54192,7 @@ 2779.000488 0.000000 4126.368164 0.000000 0.876127 0.000000 0.482080 0.400000 0.400000 0.400000 2780.967529 0.000000 4116.649414 0.000000 0.135022 0.000000 0.990843 0.400000 0.400000 0.400000 2749.885010 0.000000 4136.448730 0.000000 0.941154 0.000000 -0.337978 0.400000 0.400000 0.400000 -2786.801758 0.000000 4132.214355 0.000000 0.586966 0.000000 -0.809611 0.400000 0.400000 0.400000 +2786.801758 0.000000 4132.214355 0.000000 0.586967 0.000000 -0.809611 0.400000 0.400000 0.400000 2770.665039 0.000000 4115.949219 0.000000 0.988035 0.000000 -0.154232 0.400000 0.400000 0.400000 2764.148926 0.000000 4123.306641 0.000000 0.554410 0.000000 0.832244 0.400000 0.400000 0.400000 2756.374268 0.000000 4118.082031 0.000000 0.854388 0.000000 -0.519635 0.400000 0.400000 0.400000 @@ -55033,7 +55032,7 @@ 2425.511719 0.000000 4336.540527 0.000000 0.930262 0.000000 -0.366897 0.400000 0.400000 0.400000 2398.382568 0.000000 4382.588379 0.000000 0.160450 0.000000 -0.987044 0.400000 0.400000 0.400000 2407.632568 0.000000 4352.283203 0.000000 0.634563 0.000000 -0.772871 0.400000 0.400000 0.400000 -2444.230957 0.000000 4379.208984 0.000000 0.980582 0.000000 0.196109 0.400000 0.400000 0.400000 +2444.230957 0.000000 4379.208984 0.000000 0.980582 0.000000 0.196108 0.400000 0.400000 0.400000 2404.442139 0.000000 4353.341309 0.000000 0.717744 0.000000 -0.696307 0.400000 0.400000 0.400000 2390.568848 0.000000 4349.512695 0.000000 0.426289 0.000000 -0.904587 0.400000 0.400000 0.400000 2406.061523 0.000000 4346.341309 0.000000 0.945154 0.000000 -0.326625 0.400000 0.400000 0.400000 @@ -56494,7 +56493,7 @@ 3515.156250 0.000000 3493.290771 0.000000 0.783062 0.000000 -0.621944 0.400000 0.400000 0.400000 3485.939453 0.000000 3510.940430 0.000000 0.509969 0.000000 0.860193 0.400000 0.400000 0.400000 3502.022461 0.000000 3521.551270 0.000000 0.866165 0.000000 0.499757 0.400000 0.400000 0.400000 -3494.978271 0.000000 3459.419434 0.000000 0.822805 0.000000 0.568324 0.400000 0.400000 0.400000 +3494.978271 0.000000 3459.419434 0.000000 0.822805 0.000000 0.568325 0.400000 0.400000 0.400000 3505.535645 0.000000 3492.457520 0.000000 0.862020 0.000000 0.506873 0.400000 0.400000 0.400000 3465.915039 0.000000 3474.598633 0.000000 0.450679 0.000000 -0.892686 0.400000 0.400000 0.400000 3510.233154 0.000000 3483.552002 0.000000 0.910179 0.000000 -0.414215 0.400000 0.400000 0.400000 @@ -58313,7 +58312,7 @@ 3521.343506 0.000000 3646.342041 0.000000 0.765224 0.000000 -0.643764 0.400000 0.400000 0.400000 3470.451660 0.000000 3629.668945 0.000000 0.965865 0.000000 0.259045 0.400000 0.400000 0.400000 3471.699463 0.000000 3652.142090 0.000000 0.895709 0.000000 0.444642 0.400000 0.400000 0.400000 -3510.061768 0.000000 3620.951904 0.000000 0.526503 0.000000 0.850173 0.400000 0.400000 0.400000 +3510.061768 0.000000 3620.951904 0.000000 0.526504 0.000000 0.850173 0.400000 0.400000 0.400000 3517.040039 0.000000 3646.199951 0.000000 0.208372 0.000000 0.978050 0.400000 0.400000 0.400000 3504.350342 0.000000 3667.269043 0.000000 0.997808 0.000000 0.066169 0.400000 0.400000 0.400000 3510.322510 0.000000 3646.489014 0.000000 0.800016 0.000000 0.599979 0.400000 0.400000 0.400000 @@ -59936,7 +59935,7 @@ 3736.480469 0.000000 3724.861328 0.000000 0.918352 0.000000 0.395765 0.400000 0.400000 0.400000 3717.905273 0.000000 3705.128418 0.000000 0.111736 0.000000 -0.993738 0.400000 0.400000 0.400000 3729.956543 0.000000 3718.124268 0.000000 0.966716 0.000000 0.255852 0.400000 0.400000 0.400000 -3708.383545 0.000000 3678.004639 0.000000 0.700008 0.000000 -0.714135 0.400000 0.400000 0.400000 +3708.383545 0.000000 3678.004639 0.000000 0.700009 0.000000 -0.714135 0.400000 0.400000 0.400000 3702.616211 0.000000 3707.485840 0.000000 0.986019 0.000000 0.166631 0.400000 0.400000 0.400000 3741.368408 0.000000 3682.754639 0.000000 0.930886 0.000000 -0.365310 0.400000 0.400000 0.400000 3673.063965 0.000000 3734.819092 0.000000 0.864380 0.000000 -0.502839 0.400000 0.400000 0.400000 @@ -60338,7 +60337,7 @@ 3752.042969 0.000000 3537.891846 0.000000 0.838408 0.000000 0.545042 0.400000 0.400000 0.400000 3788.019775 0.000000 3574.243896 0.000000 0.744552 0.000000 -0.667564 0.400000 0.400000 0.400000 3791.069092 0.000000 3563.671631 0.000000 0.189428 0.000000 0.981894 0.400000 0.400000 0.400000 -3788.068115 0.000000 3564.699707 0.000000 0.982083 0.000000 -0.188448 0.400000 0.400000 0.400000 +3788.068115 0.000000 3564.699707 0.000000 0.982083 0.000000 -0.188447 0.400000 0.400000 0.400000 3785.789795 0.000000 3567.168213 0.000000 0.567731 0.000000 -0.823214 0.400000 0.400000 0.400000 3839.172852 0.000000 3593.663330 0.000000 0.668656 0.000000 -0.743572 0.400000 0.400000 0.400000 3860.504883 0.000000 3556.017090 0.000000 0.992444 0.000000 0.122701 0.400000 0.400000 0.400000 @@ -60840,7 +60839,7 @@ 3995.799316 0.000000 3742.923340 0.000000 0.986205 0.000000 -0.165531 0.400000 0.400000 0.400000 4013.242432 0.000000 3741.181396 0.000000 0.491184 0.000000 -0.871056 0.400000 0.400000 0.400000 4005.967773 0.000000 3737.504395 0.000000 0.818454 0.000000 -0.574572 0.400000 0.400000 0.400000 -4014.178467 0.000000 3699.505127 0.000000 0.279303 0.000000 -0.960203 0.400000 0.400000 0.400000 +4014.178467 0.000000 3699.505127 0.000000 0.279302 0.000000 -0.960203 0.400000 0.400000 0.400000 4008.743652 0.000000 3692.215576 0.000000 0.909636 0.000000 0.415406 0.400000 0.400000 0.400000 4020.736816 0.000000 3732.826660 0.000000 0.623190 0.000000 -0.782071 0.400000 0.400000 0.400000 4018.484131 0.000000 3736.247559 0.000000 0.041051 0.000000 -0.999157 0.400000 0.400000 0.400000 @@ -61656,7 +61655,7 @@ 3472.674805 0.000000 3831.630615 0.000000 0.210804 0.000000 0.977528 0.400000 0.400000 0.400000 3459.388428 0.000000 3829.868164 0.000000 0.908918 0.000000 -0.416975 0.400000 0.400000 0.400000 3480.620850 0.000000 3855.974854 0.000000 0.376206 0.000000 -0.926536 0.400000 0.400000 0.400000 -3515.156250 0.000000 3853.212646 0.000000 0.708136 0.000000 -0.706076 0.400000 0.400000 0.400000 +3515.156250 0.000000 3853.212646 0.000000 0.708136 0.000000 -0.706077 0.400000 0.400000 0.400000 3502.022461 0.000000 3881.473145 0.000000 0.939732 0.000000 0.341913 0.400000 0.400000 0.400000 3505.535645 0.000000 3852.379395 0.000000 0.852819 0.000000 -0.522207 0.400000 0.400000 0.400000 3458.959961 0.000000 3844.893311 0.000000 0.349638 0.000000 0.936885 0.400000 0.400000 0.400000 @@ -62075,7 +62074,7 @@ 3532.716309 0.000000 3819.428467 0.000000 0.890736 0.000000 0.454521 0.400000 0.400000 0.400000 3591.585938 0.000000 3876.891357 0.000000 0.085472 0.000000 -0.996341 0.400000 0.400000 0.400000 3560.822754 0.000000 3862.336182 0.000000 0.688115 0.000000 -0.725602 0.400000 0.400000 0.400000 -3571.412354 0.000000 3864.879639 0.000000 0.635553 0.000000 0.772058 0.400000 0.400000 0.400000 +3571.412354 0.000000 3864.879639 0.000000 0.635552 0.000000 0.772058 0.400000 0.400000 0.400000 3598.359131 0.000000 3836.088867 0.000000 0.059268 0.000000 0.998242 0.400000 0.400000 0.400000 3595.808350 0.000000 3829.171631 0.000000 0.976479 0.000000 0.215611 0.400000 0.400000 0.400000 3582.201660 0.000000 3849.571289 0.000000 0.895498 0.000000 -0.445065 0.400000 0.400000 0.400000 @@ -62758,7 +62757,7 @@ 3510.814209 0.000000 3893.627686 0.000000 0.065079 0.000000 0.997880 0.400000 0.400000 0.400000 3456.222656 0.000000 3887.325195 0.000000 0.852668 0.000000 0.522453 0.400000 0.400000 0.400000 3494.978271 0.000000 3891.325684 0.000000 0.566015 0.000000 0.824395 0.400000 0.400000 0.400000 -3493.884521 0.000000 3919.970215 0.000000 0.681042 0.000000 -0.732245 0.400000 0.400000 0.400000 +3493.884521 0.000000 3919.970215 0.000000 0.681041 0.000000 -0.732245 0.400000 0.400000 0.400000 3504.798340 0.000000 3908.168701 0.000000 0.607038 0.000000 -0.794673 0.400000 0.400000 0.400000 3497.913330 0.000000 3902.605957 0.000000 0.148591 0.000000 -0.988899 0.400000 0.400000 0.400000 3495.222900 0.000000 3896.029053 0.000000 0.598355 0.000000 -0.801231 0.400000 0.400000 0.400000 @@ -63931,7 +63930,7 @@ 3985.986816 0.000000 3821.138184 0.000000 0.082486 0.000000 0.996592 0.400000 0.400000 0.400000 4018.578857 0.000000 3843.413330 0.000000 0.320815 0.000000 0.947142 0.400000 0.400000 0.400000 3988.153564 0.000000 3856.495117 0.000000 0.328890 0.000000 -0.944368 0.400000 0.400000 0.400000 -3965.601318 0.000000 3842.540039 0.000000 0.286036 0.000000 -0.958219 0.400000 0.400000 0.400000 +3965.601318 0.000000 3842.540039 0.000000 0.286035 0.000000 -0.958219 0.400000 0.400000 0.400000 4025.162354 0.000000 3851.160645 0.000000 0.984316 0.000000 0.176413 0.400000 0.400000 0.400000 3962.677979 0.000000 3848.407959 0.000000 0.814308 0.000000 0.580433 0.400000 0.400000 0.400000 3981.930420 0.000000 3839.336426 0.000000 0.935332 0.000000 -0.353772 0.400000 0.400000 0.400000 @@ -64302,7 +64301,7 @@ 4020.308594 0.000000 3956.982666 0.000000 0.403479 0.000000 -0.914989 0.400000 0.400000 0.400000 4024.936523 0.000000 3907.172119 0.000000 0.720564 0.000000 -0.693388 0.400000 0.400000 0.400000 4022.463867 0.000000 3892.280029 0.000000 0.785566 0.000000 0.618778 0.400000 0.400000 0.400000 -3996.315674 0.000000 3904.486084 0.000000 0.254170 0.000000 -0.967160 0.400000 0.400000 0.400000 +3996.315674 0.000000 3904.486084 0.000000 0.254169 0.000000 -0.967160 0.400000 0.400000 0.400000 3984.864258 0.000000 3957.704102 0.000000 0.932964 0.000000 -0.359970 0.400000 0.400000 0.400000 3991.869385 0.000000 3953.192383 0.000000 0.624623 0.000000 -0.780926 0.400000 0.400000 0.400000 3966.306152 0.000000 3899.725830 0.000000 0.328095 0.000000 0.944645 0.400000 0.400000 0.400000 @@ -65910,7 +65909,7 @@ 4268.856934 0.000000 3632.792969 0.000000 0.426723 0.000000 0.904382 0.400000 0.400000 0.400000 4306.612305 0.000000 3656.084229 0.000000 0.999742 0.000000 0.022695 0.400000 0.400000 0.400000 4317.638672 0.000000 3644.383545 0.000000 0.867991 0.000000 -0.496580 0.400000 0.400000 0.400000 -4294.444336 0.000000 3661.725586 0.000000 0.640512 0.000000 -0.767949 0.400000 0.400000 0.400000 +4294.444336 0.000000 3661.725586 0.000000 0.640511 0.000000 -0.767949 0.400000 0.400000 0.400000 4310.863770 0.000000 3648.447998 0.000000 0.520713 0.000000 -0.853732 0.400000 0.400000 0.400000 4297.647949 0.000000 3669.832031 0.000000 0.432210 0.000000 0.901773 0.400000 0.400000 0.400000 4298.753418 0.000000 3604.760986 0.000000 0.734563 0.000000 0.678540 0.400000 0.400000 0.400000 @@ -66329,7 +66328,7 @@ 4297.751953 0.000000 3685.444824 0.000000 0.998828 0.000000 -0.048406 0.400000 0.400000 0.400000 4287.020996 0.000000 3700.014648 0.000000 0.977638 0.000000 0.210294 0.400000 0.400000 0.400000 4250.176758 0.000000 3694.354736 0.000000 0.251020 0.000000 0.967982 0.400000 0.400000 0.400000 -4264.828613 0.000000 3716.946777 0.000000 0.463166 0.000000 0.886271 0.400000 0.400000 0.400000 +4264.828613 0.000000 3716.946777 0.000000 0.463167 0.000000 0.886271 0.400000 0.400000 0.400000 4312.417969 0.000000 3724.861328 0.000000 0.400500 0.000000 0.916297 0.400000 0.400000 0.400000 4308.416016 0.000000 3688.957031 0.000000 0.681741 0.000000 0.731594 0.400000 0.400000 0.400000 4277.002441 0.000000 3702.523438 0.000000 0.997644 0.000000 0.068611 0.400000 0.400000 0.400000 @@ -66804,7 +66803,7 @@ 4507.359375 0.000000 3547.315186 0.000000 0.978180 0.000000 0.207760 0.400000 0.400000 0.400000 4511.786133 0.000000 3554.929443 0.000000 0.938573 0.000000 -0.345080 0.400000 0.400000 0.400000 4470.856934 0.000000 3590.101318 0.000000 0.962258 0.000000 0.272137 0.400000 0.400000 0.400000 -4509.840332 0.000000 3549.670166 0.000000 0.962789 0.000000 -0.270255 0.400000 0.400000 0.400000 +4509.840332 0.000000 3549.670166 0.000000 0.962789 0.000000 -0.270254 0.400000 0.400000 0.400000 4513.285156 0.000000 3544.712158 0.000000 0.352884 0.000000 -0.935667 0.400000 0.400000 0.400000 4516.491211 0.000000 3543.699219 0.000000 0.999927 0.000000 0.012045 0.400000 0.400000 0.400000 4486.155762 0.000000 3590.760010 0.000000 0.365594 0.000000 -0.930774 0.400000 0.400000 0.400000 @@ -67810,7 +67809,7 @@ 4428.418945 0.000000 3701.213135 0.000000 0.521082 0.000000 -0.853506 0.400000 0.400000 0.400000 4455.809570 0.000000 3713.123779 0.000000 0.357883 0.000000 -0.933766 0.400000 0.400000 0.400000 4432.872070 0.000000 3729.020508 0.000000 0.154439 0.000000 -0.988002 0.400000 0.400000 0.400000 -4462.265137 0.000000 3692.120117 0.000000 0.484253 0.000000 -0.874928 0.400000 0.400000 0.400000 +4462.265137 0.000000 3692.120117 0.000000 0.484254 0.000000 -0.874928 0.400000 0.400000 0.400000 4459.714844 0.000000 3685.202881 0.000000 0.427093 0.000000 0.904208 0.400000 0.400000 0.400000 4458.337402 0.000000 3688.909424 0.000000 0.707941 0.000000 -0.706272 0.400000 0.400000 0.400000 4463.411621 0.000000 3712.107178 0.000000 0.704817 0.000000 -0.709390 0.400000 0.400000 0.400000 @@ -70570,7 +70569,7 @@ 4270.638672 0.000000 3860.475830 0.000000 0.982209 0.000000 -0.187789 0.400000 0.400000 0.400000 4296.106445 0.000000 3875.491455 0.000000 0.929986 0.000000 0.367594 0.400000 0.400000 0.400000 4301.194824 0.000000 3875.058594 0.000000 0.431165 0.000000 -0.902273 0.400000 0.400000 0.400000 -4270.658203 0.000000 3830.547852 0.000000 0.713933 0.000000 0.700213 0.400000 0.400000 0.400000 +4270.658203 0.000000 3830.547852 0.000000 0.713933 0.000000 0.700214 0.400000 0.400000 0.400000 4274.638184 0.000000 3876.254883 0.000000 0.844255 0.000000 0.535941 0.400000 0.400000 0.400000 4317.151367 0.000000 3866.330078 0.000000 0.823630 0.000000 0.567128 0.400000 0.400000 0.400000 4295.861816 0.000000 3879.713623 0.000000 0.798076 0.000000 -0.602557 0.400000 0.400000 0.400000 @@ -70764,7 +70763,7 @@ 4042.586914 0.000000 3922.498291 0.000000 0.716879 0.000000 -0.697197 0.400000 0.400000 0.400000 4047.636963 0.000000 3940.079590 0.000000 0.240658 0.000000 -0.970610 0.400000 0.400000 0.400000 4051.060303 0.000000 3898.732666 0.000000 0.306214 0.000000 0.951963 0.400000 0.400000 0.400000 -4033.773926 0.000000 3942.167725 0.000000 0.691079 0.000000 -0.722779 0.400000 0.400000 0.400000 +4033.773926 0.000000 3942.167725 0.000000 0.691080 0.000000 -0.722779 0.400000 0.400000 0.400000 4053.160156 0.000000 3904.879395 0.000000 0.799086 0.000000 -0.601217 0.400000 0.400000 0.400000 4063.411621 0.000000 3926.212891 0.000000 0.887555 0.000000 0.460702 0.400000 0.400000 0.400000 4072.037842 0.000000 3953.755127 0.000000 0.524024 0.000000 -0.851704 0.400000 0.400000 0.400000 @@ -71318,7 +71317,7 @@ 4161.988281 0.000000 3959.631836 0.000000 0.192031 0.000000 -0.981389 0.400000 0.400000 0.400000 4106.324707 0.000000 4000.426025 0.000000 0.952798 0.000000 -0.303604 0.400000 0.400000 0.400000 4172.058594 0.000000 4013.506348 0.000000 0.999481 0.000000 -0.032216 0.400000 0.400000 0.400000 -4154.511719 0.000000 4014.760498 0.000000 0.825360 0.000000 -0.564606 0.400000 0.400000 0.400000 +4154.511719 0.000000 4014.760498 0.000000 0.825360 0.000000 -0.564607 0.400000 0.400000 0.400000 4169.908203 0.000000 3971.013184 0.000000 0.338726 0.000000 -0.940885 0.400000 0.400000 0.400000 4163.894043 0.000000 4003.301270 0.000000 0.999935 0.000000 0.011399 0.400000 0.400000 0.400000 4140.202148 0.000000 3961.172363 0.000000 0.717181 0.000000 -0.696887 0.400000 0.400000 0.400000 @@ -71481,7 +71480,7 @@ 4217.489746 0.000000 3934.721924 0.000000 0.989406 0.000000 -0.145176 0.400000 0.400000 0.400000 4246.631836 0.000000 3894.922119 0.000000 0.889525 0.000000 0.456886 0.400000 0.400000 0.400000 4206.291504 0.000000 3900.536133 0.000000 0.370467 0.000000 -0.928846 0.400000 0.400000 0.400000 -4239.118164 0.000000 3896.373779 0.000000 0.158335 0.000000 -0.987386 0.400000 0.400000 0.400000 +4239.118164 0.000000 3896.373779 0.000000 0.158334 0.000000 -0.987386 0.400000 0.400000 0.400000 4194.230957 0.000000 3913.054932 0.000000 0.524544 0.000000 -0.851383 0.400000 0.400000 0.400000 4213.510742 0.000000 3939.979980 0.000000 0.946574 0.000000 0.322486 0.400000 0.400000 0.400000 4241.222168 0.000000 3889.370605 0.000000 0.919215 0.000000 0.393755 0.400000 0.400000 0.400000 @@ -71810,7 +71809,7 @@ 4347.977051 0.000000 3763.384766 0.000000 0.412193 0.000000 0.911096 0.400000 0.400000 0.400000 4333.097168 0.000000 3794.549805 0.000000 0.397791 0.000000 0.917476 0.400000 0.400000 0.400000 4351.783691 0.000000 3802.149902 0.000000 0.011302 0.000000 0.999936 0.400000 0.400000 0.400000 -4381.064941 0.000000 3755.859619 0.000000 0.986841 0.000000 -0.161692 0.400000 0.400000 0.400000 +4381.064941 0.000000 3755.859619 0.000000 0.986841 0.000000 -0.161691 0.400000 0.400000 0.400000 4389.299316 0.000000 3776.827637 0.000000 0.537648 0.000000 -0.843169 0.400000 0.400000 0.400000 4340.202637 0.000000 3758.159912 0.000000 0.826102 0.000000 0.563520 0.400000 0.400000 0.400000 4352.860352 0.000000 3765.029297 0.000000 0.570621 0.000000 -0.821213 0.400000 0.400000 0.400000 @@ -73458,7 +73457,7 @@ 4754.254395 0.000000 3640.504150 0.000000 0.927361 0.000000 -0.374168 0.400000 0.400000 0.400000 4819.988281 0.000000 3653.584473 0.000000 0.995140 0.000000 0.098474 0.400000 0.400000 0.400000 4802.441406 0.000000 3654.838623 0.000000 0.998250 0.000000 -0.059129 0.400000 0.400000 0.400000 -4817.837891 0.000000 3611.091309 0.000000 0.876521 0.000000 0.481363 0.400000 0.400000 0.400000 +4817.837891 0.000000 3611.091309 0.000000 0.876521 0.000000 0.481364 0.400000 0.400000 0.400000 4811.823730 0.000000 3643.379395 0.000000 0.828452 0.000000 -0.560060 0.400000 0.400000 0.400000 4799.384277 0.000000 3630.085693 0.000000 0.633030 0.000000 -0.774127 0.400000 0.400000 0.400000 4770.622070 0.000000 3655.000732 0.000000 0.463306 0.000000 0.886198 0.400000 0.400000 0.400000 @@ -76952,7 +76951,7 @@ 4912.050293 0.000000 3755.749023 0.000000 0.184391 0.000000 -0.982853 0.400000 0.400000 0.400000 4903.145996 0.000000 3759.954834 0.000000 0.648327 0.000000 0.761362 0.400000 0.400000 0.400000 4961.061035 0.000000 3779.176270 0.000000 0.568815 0.000000 0.822466 0.400000 0.400000 0.400000 -4917.828613 0.000000 3767.352051 0.000000 0.724298 0.000000 -0.689487 0.400000 0.400000 0.400000 +4917.828613 0.000000 3767.352051 0.000000 0.724298 0.000000 -0.689488 0.400000 0.400000 0.400000 4966.748047 0.000000 3806.267822 0.000000 0.484637 0.000000 0.874715 0.400000 0.400000 0.400000 4949.303711 0.000000 3753.171631 0.000000 0.200390 0.000000 -0.979716 0.400000 0.400000 0.400000 4938.200684 0.000000 3807.792725 0.000000 0.648224 0.000000 -0.761450 0.400000 0.400000 0.400000 @@ -79374,7 +79373,7 @@ 5125.517090 0.000000 3946.658691 0.000000 0.390473 0.000000 -0.920614 0.400000 0.400000 0.400000 5182.530273 0.000000 3894.922119 0.000000 0.989825 0.000000 0.142287 0.400000 0.400000 0.400000 5142.189941 0.000000 3900.536133 0.000000 0.865677 0.000000 0.500603 0.400000 0.400000 0.400000 -5130.129395 0.000000 3913.054932 0.000000 0.464053 0.000000 -0.885807 0.400000 0.400000 0.400000 +5130.129395 0.000000 3913.054932 0.000000 0.464054 0.000000 -0.885807 0.400000 0.400000 0.400000 5117.372559 0.000000 3934.041016 0.000000 0.902173 0.000000 -0.431374 0.400000 0.400000 0.400000 5149.409180 0.000000 3939.979980 0.000000 0.961562 0.000000 -0.274587 0.400000 0.400000 0.400000 5120.937500 0.000000 3932.073975 0.000000 0.891831 0.000000 0.452368 0.400000 0.400000 0.400000 @@ -81301,7 +81300,7 @@ 5253.205566 0.000000 3848.812012 0.000000 0.917776 0.000000 -0.397099 0.400000 0.400000 0.400000 5223.953613 0.000000 3856.956543 0.000000 0.963632 0.000000 -0.267233 0.400000 0.400000 0.400000 5205.429688 0.000000 3853.566162 0.000000 0.789710 0.000000 -0.613481 0.400000 0.400000 0.400000 -5237.633789 0.000000 3859.552979 0.000000 0.940225 0.000000 0.340553 0.400000 0.400000 0.400000 +5237.633789 0.000000 3859.552979 0.000000 0.940225 0.000000 0.340552 0.400000 0.400000 0.400000 5246.187988 0.000000 3854.875977 0.000000 0.037051 0.000000 -0.999313 0.400000 0.400000 0.400000 5253.537109 0.000000 3860.336670 0.000000 0.526312 0.000000 0.850291 0.400000 0.400000 0.400000 5230.342773 0.000000 3877.678711 0.000000 0.687295 0.000000 -0.726378 0.400000 0.400000 0.400000 @@ -81698,7 +81697,7 @@ 5369.438477 0.000000 3780.460449 0.000000 0.804535 0.000000 0.593905 0.400000 0.400000 0.400000 5394.100586 0.000000 3773.105713 0.000000 0.599529 0.000000 0.800353 0.400000 0.400000 0.400000 5327.840332 0.000000 3746.892822 0.000000 0.298933 0.000000 0.954274 0.400000 0.400000 0.400000 -5357.763184 0.000000 3790.219971 0.000000 0.682988 0.000000 0.730430 0.400000 0.400000 0.400000 +5357.763184 0.000000 3790.219971 0.000000 0.682987 0.000000 0.730430 0.400000 0.400000 0.400000 5362.651367 0.000000 3806.114746 0.000000 0.810736 0.000000 -0.585412 0.400000 0.400000 0.400000 5378.771484 0.000000 3802.201416 0.000000 0.839704 0.000000 -0.543044 0.400000 0.400000 0.400000 5395.542480 0.000000 3811.500244 0.000000 0.338815 0.000000 -0.940853 0.400000 0.400000 0.400000 @@ -83119,7 +83118,7 @@ 5281.658691 0.000000 3919.259033 0.000000 0.811517 0.000000 -0.584329 0.400000 0.400000 0.400000 5299.789551 0.000000 3928.283936 0.000000 0.186476 0.000000 0.982460 0.400000 0.400000 0.400000 5267.968750 0.000000 3941.720459 0.000000 0.943227 0.000000 -0.332150 0.400000 0.400000 0.400000 -5284.458984 0.000000 3903.507324 0.000000 0.833024 0.000000 -0.553236 0.400000 0.400000 0.400000 +5284.458984 0.000000 3903.507324 0.000000 0.833024 0.000000 -0.553237 0.400000 0.400000 0.400000 5287.260742 0.000000 3929.155273 0.000000 0.798872 0.000000 -0.601501 0.400000 0.400000 0.400000 5320.368652 0.000000 3919.977539 0.000000 0.960674 0.000000 -0.277678 0.400000 0.400000 0.400000 5289.341797 0.000000 3892.392578 0.000000 0.986589 0.000000 0.163221 0.400000 0.400000 0.400000 @@ -86656,7 +86655,7 @@ 5830.199707 0.000000 3741.691895 0.000000 0.866656 0.000000 0.498907 0.400000 0.400000 0.400000 5827.878906 0.000000 3725.568848 0.000000 0.052927 0.000000 0.998598 0.400000 0.400000 0.400000 5819.714355 0.000000 3715.363770 0.000000 0.133160 0.000000 -0.991095 0.400000 0.400000 0.400000 -5796.022461 0.000000 3673.234863 0.000000 0.697503 0.000000 0.716581 0.400000 0.400000 0.400000 +5796.022461 0.000000 3673.234863 0.000000 0.697504 0.000000 0.716581 0.400000 0.400000 0.400000 5807.274902 0.000000 3702.070068 0.000000 0.936248 0.000000 0.351339 0.400000 0.400000 0.400000 5786.958984 0.000000 3699.682373 0.000000 0.302528 0.000000 -0.953141 0.400000 0.400000 0.400000 5778.512695 0.000000 3726.985107 0.000000 0.579973 0.000000 0.814636 0.400000 0.400000 0.400000 @@ -89931,7 +89930,7 @@ 7173.817383 0.000000 3565.972656 0.000000 0.391247 0.000000 -0.920286 0.400000 0.400000 0.400000 7151.718750 0.000000 3588.375488 0.000000 0.109821 0.000000 -0.993951 0.400000 0.400000 0.400000 7146.775391 0.000000 3591.716797 0.000000 0.991836 0.000000 -0.127523 0.400000 0.400000 0.400000 -7152.520508 0.000000 3597.782227 0.000000 0.888279 0.000000 0.459303 0.400000 0.400000 0.400000 +7152.520508 0.000000 3597.782227 0.000000 0.888279 0.000000 0.459304 0.400000 0.400000 0.400000 7159.525391 0.000000 3593.270508 0.000000 0.607566 0.000000 -0.794269 0.400000 0.400000 0.400000 7132.195312 0.000000 3564.379883 0.000000 0.646460 0.000000 -0.762948 0.400000 0.400000 0.400000 7127.459961 0.000000 3579.475586 0.000000 0.732984 0.000000 -0.680246 0.400000 0.400000 0.400000 @@ -90522,7 +90521,7 @@ 7066.103516 0.000000 3675.681885 0.000000 0.110987 0.000000 -0.993822 0.400000 0.400000 0.400000 7089.146484 0.000000 3676.439453 0.000000 0.493306 0.000000 -0.869856 0.400000 0.400000 0.400000 7100.582031 0.000000 3723.081787 0.000000 0.882730 0.000000 0.469881 0.400000 0.400000 0.400000 -7084.029297 0.000000 3679.432129 0.000000 0.710502 0.000000 -0.703695 0.400000 0.400000 0.400000 +7084.029297 0.000000 3679.432129 0.000000 0.710502 0.000000 -0.703696 0.400000 0.400000 0.400000 7099.593262 0.000000 3671.264160 0.000000 0.073500 0.000000 0.997295 0.400000 0.400000 0.400000 7112.461914 0.000000 3725.484619 0.000000 0.975890 0.000000 0.218263 0.400000 0.400000 0.400000 7103.959473 0.000000 3739.253418 0.000000 0.361914 0.000000 0.932212 0.400000 0.400000 0.400000 @@ -92267,7 +92266,7 @@ 7028.070801 0.000000 3787.557861 0.000000 0.770044 0.000000 0.637991 0.400000 0.400000 0.400000 7043.452148 0.000000 3777.189453 0.000000 0.087085 0.000000 0.996201 0.400000 0.400000 0.400000 7027.063965 0.000000 3802.126221 0.000000 0.970371 0.000000 -0.241621 0.400000 0.400000 0.400000 -6985.848633 0.000000 3753.832764 0.000000 0.253629 0.000000 -0.967302 0.400000 0.400000 0.400000 +6985.848633 0.000000 3753.832764 0.000000 0.253628 0.000000 -0.967302 0.400000 0.400000 0.400000 7000.773438 0.000000 3780.256104 0.000000 0.767437 0.000000 0.641124 0.400000 0.400000 0.400000 7008.810547 0.000000 3759.297852 0.000000 0.792846 0.000000 0.609422 0.400000 0.400000 0.400000 7034.110352 0.000000 3784.126953 0.000000 0.851475 0.000000 0.524395 0.400000 0.400000 0.400000 @@ -92698,7 +92697,7 @@ 7505.854004 0.000000 3459.474609 0.000000 0.760064 0.000000 0.649849 0.400000 0.400000 0.400000 7557.126465 0.000000 3512.723633 0.000000 0.504264 0.000000 0.863550 0.400000 0.400000 0.400000 7549.798828 0.000000 3520.220947 0.000000 0.699699 0.000000 0.714437 0.400000 0.400000 0.400000 -7503.769043 0.000000 3467.811523 0.000000 0.721743 0.000000 -0.692161 0.400000 0.400000 0.400000 +7503.769043 0.000000 3467.811523 0.000000 0.721743 0.000000 -0.692162 0.400000 0.400000 0.400000 7558.466797 0.000000 3518.330322 0.000000 0.976029 0.000000 0.217638 0.400000 0.400000 0.400000 7528.012695 0.000000 3473.869629 0.000000 0.899945 0.000000 -0.436004 0.400000 0.400000 0.400000 7532.451660 0.000000 3468.790039 0.000000 0.874989 0.000000 -0.484143 0.400000 0.400000 0.400000 @@ -93033,7 +93032,7 @@ 7575.253906 0.000000 3580.157715 0.000000 0.857090 0.000000 0.515167 0.400000 0.400000 0.400000 7613.616211 0.000000 3548.967529 0.000000 0.824624 0.000000 -0.565682 0.400000 0.400000 0.400000 7599.850586 0.000000 3549.012695 0.000000 0.903803 0.000000 -0.427950 0.400000 0.400000 0.400000 -7598.349609 0.000000 3542.982178 0.000000 0.269011 0.000000 0.963137 0.400000 0.400000 0.400000 +7598.349609 0.000000 3542.982178 0.000000 0.269010 0.000000 0.963137 0.400000 0.400000 0.400000 7617.905762 0.000000 3558.395020 0.000000 0.938711 0.000000 -0.344704 0.400000 0.400000 0.400000 7610.208008 0.000000 3553.414062 0.000000 0.689125 0.000000 -0.724643 0.400000 0.400000 0.400000 7591.028809 0.000000 3566.291016 0.000000 0.784880 0.000000 0.619647 0.400000 0.400000 0.400000 @@ -93547,7 +93546,7 @@ 7571.973633 0.000000 3713.738525 0.000000 0.239914 0.000000 -0.970794 0.400000 0.400000 0.400000 7597.711914 0.000000 3740.002686 0.000000 0.594677 0.000000 -0.803965 0.400000 0.400000 0.400000 7624.545898 0.000000 3691.218994 0.000000 0.805488 0.000000 0.592612 0.400000 0.400000 0.400000 -7599.851074 0.000000 3726.300781 0.000000 0.940972 0.000000 -0.338486 0.400000 0.400000 0.400000 +7599.851074 0.000000 3726.300781 0.000000 0.940972 0.000000 -0.338485 0.400000 0.400000 0.400000 7685.485352 0.000000 3623.906006 0.000000 0.448439 0.000000 0.893814 0.400000 0.400000 0.400000 7657.017578 0.000000 3634.580811 0.000000 0.118163 0.000000 0.992994 0.400000 0.400000 0.400000 7650.371094 0.000000 3618.814453 0.000000 0.583137 0.000000 -0.812374 0.400000 0.400000 0.400000 @@ -94276,7 +94275,7 @@ 7832.778809 0.000000 3603.099121 0.000000 0.827638 0.000000 0.561262 0.400000 0.400000 0.400000 7797.148438 0.000000 3637.613037 0.000000 0.520262 0.000000 -0.854007 0.400000 0.400000 0.400000 7837.906738 0.000000 3638.922852 0.000000 0.061676 0.000000 0.998096 0.400000 0.400000 0.400000 -7831.068359 0.000000 3631.151367 0.000000 0.484071 0.000000 0.875028 0.400000 0.400000 0.400000 +7831.068359 0.000000 3631.151367 0.000000 0.484071 0.000000 0.875029 0.400000 0.400000 0.400000 7826.370605 0.000000 3604.760986 0.000000 0.063171 0.000000 0.998003 0.400000 0.400000 0.400000 7803.796387 0.000000 3601.089600 0.000000 0.622817 0.000000 -0.782368 0.400000 0.400000 0.400000 7835.894531 0.000000 3669.045166 0.000000 0.215919 0.000000 0.976411 0.400000 0.400000 0.400000 @@ -95690,7 +95689,7 @@ 8029.009277 0.000000 4005.119141 0.000000 0.601500 0.000000 0.798873 0.400000 0.400000 0.400000 8061.071777 0.000000 4016.614258 0.000000 0.626087 0.000000 -0.779753 0.400000 0.400000 0.400000 8002.790039 0.000000 4028.552734 0.000000 0.289890 0.000000 -0.957060 0.400000 0.400000 0.400000 -8041.698242 0.000000 4024.641846 0.000000 0.660367 0.000000 -0.750943 0.400000 0.400000 0.400000 +8041.698242 0.000000 4024.641846 0.000000 0.660366 0.000000 -0.750943 0.400000 0.400000 0.400000 8029.665039 0.000000 4027.940186 0.000000 0.986389 0.000000 0.164431 0.400000 0.400000 0.400000 8009.551758 0.000000 4029.052002 0.000000 0.768064 0.000000 -0.640373 0.400000 0.400000 0.400000 8020.050781 0.000000 4021.908203 0.000000 0.217882 0.000000 -0.975975 0.400000 0.400000 0.400000 @@ -97069,7 +97068,7 @@ 8126.449707 0.000000 4080.354248 0.000000 0.822721 0.000000 -0.568445 0.400000 0.400000 0.400000 8113.233887 0.000000 4101.738281 0.000000 0.018259 0.000000 -0.999833 0.400000 0.400000 0.400000 8119.037109 0.000000 4063.057617 0.000000 0.002618 0.000000 0.999997 0.400000 0.400000 0.400000 -8114.339355 0.000000 4036.667236 0.000000 0.969558 0.000000 0.244861 0.400000 0.400000 0.400000 +8114.339355 0.000000 4036.667236 0.000000 0.969558 0.000000 0.244860 0.400000 0.400000 0.400000 8082.673828 0.000000 4095.607422 0.000000 0.766497 0.000000 0.642248 0.400000 0.400000 0.400000 8126.018555 0.000000 4036.248779 0.000000 0.205614 0.000000 -0.978633 0.400000 0.400000 0.400000 8082.845703 0.000000 4031.131836 0.000000 0.840034 0.000000 -0.542534 0.400000 0.400000 0.400000 diff --git a/gfx/map/map_object_data/player_stack_locators.txt b/gfx/map/map_object_data/player_stack_locators.txt index 2c0317ca..f7d78c72 100644 --- a/gfx/map/map_object_data/player_stack_locators.txt +++ b/gfx/map/map_object_data/player_stack_locators.txt @@ -11515,7 +11515,7 @@ } { id=2045 - position={ 1414.732422 0.000000 2747.182617 } + position={ 1423.847290 0.000000 2750.643555 } rotation={ -0.000000 -0.216440 -0.000000 0.976296 } scale={ 1.000000 1.000000 1.000000 } } @@ -14059,7 +14059,7 @@ } { id=2469 - position={ 1425.568359 0.000000 2752.059082 } + position={ 1403.427002 0.000000 2751.615967 } rotation={ -0.000000 -0.216440 -0.000000 0.976296 } scale={ 1.000000 1.000000 1.000000 } } @@ -14143,7 +14143,7 @@ } { id=2483 - position={ 1452.576294 0.000000 2744.646484 } + position={ 1463.161377 0.000000 2749.000732 } rotation={ -0.000000 -0.216440 -0.000000 0.976296 } scale={ 1.000000 1.000000 1.000000 } } @@ -14155,7 +14155,7 @@ } { id=2487 - position={ 1467.000000 0.000000 2743.000000 } + position={ 1464.773315 0.000000 2731.010986 } rotation={ -0.000000 -0.216440 -0.000000 0.976296 } scale={ 1.000000 1.000000 1.000000 } } @@ -14413,7 +14413,7 @@ } { id=2530 - position={ 1567.938354 0.000000 2720.435791 } + position={ 1576.966431 0.000000 2721.561279 } rotation={ -0.000000 -0.216440 -0.000000 0.976296 } scale={ 1.000000 1.000000 1.000000 } } @@ -14425,7 +14425,7 @@ } { id=2532 - position={ 1520.000000 0.000000 2703.000000 } + position={ 1535.757935 0.000000 2725.262451 } rotation={ -0.000000 -0.216440 -0.000000 0.976296 } scale={ 1.000000 1.000000 1.000000 } } @@ -14467,7 +14467,7 @@ } { id=2540 - position={ 1577.729248 0.000000 2723.372070 } + position={ 1566.415405 0.000000 2719.327881 } rotation={ -0.000000 0.099388 -0.000000 0.995049 } scale={ 1.000000 1.000000 1.000000 } } @@ -50545,31 +50545,31 @@ } { id=8805 - position={ 7193.000000 0.000000 2082.000000 } + position={ 1383.968384 0.000000 2747.897949 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8806 - position={ 7171.000000 0.000000 2106.000000 } + position={ 1586.579224 0.000000 2847.257080 } rotation={ 0.000000 0.447214 0.000000 0.894427 } scale={ 1.000000 1.000000 1.000000 } } { id=8807 - position={ 7159.000000 0.000000 2139.000000 } + position={ 1615.170288 0.000000 2868.090088 } rotation={ 0.000000 0.741453 0.000000 0.671005 } scale={ 1.000000 1.000000 1.000000 } } { id=8808 - position={ 7149.000000 0.000000 2129.000000 } + position={ 1610.463257 0.000000 2850.858398 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8809 - position={ 7202.000000 0.000000 2375.000000 } + position={ 1624.154053 0.000000 2859.959229 } rotation={ 0.000000 0.544914 0.000000 0.838492 } scale={ 1.000000 1.000000 1.000000 } } diff --git a/gfx/map/map_object_data/siege_locators.txt b/gfx/map/map_object_data/siege_locators.txt index c48d14d5..f7fdb524 100644 --- a/gfx/map/map_object_data/siege_locators.txt +++ b/gfx/map/map_object_data/siege_locators.txt @@ -9841,7 +9841,7 @@ } { id=2045 - position={ 1399.673462 0.000000 2743.592041 } + position={ 1419.332397 0.000000 2743.356934 } rotation={ 0.000000 0.780042 0.000000 0.625727 } scale={ 1.000000 1.000000 1.000000 } } @@ -12385,7 +12385,7 @@ } { id=2469 - position={ 1433.751831 0.000000 2745.392334 } + position={ 1413.094727 0.000000 2747.749756 } rotation={ -0.000000 -0.584710 -0.000000 0.811242 } scale={ 1.000000 1.000000 1.000000 } } @@ -12469,7 +12469,7 @@ } { id=2483 - position={ 1438.000000 0.000000 2731.000000 } + position={ 1465.097412 0.000000 2739.206299 } rotation={ 0.000000 0.961249 0.000000 0.275682 } scale={ 1.000000 1.000000 1.000000 } } @@ -12481,7 +12481,7 @@ } { id=2487 - position={ 1468.525635 0.000000 2734.652832 } + position={ 1455.804932 0.000000 2732.272705 } rotation={ 0.000000 0.983954 0.000000 -0.178425 } scale={ 1.000000 1.000000 1.000000 } } @@ -12739,8 +12739,8 @@ } { id=2530 - position={ 1558.987915 0.000000 2697.623535 } - rotation={ -0.000000 0.933279 -0.000000 0.359152 } + position={ 1572.217407 0.000000 2701.227051 } + rotation={ -0.000000 0.999982 -0.000000 0.006046 } scale={ 1.000000 1.000000 1.000000 } } { @@ -12751,7 +12751,7 @@ } { id=2532 - position={ 1504.960571 0.000000 2699.917725 } + position={ 1527.686401 0.000000 2719.460205 } rotation={ 0.000000 0.794707 0.000000 0.606994 } scale={ 1.000000 1.000000 1.000000 } } @@ -12793,7 +12793,7 @@ } { id=2540 - position={ 1574.472290 0.000000 2717.938965 } + position={ 1567.484741 0.000000 2714.723389 } rotation={ -0.000000 -0.175218 -0.000000 0.984530 } scale={ 1.000000 1.000000 1.000000 } } @@ -47581,32 +47581,32 @@ } { id=8805 - position={ 7193.000000 0.000000 2082.000000 } + position={ 1391.078857 0.000000 2756.470703 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8806 - position={ 7171.000000 0.000000 2106.000000 } - rotation={ 0.000000 0.447214 0.000000 0.894427 } + position={ 1593.995850 0.000000 2853.540771 } + rotation={ -0.000000 -0.321104 -0.000000 0.947044 } scale={ 1.000000 1.000000 1.000000 } } { id=8807 - position={ 7159.000000 0.000000 2139.000000 } + position={ 1606.124756 0.000000 2866.836182 } rotation={ 0.000000 0.741453 0.000000 0.671005 } scale={ 1.000000 1.000000 1.000000 } } { id=8808 - position={ 7149.000000 0.000000 2129.000000 } + position={ 1614.309692 0.000000 2857.403809 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } { id=8809 - position={ 7202.000000 0.000000 2375.000000 } - rotation={ 0.000000 0.544914 0.000000 0.838492 } + position={ 1627.935181 0.000000 2865.602783 } + rotation={ -0.000000 -0.291913 -0.000000 0.956445 } scale={ 1.000000 1.000000 1.000000 } } { @@ -52993,7 +52993,7 @@ } { id=9713 - position={ 1419.184814 0.000000 2827.092285 } + position={ 1426.894897 0.000000 2834.987793 } rotation={ 0.000000 -0.316228 0.000000 0.948683 } scale={ 1.000000 1.000000 1.000000 } } diff --git a/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml b/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml index 2871a815..4a078a78 100644 --- a/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml +++ b/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml @@ -17,48 +17,48 @@ special_doctrine_absurdist_name:0 "Virtues of Comedy" special_doctrine_absurdist_desc:0 "Our faith seeks out the virtues found primarily in the absurd and incomprehensible." doctrine_special_sevillian_dominion_name:0 "Church Bureaucracy" - doctrine_sevillian_dominion_1_name:0 "Corruption: Level 1" - doctrine_sevillian_dominion_1_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_2_name:0 "Corruption: Level 2" - doctrine_sevillian_dominion_2_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_3_name:0 "Corruption: Level 3" - doctrine_sevillian_dominion_3_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_4_name:0 "Corruption: Level 4" - doctrine_sevillian_dominion_4_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_5_name:0 "Corruption: Level 5" - doctrine_sevillian_dominion_5_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_6_name:0 "Corruption: Level 6" - doctrine_sevillian_dominion_6_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_7_name:0 "Corruption: Level 7" - doctrine_sevillian_dominion_7_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_8_name:0 "Corruption: Level 8" - doctrine_sevillian_dominion_8_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" - doctrine_sevillian_dominion_9_name:0 "Corruption: Level 9" - doctrine_sevillian_dominion_9_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_1_name:0 "Bureaucracy: Level 1" + doctrine_sevillian_dominion_1_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_2_name:0 "Bureaucracy: Level 2" + doctrine_sevillian_dominion_2_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_3_name:0 "Bureaucracy: Level 3" + doctrine_sevillian_dominion_3_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_4_name:0 "Bureaucracy: Level 4" + doctrine_sevillian_dominion_4_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_5_name:0 "Bureaucracy: Level 5" + doctrine_sevillian_dominion_5_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_6_name:0 "Catholic Bureaucracy: Level 6" + doctrine_sevillian_dominion_6_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_7_name:0 "Bureaucracy: Level 7" + doctrine_sevillian_dominion_7_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_8_name:0 "Bureaucracy: Level 8" + doctrine_sevillian_dominion_8_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_9_name:0 "Bureaucracy: Level 9" + doctrine_sevillian_dominion_9_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" doctrine_special_roman_dominion_name:0 "Church Bureaucracy" - doctrine_roman_dominion_1_name:0 "Corruption: Level 1" - doctrine_roman_dominion_1_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_2_name:0 "Corruption: Level 2" - doctrine_roman_dominion_2_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_3_name:0 "Corruption: Level 3" - doctrine_roman_dominion_3_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_4_name:0 "Corruption: Level 4" - doctrine_roman_dominion_4_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_5_name:0 "Corruption: Level 5" - doctrine_roman_dominion_5_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_6_name:0 "Corruption: Level 6" - doctrine_roman_dominion_6_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_7_name:0 "Corruption: Level 7" - doctrine_roman_dominion_7_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_8_name:0 "Corruption: Level 8" - doctrine_roman_dominion_8_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_roman_dominion_9_name:0 "Corruption: Level 9" - doctrine_roman_dominion_9_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_1_name:0 "Bureaucracy: Level 1" + doctrine_roman_dominion_1_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_2_name:0 "Bureaucracy: Level 2" + doctrine_roman_dominion_2_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_3_name:0 "Bureaucracy: Level 3" + doctrine_roman_dominion_3_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_4_name:0 "Bureaucracy: Level 4" + doctrine_roman_dominion_4_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_5_name:0 "Bureaucracy: Level 5" + doctrine_roman_dominion_5_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_6_name:0 "Catholic Bureaucracy: Level 6" + doctrine_roman_dominion_6_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_7_name:0 "Bureaucracy: Level 7" + doctrine_roman_dominion_7_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_8_name:0 "Bureaucracy: Level 8" + doctrine_roman_dominion_8_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_9_name:0 "Bureaucracy: Level 9" + doctrine_roman_dominion_9_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_parameter_param_bureaucracy_exp_1:0 "The #help Size of the Papacy#! in Relation to the #help Overall size of Catholicism#! has the Largest Impact on Church Corruption." + doctrine_parameter_param_bureaucracy_exp_1:0 "The Size of the Papacy in Relation to the Overall size of Catholicism has the Largest Impact on Church Bureaucracy." doctrine_parameter_param_bureaucracy_exp_2:0 "Mitigating factors include; #P Catholic titles of High Tier, High Fervour, High Papal Stewardship, High Papal Piety Level.#!" - doctrine_parameter_param_bureaucracy_exp_3:0 "Mitigating factors include: #N Low Fervour, Low Papal Stewardship, Low Papal Piety Level, Papal Sin Traits.#!" + doctrine_parameter_param_bureaucracy_exp_3:0 "Mitigating factors include; #N Low Fervour, Low Papal Stewardship, Low Papal Piety Level, Papal Sin Traits.#!" #doctrine_parameter_great_holy_wars_active:1 "If one exists, the [head_of_faith|E] can declare a [great_holy_war|E] when the [faith|E] has high [fervor|E]" #Britain special_doctrine_servants_of_the_regency_name:0 "Servants of the Regency" diff --git a/map_data/default.map b/map_data/default.map index 8698d9ef..240a0618 100644 --- a/map_data/default.map +++ b/map_data/default.map @@ -325,9 +325,3 @@ impassable_mountains = RANGE { 13164 13269 } impassable_mountains = LIST { 10582 10586 10605 10607 10612 10648 } -# THE VOID -# These provinces are used to hide areas not developed, and stop them from interacting with the world - -impassable_mountains = LIST { 8810 8811 8812 } -impassable_seas = LIST { 8813 } - diff --git a/map_data/definition.csv b/map_data/definition.csv index c39e5f72..fe11cec6 100644 --- a/map_data/definition.csv +++ b/map_data/definition.csv @@ -8808,10 +8808,10 @@ 8807;92;9;131;Val Badia;x 8808;134;12;4;Fascia;x 8809;176;15;132;Fodom;x -8810;8;18;5;EASTERN EUROPE;x -8811;50;21;133;NORTH AFRICA;x -8812;92;24;6;THE VOID;x -8813;134;27;134;FOGGY SEA;x +8810;8;18;5;;x +8811;50;21;133;;x +8812;92;24;6;;x +8813;134;27;134;;x 8814;176;30;7;;x 8815;8;33;135;;x 8816;50;36;8;;x @@ -13612,3 +13612,4 @@ 13611;170;248;112;;x 13612;201;238;55;sea_newfens_bay;x 13613;18;240;231;river_kiel_canal;x +13614;70;65;149;;x diff --git a/map_data/nodes.dat b/map_data/nodes.dat index 8c59606da42f3cc420b00fb8af63064fd438eea3..38ba89a59a5815d794fd05cac0312bbc500f7c33 100644 GIT binary patch delta 3288 zcmZY9Wl&d57>D6Mp&$sNh*+rD0oa8CVv8*XVv7Q{*bT}-R8X+N0=vb=?(XguySw9e z^L~2AGjm_FGtcaq+5ND|msdF@s|dr)FgGj=OCy7k(XcYCjZB8kW?P3e3%|s$XvZ{L zm08&-dzD2wsH`fRa#Y!slggo-RZf*lZqrrc8<(>%P^SR_Q$jP{Q&t;(pfs+=mXDyWL8lB%q#sH)0SRa4cKm-1FVs)q7a z{I8a(t?H<{s-CK^8Yn;2P&HDGRTI@zHB-%13+1m`s#dDCYNG;FTNS9Zm%Y z&Z>**s)AHE)m;Uv5EZI=sGh2q>aF^yzN(+ff=X0#)Lb=B z%~uOll1f$!)grZ6Em2F=GPPW-P%G6cwOXxFYt=fHqSmVoYNOhuHmfaat4dYd)ONK) z?Nqx`{o{AvULWof^32!tzweBf$>ip3GDUcrOjefv&QEFXo<0w@2(bTm&i?=A&Za<{ zf9JVP_^4ynWHh&rl{spIN|I;l>n)9Q>mtInzO>Vmqc zE~(4vin^+VbNw($pjMSUpis)id>6y-+XJE5#Y!sJH5! zdapjHkLr{9tiGtP>YMtmeyE@7m-?;##H9F|#VIfc3$TO?kP)oF8ZvOIKfg8Ak2b6{~ zP!`HTd8hytp%PSvDo_NFYpE*r~&DhSd&#Ps10?XF4Tki&;b0PAvA)<&;*)7 zGiVMiz#m#dD`*XEAOPAzAhd(_&;dF^C+G}apeqDHH|P$*5CWml1A0O)=nZ|KFZ6@{ z5C#KaAPj=RFa(CeFc=OaU?hx!(J%(WAp*w2IEVxTqF_8k!vvTJlOP6SVKPjCIEaU- zFb$@|444VCU^XN`BFurgFc0R#0!V^nSO|+?F)V?lund;N3RnrNU^T3PwXhCSU_ESr zjj#ze!xq>Isjv;U!w%R9yI?o$fxWN~_QL@<2#4S>9D$>7435JII0>iVG@OC6a1PGH z1-J;8;4)l+t8fjj!wt9zx8OG1fxB=I?!yCk2x;&L9>WuO3eVsHAv-uh4seE?kPC7{9>@zWkPq@h0dR$aPzVY`5hx19pg5F(l28iVz#TlGG?am| zP!7sN1*iy>pfXf}s^AILpgMSgH~2seNWa9ItZG4Rr~`GO9@K{h;0Fz%5j2J-&=i_M zb7%qn&=OifYiI)j&=vxr9khoI&=ER8XXpZ5AqcubcL;_M2!$Td6M8{!=mUMBAM}SX z7ytud5DbPPFcgNta2Nq2VHAvpF%S+BFc!u^Bp46{;~^R*z(kk?F%S!rVG6`SJWPdY xFdb&VOqd0;ApsI$4$OslFdr5`5+uVySOkk<2`q(WupCyvO7p#X{>GCS4Bo%8|7?y_Furksa=?!ZmgOSm&*=*~OYL1Qyh;vM} zRhg8XvR9dvgUX_^Do2$~IVor5qOz+TDyPb&a;rQluga(Ls{*Q^Dx?alBC4n=riv?9 z<)%s~cjb}dnCj`h#{B$!^|-*qlB$#{t;(pfs+=mXDyWL8lB%q{R25ZKc`F~~tEwqK z<*x!1@2#O~s#>bHs-xZ-b_?y86Csd}m2s*mcc`l)o?XJjZ}sjrADhbHAan9<5avFuO_I8DnTWxNoum1qNb{8YPy=CW~y0gwwj~n zs(EU@TA-5DLbXUOR!h`UwM;EnE7VH0O08CF)LOMpC9CyngW9Mzsm*GO+Nx62Hnm;t zP&?JGl)%K@x7WvP3V!Kl`s+F4Z8Ew0m`t%=CX=<*YqyX8%ui|Vkv5MohuH7GWA^`R z-NgR?a~D&n&F_%JfA)`Q?wPh9ZudGa*>8{9tM;k=>VP_^4ynWHh&rl{spIN|I;l>n z)9Q>mtInzO>VmqcE~(4vin^+VbNwQq?2%SUpis)id>6 zy-+XJE5$dwQE$~d^EkRGfd z17rjnu!T%u2lkK|93Ts11xLsRPT&kKkR5VBPRIqhArIt*e2^asKtU)3g`o%(gCZRpbAt4Z}0(Ms0L}5=+7wtszVK^3ALa$ z)PcHC59&h$Xb6pRZKFb2lL zIEaVwFaah)0wlsDm<&^3DolgvFau`7ESL>*U@pvq`LFxDOBDA*8}1cnnYADLjMc z@B&`KD|iiW;4Qp^_wWHe!YB9)U*IczgYWPIe!?&K4Sy{3`?J)+0xZD{R*(+TgEeG; zj9>${kO}O-9x{UiWPz;U2-(01oWTXMLk`FZxga;>fxM6p@ Date: Fri, 6 Mar 2026 11:02:05 +0000 Subject: [PATCH 04/52] Fixes to localisation --- .../replace/NEOW_Domicile_l_english.yml | 24 +- .../english/replace/modifiers_l_english.yml | 2098 ----------------- ...religion_tolerance doctrines_l_english.yml | 76 +- .../english/replace/units_l_english.yml | 52 - 4 files changed, 50 insertions(+), 2200 deletions(-) delete mode 100644 localization/english/replace/modifiers_l_english.yml delete mode 100644 localization/english/replace/units_l_english.yml diff --git a/localization/english/replace/NEOW_Domicile_l_english.yml b/localization/english/replace/NEOW_Domicile_l_english.yml index 9981c961..6dc76024 100644 --- a/localization/english/replace/NEOW_Domicile_l_english.yml +++ b/localization/english/replace/NEOW_Domicile_l_english.yml @@ -34,13 +34,13 @@ d_laamp_test_jewish:0 "$ashkenazi$ Community of the $dynn_britannia_kohn$'s" d_laamp_test_jewish_adj:0 "Jewish" d_laamp_test_jewish_article:0 "The " - d_laamp_cale_roman:0 "$cale$ Community of the $dynn_Plata$'s + d_laamp_cale_roman:0 "$cale$ Community of the $dynn_Plata$'s" d_laamp_cale_roman_adj:0 "Romani" d_laamp_cale_roman_article:0 "The " - d_laamp_traveller_celtic:0 "$traveller$ Community of the $dynn_Murphy$'s + d_laamp_traveller_celtic:0 "$traveller$ Community of the $dynn_Murphy$'s" d_laamp_traveller_celtic_adj:0 "Traveller" d_laamp_traveller_celtic_article:0 "The " - d_laamp_beur_simurghi:0 "$beur$ Community of the $dynn_Ayouch$'s + d_laamp_beur_simurghi:0 "$beur$ Community of the $dynn_Ayouch$'s" d_laamp_beur_simurghi_adj:0 "Beur" d_laamp_beur_simurghi_article:0 "The " minority_community_domicile_title: "[CHARACTER.GetFirstNamePossessiveNoTooltip] [minority_community_i|E][minority_community|E]" @@ -196,11 +196,11 @@ communal_gardens_leisure_05_domicile_building_desc: "There can be something so comforting about a field of flowers." communal_gardens_leisure_06_domicile_building: "Flower Fields" communal_gardens_leisure_06_domicile_building_desc: "There can be something so comforting about a field of flowers." - communal_gardens_fruit_04_domicile_building: "Fruit Orchard + communal_gardens_fruit_04_domicile_building: "Fruit Orchard" communal_gardens_fruit_04_domicile_building_desc: "A few apples or pears can add a lot to a village's diet." - communal_gardens_fruit_05_domicile_building: "Fruit Orchard + communal_gardens_fruit_05_domicile_building: "Fruit Orchard" communal_gardens_fruit_05_domicile_building_desc: "A few apples or pears can add a lot to a village's diet." - communal_gardens_fruit_06_domicile_building: "Fruit Orchard + communal_gardens_fruit_06_domicile_building: "Fruit Orchard" communal_gardens_fruit_06_domicile_building_desc: "A few apples or pears can add a lot to a village's diet." village_stable_01_domicile_building: "Village Stable" village_stable_01_domicile_building_desc: "A small stable to house a few horses for distant travel or agricultural purposes." @@ -260,17 +260,17 @@ village_storage_granary_03_domicile_building_desc:: "A granary in which food is stored for protection from the elements" village_storage_granary_04_domicile_building: "Village Granary" village_storage_granary_04_domicile_building_desc:: "A granary in which food is stored for protection from the elements" - village_market_01_domicile_building: "Village Market + village_market_01_domicile_building: "Village Market" village_market_01_domicile_building_desc: "A market in which goods are exchanged with travelling merchants and distributed around the village" - village_market_02_domicile_building: "Village Market + village_market_02_domicile_building: "Village Market" village_market_02_domicile_building_desc: "A market in which goods are exchanged with travelling merchants and distributed around the village" - village_market_03_domicile_building: "Village Market + village_market_03_domicile_building: "Village Market" village_market_03_domicile_building_desc: "A market in which goods are exchanged with travelling merchants and distributed around the village" - village_market_04_domicile_building: "Village Market + village_market_04_domicile_building: "Village Market" village_market_04_domicile_building_desc: "A market in which goods are exchanged with travelling merchants and distributed around the village" - village_market_05_domicile_building: "Village Market + village_market_05_domicile_building: "Village Market" village_market_05_domicile_building_desc: "A market in which goods are exchanged with travelling merchants and distributed around the village" - village_market_06_domicile_building: "Village Market + village_market_06_domicile_building: "Village Market" village_market_06_domicile_building_desc: "A market in which goods are exchanged with travelling merchants and distributed around the village" village_grazing_land_01_domicile_building: "Village Pastures" village_grazing_land_01_domicile_building_desc: "The pastures where cattle and horses roam freely providing dairy and meat to the community." diff --git a/localization/english/replace/modifiers_l_english.yml b/localization/english/replace/modifiers_l_english.yml deleted file mode 100644 index 264acda7..00000000 --- a/localization/english/replace/modifiers_l_english.yml +++ /dev/null @@ -1,2098 +0,0 @@ -l_english: - MOD_DIPLOMACY:0 "[diplomacy|E]" - MOD_INTRIGUE:0 "[intrigue|E]" - MOD_STEWARDSHIP:0 "[stewardship|E]" - MOD_MARTIAL:0 "[martial|E]" - MOD_LEARNING:0 "[learning|E]" - MOD_PROWESS:0 "[prowess|E]" - MOD_PROWESS_NO_PORTRAIT:0 "[prowess|E]" - prowess_no_portrait_debug_desc:0 "Doesn't affect portraits. Note that you can get some odd results when using negative values for people with negate_prowess_penalty_add" - - MOD_DIPLOMACY_PREFIX:0 "[diplomacy_i]" - MOD_INTRIGUE_PREFIX:0 "[intrigue_i]" - MOD_STEWARDSHIP_PREFIX:0 "[stewardship_i]" - MOD_MARTIAL_PREFIX:0 "[martial_i]" - MOD_LEARNING_PREFIX:0 "[learning_i]" - MOD_PROWESS_PREFIX:0 "[prowess_i]" - - MOD_DIPLOMACY_PER_PIETY_LEVEL:0 "[diplomacy|E] per [piety_level|E]" - MOD_MARTIAL_PER_PIETY_LEVEL:0 "[martial|E] per [piety_level|E]" - MOD_STEWARDSHIP_PER_PIETY_LEVEL:0 "[stewardship|E] per [piety_level|E]" - MOD_INTRIGUE_PER_PIETY_LEVEL:0 "[intrigue|E] per [piety_level|E]" - MOD_LEARNING_PER_PIETY_LEVEL:0 "[learning|E] per [piety_level|E]" - MOD_PROWESS_PER_PIETY_LEVEL:0 "[prowess|E] per [piety_level|E]" - MOD_DIPLOMACY_PER_PRESTIGE_LEVEL:0 "[diplomacy|E] per [prestige_level|E]" - MOD_MARTIAL_PER_PRESTIGE_LEVEL:0 "[martial|E] per [prestige_level|E]" - MOD_STEWARDSHIP_PER_PRESTIGE_LEVEL:0 "[stewardship|E] per [prestige_level|E]" - MOD_INTRIGUE_PER_PRESTIGE_LEVEL:0 "[intrigue|E] per [prestige_level|E]" - MOD_LEARNING_PER_PRESTIGE_LEVEL:0 "[learning|E] per [prestige_level|E]" - MOD_PROWESS_PER_PRESTIGE_LEVEL:0 "[prowess|E] per [prestige_level|E]" - MOD_DIPLOMACY_PER_INFLUENCE_LEVEL: "[diplomacy|E] per [influence_level|E]" - MOD_MARTIAL_PER_INFLUENCE_LEVEL: "[martial|E] per [influence_level|E]" - MOD_STEWARDSHIP_PER_INFLUENCE_LEVEL: "[stewardship|E] per [influence_level|E]" - MOD_INTRIGUE_PER_INFLUENCE_LEVEL: "[intrigue|E] per [influence_level|E]" - MOD_LEARNING_PER_INFLUENCE_LEVEL: "[learning|E] per [influence_level|E]" - MOD_PROWESS_PER_INFLUENCE_LEVEL: "[prowess|E] per [influence_level|E]" - MOD_DIPLOMACY_PER_MERIT_LEVEL: "[diplomacy|E] per [merit_level|E]" - MOD_MARTIAL_PER_MERIT_LEVEL: "[martial|E] per [merit_level|E]" - MOD_STEWARDSHIP_PER_MERIT_LEVEL: "[stewardship|E] per [merit_level|E]" - MOD_INTRIGUE_PER_MERIT_LEVEL: "[intrigue|E] per [merit_level|E]" - MOD_LEARNING_PER_MERIT_LEVEL: "[learning|E] per [merit_level|E]" - MOD_PROWESS_PER_MERIT_LEVEL: "[prowess|E] per [merit_level|E]" - - MOD_DIPLOMACY_PER_STRESS_LEVEL:0 "[diplomacy|E] per [stress_level|E]" - MOD_MARTIAL_PER_STRESS_LEVEL:0 "[martial|E] per [stress_level|E]" - MOD_STEWARDSHIP_PER_STRESS_LEVEL:0 "[stewardship|E] per [stress_level|E]" - MOD_INTRIGUE_PER_STRESS_LEVEL:0 "[intrigue|E] per [stress_level|E]" - MOD_LEARNING_PER_STRESS_LEVEL:0 "[learning|E] per [stress_level|E]" - MOD_PROWESS_PER_STRESS_LEVEL:0 "[prowess|E] per [stress_level|E]" - - MOD_PIETY_LEVEL_IMPACT_MULT:1 "[piety_i|E][piety_level_impact|E]" - MOD_PRESTIGE_LEVEL_IMPACT_MULT:1 "[prestige_i|E][prestige_level_impact|E]" - MOD_INFLUENCE_LEVEL_IMPACT_MULT: "[influence_i|E][influence_level_impact|E]" - MOD_MERIT_LEVEL_IMPACT_MULT: "[merit_i|E][merit_level_impact|E]" - - MOD_DIPLOMACY_NEGATE_PENALTY:0 "Negated [diplomacy|E] Penalty" - MOD_INTRIGUE_NEGATE_PENALTY:0 "Negated [intrigue|E] Penalty" - MOD_STEWARDSHIP_NEGATE_PENALTY:0 "Negated [stewardship|E] Penalty" - MOD_MARTIAL_NEGATE_PENALTY:0 "Negated [martial|E] Penalty" - MOD_PROWESS_NEGATE_PENALTY:1 "Injury Resistance ([prowess|E])" - MOD_LEARNING_NEGATE_PENALTY:0 "Negated [learning|E] Penalty" - - MOD_FERTILITY:0 "[fertility|E]" - MOD_FERTILITY_NEGATE_PENALTY:0 "Disease Resistance ([fertility|E])" - - MOD_PROVISIONS_GAIN_MULT: "[provisions|E] Gain" - MOD_PROVISIONS_LOSS_MULT: "[provisions|E] Loss" - MOD_PROVISIONS_CAPACITY_ADD: "[provisions|E] Capacity" - MOD_PROVISIONS_CAPACITY_MULT: "$MOD_PROVISIONS_CAPACITY_ADD$" - - MOD_COST_PREFIX:0 "[gold_i]" - MOD_SCHEME_SECRECY:0 "[secrecy|E]" - MOD_SCHEME_SUCCESS:0 "Base [success_chance|E]" - MOD_COMBAT_PURSUE_EFFICIENCY:1 "[command_modifier_i|E][pursuit|E] Efficiency" - MOD_COMBAT_COUNTER_RESISTANCE:0 "[men_at_arms_counter|E] Resistance" - MOD_COMBAT_COUNTER_EFFICIENCY:2 "[men_at_arms_counter|E] Efficiency" - MOD_SIEGE_PHASE_TIME:2 "[command_modifier_i|E][siege|E] Phase Time" - MOD_SIEGE_MORALE_LOSS:1 "[command_modifier_i|E]Daily [siege_progress|E]" - MOD_CONTROLLED_PROVINCE_ADVANTAGE:0 "Controlled Territory Defender [advantage|E]" - MOD_REVOLTING_SIEGE_MORALE_LOSS_ADD:0 "[siege_progress|E] against [revolts|E]" - MOD_REVOLTING_SIEGE_MORALE_LOSS_MULT:0 "$MOD_REVOLTING_SIEGE_MORALE_LOSS_ADD$" - MOD_MOVEMENT_SPEED:1 "[army|E] Movement Speed" - MOD_MOVEMENT_SPEED_LAND_RAIDING:0 "Movement Speed over land while [raiding|e]" - MOD_RETREAT_LOSSES:2 "[command_modifier_i|E][retreat|E] Losses" - MOD_HARD_CASUALTY_MODIFIER:2 "[command_modifier_i|E]Friendly [dead_soldiers|E]" - MOD_ENEMY_HARD_CASUALTY_MODIFIER:2 "[command_modifier_i|E]Enemy [dead_soldiers|E]" - MOD_ADVANTAGE:1 "[command_modifier_i|E][advantage|E]" - MOD_ATTACKER_ADVANTAGE:1 "[command_modifier_i|E]Attacker [advantage|E]" - MOD_DEFENDER_ADVANTAGE:1 "[command_modifier_i|E]Defender [advantage|E]" - MOD_DEFENDER_HOLDING_ADVANTAGE:0 "[command_modifier_i|E] Defender [holding|E] [advantage|E]" - MOD_NUM_BUILDING_SLOTS:0 "Additional [building|E] Slots" - MOD_NO_WATER_CROSSING_PENALTY:2 "[command_modifier_i|E]Crosses Rivers & Straits without [advantage|E] penalties" - MOD_NO_DISEMBARK_PENALTY:0 "[command_modifier_i|E]No [advantage|E] penalty from [Concept( 'recently_disembarked', 'disembarking')|E]" - MOD_ENEMY_TERRAIN_ADVANTAGE:1 "[command_modifier_i|E]Enemy Defensive [advantage|E]" - MOD_DRYLANDS_ADVANTAGE:1 "[command_modifier_i|E]Drylands [advantage|E]" - MOD_DESERT_ADVANTAGE:1 "[command_modifier_i|E]Desert [advantage|E]" - MOD_DESERT_ATTRITION:1 "[command_modifier_i|E]Desert Attrition" - MOD_JUNGLE_ADVANTAGE:1 "[command_modifier_i|E]Jungle [advantage|E]" - MOD_JUNGLE_ATTRITION:1 "[command_modifier_i|E]Jungle Attrition" - MOD_JUNGLE_DETECTION:1 "[command_modifier_i|E]Jungle Detection" - MOD_HOSTILE_COUNTY_ATTRITION:0 "Hostile County Attrition" - MOD_HOSTILE_COUNTY_ATTRITION_RAIDING:0 "Hostile County Attrition while [raiding|e]" - MOD_FAITH_HOSTILITY_ADVANTAGE_MOD:1 "[command_modifier_i|E][faith_hostility|E] [advantage|E]" - MOD_CORELIGIONIST_ADVANTAGE_MOD:0 "[command_modifier_i|E][advantage|E] against co-religionists" - MOD_COASTAL_ADVANTAGE:0 "[command_modifier_i|E]Coastal [advantage|E]" - MOD_LEVY_REINFORCEMENT_RATE:0 "[levy|E] Reinforcement Rate" - MOD_LEVY_REINFORCEMENT_RATE_EVEN_IF_BARON:0 "$MOD_LEVY_REINFORCEMENT_RATE$" - MOD_LEVY_REINFORCEMENT_RATE_DIFFERENT_FAITH:0 "[levy|E] Reinforcement Rate (Different [faith|E])" - MOD_LEVY_REINFORCEMENT_RATE_DIFFERENT_FAITH_EVEN_IF_BARON:0 "$MOD_LEVY_REINFORCEMENT_RATE_DIFFERENT_FAITH$" - MOD_LEVY_REINFORCEMENT_RATE_SAME_FAITH:0 "[levy|E] Reinforcement Rate (Same [faith|E])" - MOD_LEVY_REINFORCEMENT_RATE_SAME_FAITH_EVEN_IF_BARON:0 "$MOD_LEVY_REINFORCEMENT_RATE_SAME_FAITH$" - MOD_LEVY_REINFORCEMENT_RATE_FRIENDLY_TERRITORY:0 "Friendly Territory [levy|E] Reinforcement Rate" - MOD_TITLE_CREATION_COST:2 "[title|E] Creation Cost" - MOD_TITLE_CREATION_COST_MULT:2 "[title|E] Creation Cost" - MOD_TITLE_CREATION_PIETY_COST: "[title|E] Creation [piety|E] Cost" - MOD_TITLE_CREATION_PIETY_COST_MULT: "[title|E] Creation [piety|E] Cost" - MOD_WINTER_MOVEMENT_SPEED:0 "Movement Speed in Provinces affected by Winter" - MOD_SUPPLY_LOSS_WINTER:0 "Supply loss in Provinces affected by Winter" - MOD_HARD_CASUALTY_WINTER:0 "[dead_soldiers|E] in Provinces affected by Winter" - MOD_DEFENDER_WINTER_ADVANTAGE:0 "Defender [advantage|E] in Provinces affected by Winter" - MOD_WINTER_ADVANTAGE:0 "[command_modifier_i|E][advantage|E] in Provinces affected by Winter" - MOD_LEAD_BY_OWNER_ADVANTAGE:0 "[command_modifier_i|E][advantage|E] when commanding own armies" - MOD_SAME_HERITAGE_COUNTY_ADVANTAGE:1 "[command_modifier_i|E][advantage|E] in same [cultural|E] [heritage|E] Provinces" - MOD_INDEPENDENT_PRIMARY_DEFENDER_ADVANTAGE:0 "[command_modifier_i|E][advantage|E] while primary defender and independent" - MOD_INDEPENDENT_PRIMARY_ATTACKER_ADVANTAGE: "[command_modifier_i|E][advantage|E] while primary attacker and independent" - MOD_ARMY_SIEGE_VALUE_MULT:0 "Army [siege_weapon|E] Effectiveness" - MOD_ARMY_DAMAGE_MULT:0 "Army [damage|E]" - MOD_ARMY_TOUGHNESS_MULT:0 "Army [toughness|E]" - MOD_ARMY_PURSUIT_MULT:0 "Army [pursuit|E]" - MOD_ARMY_SCREEN_MULT:0 "Army [screen|E]" - - MOD_MERCENARY_HIRE_COST_ADD:0 "[mercenary|E] Hire Cost" - MOD_MERCENARY_HIRE_COST_MULT:0 "$MOD_MERCENARY_HIRE_COST_ADD$" - MOD_MERCENARY_HIRE_TIME_MULT: "[mercenary|E] Hire Duration" - MOD_HOLY_ORDER_HIRE_COST_ADD:0 "[holy_order|E] Hire Cost" - MOD_HOLY_ORDER_HIRE_COST_MULT:0 "$MOD_HOLY_ORDER_HIRE_COST_ADD$" - MOD_SAME_CULTURE_MERCENARY_HIRE_COST_ADD:0 "Same [culture|E] [mercenary|E] Hire Cost" - MOD_SAME_CULTURE_MERCENARY_HIRE_COST_MULT:0 "$MOD_SAME_CULTURE_MERCENARY_HIRE_COST_ADD$" - MOD_SAME_CULTURE_HOLY_ORDER_HIRE_COST_ADD:0 "Same [culture|E] [holy_order|E] Hire Cost" - MOD_SAME_CULTURE_HOLY_ORDER_HIRE_COST_MULT:0 "$MOD_SAME_CULTURE_HOLY_ORDER_HIRE_COST_ADD$" - holy_order_government_levy_contribution_add:0 "[holy_order|E] [vassal|E] [levy|E] [modifier_contribution|E]" - - desert_advantage:1 "[command_modifier_i|E][advantage|E] in Desert" - desert_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Desert" - desert_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Desert" - desert_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Desert" - desert_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Desert" - desert_mountains_advantage:1 "[command_modifier_i|E][advantage|E] in Desert Mountains" - desert_mountains_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Desert Mountains" - desert_mountains_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Desert Mountains" - desert_mountains_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Desert Mountains" - desert_mountains_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Desert Mountains" - drylands_advantage:1 "[command_modifier_i|E][advantage|E] in Drylands" - drylands_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Drylands" - drylands_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Drylands" - drylands_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Drylands" - drylands_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Drylands" - farmlands_advantage:1 "[command_modifier_i|E][advantage|E] in Farmlands" - farmlands_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Farmlands" - farmlands_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Farmlands" - farmlands_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Farmlands" - farmlands_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Farmlands" - forest_advantage:1 "[command_modifier_i|E][advantage|E] in Forest" - forest_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Forest" - forest_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Forest" - forest_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Forest" - forest_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Forest" - hills_advantage:1 "[command_modifier_i|E][advantage|E] in Hills" - hills_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Hills" - hills_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Hills" - hills_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Hills" - hills_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Hills" - jungle_advantage:1 "[command_modifier_i|E][advantage|E] in Jungle" - jungle_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Jungle" - jungle_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Jungle" - jungle_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Jungle" - jungle_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Jungle" - mountains_advantage:1 "[command_modifier_i|E][advantage|E] in Mountains" - mountains_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Mountains" - mountains_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Mountains" - mountains_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Mountains" - mountains_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Mountains" - oasis_advantage:1 "[command_modifier_i|E][advantage|E] in Oasis" - oasis_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Oasis" - oasis_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Oasis" - oasis_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Oasis" - oasis_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Oasis" - plains_advantage:1 "[command_modifier_i|E][advantage|E] in Plains" - plains_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Plains" - plains_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Plains" - plains_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Plains" - plains_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Plains" - steppe_advantage:1 "[command_modifier_i|E][advantage|E] in Steppe" - steppe_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Steppe" - steppe_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Steppe" - steppe_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Steppe" - steppe_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Steppe" - floodplains_advantage:1 "[command_modifier_i|E][advantage|E] in Floodplains" - floodplains_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Floodplains" - floodplains_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Floodplains" - floodplains_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Floodplains" - floodplains_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Floodplains" - taiga_advantage:1 "[command_modifier_i|E][advantage|E] in Taiga" - taiga_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Taiga" - taiga_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Taiga" - taiga_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Taiga" - taiga_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Taiga" - wetlands_advantage:1 "[command_modifier_i|E][advantage|E] in Wetlands" - wetlands_attrition_mult:1 "[command_modifier_i|E][attrition|E] Taken in Wetlands" - wetlands_cancel_negative_supply:1 "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Wetlands" - wetlands_max_combat_roll:1 "[command_modifier_i|E]Maximum [combat_roll|E] in Wetlands" - wetlands_min_combat_roll:1 "[command_modifier_i|E]Minimum [combat_roll|E] in Wetlands" - terraced_hills_advantage: "[command_modifier_i|E][advantage|E] in Terraced Hills" - terraced_hills_attrition_mult: "[command_modifier_i|E][attrition|E] Taken in Terraced Hills" - terraced_hills_cancel_negative_supply: "[command_modifier_i|E]Negate [supply_limit|E] Penalty in Terraced Hills" - terraced_hills_max_combat_roll: "[command_modifier_i|E]Maximum [combat_roll|E] in Terraced Hills" - terraced_hills_min_combat_roll: "[command_modifier_i|E]Minimum [combat_roll|E] in Terraced Hills" - - siege_weapon_siege_value_mult:0 "[siege_weapon|E] Effectiveness" - siege_weapon_toughness_add:0 "[siege_weapon|E] [toughness|E]" - siege_weapon_max_size_add:0 "Max Size of [siege_weapon|E] [regiments|E]" - siege_weapon_maintenance_mult:0 "[siege_weapon|E] Maintenance" - siege_weapon_recruitment_cost_mult:0 "[siege_weapon|E] Recruitment Cost" - siege_weapon_damage_mult: "[siege_weapon|E] [damage|E]" - siege_weapon_toughness_mult: "[siege_weapon|E] [toughness|E]" - light_cavalry_damage_add:1 "[light_cavalry|E] [damage|E]" - light_cavalry_damage_mult:0 "$light_cavalry_damage_add$" - light_cavalry_pursuit_add:1 "[light_cavalry|E] [pursuit|E]" - light_cavalry_pursuit_mult:0 "$light_cavalry_pursuit_add$" - light_cavalry_screen_add:1 "[light_cavalry|E] [screen|E]" - light_cavalry_screen_mult:0 "$light_cavalry_screen_add$" - light_cavalry_maintenance_mult:0 "[light_cavalry|E] Maintenance" - light_cavalry_recruitment_cost_mult:0 "[light_cavalry|E] Recruitment Cost" - light_cavalry_max_size_add:0 "Max Size of [light_cavalry|E] [regiments|E]" - heavy_infantry_screen_add:1 "[heavy_infantry|E] [screen|E]" - heavy_infantry_screen_mult: "$heavy_infantry_screen_add$" - pikemen_screen_add:2 "[spearmen|E] [screen|E]" - pikemen_damage_add:2 "[spearmen|E] [damage|E]" - pikemen_damage_mult:0 "$pikemen_damage_add$" - pikemen_toughness_add:2 "[spearmen|E] [toughness|E]" - pikemen_toughness_mult:0 "$pikemen_toughness_add$" - pikemen_max_size_add:0 "Max Size of [spearmen|E] [regiments|E]" - pikemen_maintenance_mult:0 "[spearmen|E] Maintenance" - pikemen_recruitment_cost_mult:0 "[spearmen|E] Recruitment Cost" - pikemen_screen_mult: "$pikemen_screen_add$" - archers_screen_add:1 "[archer|E] [screen|E]" - archers_screen_mult:0 "$archers_screen_add$" - archers_pursuit_add: "[archer|E] [pursuit|E]" - skirmishers_screen_add:2 "[skirmisher|E] [screen|E]" - skirmishers_screen_mult:0 "$skirmishers_screen_add$" - skirmishers_pursuit_add:2 "[skirmisher|E] [pursuit|E]" - skirmishers_pursuit_mult:0 "$skirmishers_pursuit_add$" - skirmishers_toughness_add:2 "[skirmisher|E] [toughness|E]" - skirmishers_toughness_mult:0 "$skirmishers_toughness_add$" - skirmishers_damage_add:2 "[skirmisher|E] [damage|E]" - skirmishers_damage_mult:0 "$skirmishers_damage_add$" - skirmishers_max_size_add:0 "Max Size of [skirmisher|E] [regiments|E]" - skirmishers_maintenance_mult:0 "[skirmisher|E] Maintenance" - skirmishers_recruitment_cost_mult:0 "[skirmisher|E] Recruitment Cost" - archers_damage_add:1 "[archer|E] [damage|E]" - archers_damage_mult:0 "$archers_damage_add$" - archers_toughness_add:1 "[archer|E] [toughness|E]" - archers_toughness_mult:0 "$archers_toughness_add$" - archers_max_size_add:0 "Max Size of [archer|E] [regiments|E]" - archers_maintenance_mult:0 "[archer|E] Maintenance" - archers_recruitment_cost_mult:0 "[archer|E] Recruitment Cost" - light_cavalry_toughness_add:1 "[light_cavalry|E] [toughness|E]" - light_cavalry_toughness_mult:0 "$light_cavalry_toughness_add$" - heavy_infantry_siege_value_add:1 "[heavy_infantry|E] [siege_progress|E]" - heavy_infantry_damage_add:1 "[heavy_infantry|E] [damage|E]" - heavy_infantry_damage_mult:0 "$heavy_infantry_damage_add$" - heavy_infantry_pursuit_add: "[heavy_infantry|E] [pursuit|E]" - heavy_infantry_pursuit_mult: "$heavy_infantry_pursuit_add$" - heavy_infantry_toughness_add:1 "[heavy_infantry|E] [toughness|E]" - heavy_infantry_toughness_mult:0 "$heavy_infantry_toughness_add$" - heavy_infantry_max_size_add:0 "Max Size of [heavy_infantry|E] [regiments|E]" - heavy_infantry_maintenance_mult:0 "[heavy_infantry|E] Maintenance" - heavy_infantry_recruitment_cost_mult:0 "[heavy_infantry|E] Recruitment Cost" - pikemen_siege_value_add:1 "[spearmen|E] [siege_progress|E]" - archers_siege_value_add:1 "[archer|E] [siege_progress|E]" - skirmishers_siege_value_add:1 "[skirmisher|E] [siege_progress|E]" - archer_cavalry_siege_value_add:0 "[archer_cavalry|E] [siege_progress|E]" - light_cavalry_siege_value_add:0 "[light_cavalry|E] [siege_progress|E]" - heavy_cavalry_damage_add:1 "[heavy_cavalry|E] [damage|E]" - heavy_cavalry_damage_mult:0 "$heavy_cavalry_damage_add$" - heavy_cavalry_pursuit_add:1 "[heavy_cavalry|E] [pursuit|E]" - heavy_cavalry_pursuit_mult:0 "$heavy_cavalry_pursuit_add$" - heavy_cavalry_screen_add:1 "[heavy_cavalry|E] [screen|E]" - heavy_cavalry_screen_mult:0 "$heavy_cavalry_screen_add$" - heavy_cavalry_toughness_add:1 "[heavy_cavalry|E] [toughness|E]" - heavy_cavalry_toughness_mult:0 "$heavy_cavalry_toughness_add$" - heavy_cavalry_max_size_add:0 "Max Size of [heavy_cavalry|E] [regiments|E]" - heavy_cavalry_maintenance_mult:0 "[heavy_cavalry|E] Maintenance" - heavy_cavalry_recruitment_cost_mult:0 "[heavy_cavalry|E] Recruitment Cost" - archer_cavalry_damage_add:0 "[archer_cavalry|E] [damage|E]" - archer_cavalry_damage_mult:0 "$archer_cavalry_damage_add$" - archer_cavalry_toughness_add:0 "[archer_cavalry|E] [toughness|E]" - archer_cavalry_toughness_mult:0 "$archer_cavalry_toughness_add$" - archer_cavalry_pursuit_add:0 "[archer_cavalry|E] [pursuit|E]" - archer_cavalry_pursuit_mult:0 "$archer_cavalry_pursuit_add$" - archer_cavalry_screen_add:0 "[archer_cavalry|E] [screen|E]" - archer_cavalry_screen_mult:0 "$archer_cavalry_screen_add$" - archer_cavalry_maintenance_mult:0 "[archer_cavalry|E] Maintenance" - archer_cavalry_recruitment_cost_mult:0 "[archer_cavalry|E] Recruitment Cost" - archer_cavalry_max_size_add:0 "Max Size of [archer_cavalry|E] [regiments|E]" - camel_cavalry_damage_add:0 "[camel_cavalry|E] [damage|E]" - camel_cavalry_damage_mult:0 "$camel_cavalry_damage_add$" - camel_cavalry_toughness_add:0 "[camel_cavalry|E] [toughness|E]" - camel_cavalry_toughness_mult:0 "$camel_cavalry_toughness_add$" - camel_cavalry_pursuit_add:0 "[camel_cavalry|E] [pursuit|E]" - camel_cavalry_pursuit_mult:0 "$camel_cavalry_pursuit_add$" - camel_cavalry_screen_add:0 "[camel_cavalry|E] [screen|E]" - camel_cavalry_screen_mult:0 "$camel_cavalry_screen_add$" - camel_cavalry_maintenance_mult:0 "[camel_cavalry|E] Maintenance" - camel_cavalry_recruitment_cost_mult:0 "[camel_cavalry|E] Recruitment Cost" - camel_cavalry_max_size_add:1 "Max Size of [camel_cavalry|E] [regiments|E]" - elephant_cavalry_damage_add:0 "[elephant_cavalry|E] [damage|E]" - elephant_cavalry_damage_mult:0 "$elephant_cavalry_damage_add$" - elephant_cavalry_toughness_add:0 "[elephant_cavalry|E] [toughness|E]" - elephant_cavalry_toughness_mult:0 "$elephant_cavalry_toughness_add$" - elephant_cavalry_pursuit_add:0 "[elephant_cavalry|E] [pursuit|E]" - elephant_cavalry_pursuit_mult:0 "$elephant_cavalry_pursuit_add$" - elephant_cavalry_screen_add:0 "[elephant_cavalry|E] [screen|E]" - elephant_cavalry_screen_mult:0 "$elephant_cavalry_screen_add$" - elephant_cavalry_maintenance_mult:0 "[elephant_cavalry|E] Maintenance" - elephant_cavalry_recruitment_cost_mult:0 "[elephant_cavalry|E] Recruitment Cost" - elephant_cavalry_max_size_add:0 "Max Size of [elephant_cavalry|E] [regiments|E]" - nomadic_horde_damage_add:0 "[horde|E] [damage|E]" - nomadic_horde_damage_mult:0 "$nomadic_horde_damage_add$" - nomadic_horde_toughness_add:0 "[horde|E] [toughness|E]" - nomadic_horde_toughness_mult:0 "$nomadic_horde_toughness_add$" - nomadic_horde_pursuit_add:0 "[horde|E] [pursuit|E]" - nomadic_horde_pursuit_mult:0 "$nomadic_horde_pursuit_add$" - nomadic_horde_screen_add:0 "[horde|E] [screen|E]" - nomadic_horde_screen_mult:0 "$nomadic_horde_screen_add$" - nomadic_horde_maintenance_mult:0 "[horde|E] Maintenance" - nomadic_horde_recruitment_cost_mult:0 "[horde|E] Recruitment Cost" - nomadic_horde_max_size_add:0 "Max Size of [horde|E] [regiments|E]" - - gunpowder_damage_add: "[gunpowder|E] [damage|E]" - gunpowder_damage_mult: "$gunpowder_damage_add$" - gunpowder_toughness_add: "[gunpowder|E] [toughness|E]" - gunpowder_toughness_mult: "$gunpowder_toughness_add$" - gunpowder_pursuit_add: "[gunpowder|E] [pursuit|E]" - gunpowder_pursuit_mult: "$gunpowder_pursuit_add$" - gunpowder_screen_add: "[gunpowder|E] [screen|E]" - gunpowder_screen_mult: "$gunpowder_screen_add$" - gunpowder_maintenance_mult: "[gunpowder|E] Maintenance" - gunpowder_recruitment_cost_mult: "[gunpowder|E] Recruitment Cost" - gunpowder_max_size_add: "Max Size of [gunpowder|E] [regiments|E]" - gunpowder_siege_value_add: "[gunpowder|E] [siege_progress|E]" - gunpowder_siege_value_mult: "[gunpowder|E] [siege_weapon|E] Effectiveness" - - MOD_COUNTY_FERTILITY_PREFIX: "@county_fertility_icon!" - MOD_MOVEMENT_SPEED_PREFIX:0 "@movement_speed_icon!" - MOD_DREAD_PREFIX:0 "@dread_icon!" - MOD_DISCOVERY_PREFIX:0 "@exposed_icon!" - MOD_TRAVEL_SAFETY_PREFIX:0 "@travel_safety_icon!" - MOD_TRAVEL_SPEED_PREFIX:0 "@travel_speed_icon!" - MOD_TRAVEL_DANGER_PREFIX:0 "@travel_danger_icon!" - MOD_SECRECY_PREFIX:0 "@scheme_secrecy_icon!" - MOD_SPEED_PREFIX: "@scheme_phase_duration_icon!" - MOD_SUCCESS_PREFIX:0 "@scheme_success_icon!" - MOD_SUCCESS_GROWTH_PREFIX: "@scheme_success_growth_icon!" - MOD_SUCCESS_MAX_PREFIX: "@scheme_success_max_icon!" - MOD_PROVISIONS_PREFIX: "@provisions_icon!" - MOD_HERD_PREFIX: "@herd_icon!" - MOD_SUPPLY_PREFIX:0 "@supply_icon!" - MOD_CONTROL_PREFIX:0 "@control_icon!" - MOD_RAID_PREFIX:0 "@raid_icon!" - MOD_ADVANTAGE_PREFIX:0 "@advantage_icon!" - MOD_DAMAGE_PREFIX:0 "@damage_icon!" - MOD_TOUGHNESS_PREFIX:0 "@toughness_icon!" - MOD_PURSUIT_PREFIX:0 "@pursuit_icon!" - MOD_SCREEN_PREFIX:0 "@screen_icon!" - MOD_SIEGE_PROGRESS_PREFIX:0 "@siege_progress_icon!" - MOD_MAA_DAMAGE_ADD:0 "[men_at_arms|E] [damage|E]" - MOD_MAA_DAMAGE_MULT:0 "$MOD_MAA_DAMAGE_ADD$" - MOD_MAA_TOUGHNESS_ADD:0 "[men_at_arms|E] [toughness|E]" - MOD_MAA_TOUGHNESS_MULT:0 "$MOD_MAA_TOUGHNESS_ADD$" - MOD_MAA_PURSUIT_ADD:0 "[men_at_arms|E] [pursuit|E]" - MOD_MAA_PURSUIT_MULT:0 "$MOD_MAA_PURSUIT_ADD$" - MOD_MAA_SCREEN_ADD:0 "[men_at_arms|E] [screen|E]" - MOD_MAA_SCREEN_MULT:0 "$MOD_MAA_SCREEN_ADD$" - MOD_MAA_SIEGE_VALUE_ADD:0 "[men_at_arms|E] [siege_progress|E]" - MOD_MAA_SIEGE_VALUE_MULT:0 "[men_at_arms|E] [siege_weapon|E] Effectiveness" - MOD_STATIONED_MAA_DAMAGE_ADD:0 "[stationed|E] [men_at_arms|E] [damage|E]" - MOD_STATIONED_MAA_DAMAGE_MULT:0 "$MOD_STATIONED_MAA_DAMAGE_ADD$" - MOD_STATIONED_MAA_TOUGHNESS_ADD:0 "[stationed|E] [men_at_arms|E] [toughness|E]" - MOD_STATIONED_MAA_TOUGHNESS_MULT:0 "$MOD_STATIONED_MAA_TOUGHNESS_ADD$" - MOD_STATIONED_MAA_PURSUIT_ADD:0 "[stationed|E] [men_at_arms|E] [pursuit|E]" - MOD_STATIONED_MAA_PURSUIT_MULT:0 "$MOD_STATIONED_MAA_PURSUIT_ADD$" - MOD_STATIONED_MAA_SCREEN_ADD:0 "[stationed|E] [men_at_arms|E] [screen|E]" - MOD_STATIONED_MAA_SCREEN_MULT:0 "$MOD_STATIONED_MAA_SCREEN_ADD$" - MOD_STATIONED_MAA_SIEGE_VALUE_ADD:0 "[stationed|E] [men_at_arms|E] [siege_progress|E]" - MOD_STATIONED_MAA_SIEGE_VALUE_MULT:0 "[stationed|E] [men_at_arms|E] [siege_weapon|E] Effectiveness" - stationed_skirmishers_damage_add:0 "[stationed|E] [skirmishers|E] [damage|E]" - stationed_skirmishers_damage_mult:0 "$stationed_skirmishers_damage_add$" - stationed_skirmishers_toughness_add:0 "[stationed|E] [skirmishers|E] [toughness|E]" - stationed_skirmishers_toughness_mult:0 "$stationed_skirmishers_toughness_add$" - stationed_skirmishers_pursuit_add:0 "[stationed|E] [skirmishers|E] [pursuit|E]" - stationed_skirmishers_pursuit_mult:0 "$stationed_skirmishers_pursuit_add$" - stationed_skirmishers_screen_add:0 "[stationed|E] [skirmishers|E] [screen|E]" - stationed_skirmishers_screen_mult:0 "$stationed_skirmishers_screen_add$" - stationed_skirmishers_siege_value_add:0 "[stationed|E] [skirmishers|E] [siege_progress|E]" - stationed_archers_damage_add:0 "[stationed|E] [archers|E] [damage|E]" - stationed_archers_damage_mult:0 "$stationed_archers_damage_add$" - stationed_archers_toughness_add:0 "[stationed|E] [archers|E] [toughness|E]" - stationed_archers_toughness_mult:0 "$stationed_archers_toughness_add$" - stationed_archers_pursuit_add:0 "[stationed|E] [archers|E] [pursuit|E]" - stationed_archers_pursuit_mult:0 "$stationed_archers_pursuit_add$" - stationed_archers_screen_add:0 "[stationed|E] [archers|E] [screen|E]" - stationed_archers_screen_mult:0 "$stationed_archers_screen_add$" - stationed_archers_siege_value_add:0 "[stationed|E] [archers|E] [siege_progress|E]" - stationed_light_cavalry_damage_add:0 "[stationed|E] [light_cavalry|E] [damage|E]" - stationed_light_cavalry_damage_mult:0 "$stationed_light_cavalry_damage_add$" - stationed_light_cavalry_toughness_add:0 "[stationed|E] [light_cavalry|E] [toughness|E]" - stationed_light_cavalry_toughness_mult:0 "$stationed_light_cavalry_toughness_add$" - stationed_light_cavalry_pursuit_add:0 "[stationed|E] [light_cavalry|E] [pursuit|E]" - stationed_light_cavalry_pursuit_mult:0 "$stationed_light_cavalry_pursuit_add$" - stationed_light_cavalry_screen_add:0 "[stationed|E] [light_cavalry|E] [screen|E]" - stationed_light_cavalry_screen_mult:0 "$stationed_light_cavalry_screen_add$" - stationed_light_cavalry_siege_value_add:0 "[stationed|E] [light_cavalry|E] [siege_progress|E]" - stationed_heavy_cavalry_damage_add:0 "[stationed|E] [heavy_cavalry|E] [damage|E]" - stationed_heavy_cavalry_damage_mult:0 "$stationed_heavy_cavalry_damage_add$" - stationed_heavy_cavalry_toughness_add:0 "[stationed|E] [heavy_cavalry|E] [toughness|E]" - stationed_heavy_cavalry_toughness_mult:0 "$stationed_heavy_cavalry_toughness_add$" - stationed_heavy_cavalry_pursuit_add:0 "[stationed|E] [heavy_cavalry|E] [pursuit|E]" - stationed_heavy_cavalry_pursuit_mult:0 "$stationed_heavy_cavalry_pursuit_add$" - stationed_heavy_cavalry_screen_add:0 "[stationed|E] [heavy_cavalry|E] [screen|E]" - stationed_heavy_cavalry_screen_mult:0 "$stationed_heavy_cavalry_screen_add$" - stationed_heavy_cavalry_siege_value_add:0 "[stationed|E] [heavy_cavalry|E] [siege_progress|E]" - stationed_pikemen_damage_add:0 "[stationed|E] [spearmen|E] [damage|E]" - stationed_pikemen_damage_mult:0 "$stationed_pikemen_damage_add$" - stationed_pikemen_toughness_add:0 "[stationed|E] [spearmen|E] [toughness|E]" - stationed_pikemen_toughness_mult:0 "$stationed_pikemen_toughness_add$" - stationed_pikemen_pursuit_add:0 "[stationed|E] [spearmen|E] [pursuit|E]" - stationed_pikemen_pursuit_mult:0 "$stationed_pikemen_pursuit_add$" - stationed_pikemen_screen_add:0 "[stationed|E] [spearmen|E] [screen|E]" - stationed_pikemen_screen_mult:0 "$stationed_pikemen_screen_add$" - stationed_pikemen_siege_value_add:0 "[stationed|E] [spearmen|E] [siege_progress|E]" - stationed_heavy_infantry_damage_add:0 "[stationed|E] [heavy_infantry|E] [damage|E]" - stationed_heavy_infantry_damage_mult:0 "$stationed_heavy_infantry_damage_add$" - stationed_heavy_infantry_toughness_add:0 "[stationed|E] [heavy_infantry|E] [toughness|E]" - stationed_heavy_infantry_toughness_mult:0 "$stationed_heavy_infantry_toughness_add$" - stationed_heavy_infantry_pursuit_add:0 "[stationed|E] [heavy_infantry|E] [pursuit|E]" - stationed_heavy_infantry_pursuit_mult:0 "$stationed_heavy_infantry_pursuit_add$" - stationed_heavy_infantry_screen_add:0 "[stationed|E] [heavy_infantry|E] [screen|E]" - stationed_heavy_infantry_screen_mult:0 "$stationed_heavy_infantry_screen_add$" - stationed_heavy_infantry_siege_value_add:0 "[stationed|E] [heavy_infantry|E] [siege_progress|E]" - stationed_archer_cavalry_damage_add:0 "[stationed|E] [archer_cavalry|E] [damage|E]" - stationed_archer_cavalry_damage_mult:0 "$stationed_archer_cavalry_damage_add$" - stationed_archer_cavalry_toughness_add:0 "[stationed|E] [archer_cavalry|E] [toughness|E]" - stationed_archer_cavalry_toughness_mult:0 "$stationed_archer_cavalry_toughness_add$" - stationed_archer_cavalry_pursuit_add:0 "[stationed|E] [archer_cavalry|E] [pursuit|E]" - stationed_archer_cavalry_pursuit_mult:0 "$stationed_archer_cavalry_pursuit_add$" - stationed_archer_cavalry_screen_add:0 "[stationed|E] [archer_cavalry|E] [screen|E]" - stationed_archer_cavalry_screen_mult:0 "$stationed_archer_cavalry_screen_add$" - stationed_archer_cavalry_siege_value_add:0 "[stationed|E] [archer_cavalry|E] [siege_progress|E]" - stationed_camel_cavalry_damage_add:0 "[stationed|E] [camel_cavalry|E] [damage|E]" - stationed_camel_cavalry_damage_mult:0 "$stationed_camel_cavalry_damage_add$" - stationed_camel_cavalry_toughness_add:0 "[stationed|E] [camel_cavalry|E] [toughness|E]" - stationed_camel_cavalry_toughness_mult:0 "$stationed_camel_cavalry_toughness_add$" - stationed_camel_cavalry_pursuit_add:0 "[stationed|E] [camel_cavalry|E] [pursuit|E]" - stationed_camel_cavalry_pursuit_mult:0 "$stationed_camel_cavalry_pursuit_add$" - stationed_camel_cavalry_screen_add:0 "[stationed|E] [camel_cavalry|E] [screen|E]" - stationed_camel_cavalry_screen_mult:0 "$stationed_camel_cavalry_screen_add$" - stationed_camel_cavalry_siege_value_add:0 "[stationed|E] [camel_cavalry|E] [siege_progress|E]" - stationed_elephant_cavalry_damage_add:0 "[stationed|E] [elephant_cavalry|E] [damage|E]" - stationed_elephant_cavalry_damage_mult:0 "$stationed_elephant_cavalry_damage_add$" - stationed_elephant_cavalry_toughness_add:0 "[stationed|E] [elephant_cavalry|E] [toughness|E]" - stationed_elephant_cavalry_toughness_mult:0 "$stationed_elephant_cavalry_toughness_add$" - stationed_elephant_cavalry_pursuit_add:0 "[stationed|E] [elephant_cavalry|E] [pursuit|E]" - stationed_elephant_cavalry_pursuit_mult:0 "$stationed_elephant_cavalry_pursuit_add$" - stationed_elephant_cavalry_screen_add:0 "[stationed|E] [elephant_cavalry|E] [screen|E]" - stationed_elephant_cavalry_screen_mult:0 "$stationed_elephant_cavalry_screen_add$" - stationed_elephant_cavalry_siege_value_add:0 "[stationed|E] [elephant_cavalry|E] [siege_progress|E]" - stationed_siege_weapon_damage_add:0 "[stationed|E] [siege_weapon|E] [damage|E]" - stationed_siege_weapon_damage_mult:0 "$stationed_siege_weapon_damage_add$" - stationed_siege_weapon_toughness_add:0 "[stationed|E] [siege_weapon|E] [toughness|E]" - stationed_siege_weapon_toughness_mult:0 "$stationed_siege_weapon_toughness_add$" - stationed_siege_weapon_pursuit_add:0 "[stationed|E] [siege_weapon|E] [pursuit|E]" - stationed_siege_weapon_pursuit_mult:0 "$stationed_siege_weapon_pursuit_add$" - stationed_siege_weapon_screen_add:0 "[stationed|E] [siege_weapon|E] [screen|E]" - stationed_siege_weapon_screen_mult:0 "$stationed_siege_weapon_screen_add$" - stationed_siege_weapon_siege_value_add:0 "[stationed|E] [siege_weapon|E] [siege_progress|E]" - stationed_siege_weapon_siege_value_mult:0 "[stationed|E] [siege_weapon|E] Effectiveness" - stationed_gunpowder_damage_add: "[stationed|E] [gunpowder|E] [damage|E]" - stationed_gunpowder_damage_mult: "$stationed_gunpowder_damage_add$" - stationed_gunpowder_toughness_add: "[stationed|E] [gunpowder|E] [toughness|E]" - stationed_gunpowder_toughness_mult: "$stationed_gunpowder_toughness_add$" - stationed_gunpowder_pursuit_add: "[stationed|E] [gunpowder|E] [pursuit|E]" - stationed_gunpowder_pursuit_mult: "$stationed_gunpowder_pursuit_add$" - stationed_gunpowder_screen_add: "[stationed|E] [gunpowder|E] [screen|E]" - stationed_gunpowder_screen_mult: "$stationed_gunpowder_screen_add$" - stationed_gunpowder_siege_value_add: "[stationed|E] [gunpowder|E] [siege_progress|E]" - stationed_gunpowder_siege_value_mult: "[stationed|E] [gunpowder|E] Effectiveness" - - river_crossing_modifier:0 "River crossing" - attacker_river_crossing_modifier:0 "River crossing" - major_river_crossing_modifier:0 "Major River crossing" - attacker_major_river_crossing_modifier:0 "Major River crossing" - high_ground_modifier:0 "High Ground" - rousing_speech_modifier:0 "Rousing Speech" - sleeping_camp_modifier:0 "Sleeping Camp" - MODIFIER_NAME_AND_DESC:0 "$NAME$\n $DESC$" - MOD_VASSAL_TAX_CONTRIBUTION_ADD:1 "[vassal|E] [tax|E] [modifier_base_contribution|E]" - MOD_VASSAL_TAX_CONTRIBUTION_MULT:1 "[vassal|E] [tax|E] [modifier_contribution|E]" - MOD_INTIMIDATED_VASSAL_TAX_CONTRIBUTION_ADD:1 "[intimidated|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - MOD_INTIMIDATED_VASSAL_TAX_CONTRIBUTION_MULT:1 "[intimidated|E] [vassal|E] [tax|E] [modifier_contribution|E]" - MOD_COWED_VASSAL_TAX_CONTRIBUTION_ADD:1 "[cowed|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - MOD_COWED_VASSAL_TAX_CONTRIBUTION_MULT:1 "[cowed|E] [vassal|E] [tax|E] [modifier_contribution|E]" - MOD_VASSAL_LEVY_CONTRIBUTION_ADD:1 "[vassal|E] [levy|E] [modifier_base_contribution|E]" - MOD_VASSAL_LEVY_CONTRIBUTION_MULT:1 "[vassal|E] [levy|E] [modifier_contribution|E]" - tribal_government_levy_contribution_mult:0 "[tribal|E] $MOD_VASSAL_LEVY_CONTRIBUTION_MULT$" - MOD_INTIMIDATED_VASSAL_LEVY_CONTRIBUTION_ADD:1 "[intimidated|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - MOD_INTIMIDATED_VASSAL_LEVY_CONTRIBUTION_MULT:1 "[intimidated|E] [vassal|E] [levy|E] [modifier_contribution|E]" - MOD_COWED_VASSAL_LEVY_CONTRIBUTION_ADD:1 "[cowed|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - MOD_COWED_VASSAL_LEVY_CONTRIBUTION_MULT:1 "[cowed|E] [vassal|E] [levy|E] [modifier_contribution|E]" - MOD_VASSAL_HERD_CONTRIBUTION_ADD: "[vassal|E] [herd|E] [modifier_base_contribution|E]" - MOD_VASSAL_HERD_CONTRIBUTION_MULT: "[vassal|E] [herd|E] [modifier_contribution|E]" - MOD_VASSAL_HERDER_CONTRIBUTION_ADD: "[vassal|E] [herd|E] [modifier_base_contribution|E]" - MOD_VASSAL_HERDER_CONTRIBUTION_MULT: "[vassal|E] [herd|E] [modifier_contribution|E]" - MOD_VASSAL_PRESTIGE_CONTRIBUTION_ADD: "[vassal|E] [prestige|E] [modifier_base_contribution|E]" - MOD_VASSAL_PRESTIGE_CONTRIBUTION_MULT: "[vassal|E] [prestige|E] [modifier_contribution|E]" - MOD_VASSAL_PIETY_CONTRIBUTION_ADD: "[vassal|E] [piety|E] [modifier_base_contribution|E]" - MOD_VASSAL_PIETY_CONTRIBUTION_MULT: "[vassal|E] [piety|E] [modifier_contribution|E]" - MOD_INTIMIDATED_VASSAL_HERD_CONTRIBUTION_ADD: "[intimidated|E] [vassal|E] [herd|E] [modifier_base_contribution|E]" - MOD_INTIMIDATED_VASSAL_HERD_CONTRIBUTION_MULT: "[intimidated|E] [vassal|E] [herd|E] [modifier_contribution|E]" - MOD_INTIMIDATED_VASSAL_PRESTIGE_CONTRIBUTION_ADD: "[intimidated|E] [vassal|E] [prestige|E] [modifier_base_contribution|E]" - MOD_INTIMIDATED_VASSAL_PRESTIGE_CONTRIBUTION_MULT: "[intimidated|E] [vassal|E] [prestige|E] [modifier_contribution|E]" - MOD_INTIMIDATED_VASSAL_PIETY_CONTRIBUTION_ADD: "[intimidated|E] [vassal|E] [piety|E] [modifier_base_contribution|E]" - MOD_INTIMIDATED_VASSAL_PIETY_CONTRIBUTION_MULT: "[intimidated|E] [vassal|E] [piety|E] [modifier_contribution|E]" - MOD_COWED_VASSAL_HERD_CONTRIBUTION_ADD: "[cowed|E] [vassal|E] [herd|E] [modifier_base_contribution|E]" - MOD_COWED_VASSAL_HERD_CONTRIBUTION_MULT: "[cowed|E] [vassal|E] [herd|E] [modifier_contribution|E]" - MOD_COWED_VASSAL_PRESTIGE_CONTRIBUTION_ADD: "[cowed|E] [vassal|E] [prestige|E] [modifier_base_contribution|E]" - MOD_COWED_VASSAL_PRESTIGE_CONTRIBUTION_MULT: "[cowed|E] [vassal|E] [prestige|E] [modifier_contribution|E]" - MOD_COWED_VASSAL_PIETY_CONTRIBUTION_ADD: "[cowed|E] [vassal|E] [piety|E] [modifier_base_contribution|E]" - MOD_COWED_VASSAL_PIETY_CONTRIBUTION_MULT: "[cowed|E] [vassal|E] [piety|E] [modifier_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_TAX_CONTRIBUTION_ADD:2 "[powerful_vassal|E] [councillor|E] [tax|E] [modifier_base_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_TAX_CONTRIBUTION_MULT:1 "[powerful_vassal|E] [councillor|E] [tax|E] [modifier_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_LEVY_CONTRIBUTION_ADD:2 "[powerful_vassal|E] [councillor|E] [levy|E] [modifier_base_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_LEVY_CONTRIBUTION_MULT:1 "[powerful_vassal|E] [councillor|E] [levy|E] [modifier_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_HERD_CONTRIBUTION_ADD: "[powerful_vassal|E] [councillor|E] [herd|E] [modifier_base_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_HERD_CONTRIBUTION_MULT: "[powerful_vassal|E] [councillor|E] [herd|E] [modifier_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_PRESTIGE_CONTRIBUTION_ADD: "[powerful_vassal|E] [councillor|E] [prestige|E] [modifier_base_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_PRESTIGE_CONTRIBUTION_MULT: "[powerful_vassal|E] [councillor|E] [prestige|E] [modifier_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_PIETY_CONTRIBUTION_ADD: "[powerful_vassal|E] [councillor|E] [piety|E] [modifier_base_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_PIETY_CONTRIBUTION_MULT: "[powerful_vassal|E] [councillor|E] [piety|E] [modifier_contribution|E]" - MOD_VASSAL_BARTER_GOODS_CONTRIBUTION_ADD: "[vassal|E] [trade_goods|E] [modifier_base_contribution|E]" - MOD_VASSAL_BARTER_GOODS_CONTRIBUTION_MULT: "[vassal|E] [trade_goods|E] [modifier_contribution|E]" - MOD_INTIMIDATED_VASSAL_BARTER_GOODS_CONTRIBUTION_ADD: "[intimidated|E] [vassal|E] [trade_goods|E] [modifier_base_contribution|E]" - MOD_INTIMIDATED_VASSAL_BARTER_GOODS_CONTRIBUTION_MULT: "[intimidated|E] [vassal|E] [trade_goods|E] [modifier_contribution|E]" - MOD_COWED_VASSAL_BARTER_GOODS_CONTRIBUTION_ADD: "[cowed|E] [vassal|E] [trade_goods|E] [modifier_base_contribution|E]" - MOD_COWED_VASSAL_BARTER_GOODS_CONTRIBUTION_MULT: "[cowed|E] [vassal|E] [trade_goods|E] [modifier_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_BARTER_GOODS_CONTRIBUTION_ADD: "[powerful_vassal|E] [councillor|E] [trade_goods|E] [modifier_base_contribution|E]" - MOD_HAPPY_POWERFUL_VASSAL_BARTER_GOODS_CONTRIBUTION_MULT: "[powerful_vassal|E] [councillor|E] [trade_goods|E] [modifier_contribution|E]" - republic_government_tax_contribution_add:1 "[republican|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - republic_government_tax_contribution_mult:1 "[republican|E] [vassal|E] [tax|E] [modifier_contribution|E]" - meritocratic_government_tax_contribution_add: "[meritocratic|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - meritocratic_government_tax_contribution_mult: "[meritocratic|E] [vassal|E] [tax|E] [modifier_contribution|E]" - steppe_admin_government_tax_contribution_add: "[steppe_admin|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - steppe_admin_government_tax_contribution_mult: "[steppe_admin|E] [vassal|E] [tax|E] [modifier_contribution|E]" - theocracy_government_tax_contribution_add:1 "[theocracy|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - theocracy_government_tax_contribution_mult:1 "[theocracy|E] [vassal|E] [tax|E] [modifier_contribution|E]" - theocracy_government_levy_contribution_add: "[theocracy|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - theocracy_government_levy_contribution_mult: "[theocracy|E] [vassal|E] [levy|E] [modifier_contribution|E]" - feudal_government_tax_contribution_add:0 "[feudal|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - feudal_government_tax_contribution_mult:0 "[feudal|E] [vassal|E] [tax|E] [modifier_contribution|E]" - clan_government_tax_contribution_add: "[clan|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - clan_government_tax_contribution_mult: "[clan|E] [vassal|E] [tax|E] [modifier_contribution|E]" - clan_government_levy_contribution_add: "[clan|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - clan_government_levy_contribution_mult: "[clan|E] [vassal|E] [levy|E] [modifier_contribution|E]" - tribal_government_tax_contribution_add: "[tribal|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - tribal_government_tax_contribution_mult: "[tribal|E] [vassal|E] [tax|E] [modifier_contribution|E]" - nomad_government_levy_contribution_add: "[nomad|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - nomad_government_levy_contribution_mult: "[nomad|E] [vassal|E] [tax|E] [modifier_contribution|E]" - MOD_SCHEME_PHASE_DURATION: "[scheme_speed|E]" - MOD_SCHEME_RESISTANCE:0 "Scheme Resistance" - MOD_HOSTILE_SCHEME_PHASE_DURATION_ADD: "[scheme_hostile|E] [scheme_speed|E]" - MOD_CONTRACT_SCHEME_PHASE_DURATION_ADD: "[task_contract|E] [scheme_speed|E]" - MOD_PERSONAL_SCHEME_PHASE_DURATION_ADD: "[personal|E] [scheme_speed|E]" - MOD_POLITICAL_SCHEME_PHASE_DURATION_ADD: "[political|E] [scheme_speed|E]" - MOD_ENEMY_HOSTILE_SCHEME_PHASE_DURATION_ADD: "Enemy $MOD_HOSTILE_SCHEME_PHASE_DURATION_ADD$" - MOD_ENEMY_CONTRACT_SCHEME_PHASE_DURATION_ADD: "Enemy $MOD_CONTRACT_SCHEME_PHASE_DURATION_ADD$" - MOD_ENEMY_PERSONAL_SCHEME_PHASE_DURATION_ADD: "Enemy $MOD_PERSONAL_SCHEME_PHASE_DURATION_ADD$" - MOD_ENEMY_POLITICAL_SCHEME_PHASE_DURATION_ADD: "Enemy $MOD_POLITICAL_SCHEME_PHASE_DURATION_ADD$" - MOD_HEALTH:0 "[health|E]" - MOD_CHILD_HEALTH: "[child_health|E]" - MOD_ADULT_HEALTH: "[adult_health|E]" - MOD_ELDERLY_HEALTH: "[elderly_health|E]" - NOT_MOD_HEALTH:0 "$MOD_HEALTH$" - MOD_HEALTH_NEGATE_PENALTY:0 "Disease Resistance ([health|E])" - MOD_MONTHLY_INCOME:0 "[tax|E]" - MOD_MONTHLY_INCOME_MULT:0 "Monthly [income|E]" - MOD_MONTHLY_WAR_INCOME_ADD: "[gold|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_INCOME_MULT: "Monthly [gold|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_PRESTIGE_INCOME_ADD: "[prestige|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_PRESTIGE_INCOME_MULT: "Monthly [prestige|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_PIETY_INCOME_ADD: "[piety|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_PIETY_INCOME_MULT: "Monthly [piety|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_INFLUENCE_INCOME_ADD: "[influence|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_INFLUENCE_INCOME_MULT: "Monthly [influence|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_MERIT_INCOME_ADD: "[merit|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_MERIT_INCOME_MULT: "Monthly [merit|E] [income|E] while at [war|E]" - MOD_MONTHLY_INCOME_PER_STRESS_LEVEL_ADD:0 "[income|E] per [stress_level|E]" - MOD_MONTHLY_INCOME_PER_STRESS_LEVEL_MULT:0 "Monthly [income|E] per [stress_level|E]" - MOD_MONTHLY_INCOME_FROM_HERD_MULT: "Monthly [income|E] from [herd|E]" - MOD_MONTHLY_TREASURY_FROM_VASSALS: "[treasury|E] from [vassals|E]" - MOD_MONTHLY_TREASURY_FROM_VASSALS_MULT: "[treasury|E] from [vassals|E]" - MOD_MONTHLY_TREASURY_FROM_NON_VASSALS: "[treasury|E] excluding [vassals|E]" - MOD_MONTHLY_TREASURY_FROM_NON_VASSALS_MULT: "[treasury|E] excluding [vassals|E]" - MOD_MONTHLY_TREASURY_FROM_LIEGE_ADD: "Monthly [treasury|E]" - MOD_MONTHLY_TREASURY_FROM_LIEGE_MULT: "Monthly [treasury|E]" - MOD_TREASURY_MINISTRY_BUDGET_ALLOCATION: "[treasury_ministry_budget|E] Allocation" - MOD_TREASURY_SALARY_BUDGET_ALLOCATION: "[treasury_salary_budget|E] Allocation" - MOD_TREASURY_MILITARY_BUDGET_ALLOCATION: "[treasury_military_budget|E] Allocation" - MOD_MONTHLY_TREASURY_FROM_MINISTRY_BUDGET_BASE: "Monthly [treasury_ministry_budget_short|E] [treasury_budget_base_rate_short|E]" - MOD_MONTHLY_TREASURY_FROM_MINISTRY_BUDGET_MULT: "Monthly [treasury_ministry_budget|E]" - MOD_MONTHLY_TREASURY_FROM_SALARY_BUDGET_BASE: "Monthly [treasury_salary_budget_short|E] [treasury_budget_base_rate_short|E]" - MOD_MONTHLY_TREASURY_FROM_SALARY_BUDGET_MULT: "[governor_salary|E]" - MOD_MONTHLY_TREASURY_FROM_MILITARY_BUDGET_BASE: "Monthly [treasury_military_budget_short|E] [treasury_budget_base_rate_short|E]" - MOD_MONTHLY_TREASURY_FROM_MILITARY_BUDGET_MULT: "Monthly [treasury_military_budget|E]" - MOD_MONTHLY_PIETY:0 "[piety|E]" - MOD_MONTHLY_PIETY_GAIN_MULT:0 "Monthly [piety|E]" - MOD_MONTHLY_PIETY_GAIN_PER_HAPPY_POWERFUL_VASSAL_ADD:1 "[piety|E] per [powerful_vassal|E] on the [council|E]" - MOD_MONTHLY_PIETY_GAIN_PER_HAPPY_POWERFUL_VASSAL_MULT:1 "Monthly [piety|E] per [powerful_vassal|E] on the [council|E]" - MOD_MONTHLY_PIETY_GAIN_PER_DREAD_ADD:0 "[piety|E] per [dread|E]" - MOD_MONTHLY_PIETY_GAIN_PER_DREAD_MULT:2 "Monthly [piety|E] per [dread|E]" - MOD_MONTHLY_PIETY_GAIN_PER_KNIGHT_ADD:2 "[piety|E] per [knight|E]" - MOD_MONTHLY_PIETY_GAIN_PER_KNIGHT_MULT:4 "Monthly [piety|E] per [knight|E]" - MOD_MONTHLY_PIETY_GAIN_PER_LEGITIMACY_LEVEL_ADD: "[piety|E] per [legitimacy_level|E]" - MOD_MONTHLY_PIETY_GAIN_PER_LEGITIMACY_LEVEL_MULT: "Monthly [piety|E] per [legitimacy_level|E]" - MOD_MONTHLY_PIETY_GAIN_PER_COURT_POSITION_ADD: "[piety|E] per [court_position|E]" - MOD_MONTHLY_PIETY_GAIN_PER_COURT_POSITION_MULT: "Monthly [piety|E] per [court_position|E]" - MOD_MONTHLY_PRESTIGE:0 "[prestige|E]" - MOD_MONTHLY_PRESTIGE_GAIN_MULT:0 "Monthly [prestige|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_HAPPY_POWERFUL_VASSAL_ADD:1 "[prestige|E] per [powerful_vassal|E] on the [council|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_HAPPY_POWERFUL_VASSAL_MULT:1 "Monthly [prestige|E] per [powerful_vassal|E] on the [council|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_DREAD_ADD:0 "[prestige|E] per [dread|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_DREAD_MULT:0 "Monthly [prestige|E] per [dread|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_KNIGHT_ADD:1 "[prestige|E] per [knight|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_KNIGHT_MULT:1 "Monthly [prestige|E] per [knight|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_LEGITIMACY_LEVEL_ADD: "[prestige|E] per [legitimacy_level|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_LEGITIMACY_LEVEL_MULT: "Monthly [prestige|E] per [legitimacy_level|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_COURT_POSITION_ADD: "[prestige|E] per [court_position|E]" - MOD_MONTHLY_PRESTIGE_GAIN_PER_COURT_POSITION_MULT: "Monthly [prestige|E] per [court_position|E]" - MOD_MONTHLY_PIETY_FROM_BUILDINGS_MULT:0 "Monthly [piety|E] from [buildings|E]" - MOD_MONTHLY_PRESTIGE_FROM_BUILDINGS_MULT:0 "Monthly [prestige|E] from [buildings|E]" - MOD_STRESS_GAIN_MULT:0 "[stress|E] Gain" - MOD_STRESS_LOSS_MULT:0 "[stress|E] Loss" - MOD_MONTHLY_DREAD:0 "[dread|E]" - MOD_DREAD_GAIN_MULT:0 "[dread|E] Gain" - MOD_DREAD_LOSS_MULT:0 "[dread|E] Loss" - MOD_TYRANNY_GAIN_MULT:0 "[tyranny|E] Gain" - MOD_TYRANNY_LOSS_MULT:0 "[tyranny|E] Loss" - MOD_MONTHLY_TYRANNY:0 "Monthly [tyranny|E]" - MOD_DREAD_BASELINE_ADD:0 "Natural [dread|E]" - MOD_DREAD_DECAY_ADD:0 "[dread|E] Decay" - MOD_DREAD_DECAY_MULT:0 "$MOD_DREAD_DECAY_ADD$" - MOD_DREAD_PER_TYRANNY_ADD:0 "[dread|E] Gain per [tyranny|E]" - MOD_DREAD_PER_TYRANNY_MULT:0 "$MOD_DREAD_PER_TYRANNY_ADD$" - MOD_COURT_GRANDEUR_BASELINE:1 "[court_grandeur|E] Bonus" - MOD_MONTHLY_COURT_GRANDEUR_CHANGE_ADD:0 "Monthly [court_grandeur|E] Change" - MOD_MONTHLY_COURT_GRANDEUR_CHANGE_MULT:0 "$MOD_MONTHLY_COURT_GRANDEUR_CHANGE_ADD$" - MOD_GENERAL_OPINION:0 "General Opinion" - MOD_GENERAL_OPINION_WITH_VALUE:0 "General Opinion: $VALUE|+=0$" - MOD_MONTHLY_INCOME_PREFIX:0 "[gold_i]" - MOD_MONTHLY_INCOME_MULT_PREFIX:0 "[gold_i]" - MOD_MONTHLY_HERD_PREFIX:0 "[herd_i]" - MOD_MONTHLY_HERD_MULT_PREFIX:0 "[herd_i]" - MOD_MONTHLY_TREASURY_PREFIX: "[treasury_i]" - MOD_MONTHLY_TREASURY_MULT_PREFIX: "[treasury_i]" - MOD_DEVELOPMENT_PREFIX:0 "[development_i]" - MOD_LEGEND_PREFIX: "[legend_i]" - MOD_PLAGUE_PREFIX: "[epidemic_i]" - MOD_LEGITIMACY_PREFIX: "[legitimacy_i]" - MOD_KNIGHT_PREFIX:0 "[knight_i]" - MOD_GOLD_PREFIX:0 "[gold_i]" - MOD_PIETY_PREFIX:0 "[piety_i]" - MOD_PRESTIGE_PREFIX:0 "[prestige_i]" - MOD_SOLDIER_PREFIX:0 "[soldier_i]" - MOD_MONTHLY_PIETY_PREFIX:0 "[piety_i]" - MOD_MONTHLY_PIETY_GAIN_MULT_PREFIX:0 "[piety_i]" - MOD_MONTHLY_PRESTIGE_PREFIX:0 "[prestige_i]" - MOD_MONTHLY_PRESTIGE_GAIN_MULT_PREFIX:1 "[prestige_i]" - MOD_TIME_PREFIX:0 "@time_icon!" - MOD_STRESS_GAIN_PREFIX:0 "[stress_gain_i]" - MOD_STRESS_LOSS_PREFIX:0 "[stress_loss_i]" - MOD_MONTHLY_DREAD_PREFIX:0 "@dread_icon!" - MOD_MONTHLY_POSTFIX:0 "/month" - MOD_MAX_PERSONAL_SCHEMES_ADD:0 "Max [personal_schemes|E]" - MOD_MAX_POLITICAL_SCHEMES_ADD: "Max [political_schemes|E]" - MOD_MAX_CONTRACT_SCHEMES_ADD:0 "Max [contract_schemes|E]" - MOD_MAX_HOSTILE_SCHEMES_ADD:0 "Max [hostile_schemes|E]" - MOD_OWNED_PERSONAL_SCHEME_SUCCESS_ADD: "Initial [personal_scheme|E] [success_chance|E]" - MOD_OWNED_POLITICAL_SCHEME_SUCCESS_ADD: "Initial [political_scheme|E] [success_chance|E]" - MOD_OWNED_CONTRACT_SCHEME_SUCCESS_ADD: "Initial [contract_scheme|E] [success_chance|E]" - MOD_OWNED_HOSTILE_SCHEME_SUCCESS_ADD: "Initial [hostile_scheme|E] [success_chance|E]" - MOD_ENEMY_PERSONAL_SCHEME_SUCCESS_ADD: "Initial Enemy [personal_scheme|E] [success_chance|E]" - MOD_ENEMY_POLITICAL_SCHEME_SUCCESS_ADD: "Initial Enemy [political_scheme|E] [success_chance|E]" - MOD_ENEMY_CONTRACT_SCHEME_SUCCESS_ADD: "Initial Enemy [contract_scheme|E] [success_chance|E]" - MOD_ENEMY_HOSTILE_SCHEME_SUCCESS_ADD: "Initial Enemy [hostile_scheme|E] [success_chance|E]" - MOD_OWNED_PERSONAL_SCHEME_SUCCESS_GROWTH_ADD: "[personal_scheme|E] [scheme_growth_growth|E]" - MOD_OWNED_POLITICAL_SCHEME_SUCCESS_GROWTH_ADD: "[political_scheme|E] [scheme_growth_growth|E]" - MOD_OWNED_CONTRACT_SCHEME_SUCCESS_GROWTH_ADD: "[contract_scheme|E] [scheme_growth_growth|E]" - MOD_OWNED_HOSTILE_SCHEME_SUCCESS_GROWTH_ADD: "[hostile_scheme|E] [scheme_growth_growth|E]" - MOD_ENEMY_PERSONAL_SCHEME_SUCCESS_GROWTH_ADD: "Enemy [personal_scheme|E] [scheme_growth_growth|E]" - MOD_ENEMY_POLITICAL_SCHEME_SUCCESS_GROWTH_ADD: "Enemy [political_scheme|E] [scheme_growth_growth|E]" - MOD_ENEMY_CONTRACT_SCHEME_SUCCESS_GROWTH_ADD: "Enemy [contract_scheme|E] [scheme_growth_growth|E]" - MOD_ENEMY_HOSTILE_SCHEME_SUCCESS_GROWTH_ADD: "Enemy [hostile_scheme|E] [scheme_growth_growth|E]" - MOD_SCHEME_SUCCESS_GROWTH: "[scheme_growth|E]" - MOD_OWNED_PERSONAL_SCHEME_SUCCESS_MAX_ADD: "[personal_scheme|E] [scheme_potential_potential|E]" - MOD_OWNED_POLITICAL_SCHEME_SUCCESS_MAX_ADD: "[political_scheme|E] [scheme_potential_potential|E]" - MOD_OWNED_CONTRACT_SCHEME_SUCCESS_MAX_ADD: "[contract_scheme|E] [scheme_potential_potential|E]" - MOD_OWNED_HOSTILE_SCHEME_SUCCESS_MAX_ADD: "[hostile_scheme|E] [scheme_potential_potential|E]" - MOD_ENEMY_PERSONAL_SCHEME_SUCCESS_MAX_ADD: "Enemy [personal_scheme|E] [scheme_potential_potential|E]" - MOD_ENEMY_POLITICAL_SCHEME_SUCCESS_MAX_ADD: "Enemy [political_scheme|E] [scheme_potential_potential|E]" - MOD_ENEMY_CONTRACT_SCHEME_SUCCESS_MAX_ADD: "Enemy [contract_scheme|E] [scheme_potential_potential|E]" - MOD_ENEMY_HOSTILE_SCHEME_SUCCESS_MAX_ADD: "Enemy [hostile_scheme|E] [scheme_potential_potential|E]" - MOD_SCHEME_SUCCESS_MAX: "Maximum [success_chance|E]" - MOD_OWNED_SCHEME_SECRECY_ADD:0 "[scheme|E] [secrecy|E]" - MOD_ENEMY_SCHEME_SECRECY_ADD: "Enemy [scheme|E] [secrecy|E]" - MOD_PER_SCHEME_PHASE_POSTFIX: " per [scheme_phase_phase|E]" - MOD_DAYS_PER_SCHEME_PHASE_SUFFIX_POSITIVE: " #weak days slower per [scheme_phase|E]#!" - MOD_DAYS_PER_SCHEME_PHASE_SUFFIX_NEGATIVE: " #weak days faster per [scheme_phase|E]#!" - # Scheme modifiers - murder_trusted_advice_modifier:0 "Trusted Advisor Agent" - murder_trusted_by_target_modifier:0 "Trusted by Target" - scheme_drunkard_murder_target_modifier:0 "Drunkard Target" - scheme_drunkard_murdering_drunkard_modifier:0 "Drunkard Targeting Drunkard" - slothful_reduces_power_modifier:0 "Slothful Agent" - hidden_nooks_and_crannies_modifier:0 "Hidden Nooks and Crannies" - hidden_nooks_and_crannies_architect_modifier:0 "Advanced Hidden Nooks and Crannies" - scheme_hero_agent_modifier:0 "Target Is Indebted to Agent" - scheme_agent_closing_in_modifier:0 "Agent Is Closing In" - scheme_talking_agent_modifier:0 "Target Is Talking to Agent" - scheme_stressed_target_modifier:0 "Target Is Stressed" - scheme_impaired_judgment_modifier:0 "Target's Judgment Is Impaired" - scheme_local_infiltrators_modifier:0 "Local Infiltrators" - scheme_court_chaplain_is_in_modifier:0 "Pious Contacts" - scheme_pious_target_court_chaplain_is_in_modifier:0 "Pious Contacts" - scheme_court_chaplain_is_working_against_modifier:0 "Pious Hindrance" - murder_agent_looking_after_child_target_modifier:0 "Agent Looking After Target" - murder_agent_befriending_child_target_modifier:0 "Agent Befriending Target" - known_incestuous_modifier:0 "Known Incest" - vengeful_lover_kin_modifier:0 "Vengeful Kin" - trimming_dynasty_modifier:0 "Trimming Dynasty" - PROWESS_AGE:0 "Old Age: $MOD|=+$" - men_at_arms_advantage:0 "$men_at_arms$ Tactic" - commander_advantage:0 "Commander Skill" - commander_trait_advantage:0 "Commander Traits" - MODIFIER_TIME_LEFT:2 "#weak Until [DATE.GetString]#!" - MODIFIER_MULTIPLE_INSTANCES:1 "$NAME$ ($NUMBER|V$)" - dungeon:0 "Dungeon" - house_arrest:0 "House Arrest" - MOD_IMPRISONED_RELATIVE_OPINION:0 "Relatives' Opinion of Imprisoner" - supply_state_supplied_advantage:2 "Army is Supplied" - supply_state_running_low_advantage:2 "Army Supply is Running Low" - supply_state_starving_advantage:2 "Army is Starving" - recently_disembarked_advantage:1 "Army is [recently_disembarked|E]" - gathering_army_advantage:0 "Gathering Army" - holding_defender_advantage:0 "Defensive [buildings|E]" - combat_debt_level_0: "Owner is slightly in [debt|E]" - combat_debt_level_1: "Owner is one year in [debt|E]" - combat_debt_level_2: "Owner is two years in [debt|E]" - combat_debt_level_3: "Owner is three years in [debt|E]" - combat_debt_level_4: "Owner is four years in [debt|E]" - combat_debt_level_5: "Owner is over five years in [debt|E]" - combat_debt_level_6: "Owner is over ten years in [debt|E]" - combat_debt_level_7: "Owner is over twenty-five years in [debt|E]" - combat_debt_level_8: "Owner is over fifty years in [debt|E]" - combat_debt_level_9: "Owner is over one hundred years in [debt|E]" - treasury_combat_debt_level_0: "Owner is slightly in [treasury_debt|E]" - treasury_combat_debt_level_1: "Owner is one year in [treasury_debt|E]" - treasury_combat_debt_level_2: "Owner is two years in [treasury_debt|E]" - treasury_combat_debt_level_3: "Owner is three years in [treasury_debt|E]" - treasury_combat_debt_level_4: "Owner is four years in [treasury_debt|E]" - treasury_combat_debt_level_5: "Owner is over five years in [treasury_debt|E]" - treasury_combat_debt_level_6: "Owner is over ten years in [treasury_debt|E]" - treasury_combat_debt_level_7: "Owner is over twenty-five years in [treasury_debt|E]" - treasury_combat_debt_level_8: "Owner is over fifty years in [treasury_debt|E]" - treasury_combat_debt_level_9: "Owner is over one hundred years in [treasury_debt|E]" - combat_debt_level_no_income: "Owner is in [debt|E]" #Special no income - debt_level_0: "Slightly in [debt|E]" - debt_level_1: "One year in [debt|E]" - debt_level_2: "Two years in [debt|E]" - debt_level_3: "Three years in [debt|E]" - debt_level_4: "Four years in [debt|E]" - debt_level_5: "Over five years in [debt|E]" - debt_level_6: "Over ten years in [debt|E]" - debt_level_7: "Over twenty-five years in [debt|E]" - debt_level_8: "Over fifty years in [debt|E]" - debt_level_9: "Over one hundred years in [debt|E]" - treasury_debt_level_0: "Slightly in [treasury_debt|E]" - treasury_debt_level_1: "One year in [treasury_debt|E]" - treasury_debt_level_2: "Two years in [treasury_debt|E]" - treasury_debt_level_3: "Three years in [treasury_debt|E]" - treasury_debt_level_4: "Four years in [treasury_debt|E]" - treasury_debt_level_5: "Over five years in [treasury_debt|E]" - treasury_debt_level_6: "Over ten years in [treasury_debt|E]" - treasury_debt_level_7: "Over twenty-five years in [treasury_debt|E]" - treasury_debt_level_8: "Over fifty years in [treasury_debt|E]" - treasury_debt_level_9: "Over one hundred years in [treasury_debt|E]" - debt_level_no_income: "In [debt|E]" #Special no income - no_embarkation_cost:0 "No Embarkation Cost" - domain_limit_plus_one:0 "Game Rule — Plus One" - domain_limit_plus_two:0 "Game Rule — Plus Two" - domain_limit_plus_three:0 "Game Rule — Plus Three" - domain_limit_minus_one:0 "Game Rule — Minus One" - domain_limit_minus_two:0 "Game Rule — Minus Two" - domain_limit_minus_three:0 "Game Rule — Minus Three" - unreformed_faith_province:2 "[unreformed_pagan_combat_bonus|E]" - MOD_SUPPLY_LIMIT_MULT:0 "[supply_limit|E]" - MOD_SUPPLY_LIMIT:0 "[supply_limit|E]" - MOD_HOLDING_FORT_LEVEL:0 "[fort_level|E]" - MOD_ADDITIONAL_HOLDING_FORT_LEVEL:0 "[fort_level|E]" - MOD_CAPITAL_HOLDING_FORT_LEVEL: "[fort_level|E]" - MOD_CAPITAL_ADDITIONAL_HOLDING_FORT_LEVEL: "[fort_level|E]" - MOD_SUPPLY_CAPACITY_ADD:1 "[command_modifier_i|E][supply|E] Capacity" - MOD_SUPPLY_CAPACITY_MULT:0 "$MOD_SUPPLY_CAPACITY_ADD$" - county_capital_province_modifier:0 "County Capital" - temporary_fort_province_modifier: "Temporary Fortifications" - temporary_fort_province_modifier_desc: "Makeshift fortifications created only for the duration of the ongoing war." - disabled_fort_province_modifier:0 "$MOD_HOLDING_FORT_LEVEL$" - independent_realm_capital_province_modifier:0 "Independent [realm|E] Capital" - high_tier_vassal_capital_province_modifier:0 "High Tier Vassal [realm|E] Capital" - capital_province_modifier:0 "[realm_capital|E]" - nomad_capital_province_modifier: "[GetGovernment( 'nomad_government' ).GetName] [realm_capital|E]" - capital_duchy_province_modifier:0 "[capital_duchy|E]" - coastal_province_modifier:0 "Coastal" - coastal_land_province_modifier:0 "Coastal" - coastal_land_county_capital_province_modifier: "Coastal Capital" - allied_province_modifier:0 "Allied Lands" - occupied_allied_province_modifier:0 "Occupied Allied Lands" - neighbor_allied_province_modifier:0 "Neighboring Allied Lands" - enemy_province_modifier:0 "Enemy Lands" - parliamentary_bureaucracy_modifier:0 "Parliamentary Bureaucracy" - parliamentary_bureaucracy_modifier_desc:0 "A codified and expansive set of laws organizes and empowers members of the Three Estates living in this Holding." - flourishing_culture_modifier:0 "Flourishing Culture" - flourishing_culture_modifier_desc:0 "This Holding is experiencing a boon of population, wealth and art." - hungarian_resettlement_modifier:0 "Christian Settlers" - hungarian_resettlement_modifier_desc:0 "This once wild land is experiencing an unexpected growth due to a steady influx of new settlers coming from nearby realms." - magyar_appreciation_modifier:0 "Magyar Sympathy" - magyar_appreciation_modifier_desc:0 "The local Magyar communities in this Holding are comforted by the support shown by their liege towards their ancient traditions." - modifier_dusgruntled_church:0 "Sabotaged Church-Investment" - modifier_dusgruntled_church_desc:0 "The local church is disgruntled ever since a good opportunity slipped away." - modifier_religious_understanding_modifier:0 "Religious Understanding" - modifier_religious_understanding_modifier_desc:0 "The liege of these lands has shown understanding towards this area's religion." - fertile_desert_mountains_modifier:0 "Al-Yamnat" - fertile_desert_mountains_modifier_desc:0 "Since ancient times the southern part of Arabia has been known as the fertile, or felicitous, Arabia. This region harbors more people and is more arable than the surrounding parts of the peninsula.\nCan build [GetBuilding('cereal_fields_01').GetName]" - dodekapolis_modifier: "Dodekapolis" - dodekapolis_modifier_desc: "Since the age of Homer, when the Aeolian and Ionian colonists disembarked upon the western coast of Anatolia, the 12 cities of the Anatolian coast — the #EMP dodekapolis#! — have stood as shining beacons of civilization and human development.\nCan build [GetBuilding('cereal_fields_01').GetName]" - backwater_county_modifier: "Backwater" - backwater_county_modifier_desc: "The bigger they are, the harder they fall. This county, once the territory of implacable rulers of Hellas, has sadly fallen into ignominy. While currently a shadow of its former self, this county may well rise to greatness once again.\n\n#X @warning_icon! This modifier may be removed using the [GetDecisionWithKey('restore_backwater_counties_decision').GetName] [decision|E] once [development|E] of this [county|E] is #V 50#! or more!#!\n\n" - - dance_plague_modifier:0 "Dancing Plague Downplayed" - dance_plague_modifier_desc:0 "The peasants in this area afflicted with ergotism have had their pleas for help ignored by the rulers of the lands." - - disease_spreading_modifier:0 "Ravaged by Disease" - disease_spreading_modifier_desc:0 "Disease is spreading across these lands" - - winter_none_modifier:1 "No [winter|E]" - winter_mild_modifier:1 "Mild [winter|E]" - winter_normal_modifier:1 "Normal [winter|E]" - winter_harsh_modifier:1 "Harsh [winter|E]" - spurned_by_traders:0 "Spurned by Traders" - elevate_mann_and_the_isles_modifier:0 "Elevated the Kingdom of Mann & the Isles" - extra_building_slot:0 "$MOD_NUM_BUILDING_SLOTS$" - army_fortification_province_modifier:0 "Fortification" - MOD_CONSTRUCTION_SPEED:0 "[building|E] Construction Time" - game_concept_great_project_build_speed: "[great_project|E] Construction Time" - MOD_CONSTRUCTION_GOLD_COST:1 "[building|E] Construction Cost" - plains_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Plains" - farmlands_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Farmlands" - hills_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Hills" - mountains_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Mountains" - desert_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Desert" - desert_mountains_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Desert Mountains" - oasis_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Oasis" - jungle_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Jungle" - forest_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Forest" - taiga_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Taiga" - wetlands_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Wetlands" - steppe_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Steppe" - floodplains_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Floodplains" - drylands_construction_gold_cost:0 "$MOD_CONSTRUCTION_GOLD_COST$ in Drylands" - terraced_hills_construction_gold_cost: "$MOD_CONSTRUCTION_GOLD_COST$ in Terraced Hills" - plains_construction_prestige_cost:0 "$plains_construction_gold_cost$" - farmlands_construction_prestige_cost:0 "$farmlands_construction_gold_cost$" - hills_construction_prestige_cost:0 "$hills_construction_gold_cost$" - mountains_construction_prestige_cost:0 "$mountains_construction_gold_cost$" - desert_construction_prestige_cost:0 "$desert_construction_gold_cost$" - desert_mountains_construction_prestige_cost:0 "$desert_mountains_construction_gold_cost$" - oasis_construction_prestige_cost:0 "$oasis_construction_gold_cost$" - jungle_construction_prestige_cost:0 "$jungle_construction_gold_cost$" - forest_construction_prestige_cost:0 "$forest_construction_gold_cost$" - taiga_construction_prestige_cost:0 "$taiga_construction_gold_cost$" - wetlands_construction_prestige_cost:0 "$wetlands_construction_gold_cost$" - steppe_construction_prestige_cost:0 "$steppe_construction_gold_cost$" - floodplains_construction_prestige_cost:0 "$floodplains_construction_gold_cost$" - drylands_construction_prestige_cost:0 "$drylands_construction_gold_cost$" - MOD_CONSTRUCTION_PIETY_COST:1 "[building|E] Construction Cost" - MONTHLY_DEVELOPMENT_GROWTH:0 "Monthly [development|E] Growth" - FROM_NEIGHTBOURS:0 "From Neighbors" - MOD_MONTHLY_DEVELOPMENT_GROWTH:0 "[development|E] Growth" - MOD_MONTHLY_DEVELOPMENT_DECLINE: "[development|E] Decline" - MOD_CHARACTER_CAPITAL_MONTHLY_DEVELOPMENT_GROWTH_ADD:0 "[development|E] Growth in [realm_capital|E]" - MOD_CHARACTER_CAPITAL_MONTHLY_CONTROL_ADD: "[control|E] in [realm_capital|E]" - MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR:1 "[development|E] Growth" - MOD_MONTHLY_DEVELOPMENT_DECLINE_FACTOR: "[development|E] Decline" - plains_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Plains" - farmlands_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Farmlands" - hills_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Hills" - mountains_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Mountains" - desert_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Desert" - desert_mountains_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Desert Mountains" - oasis_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Oasis" - jungle_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Jungle" - forest_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Forest" - taiga_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Taiga" - wetlands_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Wetlands" - steppe_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Steppe" - floodplains_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Floodplains" - drylands_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH$ in Drylands" - plains_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Plains" - farmlands_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Farmlands" - hills_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Hills" - mountains_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Mountains" - desert_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Desert" - desert_mountains_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Desert Mountains" - oasis_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Oasis" - jungle_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Jungle" - forest_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Forest" - taiga_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Taiga" - wetlands_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Wetlands" - steppe_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Steppe" - floodplains_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Floodplains" - drylands_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Drylands" - terraced_hills_development_growth_factor: "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in Terraced Hills" - world_steppe_development_growth_factor:1 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in the [GetGeographicalRegion('world_steppe').GetName] [region|E]" - COUNTY_PROVINCE_MODIFIER: "[PROVINCE.GetHolding.GetName]" - COUNTY_CAPITAL_PROVINCE_MODIFIER: "$COUNTY_PROVINCE_MODIFIER$ ([county_capital|E])" - MOD_MONTHLY_COUNTY_CONTROL_GROWTH:0 "[control|E] Growth" - MOD_MONTHLY_COUNTY_CONTROL_GROWTH_EVEN_IF_BARON:0 "$MOD_MONTHLY_COUNTY_CONTROL_GROWTH$" - MOD_MONTHLY_COUNTY_CONTROL_GROWTH_FACTOR:1 "[control|E] Growth" - MOD_MONTHLY_COUNTY_CONTROL_GROWTH_FACTOR_EVEN_IF_BARON:0 "$MOD_MONTHLY_COUNTY_CONTROL_GROWTH_FACTOR$" - MOD_MONTHLY_COUNTY_CONTROL_GROWTH_AT_WAR:0 "[control|E] Growth when at [war|E]" - MOD_MONTHLY_COUNTY_CONTROL_GROWTH_FACTOR_AT_WAR:0 "[control|E] Growth when at [war|E]" - MOD_MONTHLY_COUNTY_CONTROL_DECLINE: "[control|E] Decline" - MOD_MONTHLY_COUNTY_CONTROL_DECLINE_EVEN_IF_BARON: "$MOD_MONTHLY_COUNTY_CONTROL_DECLINE$" - MOD_MONTHLY_COUNTY_CONTROL_DECLINE_FACTOR: "[control|E] Decline" - MOD_MONTHLY_COUNTY_CONTROL_DECLINE_FACTOR_EVEN_IF_BARON: "$MOD_MONTHLY_COUNTY_CONTROL_DECLINE_FACTOR$" - MOD_MONTHLY_COUNTY_CONTROL_DECLINE_AT_WAR: "[control|E] Decline when at [war|E]" - MOD_MONTHLY_COUNTY_CONTROL_DECLINE_FACTOR_AT_WAR: "[control|E] Decline when at [war|E]" - MOD_CONSTRUCTION_PRESTIGE_COST:1 "[building|E] Construction Cost" - MOD_CONSTRUCTION_HERD_COST: "[building|E] Construction Cost" - MOD_DOMAIN_LIMIT:0 "[domain_limit|E]" - MOD_DOMAIN_LIMIT_WITH_VALUE:0 "[domain_limit|E]: $VALUE|0=+$" - MOD_DOMAIN_LIMIT_MIN: "Minimum [domain_limit|E]" - MOD_DOMAIN_LIMIT_MAX: "Maximum [domain_limit|E]" - MOD_VASSAL_LIMIT:0 "[vassal_limit|E]" - MOD_VASSAL_LIMIT_MIN: "Minimum [vassal_limit|E]" - MOD_VASSAL_LIMIT_MAX: "Maximum [vassal_limit|E]" - MOD_LEVY_SIZE:0 "[levy|E] Size" - MOD_GARRISON_SIZE:0 "[garrison|E] Size" - MOD_RELIGIOUS_HEAD_OPINION:0 "[head_of_faith|E] Opinion" - MOD_SAME_FAITH_OPINION:0 "Same [faith|E] Opinion" - MOD_DIFFERENT_FAITH_OPINION:0 "Different [faith|E] Opinion" - MOD_OPINION_OF_SAME_FAITH:0 "Opinion of Same [faith|E]" - MOD_OPINION_OF_DIFFERENT_FAITH:0 "Opinion of Different [faiths|E]" - MOD_SAME_CULTURE_OPINION:0 "Same [culture|E] Opinion" - MOD_DIFFERENT_CULTURE_OPINION:0 "Different [culture|E] Opinion" - MOD_OPINION_OF_SAME_CULTURE:0 "Opinion of Same [culture|E]" - MOD_OPINION_OF_DIFFERENT_CULTURE:0 "Opinion of Different [cultures|E]" - MOD_IGNORE_NEGATIVE_CULTURE_OPINION:0 "Ignore Negative [culture|E] Opinion" - MOD_IGNORE_NEGATIVE_OPINION_OF_CULTURE:0 "No Negative Opinion of Other [cultures|E]" - MOD_IGNORE_DIFFERENT_FAITH_OPINION:0 "Ignore Different [faith|E] Opinion" - MOD_IGNORE_OPINION_OF_DIFFERENT_FAITH:0 "No Negative Opinion of Other [faiths|E]" - MOD_RELIGIOUS_VASSAL_OPINION:0 "Religious [vassal|E] Opinion" - MOD_DIRECT_VASSAL_OPINION:0 "[direct_vassal|E] Opinion" - MOD_FELLOW_VASSAL_OPINION:0 "Fellow [vassal|E] Opinion" - MOD_FELLOW_TRIBUTARY_OPINION: "Fellow [tributary|E] Opinion" - MOD_FELLOW_CONFEDERATION_MEMBER_OPINION: "Fellow [confederation|E] Member Opinion" - theocracy_government_opinion_same_faith:1 "[theocracy_i|E] [theocratic|E] Ruler of Same [faith|E] Opinion" - clan_government_opinion_same_faith:0 "[clan_i|E] [clan|E] Ruler of Same [faith|E] Opinion" - mandala_government_opinion_same_faith: "[mandala_i|E] [mandala|E] Ruler of Same [faith|E] Opinion" - theocracy_government_opinion:0 "[theocracy_i|E] [theocratic|E] Ruler Opinion" - republic_government_opinion:0 "[republic_i|E] [republican|E] Ruler Opinion" - tribal_government_opinion:0 "[tribal_i|E] [tribal|E] Ruler Opinion" - feudal_government_opinion:0 "[feudal_i|E] [feudal|E] Ruler Opinion" - administrative_government_opinion: "[administrative_i|E] [administrative|E] Ruler Opinion" - landless_adventurer_government_opinion: "[adventurer_i|E] [adventurer|E] Opinion" - MOD_INDEPENDENT_RULER_OPINION:0 "Independent Ruler Opinion" - MOD_OPINION_OF_LIEGE:0 "Opinion of [liege|E]" - MOD_OPINION_OF_SUZERAIN: "Opinion of [suzerain|E]" - MOD_OPINION_OF_PARENTS:0 "Opinion of Parents" - MOD_OPINION_OF_VASSAL:0 "Opinion of [vassals|E]" - MOD_OPINION_OF_TRIBUTARY: "Opinion of [tributary|E]" - MOD_OPINION_OF_DIFFERENT_FAITH_LIEGE:1 "Opinion of Different [faith|E] [liege|E]" - MOD_OPINION_OF_DIFFERENT_FAITH_SUZERAIN: "Opinion of Different [faith|E] [suzerain|E]" - MOD_SPOUSE_OPINION:0 "[spouse|E] Opinion" - MOD_TWIN_OPINION:0 "Twin Opinion" - MOD_CLOSE_RELATIVE_OPINION:0 "[close_family|E] Opinion" - MOD_DYNASTY_HOUSE_OPINION:0 "[house|E] Opinion" - MOD_DYNASTY_OPINION:0 "[dynasty|E] Opinion" - MOD_LIEGE_OPINION:0 "[liege|E] Opinion" - MOD_SUZERAIN_OPINION: "[suzerain|E] Opinion" - MOD_DIFFERENT_FAITH_LIEGE_OPINION:0 "Different [faith|E] [liege|E] Opinion" - MOD_DIFFERENT_FAITH_SUZERAIN_OPINION:0 "Different [faith|E] [suzerain|E] Opinion" - MOD_VASSAL_OPINION:0 "[vassal|E] Opinion" - MOD_TRIBUTARY_OPINION:0 "[tributary|E] Opinion" - MOD_CLERGY_OPINION:0 "[clergy|E] Opinion" - MOD_COUNCILLOR_OPINION:0 "[councillor|E] Opinion" - MOD_REALM_PRIEST_OPINION:0 "[realm_priest|E] Opinion" - MOD_POWERFUL_VASSAL_OPINION:0 "[powerful_vassal|E] Opinion" - MOD_COURTIER_OPINION:0 "[SelectLocalization(IsLandlessAdventurer( GetPlayer ), 'mod_follower_opinion_desc', 'mod_courtier_opinion_desc')] Opinion" - mod_courtier_opinion_desc: "[courtier|E]" - mod_follower_opinion_desc: "[follower|E]" - MOD_GUEST_OPINION:0 "[guest|E] Opinion" - MOD_COURTIER_AND_GUEST_OPINION:0 "[courtier|E] and [guest|E] Opinion" - MOD_PRISONER_OPINION:0 "[prisoner|E] Opinion" - MOD_PLAYER_HEIR_OPINION:0 "[player_heir|E] Opinion" - MOD_CHILD_OPINION:0 "Child Opinion" - MOD_CHILD_EXCEPT_PLAYER_HEIR_OPINION:0 "Child Opinion" - MOD_ELIGIBLE_CHILD_OPINION:0 "[eligible_child|E] Opinion" - MOD_ELIGIBLE_CHILD_EXCEPT_PLAYER_HEIR_OPINION:0 "[eligible_child|E] Opinion" - MOD_TRAVEL_COMPANION_OPINION:0 "Travel Companion Opinion" - clan_government_vassal_opinion:0 "[clan_i|E] [clan|E] [vassal|E] Opinion" - feudal_government_vassal_opinion:0 "[feudal_i|E] [feudal|E] [vassal|E] Opinion" - republic_government_vassal_opinion:0 "[republic_i|E] [republic|E] [vassal|E] Opinion" - mercenary_government_vassal_opinion:0 "[mercenary_i|E] [mercenary|E] [vassal|E] Opinion" - holy_order_government_vassal_opinion:0 "[holy_order_i|E] [holy_order|E] [vassal|E] Opinion" - theocracy_government_vassal_opinion:0 "[theocracy_i|E] [theocracy|E] [vassal|E] Opinion" - tribal_government_vassal_opinion:0 "[tribal_i|E] [tribal|E] [vassal|E] Opinion" - nomad_government_vassal_opinion: "[nomad_i|E] [nomad|E] [vassal|E] Opinion" - administrative_government_vassal_opinion: "[administrative|E] [vassal|E] Opinion" - MOD_DOMAIN_TAX_MULT:1 "[domain|E] [taxes|E]" - MOD_DOMAIN_TAX_MULT_EVEN_IF_BARON:0 "$MOD_DOMAIN_TAX_MULT$" - MOD_DOMAIN_TAX_SAME_FAITH_MULT:1 "[domain|E] [taxes|E] (Same [faith|E])" - MOD_DOMAIN_TAX_SAME_FAITH_MULT_EVEN_IF_BARON:0 "$MOD_DOMAIN_TAX_SAME_FAITH_MULT$" - MOD_DOMAIN_TAX_DIFFERENT_FAITH_MULT:1 "[domain|E] [taxes|E] (Different [faith|E])" - MOD_DOMAIN_TAX_DIFFERENT_FAITH_MULT_EVEN_IF_BARON:0 "$MOD_DOMAIN_TAX_DIFFERENT_FAITH_MULT$" - MOD_VASSAL_TAX_MULT:1 "[vassal|E] [taxes|E]" - MOD_TRIBUTARY_TAX_MULT:1 "[tributary|E] [taxes|E]" - MOD_TRIBUTARY_PIETY_CONTRIBUTION_MULT: "[tributary|E] [piety|E] contributions" - MOD_DIPLOMACY_SCHEME_PHASE_DURATION: "[diplomacy_i]Diplomatic [scheme_speed|E]" - MOD_INTRIGUE_SCHEME_PHASE_DURATION: "[intrigue_i]Intrigue [scheme_speed|E]" - MOD_STEWARDSHIP_SCHEME_PHASE_DURATION: "[stewardship_i]Stewardship [scheme_speed|E]" - MOD_MARTIAL_SCHEME_PHASE_DURATION: "[martial_i]Martial [scheme_speed|E]" - MOD_PROWESS_SCHEME_PHASE_DURATION: "[prowess_i]Prowess [scheme_speed|E]" - MOD_LEARNING_SCHEME_PHASE_DURATION: "[learning_i]Learning [scheme_speed|E]" - MOD_DIPLOMACY_SCHEME_RESISTANCE:1 "Diplomatic [scheme_resistance|E]" - MOD_INTRIGUE_SCHEME_RESISTANCE:1 "Intrigue [scheme_resistance|E]" - MOD_STEWARDSHIP_SCHEME_RESISTANCE:1 "Stewardship [scheme_resistance|E]" - MOD_MARTIAL_SCHEME_RESISTANCE:1 "Martial [scheme_resistance|E]" - MOD_PROWESS_SCHEME_RESISTANCE:1 "Prowess [scheme_resistance|E]" - MOD_LEARNING_SCHEME_RESISTANCE:1 "Learning [scheme_resistance|E]" - MOD_SCHEME_DISCOVERY_CHANCE_MULT:2 "[scheme_discovery_chance|E]" - MOD_HOLDING_CONSTRUCTION_SPEED:0 "[holding|E] Construction Time" - MOD_HOLDING_CONSTRUCTION_GOLD_COST:1 "[holding|E] Construction Cost" - plains_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Plains" - farmlands_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Farmlands" - hills_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Hills" - mountains_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Mountains" - desert_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Desert" - desert_mountains_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Desert Mountains" - oasis_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Oasis" - jungle_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Jungle" - forest_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Forest" - taiga_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Taiga" - wetlands_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Wetlands" - steppe_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Steppe" - floodplains_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Floodplains" - drylands_holding_construction_gold_cost:0 "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Drylands" - terraced_hills_holding_construction_gold_cost: "$MOD_HOLDING_CONSTRUCTION_GOLD_COST$ in Terraced Hills" - plains_holding_construction_prestige_cost:0 "$plains_holding_construction_gold_cost$" - farmlands_holding_construction_prestige_cost:0 "$farmlands_holding_construction_gold_cost$" - hills_holding_construction_prestige_cost:0 "$hills_holding_construction_gold_cost$" - mountains_holding_construction_prestige_cost:0 "$mountains_holding_construction_gold_cost$" - desert_holding_construction_prestige_cost:0 "$desert_holding_construction_gold_cost$" - desert_mountains_holding_construction_prestige_cost:0 "$desert_mountains_holding_construction_gold_cost$" - oasis_holding_construction_prestige_cost:0 "$oasis_holding_construction_gold_cost$" - jungle_holding_construction_prestige_cost:0 "$jungle_holding_construction_gold_cost$" - forest_holding_construction_prestige_cost:0 "$forest_holding_construction_gold_cost$" - taiga_holding_construction_prestige_cost:0 "$taiga_holding_construction_gold_cost$" - wetlands_holding_construction_prestige_cost:0 "$wetlands_holding_construction_gold_cost$" - steppe_holding_construction_prestige_cost:0 "$steppe_holding_construction_gold_cost$" - floodplains_holding_construction_prestige_cost:0 "$floodplains_holding_construction_gold_cost$" - drylands_holding_construction_prestige_cost:0 "$drylands_holding_construction_gold_cost$" - MOD_HOLDING_CONSTRUCTION_PIETY_COST:1 "[holding|E] Construction Cost" - MOD_HOLDING_CONSTRUCTION_PRESTIGE_COST:1 "[holding|E] Construction Cost" - MOD_TAX_MULT:1 "[holding|E] [taxes|E]" - MOD_MEN_AT_ARMS_RECRUITMENT_COST:0 "[men_at_arms|E] Recruitment Cost" - MOD_MEN_AT_ARMS_MAINTENANCE:0 "[men_at_arms|E] Maintenance" - MOD_MEN_AT_ARMS_MAINTENANCE_PER_DREAD_MULT:0 "[men_at_arms|E] Maintenance per [dread|E]" - MOD_ARMY_MAINTENANCE_MULT:1 "[army|E] Gold Maintenance" - MOD_MEN_AT_ARMS_LIMIT:0 "Size of [men_at_arms|E] [regiments|E]" - MOD_MEN_AT_ARMS_TITLE_LIMIT: "Size of [title_men_at_arms|E] [regiments|E]" - MOD_MEN_AT_ARMS_CAP:0 "Max [men_at_arms|E] [regiments|E]" - MOD_MEN_AT_ARMS_TITLE_CAP: "Max [title_men_at_arms|E] [regiments|E]" - MOD_SHORT_REIGN_DURATION_MULT:0 "[short_reign|E] Duration" - MOD_LONG_REIGN_BONUS_MULT:0 "[long_reign|E] Bonus" - MOD_DIPLOMATIC_RANGE_MULT:0 "[diplomatic_range|E]" - MOD_EMBARKATION_COST_MULT:0 "[embarkation|E] Cost" - MOD_NAVAL_MOVEMENT_SPEED_MULT:0 "Naval Speed" - MOD_INBREEDING_CHANCE:0 "[inbreeding|E] Chance" - MOD_OPINION_OF_FEMALE_RULERS:0 "Opinion of Female Rulers" - MOD_OPINION_OF_MALE_RULERS:0 "Opinion of Male Rulers" - OPINION_SAME_FAITH:0 "Same [faith|E]" - OPINION_HOSTILE_FAITH:0 "[FAITH.GetName] is $LEVEL$" - OPINION_HOSTILE_FAITH_MODIFIED:0 "[FAITH.GetName] is $LEVEL$ (modified by [doctrines|E])" - OPINION_HOSTILE_FAITH_COUNTY:0 "Fervor ($FERVOR|0V%/$) and [FAITH.GetName] is $LEVEL$" - OPINION_DIVINE_MARRIAGE:0 "Divine Marriage" - NEGATED_SKILL_PENALTY_HEADER:1 "\n#weak Negating $ACTUAL_NEGATION|P$/$MAX_NEGATION|P$ penalties:#!" - MOD_COUNTY_OPINION_ADD:0 "[county_opinion|E]" - MOD_COUNTY_OPINION_ADD_EVEN_IF_BARON:0 "$MOD_COUNTY_OPINION_ADD$" - MOD_COUNTY_OPINION_DIFFERENT_FAITH_MULT:0 "Different [faith|E] [county_opinion|E]" - MOD_COUNTY_OPINION_DIFFERENT_FAITH_MULT_EVEN_IF_BARON:0 "$MOD_COUNTY_OPINION_DIFFERENT_FAITH_MULT$" - MOD_CULTURE_MERCENARY_MULT:2 "Available [mercenary|E] Companies" - MOD_CULTURAL_FASCINATION_INNOVATION_ADD:0 "[cultural_fascination|E] Progress" - MOD_CULTURAL_FASCINATION_INNOVATION_MULT:0 "$MOD_CULTURAL_FASCINATION_INNOVATION_ADD$" - MOD_CULTURAL_HEAD_ACCEPTANCE_GAIN_MULT:0 "[cultural_acceptance|E] Gain" - MOD_CULTURAL_ACCEPTANCE_GAIN_MULT:0 "[cultural_acceptance|E] Gain" - MODE_CULTURE_TRADITION_MAX_ADD:0 "Maximum [culture_traditions|E]" - NAMED_OPINION_MODIFIER:1 "$MODIFIER$ ([CHARACTER.GetShortUIName])" - MODIFIER_FROM_PROVINCES:0 "From Domain" - MODIFIER_FROM_TITLE_LAWS:1 "[TITLE.GetNamePossessive|U] [title_laws|E]" - MOD_ATTRACTION_OPINION:0 "[attraction|E] Opinion" - MOD_MIN_COMBAT_ROLL:1 "[command_modifier_i|E]Minimum [combat_roll|E]" - MOD_MAX_COMBAT_ROLL:1 "[command_modifier_i|E]Maximum [combat_roll|E]" - MOD_KNIGHT_LIMIT:1 "Number of [knight_i][knights|E]" - MOD_KNIGHT_EFFECTIVENESS_MULT:2 "[knight_effectiveness|E]" - MOD_SUPPLY_DURATION:1 "[command_modifier_i|E][supply|E] Duration" - MOD_POSITIVE_INACTIVE_INHERITANCE_CHANCE:0 "Chance of inheriting good [congenital_traits|E]" - MOD_NEGATIVE_INACTIVE_INHERITANCE_CHANCE:0 "Chance of inheriting bad [congenital_traits|E]" - MOD_POSITIVE_RANDOM_GENETIC_CHANCE:0 "Chance of new good [congenital_traits|E]" - MOD_NEGATIVE_RANDOM_GENETIC_CHANCE:0 "Chance of new bad [congenital_traits|E]" - MOD_GENETIC_TRAIT_STRENGTHEN_CHANCE:0 "Chance of reinforcing [congenital_traits|E]" - MOD_LIFE_EXPECTANCY:0 "[life_expectancy|E] #weak (years)#!" - MOD_YEARS_OF_FERTILITY:0 "Years of [fertility|E]" - held_barony_modifier:0 "Held [baronies|E]" - held_county_modifier:0 "Held [counties|E]" - held_duchy_modifier:0 "Held [duchies|E]" - held_kingdom_modifier:0 "Held [kingdoms|E]" - held_empire_modifier:0 "Held [empires|E]" - held_hegemony_modifier: "Held [hegemonies|E]" - MOD_MONTHLY_LIFESTYLE_XP_GAIN_ADD: "$MOD_MONTHLY_LIFESTYLE_XP_GAIN_MULT$" - MOD_MONTHLY_LIFESTYLE_XP_GAIN_MULT:0 "Monthly [lifestyle|E] Experience" - martial_lifestyle_xp_gain_add: "Martial [lifestyle|E] Experience Gain" - martial_lifestyle_xp_gain_mult: "$martial_lifestyle_xp_gain_add$" - monthly_martial_lifestyle_xp_gain_add: "$monthly_martial_lifestyle_xp_gain_mult$" - monthly_martial_lifestyle_xp_gain_mult:0 "Monthly Martial [lifestyle|E] Experience" - diplomacy_lifestyle_xp_gain_add: "Diplomacy [lifestyle|E] Experience Gain" - diplomacy_lifestyle_xp_gain_mult: "$diplomacy_lifestyle_xp_gain_add$" - monthly_diplomacy_lifestyle_xp_gain_add: "$monthly_diplomacy_lifestyle_xp_gain_mult$" - monthly_diplomacy_lifestyle_xp_gain_mult:0 "Monthly Diplomacy [lifestyle|E] Experience" - stewardship_lifestyle_xp_gain_add: "Stewardship [lifestyle|E] Experience Gain" - stewardship_lifestyle_xp_gain_mult: "$stewardship_lifestyle_xp_gain_add$" - monthly_stewardship_lifestyle_xp_gain_add: "$monthly_stewardship_lifestyle_xp_gain_mult$" - monthly_stewardship_lifestyle_xp_gain_mult:0 "Monthly Stewardship [lifestyle|E] Experience" - learning_lifestyle_xp_gain_add: "Learning [lifestyle|E] Experience Gain" - learning_lifestyle_xp_gain_mult: "$learning_lifestyle_xp_gain_add$" - monthly_learning_lifestyle_xp_gain_add: "$monthly_learning_lifestyle_xp_gain_mult$" - monthly_learning_lifestyle_xp_gain_mult:0 "Monthly Learning [lifestyle|E] Experience" - intrigue_lifestyle_xp_gain_add: "Intrigue [lifestyle|E] Experience Gain" - intrigue_lifestyle_xp_gain_mult: "$intrigue_lifestyle_xp_gain_add$" - monthly_intrigue_lifestyle_xp_gain_add: "$monthly_intrigue_lifestyle_xp_gain_mult$" - monthly_intrigue_lifestyle_xp_gain_mult:0 "Monthly Intrigue [lifestyle|E] Experience" - monthly_wanderer_lifestyle_xp_gain_mult: "Monthly Wandering [lifestyle|E] Experience" - wanderer_lifestyle_xp_gain_mult: "Wandering [lifestyle|E] Experience" - MOD_FAITH_CONVERSION_PIETY_COST_ADD:0 "[faith|E] Conversion Cost" - MOD_FAITH_CONVERSION_PIETY_COST_MULT:0 "$MOD_FAITH_CONVERSION_PIETY_COST_ADD$" - MOD_FAITH_CREATION_PIETY_COST_ADD:1 "[faith|E] Creation and Reformation Cost" - MOD_FAITH_CREATION_PIETY_COST_MULT:0 "$MOD_FAITH_CREATION_PIETY_COST_ADD$" - MOD_NO_PROWESS_LOSS_FROM_AGE:0 "No [prowess|E] Loss from Age" - MOD_MONTHLY_DYNASTY_PRESTIGE:0 "[dynasty_prestige|E]" - MOD_MONTHLY_DYNASTY_PRESTIGE_MULT:0 "Monthly [dynasty_prestige|E]" - MOD_MONTHLY_DYNASTY_PRESTIGE_PREFIX:0 "[dynasty_prestige_i]" - MOD_MONTHLY_DYNASTY_PRESTIGE_MULT_PREFIX:0 "[dynasty_prestige_i]" - MOD_OPINION_FROM_PROWESS_SUFFIX: " / point" - MOD_MONTHLY_INFLUENCE: "[influence|E]" - MOD_MONTHLY_INFLUENCE_PREFIX: "[influence_i|E]" - MOD_MONTHLY_INFLUENCE_MULT: "Monthly [influence|E]" - MOD_MONTHLY_INFLUENCE_MULT_PREFIX: "[influence_i|E]" - MOD_MONTHLY_MERIT: "[merit|E]" - MOD_MONTHLY_MERIT_PREFIX: "[merit_i|E]" - MOD_MONTHLY_MERIT_MULT: "Monthly [merit|E]" - MOD_MONTHLY_MERIT_MULT_PREFIX: "[merit_i|E]" - MOD_MONTHLY_MERIT_PER_TITLE_MAA_VALUE: "Monthly [merit|E] per [title_men_at_arms|E] Base Recruitment Cost" - MOD_MONTHLY_MERIT_PER_TITLE_MAA_VALUE_PREFIX: "[merit_i|E]" - MOD_MONTHLY_MERIT_PER_LIEGE_TAX: "Monthly [merit|E] per total [tax|E] paid to [liege|E]" - MOD_MONTHLY_MERIT_PER_LIEGE_TAX_PREFIX: "[merit_i|E]" - MOD_RAID_SPEED:1 "[command_modifier_i|E][raid|E] Speed" - MOD_HOSTILE_RAID_TIME:0 "Hostile [raid|E] Time" - MOD_HOLDING_FORT_LEVEL_PREFIX:0 "@fort_icon!" - MOD_MAX_LOOT_MULT:1 "[army|E] [loot|E] Capacity" - MOD_EXTERNAL_SLOTS_PREFIX: "@external_slots_icon!" - - city_holding_build_speed:1 "City [buildings|E] Construction Time" - church_holding_build_speed:0 "Temple [buildings|E] Construction Time" - castle_holding_build_speed:0 "Castle [buildings|E] Construction Time" - tribal_holding_build_speed:0 "Tribal [buildings|E] Construction Time" - - city_holding_build_gold_cost:0 "City [buildings|E] Construction Cost" - church_holding_build_gold_cost:0 "Temple [buildings|E] Construction Cost" - castle_holding_build_gold_cost:0 "Castle [buildings|E] Construction Cost" - tribal_holding_build_gold_cost:0 "Tribal [buildings|E] Construction Cost" - - city_holding_holding_build_speed:0 "City [holding|E] Construction Time" - church_holding_holding_build_speed:0 "Temple [holding|E] Construction Time" - castle_holding_holding_build_speed:0 "Castle [holding|E] Construction Time" - tribal_holding_holding_build_speed:0 "Tribal [holding|E] Construction Time" - temple_citadel_holding_holding_build_speed: "Temple Citadel [holding|E] Construction Time" - - city_holding_holding_build_gold_cost:0 "City [holding|E] Construction Cost" - church_holding_holding_build_gold_cost:0 "Temple [holding|E] Construction Cost" - castle_holding_holding_build_gold_cost:0 "Castle [holding|E] Construction Cost" - tribal_holding_holding_build_gold_cost:0 "Tribal [holding|E] Construction Cost" - temple_citadel_holding_build_gold_cost: "Temple Citadel [holding|E] Construction Cost" - temple_citadel_holding_build_piety_cost: "Temple Citadel [building|E] Construction Cost" - temple_citadel_holding_holding_build_gold_cost: "Temple Citadel [holding|E] Construction Cost" - - plains_tax_mult:0 "$MOD_TAX_MULT$ in Plains" - farmlands_tax_mult:0 "$MOD_TAX_MULT$ in Farmlands" - hills_tax_mult:0 "$MOD_TAX_MULT$ in Hills" - terraced_hills_tax_mult:0 "$MOD_TAX_MULT$ in Terraced Hills" - mountains_tax_mult:0 "$MOD_TAX_MULT$ in Mountains" - desert_tax_mult:0 "$MOD_TAX_MULT$ in Desert" - desert_mountains_tax_mult:0 "$MOD_TAX_MULT$ in Desert Mountains" - oasis_tax_mult:0 "$MOD_TAX_MULT$ in Oasis" - jungle_tax_mult:0 "$MOD_TAX_MULT$ in Jungle" - forest_tax_mult:0 "$MOD_TAX_MULT$ in Forest" - taiga_tax_mult:0 "$MOD_TAX_MULT$ in Taiga" - wetlands_tax_mult:0 "$MOD_TAX_MULT$ in Wetlands" - steppe_tax_mult:0 "$MOD_TAX_MULT$ in Steppe" - floodplains_tax_mult:0 "$MOD_TAX_MULT$ in Floodplains" - drylands_tax_mult:0 "$MOD_TAX_MULT$ in Drylands" - plains_levy_size:0 "$MOD_LEVY_SIZE$ in Plains" - farmlands_levy_size:0 "$MOD_LEVY_SIZE$ in Farmlands" - hills_levy_size:0 "$MOD_LEVY_SIZE$ in Hills" - mountains_levy_size:0 "$MOD_LEVY_SIZE$ in Mountains" - desert_levy_size:0 "$MOD_LEVY_SIZE$ in Desert" - desert_mountains_levy_size:0 "$MOD_LEVY_SIZE$ in Desert Mountains" - oasis_levy_size:0 "$MOD_LEVY_SIZE$ in Oasis" - jungle_levy_size:0 "$MOD_LEVY_SIZE$ in Jungle" - forest_levy_size:0 "$MOD_LEVY_SIZE$ in Forest" - taiga_levy_size:0 "$MOD_LEVY_SIZE$ in Taiga" - wetlands_levy_size:0 "$MOD_LEVY_SIZE$ in Wetlands" - steppe_levy_size:0 "$MOD_LEVY_SIZE$ in Steppe" - floodplains_levy_size:0 "$MOD_LEVY_SIZE$ in Floodplains" - drylands_levy_size:0 "$MOD_LEVY_SIZE$ in Drylands" - terraced_hills_levy_size: "$MOD_LEVY_SIZE$ in Terraced Hills" - plains_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Plains" - farmlands_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Farmlands" - hills_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Hills" - mountains_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Mountains" - desert_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Desert" - desert_mountains_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Desert Mountains" - oasis_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Oasis" - jungle_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Jungle" - forest_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Forest" - taiga_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Taiga" - wetlands_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Wetlands" - steppe_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Steppe" - floodplains_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Floodplains" - drylands_supply_limit_mult:0 "$MOD_SUPPLY_LIMIT_MULT$ in Drylands" - - # Scheme modifiers - claim_throne_scheme_phase_duration_mult: "[GetScheme('claim_throne').GetTypeName] [scheme_speed_single|E]" - claim_throne_scheme_phase_duration_add: "[GetScheme('claim_throne').GetTypeName] [scheme_speed_single|E]" - seduce_scheme_phase_duration_add: "[GetScheme('seduce').GetTypeName] [scheme_speed_single|E]" - courting_scheme_phase_duration_add: "[GetScheme('courting').GetTypeName] [scheme_speed_single|E]" - max_courting_schemes_add:0 "Max [GetScheme('courting').GetTypeName] [schemes|E]" - befriend_scheme_phase_duration_add: "[GetScheme('befriend').GetTypeName] [scheme_speed_single|E]" - elope_scheme_phase_duration_add: "[GetScheme('elope').GetTypeName] [scheme_speed_single|E]" - sway_scheme_phase_duration_add: "[GetScheme('sway').GetTypeName] [scheme_speed_single|E]" - murder_scheme_phase_duration_add: "[GetScheme('murder').GetTypeName] [scheme_speed_single|E]" - abduct_scheme_phase_duration_add: "[GetScheme('abduct').GetTypeName] [scheme_speed_single|E]" - learn_language_scheme_phase_duration_add: "[GetScheme('learn_language').GetTypeName] [scheme_speed_single|E]" - learn_language_schemes_add:1 "Max [GetScheme('learn_language').GetTypeName] [schemes|E]" - max_learn_language_schemes_add:0 "$learn_language_schemes_add$" - max_sway_schemes_add:1 "Max [GetScheme('sway').GetTypeName] [schemes|E]" - - #County modifiers - occupation_modifier:0 "Occupied" - siege_modifier:0 "Under Siege" - encouraged_improvement_modifier:0 "Encouraged Improvements" - county_base_modifier:0 "Base Value" - reclaim_britannia_culture_modifier:0 "Reclaimed Britannia" - reclaim_britannia_culture_modifier_desc:1 "[promote_culture|E] ($celtic_group$ cultures only) Speed: #P +75%#!" - - #Tier modifiers - unlanded_modifier:0 "Unlanded" - baron_modifier:0 "Baron" - count_modifier:0 "Count" - duke_modifier:0 "Duke" - king_modifier:0 "King" - emperor_modifier:0 "Emperor" - hegemon_modifier: "Hegemon" - - #Skill tooltips - diplomacy_effect_desc:0 "Increases effectiveness of Diplomacy [schemes|E]\nIncreases [initial_legitimacy|E]" - martial_effect_desc:0 "Increases [advantage|E] when commanding armies in combat" - intrigue_effect_desc: "Every [EmptyScope.ScriptValue('scheme_starting_opportunities_per_intrigue_increment_value')] [intrigue|E] above [EmptyScope.ScriptValue('scheme_starting_opportunities_per_intrigue_threshold_value')] gives +1 starting [scheme_opportunity_opportunities|E] to [intrigue] [schemes|E]\nIncreases starting [success_chance|E] of Intrigue [schemes|E]\nIncreases [scheme_growth|E] of Intrigue [schemes|E]\nIncreases chance to successfully [imprison|E] another character" - learning_effect_desc:0 "Reduces the [prestige|E] cost to increase [crown_authority|E]\nOther characters are more likely to accept when you [demand_conversion|E]" - - piety_level_0: "Sinner" - piety_level_0_desc: "$piety_level_0$ is the only negative [piety_level|E]. The next level is [GetModifier( 'piety_level_1' ).GetNameWithTooltip|L].\nEffects:\n[GetPietyLevelDesc( '(int32)0' )]" - piety_level_1: "Dutiful" - piety_level_1_desc: "$piety_level_1$ is the first [piety_level|E]. The next level is [GetModifier( 'piety_level_2' ).GetNameWithTooltip|L].\nEffects:\n[GetPietyLevelDesc( '(int32)1' )]" - piety_level_2: "Faithful" - piety_level_2_desc: "$piety_level_2$ is the second [piety_level|E]. The next level is [GetModifier( 'piety_level_3' ).GetNameWithTooltip|L].\nEffects:\n[GetPietyLevelDesc( '(int32)2' )]" - piety_level_3: "Devoted Servant" - piety_level_3_desc: "$piety_level_3$ is the third [piety_level|E]. The next level is [GetModifier( 'piety_level_4' ).GetNameWithTooltip|L].\nEffects:\n[GetPietyLevelDesc( '(int32)3' )]" - piety_level_4: "Paragon of Virtue" - piety_level_4_desc: "$piety_level_4$ is the fourth [piety_level|E]. The next level is [GetModifier( 'piety_level_5' ).GetNameWithTooltip|L].\nEffects:\n[GetPietyLevelDesc( '(int32)4' )]" - piety_level_5: "Religious Icon" - piety_level_5_desc: "$piety_level_5$ is the fifth and highest possible [piety_level|E] for [governments|E] who are not [mandala|E]. The next level is [GetModifier( 'piety_level_6' ).GetNameWithTooltip|L].\nEffects:\n[GetPietyLevelDesc('(int32)5')|=+]" - piety_level_6: "Divine" - piety_level_6_desc: "$piety_level_6$ is the sixth [piety_level|E]. The next level is [GetModifier( 'piety_level_7' ).GetNameWithTooltip|L].\n\nWhen a [mandala|E] [ruler|E] dies in a manner acceptable to their [aspect|E], after reaching [GetModifier( 'piety_level_5' ).GetNameWithTooltip|L], that Ruler's [heir|E] develops the ability to progress to this Level of Devotion.\n\nEffects:\n[GetPietyLevelDesc('(int32)6')|=+]" - piety_level_7: "Demigod" - piety_level_7_desc: "$piety_level_7$ is the seventh [piety_level|E]. The next level is [GetModifier( 'piety_level_8' ).GetNameWithTooltip|L].\n\nWhen a [mandala|E] [ruler|E] dies in a manner acceptable to their [aspect|E], after reaching [GetModifier( 'piety_level_6' ).GetNameWithTooltip|L], that Ruler's [heir|E] develops the ability to progress to this Level of Devotion.\n\nEffects:\n[GetPietyLevelDesc('(int32)7')|=+]" - piety_level_8: "Godlike" - piety_level_8_desc: "$piety_level_8$ is the eight and highest possible [piety_level|E] for the [mandala|E] [government|E].\n\nWhen a [mandala|E] [ruler|E] dies in a manner acceptable to their [aspect|E], after reaching [GetModifier( 'piety_level_7' ).GetNameWithTooltip|L], that Ruler's [heir|E] develops the ability to progress to this ultimate Level of Devotion.\n\nEffects:\n[GetPietyLevelDesc('(int32)8')|=+]" - - prestige_level_0: "Disgraced" - prestige_level_0_desc: "$prestige_level_0$ is the lowest possible [prestige_level|E]. The next level is [GetModifier( 'prestige_level_1' ).GetNameWithTooltip|L].\nEffects:\n[GetPrestigeLevelDesc( '(int32)0' )]" - prestige_level_1: "Established" - prestige_level_1_desc: "$prestige_level_1$ is the first [prestige_level|E]. The next level is [GetModifier( 'prestige_level_2' ).GetNameWithTooltip|L].\nEffects:\n[GetPrestigeLevelDesc( '(int32)1' )]" - prestige_level_2: "Distinguished" - prestige_level_2_desc: "$prestige_level_2$ is the second [prestige_level|E]. The next level is [GetModifier( 'prestige_level_3' ).GetNameWithTooltip|L].\nEffects:\n[GetPrestigeLevelDesc( '(int32)2' )]\n[SelectLocalization( IsLandlessAdventurer( GetPlayer ), 'prestige_level_2_laamp_desc', 'blank_line' )]" - prestige_level_3: "Illustrious" - prestige_level_3_desc: "$prestige_level_3$ is the third [prestige_level|E]. The next level is [GetModifier( 'prestige_level_4' ).GetNameWithTooltip|L].\nEffects:\n[GetPrestigeLevelDesc( '(int32)3' )]\n[SelectLocalization( IsLandlessAdventurer( GetPlayer ), 'prestige_level_3_laamp_desc', 'blank_line' )]" - prestige_level_4: "Exalted Among Men" - prestige_level_4_desc: "$prestige_level_4$ is the fourth [prestige_level|E]. The next level is [GetModifier( 'prestige_level_5' ).GetNameWithTooltip|L].\nEffects:\n[GetPrestigeLevelDesc( '(int32)4' )]\n[SelectLocalization( IsLandlessAdventurer( GetPlayer ), 'prestige_level_4_laamp_desc', 'blank_line' )]" - prestige_level_5: "Legendary Figure" - prestige_level_5_desc: "$prestige_level_5$ is the fifth and highest possible [prestige_level|E].\nEffects:\n[GetPrestigeLevelDesc('(int32)5')]\n[SelectLocalization( IsLandlessAdventurer( GetPlayer ), 'prestige_level_5_laamp_desc', 'blank_line' )]" - prestige_level_2_laamp_desc: "Unlocks the following:\n\t#weak $EP3_LAAMP_INVASION_CB_COUNTY_NAME$ [casus_belli|e]\n\t$purchase_land_interaction$ [interaction|E] for [counties|E]\n\t$hire_laamp_mercenaries_interaction$ [county|E] reward\n\t$procure_estate_interaction$ [interaction|E] #!" - prestige_level_3_laamp_desc: "Unlocks the following:\n\t#weak $EP3_LAAMP_INVASION_CB_DUCHY_NAME$ and below [casus_bellis|e]\n\t$purchase_land_interaction$ [interaction|E] for [counties|E] and [duchies|E]\n\t$hire_laamp_mercenaries_interaction$ [interaction|E] [county|E] and [duchy|E] rewards\n\t$seize_realm$ [scheme|E] for [duchies|E] and [counties|E]\n\t$request_laamp_invasion_sponsorship_interaction$ [interaction|E]#!" - prestige_level_4_laamp_desc: "Unlocks the following:\n\t#weak $EP3_LAAMP_INVASION_CB_KINGDOM_NAME$ and below [casus_bellis|e]\n\t$purchase_land_interaction$ [interaction|E] for [duchies|E] and [counties|E] with increased acceptance\n\t$hire_laamp_mercenaries_interaction$ [county|E] and [duchy|E] rewards\n\t$seize_realm$ [scheme|E] for [kingdoms|E] and below\n\t$request_laamp_invasion_sponsorship_interaction$ [interaction|E] #!" - prestige_level_5_laamp_desc: "Unlocks the following:\n\t#weak $EP3_LAAMP_INVASION_CB_EMPIRE_NAME$ and below\n\t$purchase_land_interaction$ [interaction|E] for [duchies|E] and [counties|E] with increased acceptance\n\t$hire_laamp_mercenaries_interaction$ [county|E] and [duchy|E] rewards\n\t$seize_realm$ [scheme|E] for [empires|E] and below\n\t$request_laamp_invasion_sponsorship_interaction$ [interaction|E] #!" - - influence_level_0: "Impotent" - influence_level_0_desc: "$influence_level_0$ is the lowest possible [influence_level|E]. The next level is [GetModifier( 'influence_level_1' ).GetNameWithTooltip|L].\nEffects:\n[GetInfluenceLevelDesc( '(int32)0' )]" - influence_level_1: "Influential" - influence_level_1_desc: "$influence_level_1$ is the second [influence_level|E]. The next level is [GetModifier( 'influence_level_2' ).GetNameWithTooltip|L].\nEffects:\n[GetInfluenceLevelDesc( '(int32)1' )]" - influence_level_2: "Persuasive" - influence_level_2_desc: "$influence_level_2$ is the third [influence_level|E]. The next level is [GetModifier( 'influence_level_3' ).GetNameWithTooltip|L].\nEffects:\n[GetInfluenceLevelDesc( '(int32)2' )]" - influence_level_3: "Controlling" - influence_level_3_desc: "$influence_level_3$ is the fourth [influence_level|E]. The next level is [GetModifier( 'influence_level_4' ).GetNameWithTooltip|L].\nEffects:\n[GetInfluenceLevelDesc( '(int32)3' )]" - influence_level_4: "Authoritative" - influence_level_4_desc: "$influence_level_4$ is the fifth [influence_level|E]. The next level is [GetModifier( 'influence_level_5' ).GetNameWithTooltip|L].\nEffects:\n[GetInfluenceLevelDesc( '(int32)4' )]" - influence_level_5: "Imperious" - influence_level_5_desc: "$influence_level_5$ is the sixth and highest possible [influence_level|E].\nEffects:\n[GetInfluenceLevelDesc( '(int32)5' )]" - - merit_level_0: "No Rank" - merit_level_0_desc: "To be without a [merit_level|E] is to be scholarly worthless and unsuitable for office.\n\nThe first and lowest rank is [GetModifier( 'merit_level_1' ).GetNameWithTooltip|L].\n\n#S Effects:#!\n" - merit_level_1: "9th Rank" - merit_level_1_desc: "The entry level [merit_level|E] of prospective examination entrants.\n\n#S Effects:#!\n" - merit_level_2: "8th Rank" - merit_level_2_desc: "$merit_level_2$ is a barely significant [merit_level|E].\n\n#S Effects:#!\n" - merit_level_3: "7th Rank" - merit_level_3_desc: "$merit_level_3$ is a less significant [merit_level|E].\n\n#S Effects:#!\n" - merit_level_4: "6th Rank" - merit_level_4_desc: "$merit_level_4$ is a fairly significant [merit_level|E].\n\n#S Effects:#!\n" - merit_level_5: "5th Rank" - merit_level_5_desc: "$merit_level_5$ is the fulcrum of the nine ranks, and denotes a \"worthy official\".\n\n#S Effects:#!\n" - merit_level_6: "4th Rank" - merit_level_6_desc: "$merit_level_6$ is a significant [merit_level|E].\n\n#S Effects:#!\n" - merit_level_7: "3rd Rank" - merit_level_7_desc: "$merit_level_7$ is a markedly significant [merit_level|E] of capable administrators whose talents rise well above the ordinary.\n\n#S Effects:#!\n" - merit_level_8: "2nd Rank" - merit_level_8_desc: "$merit_level_8$ is a highly significant [merit_level|E] that recognizes an official of high virtue and talent.\n\n#S Effects:#!\n" - merit_level_9: "1st Rank" - merit_level_9_desc: "$merit_level_9$ is the most significant [merit_level|E] reserved for paragons of both Confucian virtue and scholarly brilliance.\n\n#S Effects:#!\n" - - merit_level_short_0: "None" - merit_level_short_1: "9th" - merit_level_short_2: "8th" - merit_level_short_3: "7th" - merit_level_short_4: "6th" - merit_level_short_5: "5th" - merit_level_short_6: "4th" - merit_level_short_7: "3rd" - merit_level_short_8: "2nd" - merit_level_short_9: "1st" - - stress_level_1:1 "Stress Level 1" - stress_level_2:1 "Stress Level 2" - stress_level_3:1 "Stress Level 3" - stress_level_4:1 "Stress Level 4" - stress_level_5:1 "Stress Level 5" - - recently_looted_modifier:0 "Recently Looted" - recently_looted_modifier_desc:0 "This [holding|E] has been recently looted by a [raid|E] or [siege|E] and cannot be looted until this modifier expires." - - recently_bartered_modifier: "Recently Traded" - recently_bartered_modifier_desc: "A party of traders have recently [traded|E] with this [holding|E] and it cannot be looted or bartered in until this modifier expires." - - shattered_defenses_modifier: "Shattered Defenses" - shattered_defenses_modifier_desc: "This [holding|E] has recently had its defenses shattered by violent raiders." - - hard_difficulty: "Hard" - hard_difficulty_player: "$hard_difficulty$" - very_hard_difficulty: "Very Hard" - very_hard_difficulty_player: "$very_hard_difficulty$" - very_easy_difficulty:0 "Very Easy" - easy_difficulty:0 "Easy" - game_rule_base_value: "Base: $VALUE|=+0$" - difficulty_skilled_courtier_block: "Uninterested in Marriage: $VALUE|=+0$" - commander_enemy_terrain_advantage:0 "Counters enemy defensive terrain advantage" - - # Informs players about scripted county modifiers for council tasks (e.g., either faster county conversions, or slower ones depending). - CUSTOM_MOD_FAITH_CONVERSION_SPEED:0 "$task_conversion$ Speed: " - CUSTOM_MOD_CULTURE_CONVERSION_SPEED:0 "$task_promote_culture$ Speed: " - CUSTOM_MOD_FABRICATE_CLAIM_SPEED:0 "$task_fabricate_claim$ Speed: " - - # Informs players about the stress loss decisions enabled by coping mechanism traits. - CUSTOM_MOD_ENABLES_STRESS_LOSS_DECISIONS:0 "Enables a special [decision|E] that #P reduces#! [stress|E]" - - # RoCo - world_innovation_elephants_development_growth_factor:0 "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in the [GetGeographicalRegion('world_innovation_elephants').GetName] [region|E]" - - # FP3 - world_persian_empire_development_growth_factor: "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in the [GetGeographicalRegion('world_persian_empire').GetName] [region|E]" - - # Travel - MOD_TRAVEL_SPEED:1 "[travel|E] Speed" - MOD_TRAVEL_SPEED_MULT:0 "$MOD_TRAVEL_SPEED$" - MOD_TRAVEL_SAFETY:1 "[travel|E] Safety" - MOD_TRAVEL_SAFETY_MULT:0 "$MOD_TRAVEL_SAFETY$" - MOD_CHARACTER_TRAVEL_SPEED:0 "$MOD_TRAVEL_SPEED$" - MOD_CHARACTER_TRAVEL_SPEED_MULT:0 "$MOD_TRAVEL_SPEED$" - MOD_CHARACTER_TRAVEL_SAFETY:0 "$MOD_TRAVEL_SAFETY$" - MOD_CHARACTER_TRAVEL_SAFETY_MULT:0 "$MOD_TRAVEL_SAFETY$" - MOD_TRAVEL_DANGER:0 "[travel_danger|E]" - MOD_TRAVEL_DANGER_EPIDEMIC: "[epidemic|E] [travel_danger|E]" - hills_travel_danger:0 "[GetTerrain( 'hills' ).GetName] [travel_danger|E]" - mountains_travel_danger:0 "[GetTerrain( 'mountains' ).GetName] [travel_danger|E]" - desert_travel_danger:0 "[GetTerrain( 'desert' ).GetName] [travel_danger|E]" - desert_mountains_travel_danger:0 "[GetTerrain( 'desert_mountains' ).GetName] [travel_danger|E]" - terraced_hills_travel_danger: "[GetTerrain( 'terraced_hills' ).GetName] [travel_danger|E]" - jungle_travel_danger:0 "[GetTerrain( 'jungle' ).GetName] [travel_danger|E]" - forest_travel_danger:0 "[GetTerrain( 'forest' ).GetName] [travel_danger|E]" - taiga_travel_danger:0 "[GetTerrain( 'taiga' ).GetName] [travel_danger|E]" - wetlands_travel_danger:0 "[GetTerrain( 'wetlands' ).GetName] [travel_danger|E]" - steppe_travel_danger:0 "[GetTerrain( 'steppe' ).GetName] [travel_danger|E]" - floodplains_travel_danger:0 "[GetTerrain( 'floodplains' ).GetName] [travel_danger|E]" - drylands_travel_danger:0 "[GetTerrain( 'drylands' ).GetName] [travel_danger|E]" - sea_travel_danger:0 "[GetTerrain( 'sea' ).GetName] [travel_danger|E]" - coastal_sea_travel_danger:0 "[GetTerrain( 'coastal_sea' ).GetName] [travel_danger|E]" - plains_travel_danger: "[GetTerrain( 'plains' ).GetName] [travel_danger|E]" - farmlands_travel_danger: "[GetTerrain( 'farmlands' ).GetName] [travel_danger|E]" - oasis_travel_danger: "[GetTerrain( 'oasis' ).GetName] [travel_danger|E]" - - MOD_STRIFE_OPINION_GAIN_MULT:0 "[strife|E] Gain" - MOD_STRIFE_OPINION_LOSS_MULT:0 "[strife|E] Loss" - - # Accolades - MOD_ACTIVE_ACCOLADES:0 "[accolades|E] Available" - MOD_ACCOLADE_GLORY_GAIN_MULT:0 "[accolade|e] [glory|E] Gain" - - MOD_EPIDEMIC_RESISTANCE: "[epidemic_resistance|E]" - MOD_OWNED_LEGEND_SPREAD_ADD: "[legend|E] Spread Chance" - MOD_OWNED_LEGEND_SPREAD_MULT: "$MOD_OWNED_LEGEND_SPREAD_ADD$" - - MOD_LEGITIMACY_GAIN_MULT: "[legitimacy|E] Gain" - MOD_LEGITIMACY_LOSS_MULT: "[legitimacy|E] Loss" - MOD_LEGITIMACY_MONTHLY_CHANGE: "[legitimacy|E]" - - MOD_LEVY_MAINTENANCE:0 "[levy|E] Maintenance" - MOD_UNCONTROLLED_PROVINCE_ADVANTAGE:0 "Uncontrolled Territory Attacker [advantage|E]" - MOD_LEVY_ATTACK:0 "[levy|E] [damage|E]" - MOD_LEVY_TOUGHNESS:0 "[levy|E] [toughness|E]" - MOD_LEVY_SIEGE:0 "[levy|E] [siege_progress|E]" - MOD_LEVY_PURSUIT:0 "[levy|E] [pursuit|E]" - MOD_LEVY_SCREEN:0 "[levy|E] [screen|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_DREAD:0 "[knight_effectiveness|E] per [dread|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_TYRANNY:0 "[knight_effectiveness|E] per [tyranny|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_PROWESS: "[knight_effectiveness|E] per [prowess_i|E][prowess|E] [skill|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_DIPLOMACY: "[knight_effectiveness|E] per [diplomacy_i|E][diplomacy|E] [skill|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_INTRIGUE: "[knight_effectiveness|E] per [intrigue_i|E][intrigue|E] [skill|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_LEARNING: "[knight_effectiveness|E] per [learning_i|E][learning|E] [skill|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_MARTIAL: "[knight_effectiveness|E] per [martial_i|E][martial|E] [skill|E]" - MOD_KNIGHT_EFFECTIVENESS_PER_STEWARDSHIP: "[knight_effectiveness|E] per [stewardship_i|E][stewardship|E] [skill|E]" - MOD_STRESS_LOSS_PER_PIETY_LEVEL:0 "[stress|E] loss per [piety_level|E]" - MOD_STRESS_LOSS_PER_PRESTIGE_LEVEL:0 "[stress|E] loss per [prestige_level|E]" - - pilgrim_xp_gain_mult:0 "[GetTrait('pilgrim').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - governor_xp_gain_mult: "[GetTrait('governor').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - confucian_education_xp_gain_mult: "[GetTrait('confucian_education').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - lifestyle_traveler_xp_gain_mult:0 "[GetTrait('lifestyle_traveler').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - lifestyle_reveler_xp_gain_mult:0 "[GetTrait('lifestyle_reveler').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - - lifestyle_hunter_xp_gain_mult:0 "[GetTrait('lifestyle_hunter').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - trait_track_hunter_xp_gain_mult:0 "Venator #weak ([GetTrait('lifestyle_hunter').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_falconer_xp_gain_mult:0 "Falconer #weak ([GetTrait('lifestyle_hunter').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_lifestyle_poet_xp_gain_mult:0 "Poetry #weak ([GetTrait('lifestyle_poet').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_peasant_leader_xp_gain_mult: "Notoriety #weak ([GetTrait('peasant_leader').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - - lifestyle_mystic_xp_gain_mult:0 "[GetTrait('lifestyle_mystic').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - - trait_track_travel_xp_gain_mult: "Wanderer #weak ([GetTrait('lifestyle_traveler').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_danger_xp_gain_mult: "Seasoned #weak ([GetTrait('lifestyle_traveler').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - - tourney_participant_xp_gain_mult:0 "[GetTrait('tourney_participant').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - trait_track_foot_xp_gain_mult:0 "Foot #weak ([GetTrait('tourney_participant').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_bow_xp_gain_mult:0 "Bow #weak ([GetTrait('tourney_participant').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_horse_xp_gain_mult:0 "Horse #weak ([GetTrait('tourney_participant').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - trait_track_wit_xp_gain_mult:0 "Wit #weak ([GetTrait('tourney_participant').GetName( GetNullCharacter )])#! [trait_level_track_xp|E] Gain" - - trait_track_lifestyle_blademaster_xp_gain_mult:0 "[GetTrait('lifestyle_blademaster').GetName( GetNullCharacter )] [trait_level_track_xp|E]" - lifestyle_blademaster_xp_gain_mult:0 "[GetTrait('lifestyle_blademaster').GetName( GetNullCharacter )] [trait_level_track_xp|E] gain" - - lifestyle_physician_xp_gain_mult: "[GetTrait('lifestyle_physician').GetName( GetNullCharacter )] [trait_level_track_xp|E] gain" - - pilgrim_xp_degradation_mult:0 "Monthly [GetTrait('pilgrim').GetName( GetNullCharacter )] [trait_level_track_xp|E] degradation" - governor_xp_degradation_mult: "Monthly [GetTrait('governor').GetName( GetNullCharacter )] [trait_level_track_xp|E] degradation" - lifestyle_traveler_xp_degradation_mult:0 "Monthly [GetTrait('lifestyle_traveler').GetName( GetNullCharacter )] [trait_level_track_xp|E] degradation" - lifestyle_reveler_xp_degradation_mult:0 "Monthly [GetTrait('lifestyle_reveler').GetName( GetNullCharacter )] [trait_level_track_xp|E] degradation" - lifestyle_hunter_xp_degradation_mult:0 "Monthly [GetTrait('lifestyle_hunter').GetName( GetNullCharacter )] [trait_level_track_xp|E] degradation" - tourney_participant_xp_degradation_mult:0 "Monthly [GetTrait('tourney_participant').GetName( GetNullCharacter )] [trait_level_track_xp|E] degradation" - - #FP3 - max_murder_schemes_add: "Max [GetScheme('murder').GetTypeName] [schemes|E]" - MODIFIER_DEFINITION_VALUE_PER_HOUSE_UNITY_MEMBER: " \t#weak Increase per [landed|E] [house|E] member#!" - MODIFIER_DEFINITION_MAIN_DESC_HOUSE_UNITY: "This modifier increases per [landed|E] [house|E] member (#bold $MULTIPLIER|0$#!/#bold 10#!)" - MODIFIER_DEFINITION_BASE_VALUE: "Base value" - avalanche_impact:0 "Avalanche Impact" - avalanche_impact_desc:0 "This holding is affected by the recent passing of an enormous avalanche." - - convert_to_witchcraft_scheme_speed_mult: "[GetScheme('convert_to_witchcraft').GetTypeName] [scheme_speed_single|E]" - - MOD_HOSTAGE_PRESTIGE_MULT: "Monthly [prestige|E] from [hostages|E]" - MOD_HOSTAGE_PIETY_MULT: "Monthly [piety|E] from [hostages|E]" - MOD_HOSTAGE_RENOWN_MULT: "Monthly [dynasty_prestige|E] from [hostages|E]" - MOD_HOSTAGE_INCOME_MULT: "Monthly income from [hostages|E]" - - player_facing_ai_energy: "Energy" - player_facing_ai_honor: "Honor" - player_facing_ai_vengefulness: "Vengefulness" - player_facing_ai_greed: "Greed" - player_facing_ai_compassion: "Compassion" - player_facing_ai_rationality: "Rationality" - player_facing_ai_sociability: "Sociability" - player_facing_ai_zeal: "Zeal" - player_facing_ai_boldness: "Boldness" - - glory_hound_ai_energy: "[GetVassalStance( 'glory_hound' ).GetTextIcon][GetVassalStance( 'glory_hound' ).GetName] [personality|E] $player_facing_ai_energy$" - glory_hound_ai_boldness: "[GetVassalStance( 'glory_hound' ).GetTextIcon][GetVassalStance( 'glory_hound' ).GetName] [personality|E] $player_facing_ai_boldness$" - - zealot_ai_vengefulness: "[GetVassalStance( 'zealot' ).GetTextIcon][GetVassalStance( 'zealot' ).GetName] [personality|E] $player_facing_ai_vengefulness$" - zealot_ai_zeal: "[GetVassalStance( 'zealot' ).GetTextIcon][GetVassalStance( 'zealot' ).GetName] [personality|E] $player_facing_ai_zeal$" - zealot_ai_boldness: "[GetVassalStance( 'zealot' ).GetTextIcon][GetVassalStance( 'zealot' ).GetName] [personality|E] $player_facing_ai_boldness$" - - minority_ai_energy: "[GetVassalStance( 'minority' ).GetTextIcon][GetVassalStance( 'minority' ).GetName] [personality|E] $player_facing_ai_energy$" - MOD_NUM_TAX_SLOTS: "Available [tax_jurisdictions|E]" - clan_tax_slot_add: "$MOD_NUM_TAX_SLOTS$" # Can re-localize if we re-use tax slots in other governments - - MOD_CULTURE_INNOVATION_PROGRESS_CHANCE_FROM_SPREAD_ADD: "[innovation|E] progress chance from [spread|E]" - MOD_CHARACTER_INNOVATION_PROGRESS_CHANCE_FROM_FASCINATION_ADD: "[innovation|E] progress chance from [fascination|E]" - MOD_INNOVATIONS_MONTHLY_POSTFIX: "% / month" - - AFFECTING_MODIFIERS_LABEL: "Affecting modifiers:" - PROVINCE_MODIFIERS: "[barony|E] Modifiers" - COUNTY_MODIFIERS: "[county|E] Modifiers" - PROVINCE_AND_COUNTY_MODIFIERS: "[barony|E] and [county|E] Modifiers" - OWNER_MODIFIERS: "Owner Modifiers" - - ai_conqueror_modifier: "Conqueror" - ai_conqueror_modifier_desc: "$struggle_parameter_unlocks_forced_vassalization_casus_belli$\nRemoves [prestige_i|E][prestige|E] Costs from [casus_bellis|E]\nRemoves [piety_i|E][piety|E] Costs from [casus_bellis|E]\n[armies|e] will #bold flock#! to their banners\n[claimants|e] will #bold crowd #!their [court|e]\n[vassals|e] will #bold fall in line#!\n\n#low The world lies before me, ripe for the taking. It will be mine.#!" - - ai_weak_conqueror_modifier: "Conqueror" - ai_weak_conqueror_modifier_desc: "#low The world lies before me, ripe for the taking. It will be mine.#!" - - ai_extreme_conqueror_modifier: "Scourge of the Gods" - ai_extreme_conqueror_modifier_desc: "#low I am the punishment of God. If you had not committed great sins, God would not have sent a punishment like me upon you.\n\n#!Unlocks unlimited #V Invasion#! [casus_bellis|E]" - - OPINION_HIGH_PROWESS: "High @skill_prowess_icon![prowess|E]" - OPINION_LOW_PROWESS: "Low @skill_prowess_icon![prowess|E]" - OPINION_DISDAIN_HIGH_PROWESS: "Disdain for $OPINION_HIGH_PROWESS$" - OPINION_DISDAIN_LOW_PROWESS: "Disdain for $OPINION_LOW_PROWESS$" - OPINION_RESPECT_HIGH_PROWESS: "Respect for $OPINION_HIGH_PROWESS$" - OPINION_RESPECT_LOW_PROWESS: "Respect for $OPINION_LOW_PROWESS$" - MOD_OPINION_FROM_HIGH_PROWESS: "[opinion|E] bonus from $OPINION_HIGH_PROWESS$" - MOD_OPINION_FROM_LOW_PROWESS: "[opinion|E] penalty from $OPINION_LOW_PROWESS$" - - # EP3 - administrative_government_tax_contribution_add: "[administrative|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - administrative_government_tax_contribution_mult: "[administrative|E] [vassal|E] [tax|E] [modifier_contribution|E]" - administrative_government_levy_contribution_add: "[administrative|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - administrative_government_levy_contribution_mult: "[administrative|E] [vassal|E] [levy|E] [modifier_contribution|E]" - MODIFIER_DEFINITION_MAIN_DESC_INFLUENCE_LEVEL: "This modifier increases per [influence_level|E] ($MULTIPLIER|+=0$)" - MODIFIER_DEFINITION_VALUE_PER_INFLUENCE_LEVEL: "\t#weak Increase per [influence_level|E]#!" - MODIFIER_DEFINITION_MAIN_DESC_GOVERNANCE_TIER: "This modifier increases per [governance_issue_tier|E] ($MULTIPLIER|+=0$)" - MODIFIER_DEFINITION_VALUE_PER_GOVERNANCE_TIER: "\t#weak Increase per [governance_issue_tier|E] Tier#!" - MODIFIER_DEFINITION_ESTATE_SCALING_DESC: "This modifier increases based on your [estate|E] ($MULTIPLIER|+=0$)" - MODIFIER_DEFINITION_VALUE_ESTATE_FACTORS: "\t#weak Increase per contributing factor#!" - MODIFIER_DEFINITION_MAIN_DESC_EPARCH_APTITUDE: "This modifier increases with [aptitude|E] ($MULTIPLIER|+=0$)" - MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE: "\t#weak Increase per [aptitude|E] level#!" - MOD_DOMICILE_MONTHLY_GOLD_ADD: "[domicile|E] [income|E]" - MOD_DOMICILE_MONTHLY_PRESTIGE_ADD: "[domicile|E] [prestige|E]" - MOD_DOMICILE_MONTHLY_PIETY_ADD: "[domicile|E] [piety|E]" - MOD_DOMICILE_MONTHLY_INFLUENCE_ADD: "[domicile|E] [influence|E]" - MOD_DOMICILE_MONTHLY_HERD_ADD: "[domicile|E] [herd|E]" - MOD_DOMICILE_MONTHLY_GOLD_MULT: "$MOD_DOMICILE_MONTHLY_GOLD_ADD$" - MOD_DOMICILE_MONTHLY_PRESTIGE_MULT: "Monthly $MOD_DOMICILE_MONTHLY_PRESTIGE_ADD$" - MOD_DOMICILE_MONTHLY_PIETY_MULT: "Monthly $MOD_DOMICILE_MONTHLY_PIETY_ADD$" - MOD_DOMICILE_MONTHLY_INFLUENCE_MULT: "Monthly $MOD_DOMICILE_MONTHLY_INFLUENCE_ADD$" - MOD_DOMICILE_MONTHLY_HERD_MULT: "Monthly $MOD_DOMICILE_MONTHLY_HERD_ADD$" - MOD_DOMICILE_BUILD_GOLD_COST: "[domicile_building|E] Construction Cost" - MOD_DOMICILE_CONSTRUCTION_SPEED: "$game_concept_domicile_build_speed$" - MOD_DOMICILE_TRAVEL_SPEED: "$game_concept_domicile_travel_speed$" - MOD_DOMICILE_EXTERNAL_SLOTS_CAPACITY_ADD: "Number of [domicile_building_slots|E]" - - MOD_PROVISIONS_USE_MULT: "[provisions|E] Use" - plains_provisions_use_mult: "[GetTerrain( 'plains' ).GetName] [provisions|E] Use" - farmlands_provisions_use_mult: "[GetTerrain( 'farmlands' ).GetName] [provisions|E] Use" - hills_provisions_use_mult: "[GetTerrain( 'hills' ).GetName] [provisions|E] Use" - mountains_provisions_use_mult: "[GetTerrain( 'mountains' ).GetName] [provisions|E] Use" - oasis_provisions_use_mult: "[GetTerrain( 'oasis' ).GetName] [provisions|E] Use" - jungle_provisions_use_mult: "[GetTerrain( 'jungle' ).GetName] [provisions|E] Use" - forest_provisions_use_mult: "[GetTerrain( 'forest' ).GetName] [provisions|E] Use" - taiga_provisions_use_mult: "[GetTerrain( 'taiga' ).GetName] [provisions|E] Use" - wetlands_provisions_use_mult: "[GetTerrain( 'wetlands' ).GetName] [provisions|E] Use" - steppe_provisions_use_mult: "[GetTerrain( 'steppe' ).GetName] [provisions|E] Use" - floodplains_provisions_use_mult: "[GetTerrain( 'floodplains' ).GetName] [provisions|E] Use" - desert_provisions_use_mult: "[GetTerrain( 'desert' ).GetName] [provisions|E] Use" - desert_mountains_provisions_use_mult: "[GetTerrain( 'desert_mountains' ).GetName] [provisions|E] Use" - drylands_provisions_use_mult: "[GetTerrain( 'drylands' ).GetName] [provisions|E] Use" - terraced_hills_provisions_use_mult: "[GetTerrain( 'terraced_hills' ).GetName] [provisions|E] Use" - - plains_barter_goods_mult: "[GetTerrain( 'plains' ).GetName] [trade_goods|E]" - farmlands_barter_goods_mult: "[GetTerrain( 'farmlands' ).GetName] [trade_goods|E]" - hills_barter_goods_mult: "[GetTerrain( 'hills' ).GetName] [trade_goods|E]" - mountains_barter_goods_mult: "[GetTerrain( 'mountains' ).GetName] [trade_goods|E]" - oasis_barter_goods_mult: "[GetTerrain( 'oasis' ).GetName] [trade_goods|E]" - jungle_barter_goods_mult: "[GetTerrain( 'jungle' ).GetName] [trade_goods|E]" - forest_barter_goods_mult: "[GetTerrain( 'forest' ).GetName] [trade_goods|E]" - taiga_barter_goods_mult: "[GetTerrain( 'taiga' ).GetName] [trade_goods|E]" - wetlands_barter_goods_mult: "[GetTerrain( 'wetlands' ).GetName] [trade_goods|E]" - steppe_barter_goods_mult: "[GetTerrain( 'steppe' ).GetName] [trade_goods|E]" - floodplains_barter_goods_mult: "[GetTerrain( 'floodplains' ).GetName] [trade_goods|E]" - desert_barter_goods_mult: "[GetTerrain( 'desert' ).GetName] [trade_goods|E]" - desert_mountains_barter_goods_mult: "[GetTerrain( 'desert_mountains' ).GetName] [trade_goods|E]" - drylands_barter_goods_mult: "[GetTerrain( 'drylands' ).GetName] [trade_goods|E]" - terraced_hills_barter_goods_mult: "[GetTerrain( 'terraced_hills' ).GetName] [trade_goods|E]" - - # BP3 - black_sea_coast_region_development_growth: "$MOD_MONTHLY_DEVELOPMENT_GROWTH_FACTOR$ in the [GetGeographicalRegion('black_sea_coast_region').GetName] [region|E]" - - charioteer_blue_xp_gain_mult:0 "[GetTrait('charioteer_blue').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - charioteer_green_xp_gain_mult:0 "[GetTrait('charioteer_green').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - charioteer_white_xp_gain_mult:0 "[GetTrait('charioteer_white').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - charioteer_red_xp_gain_mult:0 "[GetTrait('charioteer_red').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - - # MPO - MOD_MONTHLY_COUNTY_FERTILITY_GROWTH: "[county_fertility|E] Growth" - MOD_MONTHLY_COUNTY_FERTILITY_DECLINE: "[county_fertility|E] Consumption" - MOD_MONTHLY_COUNTY_FERTILITY_GROWTH_ADD: "$MOD_MONTHLY_COUNTY_FERTILITY_GROWTH$" - MOD_MONTHLY_COUNTY_FERTILITY_GROWTH_MULT: "$MOD_MONTHLY_COUNTY_FERTILITY_GROWTH$" - MOD_CHARACTER_CAPITAL_MONTHLY_COUNTY_FERTILITY_GROWTH_ADD: "[capital|E] $MOD_MONTHLY_COUNTY_FERTILITY_GROWTH$" - MOD_MONTHLY_COUNTY_FERTILITY_DECLINE_ADD: "$MOD_MONTHLY_COUNTY_FERTILITY_DECLINE$" - MOD_MONTHLY_COUNTY_FERTILITY_DECLINE_MULT: "$MOD_MONTHLY_COUNTY_FERTILITY_DECLINE$" - MOD_CHARACTER_CAPITAL_MONTHLY_COUNTY_FERTILITY_DECLINE_ADD: "[capital|E] $MOD_MONTHLY_COUNTY_FERTILITY_DECLINE$" - MONTHLY_COUNTY_FERTILITY_APPLIED_CHANGE_DIFF: "Current [county_fertility|E] Modifier" - - plains_fertility_growth_add: "[county_fertility|E] Growth in Plains [terrain|E]" - plains_fertility_growth_mult: "$plains_fertility_growth_add$" - plains_fertility_decline_add: "[county_fertility|E] Decline in Plains [terrain|E]" - plains_fertility_decline_mult: "$plains_fertility_decline_add$" - - farmlands_fertility_growth_add: "[county_fertility|E] Growth in Farmlands [terrain|E]" - farmlands_fertility_growth_mult: "$farmlands_fertility_growth_add$" - farmlands_fertility_decline_add: "[county_fertility|E] Decline in Farmlands [terrain|E]" - farmlands_fertility_decline_mult: "$farmlands_fertility_decline_add$" - - hills_fertility_growth_add: "[county_fertility|E] Growth in Hills [terrain|E]" - hills_fertility_growth_mult: "$hills_fertility_growth_add$" - hills_fertility_decline_add: "[county_fertility|E] Decline in Hills [terrain|E]" - hills_fertility_decline_mult: "$hills_fertility_decline_add$" - - mountains_fertility_growth_add: "[county_fertility|E] Growth in Mountains [terrain|E]" - mountains_fertility_growth_mult: "$mountains_fertility_growth_add$" - mountains_fertility_decline_add: "[county_fertility|E] Decline in Mountains [terrain|E]" - mountains_fertility_decline_mult: "$mountains_fertility_decline_add$" - - desert_fertility_growth_add: "[county_fertility|E] Growth in Desert [terrain|E]" - desert_fertility_growth_mult: "$desert_fertility_growth_add$" - desert_fertility_decline_add: "[county_fertility|E] Decline in Desert [terrain|E]" - desert_fertility_decline_mult: "$desert_fertility_decline_add$" - - desert_mountains_fertility_growth_add: "[county_fertility|E] Growth in Desert Mountains [terrain|E]" - desert_mountains_fertility_growth_mult: "$desert_mountains_fertility_growth_add$" - desert_mountains_fertility_decline_add: "[county_fertility|E] Decline in Desert Mountains [terrain|E]" - desert_mountains_fertility_decline_mult: "$desert_mountains_fertility_decline_add$" - - oasis_fertility_growth_add: "[county_fertility|E] Growth in Oasis [terrain|E]" - oasis_fertility_growth_mult: "$oasis_fertility_growth_add$" - oasis_fertility_decline_add: "[county_fertility|E] Decline in Oasis [terrain|E]" - oasis_fertility_decline_mult: "$oasis_fertility_decline_add$" - - jungle_fertility_growth_add: "[county_fertility|E] Growth in Jungle [terrain|E]" - jungle_fertility_growth_mult: "$jungle_fertility_growth_add$" - jungle_fertility_decline_add: "[county_fertility|E] Decline in Jungle [terrain|E]" - jungle_fertility_decline_mult: "$jungle_fertility_decline_add$" - - forest_fertility_growth_add: "[county_fertility|E] Growth in Forest [terrain|E]" - forest_fertility_growth_mult: "$forest_fertility_growth_add$" - forest_fertility_decline_add: "[county_fertility|E] Decline in Forest [terrain|E]" - forest_fertility_decline_mult: "$forest_fertility_decline_add$" - - taiga_fertility_growth_add: "[county_fertility|E] Growth in Taiga [terrain|E]" - taiga_fertility_growth_mult: "$taiga_fertility_growth_add$" - taiga_fertility_decline_add: "[county_fertility|E] Decline in Taiga [terrain|E]" - taiga_fertility_decline_mult: "$taiga_fertility_decline_add$" - - wetlands_fertility_growth_add: "[county_fertility|E] Growth in Wetlands [terrain|E]" - wetlands_fertility_growth_mult: "$wetlands_fertility_growth_add$" - wetlands_fertility_decline_add: "[county_fertility|E] Decline in Wetlands [terrain|E]" - wetlands_fertility_decline_mult: "$wetlands_fertility_decline_add$" - - steppe_fertility_growth_add: "[county_fertility|E] Growth in Steppe [terrain|E]" - steppe_fertility_growth_mult: "$steppe_fertility_growth_add$" - steppe_fertility_decline_add: "[county_fertility|E] Decline Steppe [terrain|E]" - steppe_fertility_decline_mult: "$steppe_fertility_decline_add$" - - floodplains_fertility_growth_add: "[county_fertility|E] Growth in Floodplains [terrain|E]" - floodplains_fertility_growth_mult: "$floodplains_fertility_growth_add$" - floodplains_fertility_decline_add: "[county_fertility|E] Decline in Floodplains [terrain|E]" - floodplains_fertility_decline_mult: "$floodplains_fertility_decline_add$" - - drylands_fertility_growth_add: "[county_fertility|E] Growth in Drylands [terrain|E]" - drylands_fertility_growth_mult: "$drylands_fertility_growth_add$" - drylands_fertility_decline_add: "[county_fertility|E] Decline in Drylands [terrain|E]" - drylands_fertility_decline_mult: "$drylands_fertility_decline_add$" - - terraced_hills_fertility_growth_add: "[county_fertility|E] Growth in Terraced Hills [terrain|E]" - terraced_hills_fertility_growth_mult: "$terraced_hills_fertility_growth_add$" - terraced_hills_fertility_decline_add: "[county_fertility|E] Decline in Terraced Hills [terrain|E]" - terraced_hills_fertility_decline_mult: "$terraced_hills_fertility_decline_add$" - - MOD_HERD_GAIN: "[herd|E] Gain" - MOD_HERD_GAIN_MULT: "$MOD_HERD_GAIN$" - MOD_HERD_CONVERSION: "[herd|E] Conversion into $nomadic_riders$" - MOD_HERD_CAPACITY_ADD: "[herd|E] Capacity" - MOD_HERD_CAPACITY_MULT: "$MOD_HERD_CAPACITY_ADD$" - MOD_HORDE_CONVERSION_COST: "Upgrade [horde|E] Regiment Cost" - - MOD_BLOOD_BROTHER_PRESTIGE_MULT: "Monthly [prestige|E] from [blood_brothers|E]" - MOD_BLOOD_BROTHER_PIETY_MULT: "Monthly [piety|E] from [blood_brothers|E]" - MOD_BLOOD_BROTHER_RENOWN_MULT: "Monthly [dynasty_prestige|E] from [blood_brothers|E]" - - military_engineer_xp_gain_mult:0 "[GetTrait('military_engineer').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - forder_xp_gain_mult: "[GetTrait('forder').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - - the_great_steppe_all: "Current [steppe_season|E]" - - the_great_steppe_supply_limit_add: "[supply_limit|E] in [the_great_steppe|E]" - the_great_steppe_supply_limit_mult: "[supply_limit|E] in [the_great_steppe|E]" - - game_rule_extra_nomads_sami_supply_limit_add: "[supply_limit|E] in $situation_game_rule_extra_nomads_sami$" - game_rule_extra_nomads_sami_supply_limit_mult: "[supply_limit|E] in $situation_game_rule_extra_nomads_sami$" - - game_rule_extra_nomads_sahel_supply_limit_add: "[supply_limit|E] in $situation_game_rule_extra_nomads_sahel$" - game_rule_extra_nomads_sahel_supply_limit_mult: "[supply_limit|E] in $situation_game_rule_extra_nomads_sahel$" - - game_rule_extra_nomads_horn_supply_limit_add: "[supply_limit|E] in $situation_game_rule_extra_nomads_horn$" - game_rule_extra_nomads_horn_supply_limit_mult: "[supply_limit|E] in $situation_game_rule_extra_nomads_horn$" - - game_rule_extra_nomads_arabs_supply_limit_add: "[supply_limit|E] in $situation_game_rule_extra_nomads_arabs$" - game_rule_extra_nomads_arabs_supply_limit_mult: "[supply_limit|E] in $situation_game_rule_extra_nomads_arabs$" - - MOD_MAX_MIGRATION_DISTANCE_MULT: "Max [migration|E] Distance" - - specialized_herds_modifier_camel: "$building_camel_farms_01$" - specialized_herds_modifier_sheep: "$goat_yurt_01_domicile_building$, $sheep_yurt_01_domicile_building$" - specialized_herds_modifier_hunting: "$mpo_hunt_steppe$" - specialized_herds_modifier_horses: "$building_type_horse_pastures_01$" - - # TGP - MOD_GREAT_PROJECT_CONSTRUCTION_SPEED: "$game_concept_great_project_build_speed$" - - japan_administrative_government_opinion: "[ritsuryo_i|E] [japan_administrative|E] Ruler Opinion" - japan_administrative_government_vassal_opinion: "[ritsuryo_i|E] [japan_administrative|E] [vassal|E] Opinion" - japan_administrative_government_tax_contribution_add: "[ritsuryo_i|E] [japan_administrative|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - japan_administrative_government_tax_contribution_mult: "[ritsuryo_i|E] [japan_administrative|E] [vassal|E] [tax|E] [modifier_contribution|E]" - japan_administrative_government_levy_contribution_add: "[ritsuryo_i|E] [japan_administrative|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - japan_administrative_government_levy_contribution_mult: "[ritsuryo_i|E] [japan_administrative|E] [vassal|E] [levy|E] [modifier_contribution|E]" - japan_feudal_government_opinion: "[soryo_i|E] [japan_feudal|E] Ruler Opinion" - japan_feudal_government_vassal_opinion: "[soryo_i|E] [japan_feudal|E] [vassal|E] Opinion" - japan_feudal_government_tax_contribution_add: "[soryo_i|E] [japan_feudal|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - japan_feudal_government_tax_contribution_mult: "[soryo_i|E] [japan_feudal|E] [vassal|E] [tax|E] [modifier_contribution|E]" - japan_feudal_government_levy_contribution_add: "[soryo_i|E] [japan_feudal|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - japan_feudal_government_levy_contribution_mult: "[soryo_i|E] [japan_feudal|E] [vassal|E] [levy|E] [modifier_contribution|E]" - celestial_government_opinion: "[celestial_i|E] [celestial|E] Ruler Opinion" - celestial_government_vassal_opinion: "[celestial_i|E] [celestial|E] [vassal|E] Opinion" - celestial_government_tax_contribution_add: "[celestial_i|E] [celestial|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - celestial_government_tax_contribution_mult: "[celestial_i|E] [celestial|E] [vassal|E] [tax|E] [modifier_contribution|E]" - celestial_government_levy_contribution_add: "[celestial_i|E] [celestial|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - celestial_government_levy_contribution_mult: "[celestial_i|E] [celestial|E] [vassal|E] [levy|E] [modifier_contribution|E]" - mandala_government_opinion: "[mandala_i|E] [mandala|E] Ruler Opinion" - mandala_government_vassal_opinion: "[mandala_i|E] [mandala|E] [vassal|E] Opinion" - mandala_government_tax_contribution_add: "[mandala_i|E] [mandala|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - mandala_government_tax_contribution_mult: "[mandala_i|E] [mandala|E] [vassal|E] [tax|E] [modifier_contribution|E]" - mandala_government_levy_contribution_add: "[mandala_i|E] [mandala|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - mandala_government_levy_contribution_mult: "[mandala_i|E] [mandala|E] [vassal|E] [levy|E] [modifier_contribution|E]" - wanua_government_opinion: "[wanua_i|E] [wanua|E] Ruler Opinion" - wanua_government_vassal_opinion: "[wanua_i|E] [wanua|E] [vassal|E] Opinion" - wanua_government_tax_contribution_add: "[wanua_i|E] [wanua|E] [vassal|E] [tax|E] [modifier_base_contribution|E]" - wanua_government_tax_contribution_mult: "[wanua_i|E] [wanua|E] [vassal|E] [tax|E] [modifier_contribution|E]" - wanua_government_levy_contribution_add: "[wanua_i|E] [wanua|E] [vassal|E] [levy|E] [modifier_base_contribution|E]" - wanua_government_levy_contribution_mult: "[wanua_i|E] [wanua|E] [vassal|E] [levy|E] [modifier_contribution|E]" - - # Dynamic modifiers subject salary - subject_salary_expense: "salary expense" - subject_salary_income: "salary income" - subject_salary_expense_breakdown: "[subject|E] Salaries" - subject_salary_income_breakdown: "[subject|E] Salary" - - # Dynamic modifiers subject salary Gold - subject_salary_expense_gold_add: "[subject|E] [gold|E] $subject_salary_expense$" - subject_salary_expense_gold_mult: "$subject_salary_expense_gold_add$" - subject_salary_expense_gold_county_add: "[county|E] [subject|E] [gold|E] $subject_salary_expense$" - subject_salary_expense_gold_county_mult: "$subject_salary_expense_gold_county_add$" - subject_salary_expense_gold_duchy_add: "[duchy|E] [subject|E] [gold|E] $subject_salary_expense$" - subject_salary_expense_gold_duchy_mult: "$subject_salary_expense_gold_duchy_add$" - subject_salary_expense_gold_kingdom_add: "[kingdom|E] [subject|E] [gold|E] $subject_salary_expense$" - subject_salary_expense_gold_kingdom_mult: "$subject_salary_expense_gold_kingdom_add$" - subject_salary_expense_gold_empire_add: "[empire|E] [subject|E] [gold|E] $subject_salary_expense$" - subject_salary_expense_gold_empire_mult: "$subject_salary_expense_gold_empire_add$" - subject_salary_expense_gold_hegemony_add: "[hegemony|E] [subject|E] [gold|E] $subject_salary_expense$" - subject_salary_expense_gold_hegemony_mult: "$subject_salary_expense_gold_hegemony_add$" - subject_salary_income_gold_add: "[subject|E] [gold|E] $subject_salary_income$" - subject_salary_income_gold_mult: "$subject_salary_income_gold_add$" - subject_salary_income_gold_county_add: "[county|E] [subject|E] [gold|E] $subject_salary_income$" - subject_salary_income_gold_county_mult: "$subject_salary_income_gold_county_add$" - subject_salary_income_gold_duchy_add: "[duchy|E] [subject|E] [gold|E] $subject_salary_income$" - subject_salary_income_gold_duchy_mult: "$subject_salary_income_gold_duchy_add$" - subject_salary_income_gold_kingdom_add: "[kingdom|E] [subject|E] [gold|E] $subject_salary_income$" - subject_salary_income_gold_kingdom_mult: "$subject_salary_income_gold_kingdom_add$" - subject_salary_income_gold_empire_add: "[empire|E] [subject|E] [gold|E] $subject_salary_income$" - subject_salary_income_gold_empire_mult: "$subject_salary_income_gold_empire_add$" - subject_salary_income_gold_hegemony_add: "[hegemony|E] [subject|E] [gold|E] $subject_salary_income$" - subject_salary_income_gold_hegemony_mult: "$subject_salary_income_gold_hegemony_add$" - - # Dynamic modifiers subject salary Prestige - subject_salary_expense_prestige_add: "[subject|E] [prestige|E] $subject_salary_expense$" - subject_salary_expense_prestige_mult: "$subject_salary_expense_prestige_add$" - subject_salary_expense_prestige_county_add: "[county|E] [subject|E] [prestige|E] $subject_salary_expense$" - subject_salary_expense_prestige_county_mult: "$subject_salary_expense_prestige_county_add$" - subject_salary_expense_prestige_duchy_add: "[duchy|E] [subject|E] [prestige|E] $subject_salary_expense$" - subject_salary_expense_prestige_duchy_mult: "$subject_salary_expense_prestige_duchy_add$" - subject_salary_expense_prestige_kingdom_add: "[kingdom|E] [subject|E] [prestige|E] $subject_salary_expense$" - subject_salary_expense_prestige_kingdom_mult: "$subject_salary_expense_prestige_kingdom_add$" - subject_salary_expense_prestige_empire_add: "[empire|E] [subject|E] [prestige|E] $subject_salary_expense$" - subject_salary_expense_prestige_empire_mult: "$subject_salary_expense_prestige_empire_add$" - subject_salary_expense_prestige_hegemony_add: "[hegemony|E] [subject|E] [prestige|E] $subject_salary_expense$" - subject_salary_expense_prestige_hegemony_mult: "$subject_salary_expense_prestige_hegemony_add$" - subject_salary_income_prestige_add: "[subject|E] [prestige|E] $subject_salary_income$" - subject_salary_income_prestige_mult: "$subject_salary_income_prestige_add$" - subject_salary_income_prestige_county_add: "[county|E] [subject|E] [prestige|E] $subject_salary_income$" - subject_salary_income_prestige_county_mult: "$subject_salary_income_prestige_county_add$" - subject_salary_income_prestige_duchy_add: "[duchy|E] [subject|E] [prestige|E] $subject_salary_income$" - subject_salary_income_prestige_duchy_mult: "$subject_salary_income_prestige_duchy_add$" - subject_salary_income_prestige_kingdom_add: "[kingdom|E] [subject|E] [prestige|E] $subject_salary_income$" - subject_salary_income_prestige_kingdom_mult: "$subject_salary_income_prestige_kingdom_add$" - subject_salary_income_prestige_empire_add: "[empire|E] [subject|E] [prestige|E] $subject_salary_income$" - subject_salary_income_prestige_empire_mult: "$subject_salary_income_prestige_empire_add$" - subject_salary_income_prestige_hegemony_add: "[hegemony|E] [subject|E] [prestige|E] $subject_salary_income$" - subject_salary_income_prestige_hegemony_mult: "$subject_salary_income_prestige_hegemony_add$" - - # Dynamic modifiers subject salary Piety - subject_salary_expense_piety_add: "[subject|E] [piety|E] $subject_salary_expense$" - subject_salary_expense_piety_mult: "$subject_salary_expense_piety_add$" - subject_salary_expense_piety_county_add: "[county|E] [subject|E] [piety|E] $subject_salary_expense$" - subject_salary_expense_piety_county_mult: "$subject_salary_expense_piety_county_add$" - subject_salary_expense_piety_duchy_add: "[duchy|E] [subject|E] [piety|E] $subject_salary_expense$" - subject_salary_expense_piety_duchy_mult: "$subject_salary_expense_piety_duchy_add$" - subject_salary_expense_piety_kingdom_add: "[kingdom|E] [subject|E] [piety|E] $subject_salary_expense$" - subject_salary_expense_piety_kingdom_mult: "$subject_salary_expense_piety_kingdom_add$" - subject_salary_expense_piety_empire_add: "[empire|E] [subject|E] [piety|E] $subject_salary_expense$" - subject_salary_expense_piety_empire_mult: "$subject_salary_expense_piety_empire_add$" - subject_salary_expense_piety_hegemony_add: "[hegemony|E] [subject|E] [piety|E] $subject_salary_expense$" - subject_salary_expense_piety_hegemony_mult: "$subject_salary_expense_piety_hegemony_add$" - subject_salary_income_piety_add: "[subject|E] [piety|E] $subject_salary_income$" - subject_salary_income_piety_mult: "$subject_salary_income_piety_add$" - subject_salary_income_piety_county_add: "[county|E] [subject|E] [piety|E] $subject_salary_income$" - subject_salary_income_piety_county_mult: "$subject_salary_income_piety_county_add$" - subject_salary_income_piety_duchy_add: "[duchy|E] [subject|E] [piety|E] $subject_salary_income$" - subject_salary_income_piety_duchy_mult: "$subject_salary_income_piety_duchy_add$" - subject_salary_income_piety_kingdom_add: "[kingdom|E] [subject|E] [piety|E] $subject_salary_income$" - subject_salary_income_piety_kingdom_mult: "$subject_salary_income_piety_kingdom_add$" - subject_salary_income_piety_empire_add: "[empire|E] [subject|E] [piety|E] $subject_salary_income$" - subject_salary_income_piety_empire_mult: "$subject_salary_income_piety_empire_add$" - subject_salary_income_piety_hegemony_add: "[hegemony|E] [subject|E] [piety|E] $subject_salary_income$" - subject_salary_income_piety_hegemony_mult: "$subject_salary_income_piety_hegemony_add$" - - # Dynamic modifiers subject salary Renown - subject_salary_expense_renown_add: "[subject|E] [dynasty_prestige|E] $subject_salary_expense$" - subject_salary_expense_renown_mult: "$subject_salary_expense_renown_add$" - subject_salary_expense_renown_county_add: "[county|E] [subject|E] [dynasty_prestige|E] $subject_salary_expense$" - subject_salary_expense_renown_county_mult: "$subject_salary_expense_renown_county_add$" - subject_salary_expense_renown_duchy_add: "[duchy|E] [subject|E] [dynasty_prestige|E] $subject_salary_expense$" - subject_salary_expense_renown_duchy_mult: "$subject_salary_expense_renown_duchy_add$" - subject_salary_expense_renown_kingdom_add: "[kingdom|E] [subject|E] [dynasty_prestige|E] $subject_salary_expense$" - subject_salary_expense_renown_kingdom_mult: "$subject_salary_expense_renown_kingdom_add$" - subject_salary_expense_renown_empire_add: "[empire|E] [subject|E] [dynasty_prestige|E] $subject_salary_expense$" - subject_salary_expense_renown_empire_mult: "$subject_salary_expense_renown_empire_add$" - subject_salary_expense_renown_hegemony_add: "[hegemony|E] [subject|E] [dynasty_prestige|E] $subject_salary_expense$" - subject_salary_expense_renown_hegemony_mult: "$subject_salary_expense_renown_hegemony_add$" - subject_salary_income_renown_add: "[subject|E] [dynasty_prestige|E] $subject_salary_income$" - subject_salary_income_renown_mult: "$subject_salary_income_renown_add$" - subject_salary_income_renown_county_add: "[county|E] [subject|E] [dynasty_prestige|E] $subject_salary_income$" - subject_salary_income_renown_county_mult: "$subject_salary_income_renown_county_add$" - subject_salary_income_renown_duchy_add: "[duchy|E] [subject|E] [dynasty_prestige|E] $subject_salary_income$" - subject_salary_income_renown_duchy_mult: "$subject_salary_income_renown_duchy_add$" - subject_salary_income_renown_kingdom_add: "[kingdom|E] [subject|E] [dynasty_prestige|E] $subject_salary_income$" - subject_salary_income_renown_kingdom_mult: "$subject_salary_income_renown_kingdom_add$" - subject_salary_income_renown_empire_add: "[empire|E] [subject|E] [dynasty_prestige|E] $subject_salary_income$" - subject_salary_income_renown_empire_mult: "$subject_salary_income_renown_empire_add$" - subject_salary_income_renown_hegemony_add: "[hegemony|E] [subject|E] [dynasty_prestige|E] $subject_salary_income$" - subject_salary_income_renown_hegemony_mult: "$subject_salary_income_renown_hegemony_add$" - - # Dynamic modifiers subject salary Influence - subject_salary_expense_influence_add: "[subject|E] [influence|E] $subject_salary_expense$" - subject_salary_expense_influence_mult: "$subject_salary_expense_influence_add$" - subject_salary_expense_influence_county_add: "[county|E] [subject|E] [influence|E] $subject_salary_expense$" - subject_salary_expense_influence_county_mult: "$subject_salary_expense_influence_county_add$" - subject_salary_expense_influence_duchy_add: "[duchy|E] [subject|E] [influence|E] $subject_salary_expense$" - subject_salary_expense_influence_duchy_mult: "$subject_salary_expense_influence_duchy_add$" - subject_salary_expense_influence_kingdom_add: "[kingdom|E] [subject|E] [influence|E] $subject_salary_expense$" - subject_salary_expense_influence_kingdom_mult: "$subject_salary_expense_influence_kingdom_add$" - subject_salary_expense_influence_empire_add: "[empire|E] [subject|E] [influence|E] $subject_salary_expense$" - subject_salary_expense_influence_empire_mult: "$subject_salary_expense_influence_empire_add$" - subject_salary_expense_influence_hegemony_add: "[hegemony|E] [subject|E] [influence|E] $subject_salary_expense$" - subject_salary_expense_influence_hegemony_mult: "$subject_salary_expense_influence_hegemony_add$" - subject_salary_income_influence_add: "[subject|E] [influence|E] $subject_salary_income$" - subject_salary_income_influence_mult: "$subject_salary_income_influence_add$" - subject_salary_income_influence_county_add: "[county|E] [subject|E] [influence|E] $subject_salary_income$" - subject_salary_income_influence_county_mult: "$subject_salary_income_influence_county_add$" - subject_salary_income_influence_duchy_add: "[duchy|E] [subject|E] [influence|E] $subject_salary_income$" - subject_salary_income_influence_duchy_mult: "$subject_salary_income_influence_duchy_add$" - subject_salary_income_influence_kingdom_add: "[kingdom|E] [subject|E] [influence|E] $subject_salary_income$" - subject_salary_income_influence_kingdom_mult: "$subject_salary_income_influence_kingdom_add$" - subject_salary_income_influence_empire_add: "[empire|E] [subject|E] [influence|E] $subject_salary_income$" - subject_salary_income_influence_empire_mult: "$subject_salary_income_influence_empire_add$" - subject_salary_income_influence_hegemony_add: "[hegemony|E] [subject|E] [influence|E] $subject_salary_income$" - subject_salary_income_influence_hegemony_mult: "$subject_salary_income_influence_hegemony_add$" - - # Dynamic modifiers subject salary Herd - subject_salary_expense_herd_add: "[subject|E] [herd|E] $subject_salary_expense$" - subject_salary_expense_herd_mult: "$subject_salary_expense_herd_add$" - subject_salary_expense_herd_county_add: "[county|E] [subject|E] [herd|E] $subject_salary_expense$" - subject_salary_expense_herd_county_mult: "$subject_salary_expense_herd_county_add$" - subject_salary_expense_herd_duchy_add: "[duchy|E] [subject|E] [herd|E] $subject_salary_expense$" - subject_salary_expense_herd_duchy_mult: "$subject_salary_expense_herd_duchy_add$" - subject_salary_expense_herd_kingdom_add: "[kingdom|E] [subject|E] [herd|E] $subject_salary_expense$" - subject_salary_expense_herd_kingdom_mult: "$subject_salary_expense_herd_kingdom_add$" - subject_salary_expense_herd_empire_add: "[empire|E] [subject|E] [herd|E] $subject_salary_expense$" - subject_salary_expense_herd_empire_mult: "$subject_salary_expense_herd_empire_add$" - subject_salary_expense_herd_hegemony_add: "[hegemony|E] [subject|E] [herd|E] $subject_salary_expense$" - subject_salary_expense_herd_hegemony_mult: "$subject_salary_expense_herd_hegemony_add$" - subject_salary_income_herd_add: "[subject|E] [herd|E] $subject_salary_income$" - subject_salary_income_herd_mult: "$subject_salary_income_herd_add$" - subject_salary_income_herd_county_add: "[county|E] [subject|E] [herd|E] $subject_salary_income$" - subject_salary_income_herd_county_mult: "$subject_salary_income_herd_county_add$" - subject_salary_income_herd_duchy_add: "[duchy|E] [subject|E] [herd|E] $subject_salary_income$" - subject_salary_income_herd_duchy_mult: "$subject_salary_income_herd_duchy_add$" - subject_salary_income_herd_kingdom_add: "[kingdom|E] [subject|E] [herd|E] $subject_salary_income$" - subject_salary_income_herd_kingdom_mult: "$subject_salary_income_herd_kingdom_add$" - subject_salary_income_herd_empire_add: "[empire|E] [subject|E] [herd|E] $subject_salary_income$" - subject_salary_income_herd_empire_mult: "$subject_salary_income_herd_empire_add$" - subject_salary_income_herd_hegemony_add: "[hegemony|E] [subject|E] [herd|E] $subject_salary_income$" - subject_salary_income_herd_hegemony_mult: "$subject_salary_income_herd_hegemony_add$" - - # Dynamic modifiers subject salary Treasury - subject_salary_expense_treasury_add: "[subject|E] [treasury|E] $subject_salary_expense$" - subject_salary_expense_treasury_mult: "$subject_salary_expense_treasury_add$" - subject_salary_expense_treasury_county_add: "[county|E] [subject|E] [treasury|E] $subject_salary_expense$" - subject_salary_expense_treasury_county_mult: "$subject_salary_expense_treasury_county_add$" - subject_salary_expense_treasury_duchy_add: "[duchy|E] [subject|E] [treasury|E] $subject_salary_expense$" - subject_salary_expense_treasury_duchy_mult: "$subject_salary_expense_treasury_duchy_add$" - subject_salary_expense_treasury_kingdom_add: "[kingdom|E] [subject|E] [treasury|E] $subject_salary_expense$" - subject_salary_expense_treasury_kingdom_mult: "$subject_salary_expense_treasury_kingdom_add$" - subject_salary_expense_treasury_empire_add: "[empire|E] [subject|E] [treasury|E] $subject_salary_expense$" - subject_salary_expense_treasury_empire_mult: "$subject_salary_expense_treasury_empire_add$" - subject_salary_expense_treasury_hegemony_add: "[hegemony|E] [subject|E] [treasury|E] $subject_salary_expense$" - subject_salary_expense_treasury_hegemony_mult: "$subject_salary_expense_treasury_hegemony_add$" - subject_salary_income_treasury_add: "[subject|E] [treasury|E] $subject_salary_income$" - subject_salary_income_treasury_mult: "$subject_salary_income_treasury_add$" - subject_salary_income_treasury_county_add: "[county|E] [subject|E] [treasury|E] $subject_salary_income$" - subject_salary_income_treasury_county_mult: "$subject_salary_income_treasury_county_add$" - subject_salary_income_treasury_duchy_add: "[duchy|E] [subject|E] [treasury|E] $subject_salary_income$" - subject_salary_income_treasury_duchy_mult: "$subject_salary_income_treasury_duchy_add$" - subject_salary_income_treasury_kingdom_add: "[kingdom|E] [subject|E] [treasury|E] $subject_salary_income$" - subject_salary_income_treasury_kingdom_mult: "$subject_salary_income_treasury_kingdom_add$" - subject_salary_income_treasury_empire_add: "[empire|E] [subject|E] [treasury|E] $subject_salary_income$" - subject_salary_income_treasury_empire_mult: "$subject_salary_income_treasury_empire_add$" - subject_salary_income_treasury_hegemony_add: "[hegemony|E] [subject|E] [treasury|E] $subject_salary_income$" - subject_salary_income_treasury_hegemony_mult: "$subject_salary_income_treasury_hegemony_add$" - - # Dynamic modifiers subject salary Merit - subject_salary_expense_merit_add: "[subject|E] [merit|E] $subject_salary_expense$" - subject_salary_expense_merit_mult: "$subject_salary_expense_merit_add$" - subject_salary_expense_merit_county_add: "[county|E] [subject|E] [merit|E] $subject_salary_expense$" - subject_salary_expense_merit_county_mult: "$subject_salary_expense_merit_county_add$" - subject_salary_expense_merit_duchy_add: "[duchy|E] [subject|E] [merit|E] $subject_salary_expense$" - subject_salary_expense_merit_duchy_mult: "$subject_salary_expense_merit_duchy_add$" - subject_salary_expense_merit_kingdom_add: "[kingdom|E] [subject|E] [merit|E] $subject_salary_expense$" - subject_salary_expense_merit_kingdom_mult: "$subject_salary_expense_merit_kingdom_add$" - subject_salary_expense_merit_empire_add: "[empire|E] [subject|E] [merit|E] $subject_salary_expense$" - subject_salary_expense_merit_empire_mult: "$subject_salary_expense_merit_empire_add$" - subject_salary_expense_merit_hegemony_add: "[hegemony|E] [subject|E] [merit|E] $subject_salary_expense$" - subject_salary_expense_merit_hegemony_mult: "$subject_salary_expense_merit_hegemony_add$" - subject_salary_income_merit_add: "[subject|E] [merit|E] $subject_salary_income$" - subject_salary_income_merit_mult: "$subject_salary_income_merit_add$" - subject_salary_income_merit_county_add: "[county|E] [subject|E] [merit|E] $subject_salary_income$" - subject_salary_income_merit_county_mult: "$subject_salary_income_merit_county_add$" - subject_salary_income_merit_duchy_add: "[duchy|E] [subject|E] [merit|E] $subject_salary_income$" - subject_salary_income_merit_duchy_mult: "$subject_salary_income_merit_duchy_add$" - subject_salary_income_merit_kingdom_add: "[kingdom|E] [subject|E] [merit|E] $subject_salary_income$" - subject_salary_income_merit_kingdom_mult: "$subject_salary_income_merit_kingdom_add$" - subject_salary_income_merit_empire_add: "[empire|E] [subject|E] [merit|E] $subject_salary_income$" - subject_salary_income_merit_empire_mult: "$subject_salary_income_merit_empire_add$" - subject_salary_income_merit_hegemony_add: "[hegemony|E] [subject|E] [merit|E] $subject_salary_income$" - subject_salary_income_merit_hegemony_mult: "$subject_salary_income_merit_hegemony_add$" - - # Dynamic modifiers subject salary Barter Goods - subject_salary_expense_barter_goods_add: "[subject|E] [trade_goods|E] $subject_salary_expense$" - subject_salary_expense_barter_goods_mult: "$subject_salary_expense_barter_goods_add$" - subject_salary_expense_barter_goods_county_add: "[county|E] [subject|E] [trade_goods|E] $subject_salary_expense$" - subject_salary_expense_barter_goods_county_mult: "$subject_salary_expense_barter_goods_county_add$" - subject_salary_expense_barter_goods_duchy_add: "[duchy|E] [subject|E] [trade_goods|E] $subject_salary_expense$" - subject_salary_expense_barter_goods_duchy_mult: "$subject_salary_expense_barter_goods_duchy_add$" - subject_salary_expense_barter_goods_kingdom_add: "[kingdom|E] [subject|E] [trade_goods|E] $subject_salary_expense$" - subject_salary_expense_barter_goods_kingdom_mult: "$subject_salary_expense_barter_goods_kingdom_add$" - subject_salary_expense_barter_goods_empire_add: "[empire|E] [subject|E] [trade_goods|E] $subject_salary_expense$" - subject_salary_expense_barter_goods_empire_mult: "$subject_salary_expense_barter_goods_empire_add$" - subject_salary_expense_barter_goods_hegemony_add: "[hegemony|E] [subject|E] [trade_goods|E] $subject_salary_expense$" - subject_salary_expense_barter_goods_hegemony_mult: "$subject_salary_expense_barter_goods_hegemony_add$" - subject_salary_income_barter_goods_add: "[subject|E] [trade_goods|E] $subject_salary_income$" - subject_salary_income_barter_goods_mult: "$subject_salary_income_barter_goods_add$" - subject_salary_income_barter_goods_county_add: "[county|E] [subject|E] [trade_goods|E] $subject_salary_income$" - subject_salary_income_barter_goods_county_mult: "$subject_salary_income_barter_goods_county_add$" - subject_salary_income_barter_goods_duchy_add: "[duchy|E] [subject|E] [trade_goods|E] $subject_salary_income$" - subject_salary_income_barter_goods_duchy_mult: "$subject_salary_income_barter_goods_duchy_add$" - subject_salary_income_barter_goods_kingdom_add: "[kingdom|E] [subject|E] [trade_goods|E] $subject_salary_income$" - subject_salary_income_barter_goods_kingdom_mult: "$subject_salary_income_barter_goods_kingdom_add$" - subject_salary_income_barter_goods_empire_add: "[empire|E] [subject|E] [trade_goods|E] $subject_salary_income$" - subject_salary_income_barter_goods_empire_mult: "$subject_salary_income_barter_goods_empire_add$" - subject_salary_income_barter_goods_hegemony_add: "[hegemony|E] [subject|E] [trade_goods|E] $subject_salary_income$" - subject_salary_income_barter_goods_hegemony_mult: "$subject_salary_income_barter_goods_hegemony_add$" - - # dynamic experience levels - MOD_MAX_PIETY_LEVEL: "Maximum [piety_level|E]" - max_piety_level_entry: "#L [maximum_piety_level|E]: $LEVEL$" - base_piety_level_entry: "Default [piety_level|E]: $LEVEL$" - government_piety_level_entry: "[maximum_piety_level|E] for [Character.GetGovernment.GetName]: $LEVEL$" - MOD_MAX_PRESTIGE_LEVEL: "Maximum [prestige_level|E]" - max_prestige_level_entry: "Maximum $game_concept_prestige_level$: $LEVEL$" - base_prestige_level_entry: "Default [prestige_level|E]: $LEVEL$" - government_prestige_level_entry: "Maximum [prestige_level|E] for [Character.GetGovernment.GetName]: $LEVEL$" - MOD_MAX_INFLUENCE_LEVEL: "Maximum [influence_level|E]" - max_influence_level_entry: "Maximum $game_concept_influence_level$: $LEVEL$" - base_influence_level_entry: "Default [influence_level|E]: $LEVEL$" - government_influence_level_entry: "Maximum [influence_level|E] for [Character.GetGovernment.GetName]: $LEVEL$" - MOD_MAX_MERIT_LEVEL: "Maximum [merit_level|E]" - max_merit_level_entry: "Maximum: $LEVEL$" - base_merit_level_entry: "Base: $LEVEL$" - government_merit_level_entry: "Maximum [merit_level|E] for [Character.GetGovernment.GetName]: $LEVEL$" - - MOD_STATIONED_MAA_DAMAGE_MULT_PER_PIETY_LEVEL: "$MOD_STATIONED_MAA_DAMAGE_ADD$ per [piety_level|E]" - MOD_STATIONED_MAA_TOUGHNESS_MULT_PER_PIETY_LEVEL: "$MOD_STATIONED_MAA_TOUGHNESS_ADD$ per [piety_level|E]" - MOD_TAX_PER_PIETY_LEVEL: "[tax|E] per [piety_level|E]" - MOD_MONTHLY_INCOME_PER_PIETY_LEVEL_ADD: "$MOD_MONTHLY_INCOME_MULT$ per [piety_level|E]" - - MOD_MONTHLY_BARTER_GOODS_PREFIX: "[barter_goods_i]" - MOD_MONTHLY_BARTER_GOODS: "[trade_goods|E]" - MOD_MONTHLY_BARTER_GOODS_MULT: "Monthly [trade_goods|E]" - MOD_MONTHLY_WAR_BARTER_GOODS_INCOME_ADD: "[trade_goods|E] [income|E] while at [war|E]" - MOD_MONTHLY_WAR_BARTER_GOODS_INCOME_MULT: "Monthly [trade_goods|E] [income|E] while at [war|E]" - - celestial_movement_power_promote_scheme_phase_duration_add: "[GetScheme('celestial_movement_power_promote').GetTypeName] [scheme_speed_single|E]" - study_confucian_classics_scheme_phase_duration_add: "[GetScheme('study_confucian_classics').GetTypeName] [scheme_speed_single|E]" - mentoring_scheme_phase_duration_add: "[GetScheme('mentoring').GetTypeName] [scheme_speed_single|E]" - - merit_income_per_liege_tax_entry: "[merit|E] for [governor|E] [taxes|E]" - merit_income_per_army_value_entry: "[merit|E] for [governor|E] [title_men_at_arms|E]" - merit_income_per_tax_mult_entry: "[merit|E] per [tax|E] paid" - merit_income_per_army_value_mult_entry: "[merit|E] per [Concept( 'title_men_at_arms', 'Men-at-Arms' )|E] value" - merit_income_regiment_value_entry: "[Concept( 'title_men_at_arms', 'Men-at-Arms' )|E] Recruitment Value" - merit_base_income_entry: "Base [merit|E] gain" - merit_income_breakdown_title: "Monthly [merit|E] income" - - lifestyle_poet_xp_gain_mult: "[GetTrait('lifestyle_poet').GetName( GetNullCharacter )] [trait_level_track_xp|E] Gain" - - MOD_CAN_VASSALS_BE_ATTACKED: "Can vassals be attacked" diff --git a/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml b/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml index 4a078a78..2871a815 100644 --- a/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml +++ b/localization/english/replace/religion/doctrines/zz_NEOW_religion_tolerance doctrines_l_english.yml @@ -17,48 +17,48 @@ special_doctrine_absurdist_name:0 "Virtues of Comedy" special_doctrine_absurdist_desc:0 "Our faith seeks out the virtues found primarily in the absurd and incomprehensible." doctrine_special_sevillian_dominion_name:0 "Church Bureaucracy" - doctrine_sevillian_dominion_1_name:0 "Bureaucracy: Level 1" - doctrine_sevillian_dominion_1_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_2_name:0 "Bureaucracy: Level 2" - doctrine_sevillian_dominion_2_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_3_name:0 "Bureaucracy: Level 3" - doctrine_sevillian_dominion_3_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_4_name:0 "Bureaucracy: Level 4" - doctrine_sevillian_dominion_4_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_5_name:0 "Bureaucracy: Level 5" - doctrine_sevillian_dominion_5_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_6_name:0 "Catholic Bureaucracy: Level 6" - doctrine_sevillian_dominion_6_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_7_name:0 "Bureaucracy: Level 7" - doctrine_sevillian_dominion_7_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_8_name:0 "Bureaucracy: Level 8" - doctrine_sevillian_dominion_8_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" - doctrine_sevillian_dominion_9_name:0 "Bureaucracy: Level 9" - doctrine_sevillian_dominion_9_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('sevillian_calculations')|+0]#!" + doctrine_sevillian_dominion_1_name:0 "Corruption: Level 1" + doctrine_sevillian_dominion_1_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_2_name:0 "Corruption: Level 2" + doctrine_sevillian_dominion_2_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_3_name:0 "Corruption: Level 3" + doctrine_sevillian_dominion_3_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_4_name:0 "Corruption: Level 4" + doctrine_sevillian_dominion_4_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_5_name:0 "Corruption: Level 5" + doctrine_sevillian_dominion_5_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_6_name:0 "Corruption: Level 6" + doctrine_sevillian_dominion_6_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_7_name:0 "Corruption: Level 7" + doctrine_sevillian_dominion_7_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_8_name:0 "Corruption: Level 8" + doctrine_sevillian_dominion_8_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" + doctrine_sevillian_dominion_9_name:0 "Corruption: Level 9" + doctrine_sevillian_dominion_9_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('sevillian_calculations')|-0]#!" doctrine_special_roman_dominion_name:0 "Church Bureaucracy" - doctrine_roman_dominion_1_name:0 "Bureaucracy: Level 1" - doctrine_roman_dominion_1_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_2_name:0 "Bureaucracy: Level 2" - doctrine_roman_dominion_2_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_3_name:0 "Bureaucracy: Level 3" - doctrine_roman_dominion_3_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_4_name:0 "Bureaucracy: Level 4" - doctrine_roman_dominion_4_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_5_name:0 "Bureaucracy: Level 5" - doctrine_roman_dominion_5_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_6_name:0 "Catholic Bureaucracy: Level 6" - doctrine_roman_dominion_6_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_7_name:0 "Bureaucracy: Level 7" - doctrine_roman_dominion_7_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_8_name:0 "Bureaucracy: Level 8" - doctrine_roman_dominion_8_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" - doctrine_roman_dominion_9_name:0 "Bureaucracy: Level 9" - doctrine_roman_dominion_9_desc:0 "As the size of the international church changes and the borders of the papal state expands the bureaucracy of the church becomes less effective and its Bishops less interested in contributing to Catholicism as a whole.\nCurrent Effectiveness: #N [EmptyScope.ScriptValue('roman_calculations')|+0]#!" + doctrine_roman_dominion_1_name:0 "Corruption: Level 1" + doctrine_roman_dominion_1_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_2_name:0 "Corruption: Level 2" + doctrine_roman_dominion_2_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_3_name:0 "Corruption: Level 3" + doctrine_roman_dominion_3_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_4_name:0 "Corruption: Level 4" + doctrine_roman_dominion_4_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_5_name:0 "Corruption: Level 5" + doctrine_roman_dominion_5_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_6_name:0 "Corruption: Level 6" + doctrine_roman_dominion_6_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_7_name:0 "Corruption: Level 7" + doctrine_roman_dominion_7_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_8_name:0 "Corruption: Level 8" + doctrine_roman_dominion_8_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" + doctrine_roman_dominion_9_name:0 "Corruption: Level 9" + doctrine_roman_dominion_9_desc:0 "As the direct power of the Papacy grows, so does the bureaucracy of the Church. High levels of bureaucracy lead to more corruption within the Church, often causing its bishops to contribute more to their own pockets and less to their lieges.\n#warning Current Corruption: [EmptyScope.ScriptValue('roman_calculations')|-0]#!" - doctrine_parameter_param_bureaucracy_exp_1:0 "The Size of the Papacy in Relation to the Overall size of Catholicism has the Largest Impact on Church Bureaucracy." + doctrine_parameter_param_bureaucracy_exp_1:0 "The #help Size of the Papacy#! in Relation to the #help Overall size of Catholicism#! has the Largest Impact on Church Corruption." doctrine_parameter_param_bureaucracy_exp_2:0 "Mitigating factors include; #P Catholic titles of High Tier, High Fervour, High Papal Stewardship, High Papal Piety Level.#!" - doctrine_parameter_param_bureaucracy_exp_3:0 "Mitigating factors include; #N Low Fervour, Low Papal Stewardship, Low Papal Piety Level, Papal Sin Traits.#!" + doctrine_parameter_param_bureaucracy_exp_3:0 "Mitigating factors include: #N Low Fervour, Low Papal Stewardship, Low Papal Piety Level, Papal Sin Traits.#!" #doctrine_parameter_great_holy_wars_active:1 "If one exists, the [head_of_faith|E] can declare a [great_holy_war|E] when the [faith|E] has high [fervor|E]" #Britain special_doctrine_servants_of_the_regency_name:0 "Servants of the Regency" diff --git a/localization/english/replace/units_l_english.yml b/localization/english/replace/units_l_english.yml deleted file mode 100644 index a1a42d1c..00000000 --- a/localization/english/replace/units_l_english.yml +++ /dev/null @@ -1,52 +0,0 @@ -l_english: - UNIT_TYPE_MY:0 "your" - UNIT_TYPE_ALLY:0 "ally" - UNIT_TYPE_ENEMY:0 "enemy" - UNIT_TYPE_HOSTILE:0 "hostile" - UNIT_TYPE_NEUTRAL:0 "neutral" - UNIT_TYPE_UNKNOWN:0 "unknown" - ARMY_TYPE_RAIDERS: "[raid|E] [army|E]" - ARMY_TYPE_BARTERERS: "[trade|E] Caravan" - ARMY_TYPE_DEFAULT: "[army|E]" - UNIT_COUNT_SOLDIERS:0 "[soldiers|E]: $VALUE|0V$" - UNIT_COUNT_LEVIES:0 " [levies|E]: $VALUE|0V$" - UNIT_COUNT_KNIGHTS:1 " [knight_i]$knight_culture_player_plural$: $VALUE|0V$" - UNIT_TAB_MAA:1 " @$ICONKEY$_icon!$NAME$: $VALUE|0V$" - UNIT_MAA_WITH_MAX:1 "@$ICONKEY$_icon!$NAME$: $VALUE|0V$/$MAX|V0$" - ARMY_QUALITY_LEVEL_1:0 "@army_quality_icon_1! Low [troop_quality|E]" - ARMY_QUALITY_LEVEL_2:0 "@army_quality_icon_2! Decent [troop_quality|E]" - ARMY_QUALITY_LEVEL_3:0 "@army_quality_icon_3! High [troop_quality|E]" - ARMY_QUALITY_LEVEL_4:0 "@army_quality_icon_4! Superior [troop_quality|E]" - ARMY_QUALITY_LEVEL_5:0 "@army_quality_icon_5! Elite [troop_quality|E]" - UNIT_SUPPLY_STATE_POSITIVE:0 "@supply_icon!$STATE|V$ ($CURRENT|+0$) $VALUE|+=$/month" - UNIT_SUPPLY_STATE_NEGATIVE:0 "@supply_icon!$STATE|V$ ($CURRENT|+0$) @supply_trend_negative_icon!$VALUE|+=$/month" - UNIT_NEUTRAL_COMBAT_PREDICTION:1 "In a fight on neutral [terrain|E], if you attack with your selected [armies|E], $PREDICTION$" - UNIT_TOOLTIP_NO_COMMANDER:0 "No [commander|E]" - UNIT_TOOLTIP_COMMANDER:0 "[commander|E]: [CHARACTER.GetUIName|U] (@skill_martial_icon![CHARACTER.GetSkill( 'martial' )|V])" - UNIT_TOOLTIP_COMMANDER_TRAIT:0 "$TRAIT$" - UNIT_TERRAIN_TOOLTIP_SUPPLY_GOOD:0 " $KEY$: #V $MEN|0$/$SUPPLY|0$#!" - UNIT_TERRAIN_TOOLTIP_SUPPLY_BAD:0 " $KEY$: #N $MEN|0$/$SUPPLY|0$#!" - UNIT_TERRAIN_TOOLTIP_LOCAL_SUPPLY_GOOD:1 "Local $KEY$: #V $MEN|0$/$SUPPLY|0$#!" - UNIT_TERRAIN_TOOLTIP_LOCAL_SUPPLY_BAD:1 "Local $KEY$: #N $MEN|0$/$SUPPLY|0$#!" - UNIT_TERRAIN_TOOLTIP_COUNTY_ATTRITION:0 " Hostile County: $PERC|%0-$" - KNIGHT_BREAKDOWN_ENTRY:0 "[CHARACTER.GetShortUIName|U]: [CHARACTER.GetSkill( 'prowess' )] [prowess|E]" - UNIT_STATE_REGULAR:0 "Standing still" - UNIT_STATE_COMBAT:0 "In Combat" - UNIT_STATE_SIEGING:0 "Besieging" - UNIT_STATE_EMBARKED:0 "Embarked" - UNIT_STATE_GATHERING:0 "Gathering: $VALUE$ left" - UNIT_STATE_MOVING:0 "Moving" - UNIT_STATE_RAIDING:0 "Raiding" - UNIT_STATE_BARTERING: "Trading" - UNIT_STATE_RETREATING:0 "Retreating to [PROVINCE.GetName]" - ARMY_STATUS_ICON_TOOLTIP:0 "$DESC$" - KNIGHT_IN_THIS_ARMY_TOOLTIP:2 "Is a $knight_culture_player$ in this [army|E]" - KNIGHT_IN_ARMY_TOOLTIP:1 "[knight_i]Is a $knight_culture_player$ in an [army|E]" - UNIT_HOSTILE:0 "This [army|E] is [hostile_army|E]" - SUPPLY_BREAKDOWN_FRIENDLY_TERRITORY:0 "In friendly territory" - SUPPLY_BREAKDOWN_LIMIT:0 "Over [supply_limit|E]" - SUPPLY_BREAKDOWN_COMMANDER:0 "[commander|E] ([CHARACTER.GetShortUIName])" - SUPPLY_LOSS_AT_SEA:0 "At Sea" - SUPPLY_BREAKDOWN_PENALTY:0 "Supply penalty" - SUPPLY_BREAKDOWN_BONUS:0 "Supply bonus" - From b58c1be6fcffe19e2820031cd3a95ae65e95fa3d Mon Sep 17 00:00:00 2001 From: Damimani Date: Fri, 6 Mar 2026 15:24:25 +0100 Subject: [PATCH 05/52] Update provinces.png --- map_data/provinces.png | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/map_data/provinces.png b/map_data/provinces.png index ef2e4f45..4b91995b 100644 --- a/map_data/provinces.png +++ b/map_data/provinces.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bfb04754e8995ba90919bbc7b86ac6c50ed3e1ef5896017eb2670f1c319c6527 -size 277 +oid sha256:31f46555ebe8b586f662c3c5a0a723db8321ce9719e85e8751922a57b0c6c454 +size 922153 From 742cc067062a789fd25c771fd9c5e81a53c30075 Mon Sep 17 00:00:00 2001 From: ProHunter1023 Date: Sat, 7 Mar 2026 18:12:54 +0800 Subject: [PATCH 06/52] Manor for the Doge of Venice --- common/landed_titles/noble_families.txt | 15 +++++++++++++++ history/titles/NEOW_admin_titles.txt | 9 ++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/common/landed_titles/noble_families.txt b/common/landed_titles/noble_families.txt index c6e9232e..b946460c 100644 --- a/common/landed_titles/noble_families.txt +++ b/common/landed_titles/noble_families.txt @@ -374,5 +374,20 @@ d_nf_bollani = { #Mountbatten noble_family = yes destroy_if_invalid_heir = yes + ai_primary_priority = { add = @never_primary_score } +} + +d_nf_robecchi-bricchetti = { #Mountbatten + color = { 100 100 100 } + capital = c_venezia + + definite_form = yes + landless = yes + ruler_uses_title_name = no + always_follows_primary_heir = yes + no_automatic_claims = yes + noble_family = yes + destroy_if_invalid_heir = yes + ai_primary_priority = { add = @never_primary_score } } \ No newline at end of file diff --git a/history/titles/NEOW_admin_titles.txt b/history/titles/NEOW_admin_titles.txt index 09e67b70..817e84ab 100644 --- a/history/titles/NEOW_admin_titles.txt +++ b/history/titles/NEOW_admin_titles.txt @@ -238,7 +238,14 @@ d_nf_bollani = { # Bollani } } - +d_nf_robecchi-bricchetti = { # Bollani + 2554.1.1 = { + liege = k_venice + holder = italy0002 + government = administrative_government + succession_laws = { noble_family_succession_law } + } +} #old britania, keep for future potential changes From 31372787b5e4092146d169c873aa519ff4bab47c Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 7 Mar 2026 10:31:19 +0000 Subject: [PATCH 07/52] Update great_holy_war_events.txt --- events/religion_events/great_holy_war_events.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/events/religion_events/great_holy_war_events.txt b/events/religion_events/great_holy_war_events.txt index 90762240..3bb1d391 100644 --- a/events/religion_events/great_holy_war_events.txt +++ b/events/religion_events/great_holy_war_events.txt @@ -1813,7 +1813,7 @@ great_holy_war.0020 = { } } random_list = { - 25 = { # Pledge. + 15 = { # Pledge. trigger = { OR = { # Either be independent, or have no liege above you of the defending Faith, to avoid messy situations of vassals and lieges fighting against each other. top_liege = this @@ -1845,7 +1845,7 @@ great_holy_war.0020 = { trigger_event = { id = great_holy_war.0026 } # Set Beneficiary automatically. } } - 75 = { # Do not pledge. + 85 = { # Do not pledge. random = { # When not pledging, there is still a chance that the AI will donate money. chance = 35 modifier = { @@ -2067,7 +2067,7 @@ great_holy_war.0092 = { } } random_list = { - 25 = { #Pledge. + 20 = { #Pledge. trigger = { OR = { # Either be independent, or have no liege above you of the defending Faith, to avoid messy situations of vassals and lieges fighting against each other. top_liege = this @@ -2089,7 +2089,7 @@ great_holy_war.0092 = { } } } - 75 = { #Do not pledge. + 80 = { #Do not pledge. random = { #When not pledging, there is still a chance that the AI will donate money. chance = 35 From c103d9469bba631370f661af5c8a8ecef08fd569 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 14 Mar 2026 05:11:18 +0000 Subject: [PATCH 08/52] fix --- common/culture/cultures/NEOW_hispanic.txt | 1 + common/decisions/dlc_decisions/mpo/mpo_decisions.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/common/culture/cultures/NEOW_hispanic.txt b/common/culture/cultures/NEOW_hispanic.txt index 3a93559a..360a95d1 100644 --- a/common/culture/cultures/NEOW_hispanic.txt +++ b/common/culture/cultures/NEOW_hispanic.txt @@ -108,6 +108,7 @@ balearic = { #Balear tradition_forbearing tradition_city_keepers tradition_fishermen + tradition_republican_legacy } diff --git a/common/decisions/dlc_decisions/mpo/mpo_decisions.txt b/common/decisions/dlc_decisions/mpo/mpo_decisions.txt index 7a24c9aa..75792d69 100644 --- a/common/decisions/dlc_decisions/mpo/mpo_decisions.txt +++ b/common/decisions/dlc_decisions/mpo/mpo_decisions.txt @@ -6953,7 +6953,6 @@ become_nomadic_decision = { capital_county = { any_county_situation = { OR = { - situation:the_great_steppe ?= this situation:game_rule_extra_nomads_arabs ?= this situation:game_rule_extra_nomads_sami ?= this situation:game_rule_extra_nomads_tibet ?= this From 68e49834869524c86717bbd6e3e03f98c4c6fbbc Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 14 Mar 2026 06:04:19 +0000 Subject: [PATCH 09/52] fix --- common/culture/cultures/NEOW_hispanic.txt | 29 +++++++++++++++++++ gfx/map/surround_map/surround_mask.dds | 4 +-- history/provinces/e_iberia.txt | 4 +-- .../culture/zz_NEOW_cultures_l_english.yml | 3 ++ 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/common/culture/cultures/NEOW_hispanic.txt b/common/culture/cultures/NEOW_hispanic.txt index 360a95d1..724557fd 100644 --- a/common/culture/cultures/NEOW_hispanic.txt +++ b/common/culture/cultures/NEOW_hispanic.txt @@ -352,6 +352,35 @@ NEOW_andalusian = { #Andalûh } } +canarian = { #Andalûh + color = { 221 239 89 } + + ethos = ethos_courtly + heritage = heritage_hispanic + language = language_hispanophonic + martial_custom = martial_custom_male_only + head_determination = head_determination_domain + traditions = { + tradition_swords_for_hire + tradition_seafaring + tradition_zealous_people + tradition_astute_diplomats + tradition_talent_acquisition + } + + name_list = name_list_castilian + house_coa_frame = house_frame_19 + house_coa_mask_offset = { 0.0 0.025 } + house_coa_mask_scale = { 0.95 0.95 } + coa_gfx = { castilian_coa_gfx iberian_group_coa_gfx western_coa_gfx } + building_gfx = { iberian_building_gfx } + clothing_gfx = { iberian_christian_clothing_gfx western_clothing_gfx } + unit_gfx = { iberian_christian_unit_gfx } + + ethnicities = { + 10 = mediterranean + } +} portuguese = { #Português color = { 65 102 10 } diff --git a/gfx/map/surround_map/surround_mask.dds b/gfx/map/surround_map/surround_mask.dds index fb25a8dd..ff477c1e 100755 --- a/gfx/map/surround_map/surround_mask.dds +++ b/gfx/map/surround_map/surround_mask.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f7dbedfb0c03f572c6b1ef1820eb264ee254b1ab03efa5759a9c63081fe974d -size 33554560 +oid sha256:b57d1c7fec0b8f5939a7b927573d4b8f6d064659d2ed2ceef28b935f0efc5f68 +size 11184976 diff --git a/history/provinces/e_iberia.txt b/history/provinces/e_iberia.txt index 7a664902..ed9b021e 100644 --- a/history/provinces/e_iberia.txt +++ b/history/provinces/e_iberia.txt @@ -1422,7 +1422,7 @@ ##d_canarias ###c_canarias 8713 = { - culture = atlantannach + culture = canarian religion = iberian holding = castle_holding } @@ -1431,7 +1431,7 @@ } ###c_fuerteventura 8714 = { - culture = atlantannach + culture = canarian religion = iberian holding = castle_holding } diff --git a/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml b/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml index 3bcc22e0..841c03cb 100644 --- a/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml +++ b/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml @@ -184,6 +184,9 @@ NEOW_andalusian:0 "Andalûh" NEOW_andalusian_collective_noun:0 "Andalusian" NEOW_andalusian_prefix:0 "Andaluso" + canarian:0 "Canario" + canarian_collective_noun:0 "Canario" + canarian_prefix:0 "Canario" andorra:0 "Andorrà" andorra_collective_noun:0 "Andorran" andorra_prefix:0 "Andorrano" From 5e91bba25a13115a27b152f1586a01975c52565d Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 14 Mar 2026 14:50:33 +0000 Subject: [PATCH 10/52] Update 04_saxon_elective.txt --- .../succession_election/04_saxon_elective.txt | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/common/succession_election/04_saxon_elective.txt b/common/succession_election/04_saxon_elective.txt index 425022ff..4f0332a9 100644 --- a/common/succession_election/04_saxon_elective.txt +++ b/common/succession_election/04_saxon_elective.txt @@ -63,7 +63,7 @@ saxon_elective = { #Farmer Elective add = { type = title_dejure_vassals limit = { - is_vassal_of = scope:holder #All direct de jure vassals, no matter the tier. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. is_adult = yes NOT = { has_trait = incapable } } @@ -78,7 +78,7 @@ saxon_elective = { #Farmer Elective add = { type = holder_direct_vassals limit = { - is_vassal_of = scope:holder #All direct de jure vassals, no matter the tier. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. is_adult = yes NOT = { has_trait = incapable } } @@ -115,7 +115,7 @@ saxon_elective = { #Farmer Elective add = { type = title_dejure_vassals limit = { - is_vassal_of = scope:holder #Only Powerful, direct, de jure vassals are potential candidates. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. feudal_elective_potential_landed_candidate_trigger = yes government_has_flag = government_is_prepublic OR = { @@ -145,7 +145,7 @@ saxon_elective = { #Farmer Elective add = { type = holder_direct_vassals limit = { - is_vassal_of = scope:holder #Only Powerful, direct, de jure vassals are potential candidates. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. government_has_flag = government_is_prepublic OR = { culture = { @@ -162,7 +162,7 @@ saxon_elective = { #Farmer Elective limit = { OR = { is_courtier_of = scope:holder - is_vassal_of = scope:holder #All direct de jure vassals, no matter the tier. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. } OR = { culture = { @@ -242,7 +242,7 @@ urban_elective = { #Urban Elective add = { type = title_dejure_vassals limit = { - is_vassal_of = scope:holder #All direct de jure vassals, no matter the tier. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. is_adult = yes NOT = { has_trait = incapable } } @@ -257,7 +257,7 @@ urban_elective = { #Urban Elective add = { type = holder_direct_vassals limit = { - is_vassal_of = scope:holder #All direct de jure vassals, no matter the tier. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. is_adult = yes NOT = { has_trait = incapable } } @@ -294,7 +294,7 @@ urban_elective = { #Urban Elective add = { type = title_dejure_vassals limit = { - is_vassal_of = scope:holder #Only Powerful, direct, de jure vassals are potential candidates. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. feudal_elective_potential_landed_candidate_trigger = yes government_has_flag = government_is_urepublic OR = { @@ -324,7 +324,7 @@ urban_elective = { #Urban Elective add = { type = holder_direct_vassals limit = { - is_vassal_of = scope:holder #Only Powerful, direct, de jure vassals are potential candidates. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. government_has_flag = government_is_urepublic OR = { culture = { @@ -341,7 +341,7 @@ urban_elective = { #Urban Elective limit = { OR = { is_courtier_of = scope:holder - is_vassal_of = scope:holder #All direct de jure vassals, no matter the tier. + target_is_liege_or_above = scope:holder #All de jure vassals, no matter the tier, sub-vassals included. } OR = { culture = { From ee810616c53a8a90876de6e08c513f00cdae749f Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 14 Mar 2026 15:37:23 +0000 Subject: [PATCH 11/52] concubines enabled --- common/character_interactions/00_marriage_interactions.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/character_interactions/00_marriage_interactions.txt b/common/character_interactions/00_marriage_interactions.txt index a27e8af3..62a5dfb5 100644 --- a/common/character_interactions/00_marriage_interactions.txt +++ b/common/character_interactions/00_marriage_interactions.txt @@ -3224,7 +3224,7 @@ offer_concubine = { } } scope:recipient = { - NOT = { government_has_flag = government_is_herder } + #NOT = { government_has_flag = government_is_herder } allowed_concubines = yes is_adult = yes } From 552de94e9f638647fd2ae0ba9aa4cfcda75176f0 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 14 Mar 2026 22:10:57 +0000 Subject: [PATCH 12/52] Various Minor Fixes Relating to herder in Peasant Gov --- common/buildings/NEOW_special_buildings.txt | 2 + common/character_interactions/00_alliance.txt | 4136 ++++++ .../00_ce1_interactions.txt | 357 + .../00_character_interactions.txt | 2 +- .../00_diarch_interactions.txt | 10461 ++++++++++++++++ common/character_interactions/00_gift.txt | 789 ++ .../00_grant_titles_interaction.txt | 2 +- .../00_invite_agent_to_scheme.txt | 844 ++ .../00_marriage_interactions.txt | 2 +- .../00_modifiy_vassal_contract.txt | 2464 ++++ .../00_prison_interactions.txt | 8286 ++++++++++++ .../00_religious_interactions.txt | 4 +- .../00_revoke_title_interaction.txt | 10 +- .../00_scheme_interactions.txt | 2838 +++++ .../00_tribal_interactions.txt | 948 ++ .../00_tributary_interactions.txt | 6068 +++++++++ .../00_vassal_interactions.txt | 4033 ++++++ common/character_interactions/00_war.txt | 2372 ++++ .../03_fp2_interactions.txt | 2 +- .../05_bp2_interactions.txt | 4988 ++++++++ .../09_mpo_interactions.txt | 52 +- .../tgp_tribute_mission_interactions.txt | 911 ++ .../00_marriage_triggers.txt | 2 +- 23 files changed, 49535 insertions(+), 38 deletions(-) create mode 100644 common/character_interactions/00_alliance.txt create mode 100644 common/character_interactions/00_ce1_interactions.txt create mode 100644 common/character_interactions/00_diarch_interactions.txt create mode 100644 common/character_interactions/00_gift.txt create mode 100644 common/character_interactions/00_invite_agent_to_scheme.txt create mode 100644 common/character_interactions/00_modifiy_vassal_contract.txt create mode 100644 common/character_interactions/00_prison_interactions.txt create mode 100644 common/character_interactions/00_scheme_interactions.txt create mode 100644 common/character_interactions/00_tribal_interactions.txt create mode 100644 common/character_interactions/00_tributary_interactions.txt create mode 100644 common/character_interactions/00_vassal_interactions.txt create mode 100644 common/character_interactions/00_war.txt create mode 100644 common/character_interactions/05_bp2_interactions.txt create mode 100644 common/character_interactions/tgp_tribute_mission_interactions.txt diff --git a/common/buildings/NEOW_special_buildings.txt b/common/buildings/NEOW_special_buildings.txt index 28d19e66..a7d12167 100644 --- a/common/buildings/NEOW_special_buildings.txt +++ b/common/buildings/NEOW_special_buildings.txt @@ -4650,6 +4650,8 @@ doges_palace_01 = { # Should technically be burnt down/rebuilt, but this is most text = government_is_not_republic_or_admin_desc OR = { government_has_flag = government_is_republic + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic government_has_flag = government_is_administrative } } diff --git a/common/character_interactions/00_alliance.txt b/common/character_interactions/00_alliance.txt new file mode 100644 index 00000000..d2fdf175 --- /dev/null +++ b/common/character_interactions/00_alliance.txt @@ -0,0 +1,4136 @@ +call_ally_interaction = { + category = interaction_category_diplomacy + desc = call_ally_interaction_desc + interface_priority = 60 + interface = call_ally + special_interaction = call_ally_interaction + popup_on_receive = yes + pause_on_receive = yes + icon = alliance + + greeting = positive + notification_text = CALL_ALLY_NOTIFICATION + + is_shown = { + scope:actor = { + is_at_war = yes + trigger_if = { # Avoid calling Adventurers without armies or landed rulers who have been devastated + limit = { + is_ai = yes + } + scope:recipient.current_military_strength >= 100 + } + trigger_if = { + limit = { + liege = scope:recipient # The recipient is actor's liege + } + subject_contract_has_flag = vassal_contract_liege_forced_war_override + } + trigger_if = { + limit = { + scope:recipient = { + is_tributary_of = scope:actor + NOT = { is_allied_to = scope:actor } + } + } + piety >= 50 + has_realm_law_flag = can_call_tributaries_for_piety + } + } + scope:recipient = { + OR = { + is_allied_to = scope:actor + AND = { + this ?= scope:actor.diarch + scope:actor = { + any_character_war = { diarch_callable_in_internal_war_trigger = yes } + } + } + scope:actor = { + is_vassal_of = prev + subject_contract_has_flag = vassal_contract_liege_forced_war_override + } + scope:actor = { + is_tributary_of = prev + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + AND = { + is_tributary_of = scope:actor + scope:actor = { + piety >= 50 + has_realm_law_flag = can_call_tributaries_for_piety + } + } + } + } + scope:actor = { #If you can call them as a House Member then do that + NOT = { + is_character_interaction_valid = { + recipient = scope:recipient + interaction = call_house_member_to_war_interaction + } + } + } + } + + has_valid_target = { + exists = scope:target + } + + has_valid_target_showing_failures_only = { + scope:target = { + is_war_leader = scope:actor + } + + scope:actor = { + trigger_if = { + limit = { # if you're invoking your suzerain's defensive guarantee, it has to be for a defensive war + NOT = { is_allied_to = scope:recipient } + suzerain = scope:recipient + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + scope:target = { + primary_defender = scope:actor + } + } + + trigger_if = { + limit = { + scope:target = { + OR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + } + + trigger_if = { + limit = { + this = scope:target.casus_belli.primary_attacker + } + #if it's a religious war the recipient has to be of the same faith + custom_description = { + text = is_of_wrong_faith_for_holy_war + subject = scope:actor + object = scope:recipient + faith = scope:recipient.faith + } + } + trigger_else = { + custom_description = { + text = is_of_attacker_faith_in_holy_war + subject = scope:actor + object = scope:recipient + scope:target = { primary_attacker.faith != scope:recipient.faith } + } + } + } + } + + joiner_not_already_in_another_war_with_any_target_war_participants_trigger = { + WARRIOR = scope:actor + JOINER = scope:recipient + } + } + + + is_valid_showing_failures_only = { + + scope:recipient = { + is_ruler = yes + + # Only rulers of a high enough rank may call a hegemon into wars + custom_tooltip = { + text = too_low_rank_to_call_hegemon + trigger_if = { + limit = { highest_held_title_tier = tier_hegemony } + scope:actor = { highest_held_title_tier >= tier_empire } + } + } + } + + scope:actor = { + # Only War Leaders can call allies + custom_description = { + text = must_be_war_leader + any_character_war = { + is_war_leader = scope:actor + } + } + + # Cannot call the same character multiple times + custom_description = { + text = cannot_call_same_character_multiple_times + subject = scope:recipient + any_character_war = { + ALL_FALSE = { + was_called = scope:recipient + is_participant = scope:recipient + } + } + } + + # Cannot call a character of the "wrong" religion to a Great Holy War + trigger_if = { + limit = { + faith != scope:recipient.faith + } + custom_description = { + text = is_of_wrong_faith_for_holy_war + subject = scope:actor + object = scope:recipient + any_character_war = { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + } + } + } + + can_potentially_call_ally_trigger = { + WARRIOR = scope:actor + JOINER = scope:recipient + } + } + + can_be_picked = { + can_join_war_liege_vassal_check_trigger = { WARRIOR = scope:actor JOINER = scope:recipient } + + scope:target = { + is_war_leader = scope:actor + + # not already in target war + custom_description = { + text = join_war_interaction_already_in_target_war + NOR = { + any_war_attacker = { this = scope:recipient } + any_war_defender = { this = scope:recipient } + } + } + + # Diarchs can only be called to internal wars. + custom_tooltip = { + text = call_ally_interaction.tt.diarchs_called_to_internal_wars + trigger_if = { + limit = { scope:recipient ?= scope:actor.diarch } + primary_defender = scope:actor + diarch_callable_in_internal_war_trigger = yes + } + } + } + + # You cannot call a suzerain against their own tributary + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + scope:target.casus_belli.primary_attacker = { is_tributary_of_suzerain_or_above = scope:recipient } + } + NOT = { + scope:target.casus_belli.primary_attacker = { is_tributary_of_suzerain_or_above = scope:recipient } + } + } + trigger_else_if = { + limit = { + scope:target.casus_belli.primary_attacker = scope:actor + scope:target.casus_belli.primary_defender = { is_tributary_of_suzerain_or_above = scope:recipient } + } + NOT = { + scope:target.casus_belli.primary_defender = { is_tributary_of_suzerain_or_above = scope:recipient } + } + } + trigger_else = {} + + # You cannot call a tributary against their suzerain + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_attacker } + } + NOT = { + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_attacker } + } + } + trigger_else_if = { + limit = { + scope:target.casus_belli.primary_attacker = scope:actor + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_defender } + } + NOT = { + scope:recipient = { is_tributary_of_suzerain_or_above = scope:target.casus_belli.primary_defender } + } + } + trigger_else = {} + } + + on_auto_accept = { + scope:recipient = { + trigger_event = call_ally.0001 + } + scope:target = { + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:recipient = { + add_piety = miniscule_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:recipient = { + add_piety = minor_piety_gain + } + } + } + } + + on_accept = { + call_ally_interaction_effect = yes + + save_scope_value_as = { + name = call_ally_interaction + value = yes + } + + scope:actor = { + hidden_effect = { #To nudge friendship + if = { + limit = { + NOR = { + has_relation_friend = scope:recipient + has_relation_potential_friend = scope:recipient + } + } + set_relation_potential_friend = scope:recipient + } + } + trigger_event = call_ally.0100 + } + scope:target = { + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:recipient = { + add_piety = minor_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:recipient = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:recipient = { + add_piety = medium_piety_gain + } + } + } + } + + on_decline = { + #The war could theoretically end on the day the decline is sent + if = { + limit = { + exists = scope:target + } + scope:target = { + if = { + limit = { + is_attacker = scope:actor + } + scope:actor = { + add_opinion = { + modifier = rejected_call_to_offensive_war + target = scope:recipient + } + } + scope:recipient = { + #Why should Mandalas care about bickering tributaries in an offensive war + if = { + limit = { + NOT = { government_has_flag = government_is_mandala } + } + add_prestige_experience = major_prestige_loss + } + } + } + else = { + scope:actor = { + add_opinion = { + modifier = rejected_call_to_defensive_war + target = scope:recipient + } + } + scope:recipient = { + if = { + limit = { government_has_flag = government_is_mandala } + add_prestige_experience = major_prestige_loss + add_piety_level = -1 + } + else = { add_prestige_experience = massive_prestige_loss } + } + } + if = { + limit = { + scope:actor = { + has_relation_blood_brother = scope:recipient + } + } + scope:recipient = { + add_piety_experience = massive_piety_loss + add_character_modifier = { + modifier = broke_blood_brotherhood_modifier + desc = broke_blood_brotherhood_modifier_acceptance_tt + years = 25 + } + remove_relation_blood_brother = scope:actor + } + scope:actor = { + set_relation_rival = { + target = scope:recipient + reason = rival_blood_brother_refused_call_reason + } + } + } + # Nomad Vassals and Tributaries stop being Obedient if they have the Liege War Support / Suzerain Defensive Guarantee contract right + if = { + limit = { + scope:recipient = scope:actor.obedience_target + scope:actor = { + OR = { + subject_contract_has_flag = vassal_contract_liege_forced_war_override + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + } + } + scope:actor = { + set_variable = { + name = not_obedient_declined_call + value = scope:recipient + years = 5 + } + } + } + if = { + limit = { + scope:recipient = scope:actor.suzerain + is_defender = scope:actor + scope:actor = { + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + } + scope:actor = { + end_tributary = yes + } + } + hidden_effect = { + if = { + limit = { + NOT = { was_called = scope:recipient } + } + set_called_to = scope:recipient + } + } + } + scope:actor = { + trigger_event = call_ally.0101 + } + + # If we're a clan this interaction affects unity + refuse_call_to_arms_add_clan_unity_effect = yes + + scope:recipient = { + if = { + limit = { + exists = house + is_house_head = yes + exists = scope:actor.house + } + house = { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = ally_call_ignored + CHAR = scope:recipient + TARGET_CHAR = scope:actor + TITLE = scope:dummy_gender + } + } + } + } + } + } + + auto_accept = { + OR = { + # Always accept a call from a Spouse + custom_description = { + text = "recipient_is_spouse" + subject = scope:actor + object = scope:recipient + scope:recipient = { + is_spouse_of = scope:actor + is_ai = yes + } + } + # Always accept a call from the Heir + custom_description = { + text = "is_recipients_player_heir" + subject = scope:actor + object = scope:recipient + + exists = scope:recipient.player_heir + scope:recipient = { + player_heir = scope:actor + is_close_or_extended_family_of = scope:actor # Only for family + is_ai = yes + } + } + # Always accept a call from the one you are heir of + custom_description = { + text = "is_player_heir" + subject = scope:recipient + object = scope:actor + + exists = scope:actor.player_heir + scope:actor.player_heir = scope:recipient + scope:actor = { # Shouldn't be able to force your liege to join just because you've not got any family... + is_close_or_extended_family_of = scope:recipient + } + scope:recipient = { + is_ai = yes + } + } + } + } + + ai_accept = { + base = 20 + + modifier = { # Conquerors do not help anyone but themselves + add = -1000 + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + scope:recipient = { has_variable = conqueror } + } + + modifier = { # AI's that need to save gold will not help their lesser AI allies, unless it's a player war + add = -1000 + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + scope:actor = { + is_ai = yes + primary_title.tier < scope:recipient.primary_title.tier + } + scope:target.casus_belli = { + primary_attacker = { is_ai = yes } + primary_defender = { is_ai = yes } + } + scope:recipient = { ai_should_focus_on_building_in_their_capital = yes } + } + + modifier = { # Refuse call to conflicts of little benefit + add = -1000 + desc = WONT_FIGHT_MEANINGLESS_REASON + trigger_if = { + limit = { exists = scope:target } + scope:target = { using_cb = fp2_border_raid } + scope:recipient = { # Unless they like going on raids + NOR = { + has_trait = viking + has_trait = reaver + } + } + } + trigger_else = { always = no } + } + + modifier = { # Refuse call against Heir + add = -1000 + exists = scope:recipient.player_heir + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + scope:target.casus_belli.primary_attacker = scope:recipient.player_heir + } + trigger_else = { + scope:target.casus_belli.primary_defender = scope:recipient.player_heir + } + desc = WONT_FIGHT_HEIR_REASON + } + + modifier = { # Refuse call against Spouse + add = -1000 + scope:recipient = { + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + any_spouse = { + this = scope:target.casus_belli.primary_attacker + } + } + trigger_else = { + any_spouse = { + this = scope:target.casus_belli.primary_defender + } + } + + } + desc = WONT_FIGHT_SPOUSE_REASON + } + + modifier = { # Refuse call against Suzerain if Obedient + add = -1000 + trigger_if = { + limit = { + exists = scope:recipient.suzerain + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + scope:recipient.suzerain = scope:target.casus_belli.primary_attacker + } + trigger_else = { + scope:recipient.suzerain = scope:target.casus_belli.primary_defender + } + scope:recipient = { + exists = obedience_target + is_obedient = yes + } + } + } + trigger_else = { always = no } + desc = WONT_FIGHT_OBEDIENT_REASON + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + # Honor factor + ai_value_modifier = { + ai_honor = 1 + min = 0 + } + + modifier = { # Tends to join defensive wars + add = 50 + scope:target.casus_belli.primary_defender = scope:actor + desc = DEFENSIVE_WAR_REASON + } + + modifier = { # Same language + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + modifier = { # Shared Court Language (non-spoken) + add = 10 + desc = foreign_realm_court_language_non_spoken_interaction_reason + trigger = { + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + NOT = { knows_court_language_of = this } + } + scope:actor.top_liege != scope:recipient.top_liege + OR = { + AND = { + scope:recipient = { + has_royal_court = yes + } + scope:actor = { # You share Court Language + has_same_court_language = scope:recipient + } + } + + scope:recipient = { # The recipient doesn't have a royal court, but their liege does + top_liege != this + has_royal_court = no + liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + exists = liege.liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + } + } + } + + modifier = { # Shared Court Language (spoken) + add = 30 + desc = foreign_realm_court_language_spoken_interaction_reason + trigger = { + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + knows_court_language_of = this + } + scope:actor.top_liege != scope:recipient.top_liege + OR = { + AND = { + scope:recipient = { + has_royal_court = yes + } + scope:actor = { # You share Court Language + has_same_court_language = scope:recipient + } + } + + scope:recipient = { # The recipient doesn't have a royal court, but their liege does + top_liege != this + has_royal_court = no + liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + scope:recipient = { # The recipient doesn't have a royal court, but their liege's liege's liege's liege does, while their liege doesn't have a royal court + top_liege != this + has_royal_court = no + exists = liege.liege + exists = liege.liege.liege + exists = liege.liege.liege.liege + liege = { + top_liege != this + has_royal_court = no + } + liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege = { + top_liege != this + has_royal_court = no + } + liege.liege.liege.liege = { + has_royal_court = yes + has_same_court_language = scope:actor + } + } + } + } + } + + modifier = { # Serious diarchs wish to support their liege + add = 50 + desc = ENTRENCHED_REGENT_WILL_SUPPORT_LIEGE + trigger_if = { + limit = { scope:recipient ?= scope:actor.diarch } + scope:actor = { has_diarchy_parameter = diarchy_type_is_entrenched_regency } + } + trigger_else = { always = no } + } + + compare_modifier = { # Likes fighting infidels + trigger = { + scope:recipient.faith = scope:actor.faith + OR = { + AND = { + scope:target.casus_belli.primary_attacker = { + this = scope:actor + faith = { + faith_hostility_level = { + target = scope:target.casus_belli.primary_defender.faith + value >= religious_cb_enabled_hostility_level + } + } + } + } + AND = { + scope:target.casus_belli.primary_defender = { + this = scope:actor + faith = { + faith_hostility_level = { + target = scope:target.casus_belli.primary_defender.faith + value >= religious_cb_enabled_hostility_level + } + } + } + } + } + } + target = scope:recipient + value = ai_zeal + desc = "ZEAL_AGAINST_INFIDELS" + min = 0 + multiplier = 0.5 + } + + modifier = { # Reluctant to attack another ally + add = -50 + scope:target.casus_belli.primary_attacker = scope:actor + scope:recipient = { + is_allied_to = scope:target.casus_belli.primary_defender + } + desc = ATTACK_ON_ALLY_REASON + } + + modifier = { # Reluctant to defend against another ally + add = -25 + scope:target.casus_belli.primary_defender = scope:actor + scope:recipient = { + is_allied_to = scope:target.casus_belli.primary_attacker + } + desc = WAR_WITH_ALLY_REASON + } + + modifier = { # Reluctant to join wars against religious brethren. + add = -50 + scope:recipient.faith != scope:actor.faith + scope:target.casus_belli.primary_attacker = scope:actor + scope:target.casus_belli.primary_defender.faith = scope:recipient.faith + scope:target.casus_belli.war = { + OR = { + using_cb = minor_religious_war + using_cb = religious_war + using_cb = major_religious_war + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + desc = WONT_ATTACK_RELIGIOUS_BRETHREN_REASON + } + + modifier = { # Reluctant to join against Friends + add = -50 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_friend = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_friend = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_FRIEND_REASON + } + + modifier = { # Reluctant to join against Best Friends + add = -100 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_best_friend = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_best_friend = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_BEST_FRIEND_REASON + } + modifier = { # Reluctant to join against Lovers + add = -100 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_lover = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_lover = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_LOVER_REASON + } + modifier = { # Reluctant to join against Soulmate + add = -200 + trigger_if = { + limit = { + scope:target.casus_belli.primary_defender = scope:actor + } + has_relation_soulmate = scope:target.casus_belli.primary_attacker + } + trigger_else = { + has_relation_soulmate = scope:target.casus_belli.primary_defender + } + desc = WONT_FIGHT_SOULMATE_REASON + } + modifier = { # Reluctant to join tributaries + add = -200 + scope:actor = { + is_tributary_of = scope:recipient + NOT = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override } + } + scope:recipient = { + NOR = { + has_relation_lover = scope:actor + has_relation_friend = scope:actor + is_allied_to = scope:actor + } + } + desc = WONT_FIGHT_MEANINGLESS_REASON + } + modifier = { # Refuse call for hostages' safety + any_home_court_hostage = { + warden = { + OR = { + is_at_war_with = scope:actor + any_ally = { is_at_war_with = scope:actor } + } + } + } + add = { + value = 0 + every_home_court_hostage = { + limit = { + warden = { + OR = { + is_at_war_with = scope:actor + any_ally = { is_at_war_with = scope:actor } + } + } + } + subtract = call_to_arms_hostage_value + } + multiply = 0.25 + } + desc = HOSTAGE_ENEMY_CALL_TO_ARMS_REASON + } + + modifier = { + scope:recipient.house.house_confederation ?= { + trigger_if = { + limit = { scope:actor = { is_defender_in_war = scope:target } } + this = scope:target.casus_belli.primary_attacker.house.house_confederation + } + trigger_else = { this = scope:target.casus_belli.primary_defender.house.house_confederation } + } + add = -100 + desc = BLOC_MEMBER_CALL_TO_ARMS_REASON + } + + modifier = { + add = 200 + scope:actor = { + is_tributary_of = scope:recipient + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + } + desc = MANDALA_GUARANTEE_REASON + } + + fp3_struggle_resist_allied_wars_modifier = yes + } + + # Score above 0 means the AI will call this ally. Note that DESIRED_WAR_SIDE_STRENGTH still applies and can prevent calling the ally + ai_will_do = { + base = 100 + + modifier = { # If the player is at war, do not bother them with offensive calls + scope:target.casus_belli.primary_attacker = scope:actor + scope:recipient = { + is_ai = no + any_character_war = { + primary_defender = scope:recipient + } + } + factor = 0 + } + + modifier = { # Do not call the player if they are in debt + scope:recipient = { + is_ai = no + gold <= -1 + } + factor = 0 + } + + modifier = { # Don't call players in against their heirs (they wouldn't accept the reverse situation... don't be a hypocrite) + exists = scope:recipient.player_heir + scope:recipient = { + is_ai = no + } + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + scope:target.casus_belli.primary_attacker = scope:recipient.player_heir + } + trigger_else = { + scope:target.casus_belli.primary_defender = scope:recipient.player_heir + } + factor = 0 + } + + modifier = { # Same with spouses + scope:recipient = { + is_ai = no + } + trigger_if = { + limit = { scope:target.casus_belli.primary_defender = scope:actor } + any_spouse = { + this = scope:target.casus_belli.primary_attacker + } + } + trigger_else = { + any_spouse = { + this = scope:target.casus_belli.primary_defender + } + } + factor = 0 + } + + modifier = { # Don't call brand-new allies into old wars, at least until some time has elapsed. + has_variable = delay_calling_recent_ally + var:delay_calling_recent_ally = scope:recipient + scope:target = { + war_days >= 30 + } + factor = 0 + + } + + modifier = { # If the recipient is allied to both the attacker and the defender, the attacker shouldn't call + scope:target.casus_belli.primary_attacker = scope:actor + scope:target.casus_belli.primary_defender = { + is_allied_to = scope:recipient + } + factor = 0 + } + + #You're a Mandala Suzerain; you don't get off the hook that easily + modifier = { + scope:actor = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override } + scope:recipient = scope:actor.suzerain + add = 500 + } + } +} + +negotiate_alliance_interaction = { + category = interaction_category_diplomacy + ai_min_reply_days = 4 + ai_max_reply_days = 9 + icon = alliance + + send_name = negotiate_alliance_interaction + + interface_priority = 60 + desc = negotiate_alliance_interaction_desc + + greeting = positive + notification_text = NEGOTIATE_ALLIANCE_NOTIFICATION + + is_shown = { + scope:recipient = { + this != scope:actor + NOT = { is_allied_to = scope:actor } + is_ruler = yes + } + scope:actor = { + is_ruler = yes + OR = { + is_ai = no + highest_held_title_tier >= 2 + } + #childhood friendship with hostage event, where they swear to be friends forever + OR = { + is_any_family_relation_or_spouse_trigger = { CHARACTER = scope:recipient } + hostage_oath_of_friendship_trigger = yes + #Parents/spouse were blood brothers + has_opinion_modifier = { + modifier = blood_brother_close_family_opinion + target = scope:recipient + } + house ?= { + house_head = scope:actor + any_house_relation = { + any_relation_house = { + exists = house_head + scope:recipient = house_head + } + has_house_relation_parameter = unlocks_house_head_negotiate_alliance + } + } + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_playable_character = yes + is_imprisoned = no + } + scope:actor = { + is_playable_character = yes + is_imprisoned = no + NOT = { + is_at_war_with = scope:recipient + } + } + custom_description = { + text = "has_already_rejected_renegotiation" + subject = scope:recipient + NOT = { + scope:actor = { + has_opinion_modifier = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + } + } + + scope:actor = { highest_held_title_tier < tier_hegemony } + scope:recipient = { highest_held_title_tier < tier_hegemony } + OR = { + #Ruler has the defensive negotiations perk + scope:actor = { has_perk = defensive_negotiations_perk } + #Ruler is married to other ruler. + scope:actor = { is_spouse_of = scope:recipient } + #Ruler is relative of other ruler + scope:actor = { is_parent_of = scope:recipient } + scope:actor = { is_grandparent_of = scope:recipient } + scope:actor = { is_great_grandparent_of = scope:recipient } + scope:actor = { is_child_of = scope:recipient } + scope:actor = { is_grandchild_of = scope:recipient } + scope:actor = { is_great_grandchild_of = scope:recipient } + scope:actor = { is_uncle_or_aunt_of = scope:recipient } + scope:actor = { is_nibling_of = scope:recipient } + scope:actor = { is_sibling_of = scope:recipient } + #Parents/spouse were blood brothers + scope:actor = { + has_opinion_modifier = { + modifier = blood_brother_close_family_opinion + target = scope:recipient + } + } + + custom_description = { + text = rulers_family_is_married_to_other_ruler_trigger + subject = scope:recipient + object = scope:actor + #Ruler's child/parent/sibling/grandchild/grandparent/uncle/aunt/niece/nephew is married to other ruler. + scope:recipient = { + any_spouse = { + OR = { + is_close_family_of = scope:actor + is_nibling_of = scope:actor + is_uncle_or_aunt_of = scope:actor + } + } + } + } + + custom_description = { + text = rulers_family_is_married_to_other_ruler_trigger + subject = scope:actor + object = scope:recipient + #Other ruler's child/parent/sibling/grandchild/grandparent/uncle/aunt/niece/nephew is married to first ruler. + scope:actor = { + any_spouse = { + OR = { + is_close_family_of = scope:recipient + is_nibling_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + } + } + } + } + + custom_description = { + text = rulers_child_parent_sibling_is_married_to_other_rulers_trigger + subject = scope:recipient + object = scope:actor + # Ruler's child/parent/sibling is married to other ruler's child/parent/sibling. + scope:actor = { + any_close_family_member = { + OR = { + is_parent_of = scope:actor + is_child_of = scope:actor + is_sibling_of = scope:actor + } + any_spouse = { + OR = { + is_parent_of = scope:recipient + is_child_of = scope:recipient + is_sibling_of = scope:recipient + } + } + } + } + } + + custom_description = { + text = hostage_oath_of_friendship_trigger + subject = scope:recipient + object = scope:actor + #childhood friendship with hostage event, where they swear to be friends forever + scope:actor = { + hostage_oath_of_friendship_trigger = yes + } + } + + custom_tooltip = { + text = house_relation_alliance_trigger + scope:actor.house ?= { + house_head ?= scope:actor + any_house_relation = { + any_relation_house = { + exists = house_head + scope:recipient = house_head + } + has_house_relation_parameter = unlocks_house_head_negotiate_alliance + } + } + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0234 + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + # Admin Gov can spend Influence to increase AI acceptance towards other same-realm admin characters + send_option = { + is_shown = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + top_liege = scope:actor.top_liege + government_allows = administrative + } + } + is_valid = { + scope:actor = { + influence >= major_influence_value + } + custom_tooltip = { + text = ALREADY_USING_HOOK + NOT = { scope:hook = yes } + } + } + flag = influence + localization = SPEND_INFLUENCE + } + + send_options_exclusive = no + + on_accept = { + scope:actor = { + trigger_event = char_interaction.0235 + + stress_impact = { + shy = minor_stress_impact_gain + } + + if = { + limit = { + scope:hook = yes + has_usable_hook = scope:recipient + } + use_hook = scope:recipient + } + if = { + limit = { + scope:influence = yes + } + change_influence = major_influence_loss + } + } + + scope:recipient = { + custom_tooltip = negotiate_alliance_effect_recipient_tooltip + } + + #Set up alliance, depending on relation between rulers. + hidden_effect = { + #Prioritize marriage between rulers and/or direct blood relation between rulers first. + if = { + limit = { + scope:actor = { + OR = { + is_spouse_of = scope:recipient + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + is_grandparent_of = scope:recipient + is_great_grandparent_of = scope:recipient + is_grandchild_of = scope:recipient + is_great_grandchild_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + is_nibling_of = scope:recipient + } + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + } + } + #...Then marriage between close family members and either actor or recipient. + else_if = { + limit = { + scope:recipient = { + any_spouse = { + OR = { + is_close_family_of = scope:actor + is_nibling_of = scope:actor + is_uncle_or_aunt_of = scope:actor + } + } + } + } + scope:recipient = { + random_spouse = { + limit = { + OR = { + is_close_family_of = scope:actor + is_nibling_of = scope:actor + is_uncle_or_aunt_of = scope:actor + } + } + save_scope_as = recipient_spouse + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:recipient_spouse + allied_through_target = scope:recipient + } + } + } + else_if = { + limit = { + scope:actor = { + any_spouse = { + OR = { + is_close_family_of = scope:recipient + is_nibling_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + } + } + } + } + scope:actor = { + random_spouse = { + limit = { + OR = { + is_close_family_of = scope:recipient + is_nibling_of = scope:recipient + is_uncle_or_aunt_of = scope:recipient + } + } + save_scope_as = actor_spouse + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:actor_spouse + } + } + } + #...And finally marriage between close relatives and close relatives. + else_if = { + limit = { + scope:actor = { + any_close_family_member = { + OR = { + is_child_of = scope:actor + is_parent_of = scope:actor + is_sibling_of = scope:actor + } + any_spouse = { + OR = { + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + } + } + } + } + } + scope:actor = { + random_close_family_member = { + limit = { + OR = { + is_child_of = scope:actor + is_parent_of = scope:actor + is_sibling_of = scope:actor + } + any_spouse = { + OR = { + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + } + } + } + save_scope_as = actor_spouse + random_spouse = { + limit = { + OR = { + is_child_of = scope:recipient + is_parent_of = scope:recipient + is_sibling_of = scope:recipient + } + } + save_scope_as = recipient_spouse + } + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor_spouse + allied_through_target = scope:recipient_spouse + } + } + } + else_if = { + limit = { + scope:actor = { has_perk = defensive_negotiations_perk } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + } + scope:recipient = { # This opinion modifier controls the interaction, and is removed when breaking the alliance in any way (though on_actions) + add_opinion = { + modifier = perk_negotiated_alliance_opinion + target = scope:actor + } + } + } + else_if = { + limit = { + scope:actor = { + hostage_oath_of_friendship_trigger = yes + } + } + scope:actor = { + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + } + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_alliance.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + scope:actor = { + add_opinion = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_alliance_refusal.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + ai_accept = { + base = 0 + + # Tier Difference (+/-) + # Inheritance (+) + # Opinion (+/-) + # Dynasty Prestige. (+) + # Different Faith. (-) + # Liege is asking (+) + # Dread (+) + # Power difference (+/-) + # Claimants (+/-) + # Same House (+) + # Declared war opinion + # Actor is at war penalty + + modifier = { + add = 20 + scope:recipient = { + is_close_family_of = scope:actor + } + desc = CLOSE_FAMILY_REASON + } + + modifier = { + add = 10 + scope:recipient = { + NOT = { is_close_family_of = scope:actor } + is_extended_family_of = scope:actor + } + desc = EXTENDED_FAMILY_REASON + } + + modifier = { + add = -20 + scope:recipient = { + NOT = { is_close_or_extended_family_of = scope:actor } + any_spouse = { + NOT = { is_close_family_of = scope:actor } + is_extended_family_of = scope:actor + } + } + desc = DISTANT_FAMILY_CONNECTION_REASON + } + + # Tier Differences + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 1 + } + } + add = { + value = 30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + add = 30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + add = 60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + add = 90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + add = 120 + } + } + desc = RANK_DIFFERENCE_REASON + } + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value <= -1 + } + } + add = { + value = -30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + add = -30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + add = -60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + add = -90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + add = -120 + } + } + desc = RANK_DIFFERENCE_REASON + } + modifier = { + scope:recipient = { + has_relation_lover = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_LOVERS + } + modifier = { + scope:recipient = { + has_relation_friend = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_FRIENDS + } + modifier = { + scope:recipient = { + is_heir_of = scope:actor + } + scope:actor = { + tier_difference = { + target = scope:recipient + value > 0 + } + } + add = { + value = 10 + if = { + limit = { + scope:actor = { player_heir = scope:recipient } + } + add = 10 + } + } + desc = IS_HEIR_REASON + } + opinion_modifier = { # More likely to accept if Recipient likes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.25 + min = 0 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Less likely to accept if Recipient dislikes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + max = 0 + desc = AI_OPINION_REASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = loyal + } + desc = INTERACTION_LOYAL + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = INTERACTION_TRUSTING + } + + modifier = { + add = 5 + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = paranoid + } + desc = INTERACTION_PARANOID + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = arrogant + } + desc = INTERACTION_ARROGANT + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = ambitious + } + desc = INTERACTION_AMBITIOUS + } + + modifier = { + add = -40 + scope:recipient = { + has_trait = disloyal + } + desc = INTERACTION_DISLOYAL + } + + modifier = { + add = -10 + scope:recipient = { + has_trait = fickle + } + desc = INTERACTION_FICKLE + } + + # Rivalry + modifier = { # Say no to rivals + add = -100 + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + desc = "ACTOR_RIVAL_TO_ME_REASON" + } + modifier = { # Say no to nemesis + add = -300 + scope:recipient = { + has_relation_nemesis = scope:actor + } + desc = "ACTOR_NEMESIS_TO_ME_REASON" + } + + # Dynasty Prestige Levels + modifier = { + add = -5 + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level = 0 } + } + modifier = { + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level >= 2 } + add = { + value = 10 + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 3 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 4 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 5 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 6 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 7 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 8 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 9 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 10 } + } + add = 5 + } + } + } + modifier = { #Faith compatibility + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value > faith_fully_accepted_level + } + } + NOT = { + scope:recipient.ai_zeal <= -50 + } + add = { + value = -10 + if = { + limit = { + # Exempt certain struggle phases. + NOT = { is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = yes } + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_astray_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + subtract = 50 + } + if = { + limit = { + scope:recipient.ai_zeal <= -25 + } + divide = 2 + } + else_if = { + limit = { + scope:recipient.ai_zeal >= 50 + } + multiply = 2 + } + if = { + limit = { + scope:recipient.faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + divide = 2 + } + } + } + desc = MARRY_DIFFERENT_FAITH_REASON + } + + modifier = { # A Recipient is more likely to agree to an alliance requested by his liege. + add = 20 + scope:recipient = { + target_is_liege_or_above = scope:actor + } + desc = LIEGE_REASON + } + + modifier = { + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength # For foreign diplomacy, consider recipients max + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 20 + min = -1000 + max = 100 + } + desc = AI_MILITARY_BALANCE_REASON + } + # Recipient is a Claimant to Actor's titles. + modifier = { + scope:recipient = { + any_claim = { + holder = scope:actor + } + NOR = { + is_heir_of = scope:actor + ai_greed <= -25 + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient.ai_greed >= 25 + } + add = ai_greed + } + if = { + limit = { + scope:recipient.house != scope:actor.house + } + multiply = 2 + } + } + desc = IS_CLAIMANT_TO_ACTORS_TITLES + } + #Actor has claims on recipient's titles. + modifier = { + scope:actor = { + any_claim = { + holder = scope:recipient + } + } + add = 25 + desc = IS_CLAIMANT_TO_RECIPIENT_TITLES + } + modifier = { + scope:recipient = { + NOT = { + any_claim = { + holder = scope:actor + } + } + } + scope:recipient.house = scope:actor.house + add = 15 + desc = IS_SAME_HOUSE_REASON + } + modifier = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = declared_war + } + } + add = -100 + desc = DECLARED_WAR_REASON + } + + # Don't form new alliances with people already at war. + modifier = { + scope:actor = { + is_at_war = yes + + # Since vassals and lieges can't call us into wars, this doesn't matter for us if we have that relationship. + NOR = { + target_is_liege_or_above = scope:recipient + target_is_vassal_or_below = scope:recipient + } + } + add = -50 + desc = IS_AT_WAR_REASON + } + + #Bonus from Tradition Astute Diplomats + modifier = { + scope:actor.culture = { has_cultural_parameter = facilitate_alliance_acceptance } + add = 50 #should be in a file 00_traditions_values + desc = TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER + } + + # The AI doesn't want to form alliances with AI vassals within its capital duchy, so it can revoke them + modifier = { + scope:actor = { + is_ai = yes + is_vassal_or_below_of = scope:recipient + any_held_title = { + title_tier = county + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + scope:recipient = { + is_ai = yes + } + add = -5000 + } + + # Feud + modifier = { + add = -25 + scope:recipient = { + house_has_feud_relation_with_trigger = { TARGET = scope:actor } + } + desc = MARRY_FAMILY_FEUD_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:actor = { + every_ally = { + add = -15 + } + } + } + scope:actor = { + any_ally = { + count >= 2 + } + } + NOT = { + scope:recipient = { + government_has_flag = government_is_clan + is_vassal_or_below_of = scope:actor + } + } + desc = EXISTING_ALLIANCES_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:recipient = { + every_ally = { + add = -15 + } + } + } + scope:recipient = { + any_ally = { + count >= 2 + } + } + NOT = { + scope:recipient = { + government_has_flag = government_is_clan + is_vassal_or_below_of = scope:actor + } + } + desc = THEIR_EXISTING_ALLIANCES_REASON + } + + modifier = { + add = intimidated_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = intimidated_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + fp3_struggle_resist_allied_wars_modifier = yes + + # LOW LEGITIMACY + modifier = { + desc = "LOW_LEGITIMACY_REASON" + scope:actor = { + OR = { + has_legitimacy_flag = reduced_alliance_acceptance + has_legitimacy_flag = very_reduced_alliance_acceptance + has_legitimacy_flag = massively_reduced_alliance_acceptance + } + } + add = { + value = 0 + if = { + limit = { scope:actor = { has_legitimacy_flag = reduced_alliance_acceptance } } + add = -25 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = very_reduced_alliance_acceptance } } + add = -50 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = massively_reduced_alliance_acceptance } } + add = -100 + } + } + } + + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + scope:actor = { + OR = { + has_legitimacy_flag = increased_alliance_acceptance + has_legitimacy_flag = very_increased_alliance_acceptance + has_legitimacy_flag = extra_increased_alliance_acceptance + } + } + add = { + value = 0 + if = { + limit = { scope:actor = { has_legitimacy_flag = increased_alliance_acceptance } } + add = 10 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = very_increased_alliance_acceptance } } + add = 25 + } + if = { + limit = { scope:actor = { has_legitimacy_flag = extra_increased_alliance_acceptance } } + add = 50 + } + } + } + + # INFLUENCE + modifier = { + desc = INFLUENCE_REASON + scope:influence = yes + add = { + value = 10 + multiply = scope:actor.influence_level + min = 5 + } + } + + # TGP ALLIANCE WITH NF HOUSE HEAD + modifier = { + add = 750 + scope:actor = { + is_house_head = yes + scope:recipient.house ?= this.house + any_held_title = { is_noble_family_title = yes } + } + desc = JAPANESE_HOUSE_HEAD_ALLIANCE_REASON + } + } + + ai_potential = { + is_at_war = no + } + + ai_targets = { + ai_recipients = dynasty + max = 20 + } + + ai_targets = { + ai_recipients = family + max = 10 + } + + ai_targets = { + ai_recipients = spouses + } + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 72 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + any_ally = { + count < 2 + } + scope:recipient = { # Don't propose alliances to tiny insignificant rulers just because + OR = { + current_military_strength >= scope:actor.eighty_percent_of_current_military_strength + primary_title.tier >= scope:actor.primary_title.tier + AND = { + primary_title.tier >= tier_duchy + scope:actor.primary_title.tier < tier_empire + } + } + } + } + + modifier = { # Clans always want alliances with Vassals + add = 100 + scope:actor = { + government_has_flag = government_is_clan + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + modifier = { # The AI shouldn't propose to their Lieges + factor = 0 + is_liege_or_above_of = scope:recipient + } + + modifier = { # The AI shouldn't propose to their Vassals unless Clan + factor = 0 + scope:actor = { + NOT = { government_has_flag = government_is_clan } + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + } +} + +perk_alliance_interaction = { + category = interaction_category_diplomacy + ai_min_reply_days = 4 + ai_max_reply_days = 9 + icon = alliance + + + interface_priority = 60 + desc = perk_alliance_interaction_desc + + greeting = positive + notification_text = PERK_NEGOTIATE_ALLIANCE_NOTIFICATION + + is_shown = { + scope:recipient = { + NOR = { + this = scope:actor + is_allied_to = scope:actor + target_is_vassal_or_below = scope:actor # Can only sign with external rulers/peer vassals, though the alliance is preserved if they somehow become your vassals + target_is_liege_or_above = scope:actor + government_has_flag = government_is_true_herder + } + is_ruler = yes + primary_title.tier > tier_barony + } + scope:actor = { + has_perk = defensive_negotiations_perk + is_landless_adventurer = no + NOR = { + government_has_flag = government_is_true_herder + # This interaction is harder to push through than Negotiate Alliance, and does the same thing, so don't show both + is_character_interaction_shown = { + recipient = scope:recipient + interaction = negotiate_alliance_interaction + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_landless_adventurer = no + } + scope:recipient = { + NOT = { target_is_vassal_or_below = scope:actor } # Can only sign with external rulers/peer vassals, though the alliance is preserved if they somehow become your vassals + NOT = { target_is_liege_or_above = scope:actor } + } + + custom_description = { + text = "already_has_an_alliance_deal" + subject = scope:recipient + scope:actor = { + NOT = { + any_ally = { + has_opinion_modifier = { + modifier = perk_negotiated_alliance_opinion + target = scope:actor + } + } + } + } + } + + scope:recipient = { + is_playable_character = yes + is_at_war = no + is_imprisoned = no + } + + scope:actor = { + is_playable_character = yes + is_at_war = no + is_imprisoned = no + } + + custom_description = { + text = "has_already_rejected_renegotiation" + subject = scope:recipient + scope:actor = { + NOT = { + has_opinion_modifier = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + } + } + } + + can_send = { + custom_description = { # Exploit prevention + text = "has_sent_interaction_already" + subject = scope:recipient + scope:actor = { + NOT = { + has_pending_interaction_of_type = perk_alliance_interaction + } + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0234 + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + # Admin Gov can spend Influence to increase AI acceptance towards other same-realm admin characters + send_option = { + is_shown = { + scope:actor = { + government_allows = administrative + } + scope:recipient = { + top_liege = scope:actor.top_liege + government_allows = administrative + } + } + is_valid = { + scope:actor = { + influence >= major_influence_value + } + custom_tooltip = { + text = ALREADY_USING_HOOK + NOT = { scope:hook = yes } + } + } + flag = influence + localization = SPEND_INFLUENCE + } + + send_options_exclusive = no + + on_accept = { + save_scope_value_as = { #So that we can show the opinion gain in the response event + name = perk_alliance_interaction + value = yes + } + scope:actor = { + custom_tooltip = negotiate_alliance_effect_tooltip + trigger_event = char_interaction.0235 + create_alliance = { + target = scope:recipient + allied_through_owner = scope:actor + allied_through_target = scope:recipient + } + + stress_impact = { + shy = minor_stress_impact_gain + } + + if = { + limit = { scope:hook = yes } + use_hook = scope:recipient + } + + if = { + limit = { + scope:influence = yes + } + change_influence = major_influence_loss + } + } + scope:recipient = { # This opinion modifier controls the interaction, and is removed when breaking the alliance in any way (though on_actions) + add_opinion = { + modifier = perk_negotiated_alliance_opinion + target = scope:actor + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_gain + DESC = clan_unity_alliance.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + scope:actor = { + add_opinion = { + modifier = refused_alliance_opinion + target = scope:recipient + } + } + + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_alliance_refusal.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + + ai_accept = { # Similar to Negotiate Alliance, but without modifiers for Liege, being an heir, etc. + base = -25 + + # Tier Differences + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 1 + } + } + add = { + value = 30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + add = 30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + add = 60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + add = 90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + add = 120 + } + } + desc = RANK_DIFFERENCE_REASON + } + modifier = { + scope:recipient = { + has_relation_lover = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_LOVERS + } + modifier = { + scope:recipient = { + has_relation_friend = scope:actor + } + add = { + value = 25 + } + desc = WE_ARE_FRIENDS + } + modifier = { + scope:actor = { + tier_difference = { + target = scope:recipient + value <= -1 + } + } + add = { + value = -30 + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + add = -30 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + add = -60 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + add = -90 + } + if = { + limit = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + add = -120 + } + } + desc = RANK_DIFFERENCE_REASON + } + opinion_modifier = { # More likely to accept if Recipient likes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.25 + min = 0 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Less likely to accept if Recipient dislikes the Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + max = 0 + desc = AI_OPINION_REASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = loyal + } + desc = INTERACTION_LOYAL + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = INTERACTION_TRUSTING + } + + modifier = { + add = 5 + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = paranoid + } + desc = INTERACTION_PARANOID + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = arrogant + } + desc = INTERACTION_ARROGANT + } + + modifier = { + add = -20 + scope:recipient = { + has_trait = ambitious + } + desc = INTERACTION_AMBITIOUS + } + + modifier = { + add = -40 + scope:recipient = { + has_trait = disloyal + } + desc = INTERACTION_DISLOYAL + } + + modifier = { + add = -10 + scope:recipient = { + has_trait = fickle + } + desc = INTERACTION_FICKLE + } + + # Rivalry + modifier = { # Say no to rivals + add = -100 + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + desc = "ACTOR_RIVAL_TO_ME_REASON" + } + modifier = { # Say no to nemesis + add = -300 + scope:recipient = { + has_relation_nemesis = scope:actor + } + desc = "ACTOR_NEMESIS_TO_ME_REASON" + } + + # Dynasty Prestige Levels + modifier = { + add = -5 + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level = 0 } + } + modifier = { + desc = AI_DYNASTY_PRESTIGE_REASON + scope:actor = { has_dynasty = yes } + scope:actor.dynasty != scope:recipient.dynasty + scope:actor.dynasty = { dynasty_prestige_level >= 2 } + add = { + value = 10 + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 3 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 4 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 5 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 6 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 7 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 8 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 9 } + } + add = 5 + } + if = { + limit = { + scope:actor.dynasty = { dynasty_prestige_level >= 10 } + } + add = 5 + } + } + } + modifier = { #Faith compatibility + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value > faith_fully_accepted_level + } + } + NOT = { + scope:recipient.ai_zeal <= -50 + } + add = { + value = -10 + if = { + limit = { + # Exempt certain struggle phases. + NOT = { is_struggle_parameter_active_interfaith_marriages_available_between_involved_characters_trigger = yes } + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_astray_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + subtract = 20 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + subtract = 50 + } + if = { + limit = { + scope:recipient.ai_zeal <= -25 + } + divide = 2 + } + else_if = { + limit = { + scope:recipient.ai_zeal >= 50 + } + multiply = 2 + } + if = { + limit = { + scope:recipient.faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + divide = 2 + } + } + } + desc = MARRY_DIFFERENT_FAITH_REASON + } + + modifier = { # A Recipient is more likely to agree to an alliance requested by his liege. + add = 20 + scope:recipient = { + target_is_liege_or_above = scope:actor + } + desc = LIEGE_REASON + } + + modifier = { + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength # For foreign diplomacy, consider recipients max + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 20 + min = -1000 + max = 100 + } + desc = AI_MILITARY_BALANCE_REASON + } + # Recipient is a Claimant to Actor's titles. + modifier = { + scope:recipient = { + any_claim = { + holder = scope:actor + } + NOR = { + is_heir_of = scope:actor + ai_greed <= -25 + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient.ai_greed >= 25 + } + add = ai_greed + } + if = { + limit = { + scope:recipient.house != scope:actor.house + } + multiply = 2 + } + } + desc = IS_CLAIMANT_TO_ACTORS_TITLES + } + #Actor has claims on recipient's titles. + modifier = { + scope:actor = { + any_claim = { + holder = scope:recipient + } + } + add = 25 + desc = IS_CLAIMANT_TO_RECIPIENT_TITLES + } + modifier = { + scope:recipient = { + NOT = { + any_claim = { + holder = scope:actor + } + } + } + scope:recipient.house = scope:actor.house + add = 15 + desc = IS_SAME_HOUSE_REASON + } + modifier = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = declared_war + } + } + add = -100 + desc = DECLARED_WAR_REASON + } + + # Don't form new alliances with people already at war. + modifier = { + scope:actor = { + is_at_war = yes + + # Since vassals and lieges can't call us into wars, this doesn't matter for us if we have that relationship. + NOR = { + target_is_liege_or_above = scope:recipient + target_is_vassal_or_below = scope:recipient + } + } + add = -50 + desc = IS_AT_WAR_REASON + } + + #Bonus from Tradition Astute Diplomats + modifier = { + scope:actor.culture = { has_cultural_parameter = facilitate_alliance_acceptance } + add = 50 #should be in a file 00_traditions_values + desc = TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER + } + + # The AI doesn't want to form alliances with AI vassals within its capital duchy, so it can revoke them + modifier = { + scope:actor = { + is_ai = yes + is_vassal_or_below_of = scope:recipient + any_held_title = { + title_tier = county + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + scope:recipient = { + is_ai = yes + } + add = -5000 + } + + # Feud + modifier = { + add = -25 + scope:recipient = { + house_has_feud_relation_with_trigger = { TARGET = scope:actor } + } + desc = MARRY_FAMILY_FEUD_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:actor = { + every_ally = { + add = -15 + } + } + } + scope:actor = { + any_ally = { + count >= 2 + } + } + desc = EXISTING_ALLIANCES_REASON + } + + # Existing Alliances + modifier = { + add = { + scope:recipient = { + every_ally = { + add = -15 + } + } + } + scope:recipient = { + any_ally = { + count >= 2 + } + } + desc = THEIR_EXISTING_ALLIANCES_REASON + } + + modifier = { + add = intimidated_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = intimidated_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 10 + } + + # INFLUENCE + modifier = { + desc = INFLUENCE_REASON + scope:influence = yes + add = { + value = 10 + multiply = scope:actor.influence_level + min = 5 + } + } + } + + ai_potential = { + is_at_war = no + any_ally = { + count < 2 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + max = 10 + } + + ai_targets = { + ai_recipients = peer_vassals + max = 5 + } + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 72 + kingdom = 72 + empire = 72 + hegemony = 72 + } + + ai_will_do = { + base = 100 + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + modifier = { # Don't disturb the player with pointless asks + add = -5000 + scope:recipient = { + is_ai = no + } + NOR = { + scope:actor.current_military_strength >= scope:recipient.current_military_strength + scope:actor.primary_title.tier >= scope:recipient.primary_title.tier + } + } + + modifier = { + add = -5000 + scope:recipient.current_military_strength <= 100 + } + } + +} + +join_war_interaction = { + category = interaction_category_diplomacy + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + popup_on_receive = yes + desc = join_war_interaction_desc + icon = alliance + interface_priority = 29 + + greeting = positive + notification_text = join_war_interaction_notification + + is_shown = { + scope:recipient = { + is_at_war = yes + NOR = { + this = scope:actor + is_at_war_with = scope:actor + } + } + } + + is_valid_showing_failures_only = { + + # recipient is not in (any) war against your liege(s) or suzerain(s) + trigger_if = { + limit = { exists = scope:actor.liege } + custom_description = { + text = join_war_interaction_recipient_warring_with_my_liege + subject = scope:recipient + scope:actor = { + NOT = { + any_liege_or_above = { + is_at_war_with = scope:recipient + } + } + } + } + } + + # special exception for liege trying to put down his vassal's peasant revolt + trigger_if = { + limit = { + scope:actor = { + target_is_vassal_or_below = scope:recipient + } + } + custom_description = { + text = join_war_interaction_recipient_not_fighting_peasant_faction + subject = scope:recipient + scope:recipient = { + any_war_enemy = { + is_leading_faction_type = peasant_faction + } + } + } + } + # if the target is neither a vassal-or-below, nor a liege-or-above, the recipient must either be an ally or defending against a qualifying holy war - unless the character is an adventurer in which case other rules apply + trigger_else_if = { + limit = { + scope:actor = { + NOT = { target_is_liege_or_above = scope:recipient } + } + } + trigger_if = { + limit = { + scope:actor = { has_government = landless_adventurer_government } + } + # bypass the requirements, unless you were invloved in a war and decided to leave it + scope:recipient = { + trigger_if = { + limit = { + any_character_war = { + has_variable_list = left_voluntarily + } + } + custom_tooltip = { + text = laamp_war_change_sides_interaction.left_voluntarily + is_target_in_variable_list = { + name = left_voluntarily + target = scope:actor + } + } + } + } + } + trigger_else_if = { + limit = { + scope:recipient = { + any_character_war = { + OR = { + #Must be either the same faith as the character being holy warred... + scope:recipient.faith = scope:actor.faith + #... Or, same religion, *and* you couldn't holy war them yourself. + AND = { + scope:recipient.faith.religion = scope:actor.faith.religion + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value < religious_cb_enabled_hostility_level + } + } + } + #... Or, the target is your liege and they are being attacked for your held title. + AND = { + scope:recipient = { target_is_liege_or_above = scope:actor } + casus_belli = { + any_target_title = { + holder = { + OR = { + this = scope:actor + is_vassal_or_below_of = scope:actor + } + } + } + + } + } + } + any_war_defender = { this = scope:recipient } + } + } + } + # Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense + } + # Special case for Iberians helping each other after FP2 Conciliation ending after FP2 Conciliation ending + trigger_else_if = { + limit = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = yes + scope:recipient = { + any_character_war = { + primary_defender = scope:recipient + primary_attacker = { save_temporary_scope_as = attacker_temp } + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:attacker_temp } + } + } + } + # Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense + } + + # if the actor and recipient is in the same confederation, they can always come to each others' aid + trigger_else_if = { + limit = { + exists = scope:recipient.confederation + scope:actor = { is_member_of_confederation = scope:recipient.confederation } + } + scope:actor = { is_member_of_confederation = scope:recipient.confederation } # for localization only + } + + # suzerains can always join their tributaries' defensive wars + trigger_else_if = { + limit = { + scope:recipient = { + is_tributary_of_suzerain_or_above = scope:actor + } + } + custom_tooltip = { + text = join_war_interaction_recipient_tributary_no_defensive_war + scope:recipient = { + any_character_war = { + primary_defender = scope:recipient + } + } + } + } + # tributaries can always offer to join their direct suzerains' defensive wars + trigger_else_if = { + limit = { + scope:actor = { + is_tributary_of = scope:recipient + } + } + custom_tooltip = { + text = join_war_interaction_recipient_tributary_no_defensive_war + scope:recipient = { + any_character_war = { + primary_defender = scope:recipient + } + } + } + } + + # if we haven't already passed any of the qualified conditions above, then we need to be allies + trigger_else = { + custom_description = { + text = join_war_interaction_recipient_not_ally + subject = scope:recipient + scope:recipient = { + is_allied_to = scope:actor + } + } + } + } + + # recipient is liege + trigger_else = { + custom_description = { + text = join_war_interaction_recipient_not_liege + subject = scope:recipient + scope:actor = { + target_is_liege_or_above = scope:recipient + } + } + } + + scope:actor = { + trigger_if = { + limit = { + has_government = landless_adventurer_government + } + custom_tooltip = { + text = reinforce_soldiers_any_regiment_tt + maa_regiments_count >= 1 + } + } + } + + # Adventurers can't join wars in places they're exiled from. + custom_tooltip = { + text = the_wake_1 + NOT = { + is_laamp_exiled_from_province_trigger = { + PROVINCE = scope:recipient.capital_province + LAAMP = scope:actor + } + } + } + } + + can_be_picked = { + scope:target ?= { + + # recipient is war leader + is_war_leader = scope:recipient + + # special exception for tributaries and suzerains to fight for one another + trigger_if = { + limit = { + OR = { + scope:actor = { + is_tributary_of_suzerain_or_above = scope:recipient + } + scope:recipient = { + is_tributary_of = scope:actor + } + } + } + # if this is directed at a tributary, make sure they're the primary defender + trigger_if = { + limit = { + scope:recipient = { is_tributary_of = scope:actor } + } + custom_tooltip = { + text = join_war_interaction_recipient_tributary_not_primary_defender + primary_defender = scope:recipient + } + } + trigger_else = { always = yes } + } + + #allow targets of a Grand Campaign to bypass the requirements + trigger_else_if = { + limit = { + var:grand_campaign_project ?= { + save_temporary_scope_as = great_project + any_in_list = { + variable = grand_campaign_titles + any_in_de_jure_hierarchy = { + exists = holder + holder.top_overlord = { + OR = { + this = scope:recipient + this = scope:actor + } + } + } + } + } + } + } + + #allow laamp_join_war_contract to bypass the requirements + trigger_else_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + } + + # if holy war, recipient is defender of same faith + # and not too far away + trigger_else_if = { + limit = { is_religious_war = yes } + trigger_if = { #Only if you're not allies + limit = { + NOT = { scope:actor = { is_allied_to = scope:recipient } } + NOR = { + scope:recipient = { target_is_liege_or_above = scope:actor } + casus_belli = { + any_target_title = { + holder ?= { + OR = { + this = scope:actor + is_vassal_or_below_of = scope:actor + } + } + } + } + } + # Special case for Iberians helping each other after FP2 Conciliation ending + AND = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = no + NOT = { + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker } + } + } + } + custom_description = { + text = join_war_interaction_recipient_not_def_GHW + subject = scope:recipient + scope:recipient.faith.religion = scope:actor.faith.religion + any_war_defender = { this = scope:recipient } + } + } + casus_belli = { + any_target_title = { save_temporary_scope_as = war_target } + } + custom_description = { + text = join_war_interaction_recipient_too_distant + subject = scope:war_target + object = scope:war_target + scope:actor = { + realm_to_title_distance_squared = { + target = scope:war_target + value <= squared_distance_almost_massive # Approximately 1.5 HREs in distance away. Any further and does it really make sense for you to join what is essentially a regional power struggle? + } + } + } + } + # If not holy war, special exception for liege trying to put down his vassal's peasant revolt. + trigger_else_if = { + limit = { + is_religious_war = no + scope:actor = { target_is_vassal_or_below = scope:recipient } + primary_defender = scope:recipient + primary_attacker = { + is_leading_faction_type = peasant_faction + } + # Special case for Iberians helping each other after FP2 Conciliation ending + AND = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = no + NOT = { + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker } + } + } + } + always = yes + } + #Confederation members can choose to join each others' offensive wars + trigger_else_if = { + limit = { + scope:actor = { NOT = { is_allied_to = scope:recipient } } + exists = scope:recipient.confederation + primary_attacker = scope:recipient + } + scope:actor = { + is_member_of_confederation = scope:recipient.confederation + } + } + # ...otherwise, recipient must be an ally... + trigger_else_if = { + limit = { + is_religious_war = no + scope:actor = { NOT = { target_is_liege_or_above = scope:recipient } } + # Special case for Iberians helping each other after FP2 Conciliation ending + AND = { + fp2_struggle_conciliation_recipient_actor_involved_trigger = no + NOT = { + fp2_struggle_conciliation_scope_uninvolved_trigger = { SCOPE = scope:target.primary_attacker } + } + } + } + custom_description = { + text = join_war_interaction_recipient_not_ally + subject = scope:recipient + scope:actor = { + is_allied_to = scope:recipient + } + } + trigger_if = { + limit = { + scope:actor = { + target_is_vassal_or_below = scope:recipient + NOT = { is_allied_to = scope:recipient } + } + } + # If they are an unallied vassal, inform the player that we could have aided them if this was a peasant revolt. + custom_description = { + text = join_war_interaction_recipient_not_fighting_peasant_faction + subject = scope:recipient + primary_defender = scope:recipient + primary_attacker = { + is_leading_faction_type = peasant_faction + } + } + } + } + + # ...or our liege. + trigger_else_if = { + limit = { + is_religious_war = no + scope:actor = { NOT = { is_allied_to = scope:recipient } } + } + # recipient is liege + custom_description = { + text = join_war_interaction_recipient_not_liege + subject = scope:recipient + scope:actor = { + target_is_liege_or_above = scope:recipient + } + } + } + # making the default behavior explicit if no other trigger_(else_)ifs are valid + trigger_else = { + always = yes + } + } + + joiner_not_already_in_another_war_with_any_target_war_participants_trigger = { + WARRIOR = scope:recipient + JOINER = scope:actor + } + + can_join_war_liege_vassal_check_trigger = { WARRIOR = scope:recipient JOINER = scope:actor } + } + + is_highlighted = { + scope:actor = { + any_character_task_contract = { + has_task_contract_type = laamp_join_war_contract + task_contract_employer = scope:recipient + } + } + } + + on_accept = { + scope:target ?= { + hidden_effect = { + set_called_to = scope:actor + } + if = { + limit = { is_attacker = scope:recipient } + add_attacker = scope:actor + if = { + limit = { + OR = { + scope:actor = { + any_home_court_hostage = { + warden ?= { is_defender_in_war = scope:target } + } + } + scope:target = { + any_war_defender = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + } + } + custom_tooltip = hostage_execution_warning_tt + } + } + else = { + add_defender = scope:actor + if = { + limit = { + OR = { + scope:actor = { + any_home_court_hostage = { + warden ?= { is_attacker_in_war = scope:target } + } + } + scope:target = { + any_war_attacker = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + } + } + custom_tooltip = hostage_execution_warning_tt + } + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:actor = { + add_piety = medium_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:actor = { + add_piety = major_piety_gain + } + } + } + scope:actor = { + stress_impact = { + craven = medium_stress_impact_gain + } + add_to_variable_list = { + name = joined_as_ally + target = scope:target + } + } + scope:recipient = { + show_as_tooltip = { + if = { + limit = { + is_ai = yes + } + progress_towards_friend_effect = { + CHARACTER = scope:actor + OPINION = 0 + REASON = friend_alliance + } + } + else = { + hidden_effect = { #To nudge friendship + if = { + limit = { + NOR = { + has_relation_friend = scope:actor + has_relation_potential_friend = scope:actor + } + } + set_relation_potential_friend = scope:actor + } + } + } + } + } + + # If we're a clan this interaction affects unity - but only when we attemp to aid a house member against a non-house member + if = { + limit = { + exists = scope:target + scope:target = { + OR = { + AND = { + primary_attacker = scope:recipient + scope:recipient.house = scope:actor.house + primary_defender = { + house != scope:actor.house + } + } + AND = { + primary_defender = scope:recipient + scope:recipient.house = scope:actor.house + primary_attacker = { + house != scope:actor.house + } + } + } + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_gain + DESC = clan_unity_join_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + } + + auto_accept = yes + + ai_accept = { + base = 100 # everyone wants help + } +} + +# Referenced in code, do not rename or remove +join_vassal_war_interaction = { + category = interaction_category_diplomacy + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + popup_on_receive = yes + desc = join_vassal_war_interaction_desc + icon = alliance + interface_priority = 29 + common_interaction = yes + + greeting = positive + notification_text = join_war_interaction_notification + + is_shown = { + scope:recipient = { + OR = { + AND = { + is_tributary_of = scope:actor + subject_contract_has_flag = tributary_contract_suzerain_guarantee_override + scope:actor = { + has_realm_law = top_liege_not_redirected_to_border_wars_law + } + } + AND = { + is_vassal_or_below_of = scope:actor + any_liege_or_above = { + has_realm_law = top_liege_not_redirected_to_border_wars_law + } + } + } + is_at_war = yes + NOR = { + this = scope:actor + is_at_war_with = scope:actor + } + any_character_war = { + primary_attacker = { + NOT = { + is_vassal_or_below_of = scope:actor + } + } + } + } + } + is_valid_showing_failures_only = { + scope:actor = { is_at_war = no } + } + + can_be_picked = { + scope:target ?= { + # we don't care about infighting + custom_tooltip = { + text = war_aid_liege_not_my_liege_tt + primary_attacker.top_overlord != scope:actor + } + # only defensive wars + primary_defender = scope:recipient + # only wars that would take titles in your hierarchy + trigger_if = { + limit = { + scope:recipient = { is_vassal_of = scope:actor } + } + custom_tooltip = { + text = war_aid_liege_relevant_titles_tt + casus_belli = { + any_target_title = { + OR = { + target_is_de_facto_liege_or_above = scope:actor.primary_title + is_de_facto_liege_or_above_target = scope:actor.primary_title + } + } + } + } + } + #Unless you're a guaranteed tributary + trigger_else_if = { + limit = { + scope:recipient = { is_tributary_of_suzerain_or_above = scope:actor } + } + custom_tooltip = { + text = suzerain_war_participation_guarantee_tt + scope:recipient = { subject_contract_has_flag = tributary_contract_suzerain_guarantee_override } + } + } + trigger_else = { + always = yes + } + custom_tooltip = { + text = war_aid_liege_cooldown_tt + war_days > border_war_grace_period_days + } + } + } + + on_accept = { + scope:target ?= { + hidden_effect = { + set_called_to = scope:actor + } + add_defender = scope:actor + if = { + limit = { + OR = { + scope:actor = { + any_home_court_hostage = { + warden ?= { is_attacker_in_war = scope:target } + } + } + scope:target = { + any_war_attacker = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + } + } + custom_tooltip = hostage_execution_warning_tt + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle + } + } + } + scope:actor = { + add_piety = medium_piety_gain + } + } + if = { + limit = { + is_religious_war = yes + scope:actor = { + any_active_accolade = { + accolade_parameter = acclaimed_knight_piety_from_battle_high + } + } + } + scope:actor = { + add_piety = major_piety_gain + } + } + scope:actor = { + stress_impact = { + craven = medium_stress_impact_gain + } + add_to_variable_list = { + name = joined_as_ally + target = scope:target + } + } + } + # If we're a clan this interaction affects unity - but only when we attemp to aid a house member against a non-house member + if = { + limit = { + exists = scope:target + scope:target = { + primary_defender = scope:recipient + scope:recipient.house = scope:actor.house + primary_attacker = { + house != scope:actor.house + } + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_gain + DESC = clan_unity_join_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0236 + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = vassals + ai_recipients = tributaries + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 24 + kingdom = 6 + empire = 6 + hegemony = 6 + } + ai_potential = { + is_at_war = no + } + + ai_accept = { + base = 100 #no reason to refuse help + } + + # this value is also evaluated in the declare war interaction screen to decide whether the liege will join the vassal's war. + # as such, scope:target may not be defined, and anything war-related will be instead provided in the same way + # we evaluate the war cost in casus_belli.cost + ai_will_do = { + base = 100 + + modifier = { # Less likely if just one title + scope:actor = { + is_ai = yes + is_liege_or_above_of = scope:recipient + } + OR = { + scope:target ?= { + casus_belli = { + any_target_title = { + tier <= tier_duchy + count = 1 + } + } + } + any_in_list = { + list = target_titles + count = 1 + } + + } + add = -100 + desc = war_aid_vassal_only_one_title + } + modifier = { # Less likely if not kingdoms or above + scope:actor = { + is_ai = yes + is_liege_or_above_of = scope:recipient + } + NOR = { + scope:target ?= { + casus_belli = { + any_target_title = { + tier >= tier_kingdom + } + } + } + any_in_list = { + list = target_titles + tier >= tier_kingdom + } + } + add = -100 + desc = war_aid_vassal_below_kingdom_title + } + modifier = { # Do not join if in debt + scope:actor = { + OR = { + gold <= -1 + AND = { + has_treasury = yes + treasury <= -1 + } + } + is_ai = yes + is_liege_or_above_of = scope:recipient + } + add = -100 + desc = war_aid_liege_is_bankrupt + } + modifier = { # Do not join if at war + scope:actor = { + is_at_war = yes + is_ai = yes + } + add = -100 + desc = war_aid_liege_is_at_war + } + modifier = { # Do not join if recipient is stronger then the enemy + scope:actor = { + is_ai = yes + is_liege_or_above_of = scope:recipient + } + OR = { + scope:attacker ?= { + current_military_strength < scope:recipient.current_military_strength + } + scope:target ?= { + primary_attacker.current_military_strength < scope:recipient.current_military_strength + } + } + add = -100 + desc = war_aid_vassal_can_fend_the_attacker_alone + } + modifier = { # Player decides on it's own + scope:actor = { + is_ai = no + } + add = -100 + desc = war_aid_liege_is_player + } + } +} diff --git a/common/character_interactions/00_ce1_interactions.txt b/common/character_interactions/00_ce1_interactions.txt new file mode 100644 index 00000000..07a3d1d2 --- /dev/null +++ b/common/character_interactions/00_ce1_interactions.txt @@ -0,0 +1,357 @@ +# Ask to Promote your Legend +ce1_ask_to_promote_legend_interaction = { + icon = icon_contract_modification_single + category = interaction_category_diplomacy + popup_on_receive = yes + pause_on_receive = yes + can_send_despite_rejection = yes + ai_maybe = yes + interface_priority = 5 + desc = ce1_ask_to_promote_legend_interaction_desc + + greeting = positive + notification_text = PROMOTE_LEGEND_NOTIFICATION + + is_shown = { + scope:actor.promoted_legend.legend_owner ?= scope:actor + scope:actor != scope:recipient + scope:recipient = { + is_landed = yes + age >= 12 + is_physically_able = yes + NOT = { government_has_flag = government_is_true_herder } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_tooltip = { + text = recipient_already_promoting_legend_tt + NOT = { exists = promoted_legend } + } + } + custom_tooltip = { + text = recipient_close_or_neighbor_tt + OR = { + scope:recipient.dynasty = scope:actor.dynasty + scope:recipient = { knows_language_of_culture = scope:actor.culture } + scope:actor = { + has_friendly_relationship_with_character_trigger = { CHARACTER = scope:recipient } + } + scope:recipient = { + any_character_to_title_neighboring_county = { + any_county_province = { + any_province_legend = { + this = scope:actor.promoted_legend + } + } + } + } + } + } + } + + cooldown_against_recipient = { years = 5 } + + ai_min_reply_days = 2 + ai_max_reply_days = 7 + + ai_accept = { + base = -10 + ## Tier + modifier = { + add = -5 + scope:recipient.primary_title = { + tier = 2 + } + desc = TIER_REASON_COUNT + } + modifier = { + add = -10 + scope:recipient.primary_title = { + tier = 3 + } + desc = TIER_REASON_DUKE + } + modifier = { + add = -20 + scope:recipient.primary_title = { + tier = 4 + } + desc = TIER_REASON_KING + } + modifier = { + add = -30 + scope:recipient.primary_title = { + tier = 5 + } + desc = TIER_REASON_EMPEROR + } + ## Legend + # How cool is the legend? + modifier = { + add = 10 + desc = REASON_ILLUSTRIOUS_LEGEND + scope:actor = { + promoted_legend = { + legend_quality = illustrious + } + } + } + modifier = { + add = 20 + desc = REASON_MYTHICAL_LEGEND + scope:actor = { + promoted_legend = { + legend_quality = mythical + } + } + } + # Are you using a hook? + modifier = { + trigger = { + scope:hook ?= yes + } + add = 100 + desc = LEGEND_HOOK_USED + } + # Are you using Gold? + modifier = { + trigger = { + scope:gold_cost ?= yes + } + add = 40 + desc = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE_TT + } + ## Opinion + # Do they like you? + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + ## Personality + # Are they ambitious? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_AMBITIOUS #re-using these + add = -15 + scope:recipient = { + has_trait = ambitious + } + } + # Are they content? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_CONTENT + add = 5 + scope:recipient = { has_trait = content } + } + # Are they stubborn? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_STUBBORN + add = -10 + scope:recipient = { has_trait = stubborn } + } + # Are they arrogant? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_ARROGANT + add = -10 + scope:recipient = { has_trait = arrogant } + } + # Are they humble? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_HUMBLE + add = 10 + scope:recipient = { has_trait = humble } + } + # Are they trusting? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_TRUSTING + add = 15 + scope:recipient = { has_trait = trusting } + } + # Are they paranoid? + modifier = { + desc = DEMAND_SUBMISSION_RECIPIENT_IS_PARANOID + add = -10 + scope:recipient = { has_trait = paranoid } + } + ## Dread + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + ## War + modifier = { + add = -50 + scope:recipient = { + is_at_war = yes + } + desc = HOSTAGE_AT_WAR_REASON + } + ## Low Gold + modifier = { + add = -100 + scope:actor.promoted_legend = { + legend_quality = famed + } + scope:recipient = { + monthly_character_income < famed_legend_promoter_cost + } + desc = TOO_HIGH_PROMOTER_MAINTENANCE_REASON + } + modifier = { + add = -100 + scope:actor.promoted_legend = { + legend_quality = illustrious + } + scope:recipient = { + monthly_character_income < illustrious_legend_promoter_cost + } + desc = TOO_HIGH_PROMOTER_MAINTENANCE_REASON + } + modifier = { + add = -100 + scope:actor.promoted_legend = { + legend_quality = mythical + } + scope:recipient = { + monthly_character_income < mythical_legend_promoter_cost + } + desc = TOO_HIGH_PROMOTER_MAINTENANCE_REASON + } + modifier = { + add = 25 + scope:recipient = { + is_contact_of = scope:actor + } + desc = IS_CONTACT_REASON + } + } + + on_accept = { + scope:actor.promoted_legend = { + save_scope_as = promoted_legend + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = ce1_ask_to_promote_legend_acceptance_tt + left_icon = scope:actor + right_icon = scope:recipient + + if = { + limit = { scope:hook = yes } + use_hook = scope:recipient + } + if = { + limit = { scope:gold_cost = yes } + pay_short_term_gold = { + target = scope:recipient + gold = medium_gold_value + } + promoted_legend = { # To prevent gold exploits + add_to_variable_list = { + name = accepted_promote_legend_var + target = scope:recipient + years = 10 + } + } + } + scope:recipient = { + set_promoted_legend = scope:actor.promoted_legend + } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = ce1_ask_to_promote_legend_decline_tt + left_icon = scope:actor + right_icon = scope:recipient + } + } + } + + # Use gold to increase acceptance + send_option = { + flag = gold_cost + localization = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE + } + send_option = { + flag = hook + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + localization = GENERIC_SPEND_A_HOOK + } + send_options_exclusive = no + + ai_potential = { + is_physically_able = yes + } + + ai_targets = { + ai_recipients = neighboring_rulers + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 36 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + # Very similar to ai_accept, but ignores effects that are < 10 in value for brevity's sake + ai_will_do = { + base = 0 + ## Legends + modifier = { + add = 25 + exists = promoted_legend + } + modifier = { + add = 25 + promoted_legend = { + legend_quality = mythical + } + } + ## Gold + modifier = { + add = -100 + debt_level >= 0 + } + modifier = { + add = -50 + gold <= major_gold_value + } + ## Personality + modifier = { + add = 25 + has_trait = arrogant + } + } +} diff --git a/common/character_interactions/00_character_interactions.txt b/common/character_interactions/00_character_interactions.txt index 85a81400..e765cb72 100644 --- a/common/character_interactions/00_character_interactions.txt +++ b/common/character_interactions/00_character_interactions.txt @@ -45,7 +45,7 @@ offer_vassalization_interaction = { } NOR = { government_has_flag = cannot_be_vassal_or_liege - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } # Temujin cannot make Jamukha his subject once he leaves him diff --git a/common/character_interactions/00_diarch_interactions.txt b/common/character_interactions/00_diarch_interactions.txt new file mode 100644 index 00000000..982256be --- /dev/null +++ b/common/character_interactions/00_diarch_interactions.txt @@ -0,0 +1,10461 @@ +@ai_skill_diff_upper_threshold = 8 +@ai_skill_diff_lower_threshold = 2 +@ai_prestige_bank_threshold = 2 + +@ai_core_loop_base_value = 4000 +@ai_threshold_for_revoke_cyle = 3 +@ai_secondary_powers_base_value = 500 + +############################################### +# #Setup & Misc +# +# CORE DIARCH POWERS +# diarch_revoke_title_interaction - diarch (actor) takes a title from a vassal of their liege (recipient) with an optional veto for the liege (third_party). +# diarch_retract_vassal_interaction - diarch (actor) takes a vassal from a vassal of their liege (recipient) with an optional veto for the liege (third_party). +# diarch_imprison_interaction - diarch (actor) tries to move a character (recipient) within the sub-realm of their liege (third) to their dungeon, with an optional veto for the liege. +# diarch_entrench_regency_interaction - diarch (actor) shifts the diarchy from temporary to entrenched, making it more difficult for their liege (recipient) to get rid of them. +# +# ANCILLARY DIARCH POWERS +# diarch_legal_meddling_interaction - diarch (actor) either tests learning or spends prestige to gain an unpressed claim on a title held by a vassal of their liege (recipient). +# diarch_syphon_treasury_interaction - diarch (actor) either tests stewardship or spends prestige to gain gold at the expense of negative modifiers delivered to the liege (recipient). +# diarch_shift_privileges_interaction - diarch (actor) either tests diplomacy or spends prestige to give negative modifiers to the lands of a vassal of their liege (secondary recipient), who can't resist. +################################################## + + + + + + + + + + +################################################## +# CORE DIARCH POWERS + +# Diarch (actor) takes a title from a vassal (recipient) of their liege with an optional veto for the liege (third_party). +diarch_revoke_title_interaction = { + category = interaction_category_diarch + common_interaction = no + interface_priority = 35 + diarch_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_DIARCH_REVOKE + notification_text = DIARCH_REVOKE_TITLE_PROPOSAL + intermediary_notification_text = diarch_interaction_requesting_sign_off.tt + intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES + intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO + intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE + intermediary_answer_accept_key = REPLY_ANSWER_ALLOW + intermediary_answer_reject_key = REPLY_ANSWER_VETO + pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES + pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO + pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE + icon = revoke_title + redirect = { + scope:actor.liege ?= { save_scope_as = intermediary } + } + + desc = diarch_revoke_title_interaction_desc + send_name = diarch_revoke_title_interaction.send_name + + special_interaction = diarch_revoke_title + interface = revoke_title + target_type = title + target_filter = recipient_domain_titles + ai_maybe = yes + ai_intermediary_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = diarch_rebel_or_crime_summary + prompt = RETRACT_VASSAL_SELECT_VASSAL_TO_RETRACT + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { + has_diarchy_parameter = unlock_diarch_revoke_title_interaction + } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_county + } + } + + is_valid = { + # Here to correct for some dodgy inheritance situations. + scope:actor != scope:intermediary + } + is_valid_showing_failures_only = { + # Standard validity checks. + title_revocation_standard_valid_showing_failures_only_trigger = yes + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Plus make sure there's a legal right to revoke. + scope:actor.liege = { + trigger_if = { + limit = { government_has_flag = government_is_tribal } + custom_description = { + text = "liege_has_law_allowing_title_revocation_tribal" + has_realm_law_flag = title_revocation_allowed + } + } + trigger_else_if = { + limit = { government_has_flag = government_is_administrative } + custom_description = { + text = "cannot_diarch_revoke_administrative_titles" + always = no + } + } + trigger_else = { + custom_description = { + text = "liege_has_law_allowing_title_revocation_crown" + has_realm_law_flag = title_revocation_allowed + } + } + } + trigger_if = { + limit = { + scope:recipient = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles } + } + custom_description = { + text = liege_vassal_contract_forbids_revocation + object = scope:recipient + scope:recipient = { + NOT = { vassal_contract_has_flag = vassal_contract_cannot_revoke_titles } + } + } + } + # Diarch revocations require a claim. + diarch_revocation_has_claim_check_trigger = yes + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege ?= { has_diarchy_active_parameter = unlock_diarch_revoke_title_interaction } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + cooldown = { years = 1 } + cooldown_against_recipient = { years = 3 } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + is_highlighted = { + # Diarch revocations require a claim - this is uncommon, so we always highlight it. + diarch_revocation_has_claim_check_trigger = yes + } + + can_be_picked_title = { + scope:target = { + title_revocation_standard_can_pick_title_trigger = yes + # Plus, must have scope:actor as a claimant. + custom_description = { + text = "you_must_have_a_claim_on_the_title" + scope:actor = { has_claim_on = scope:target } + } + } + } + + # Hooks can be used to force this through. + ## We don't force-force this on/for the player (so no pain but less benefits), but AI regard weak hooks as compulsory from/for other AI. + send_options_exclusive = no + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = revoke } + } + + on_auto_accept = { + scope:recipient = { trigger_event = char_interaction.0261 } + } + + on_accept = { + # Since this is a confusing interaction, we want to clarify what you're nicking. + scope:actor = { custom_tooltip = diarch_revoke_title_interaction.tt.gain_title } + # To keep some other arcane script working. + save_scope_value_as = { + name = revoke_title_interaction + value = yes + } + scope:actor = { + # Tell them that the revocation went through fine. + trigger_event = char_interaction.0262 + } + # Otherwise, follow the standard flow for revocation. + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + revoke_title_interaction_effect = yes + scope:actor = { + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # To avoid unlanded regents becoming vassals of the liege's direct vassals, make sure the current liege remains the liege + hidden_effect = { + scope:actor = { + if = { + limit = { + is_landed_or_landless_administrative = no + scope:intermediary != scope:recipient + } + # This has a delay of 1 day (if no delay then the liege change doesn't stick) which really isn't ideal and should be looked into/fixed so that it happens when the action goes into effect + trigger_event = { id = diarchy.0141 days = 1 } + } + } + } + + # Debug logging. + debug_log = debug_log.diarch_revoke_title.accepted + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_accept_intermediary_list } + } + } + + on_intermediary_decline = { + # Scope:intermediary eats a prestige cost for their veto. + scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_high } + scope:actor = { + # Inform scope:actor that their liege has vetoed them. + ## First, we log which interaction this is for the event's effects. + save_scope_value_as = { + name = diarch_interaction + value = flag:title_revoke + } + ## Then, fire the event. + trigger_event = char_interaction.0291 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Inform scope:recipient that scope:intermediary has their back. + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_action_vetoed.tt + left_icon = scope:actor + right_icon = scope:intermediary + custom_tooltip = diarch_revoke_title_interaction.tt.inform_recipient + } + } + # Flick out some opinions. + diarch_revoke_title_interaction_intermediary_fail_opinions_effect = yes + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_veto } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_veto_intermediary_list } + } + } + + on_decline = { + scope:actor = { + # Tell them that the revocation ran into issues. + trigger_event = char_interaction.0263 + # And give a crime reason for both them and the liege. + show_as_tooltip = { + random_list = { + 50 = { + show_chance = no + desc = char_interaction.0263.result.criminal + diarch_declare_recipient_criminal_effect = yes + } + 50 = { + show_chance = no + desc = char_interaction.0263.result.war + diarch_declare_claim_war_effect = yes + } + } + } + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Flick out some opinions. + ## Scope:recipient is annoyed with scope:actor. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = revoked_title + } + } + + # Debug logging. + debug_log = debug_log.diarch_revoke_title.rejected + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_revoke_reject } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_revoke_reject_intermediary_list } + } + } + + auto_accept = { + scope:recipient = { + calc_true_if = { + amount >= 2 + custom_description = { + text = "prisoner_revocation" + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + OR = { + # Strong hooks generally. + scope:actor = { has_strong_hook = scope:recipient } + # Weak hooks in inter-AI interactions count as strong hooks. + AND = { + scope:actor = { is_ai = yes } + scope:recipient = { is_ai = yes } + } + } + } + custom_description = { + text = "foreign_prison_revocation" + subject = scope:actor + object = scope:recipient + scope:recipient = { + is_imprisoned = yes + NOT = { is_imprisoned_by = scope:actor } + } + } + } + } + } + + ai_intermediary_accept = { + # The AI should be inclined to trust their regent, at least a little. + base = 0 + modifier = { add = liege_trust_diarch_trilateral_interaction_default_value } + + # Standard modifiers. + intermediary_liege_will_accept_standard_modifiers = { + CURRENCY = prestige + COST = liege_diarchy_veto_prestige_cost_high + } + # Misc important reasons. + ## Revoking own capital. + modifier = { + add = 50 + desc = AI_TITLE_IS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + ai_accept = { + # Try to make it 0 for most interactions + base = 0 + + # Weak Hook + modifier = { + add = 40 + desc = SCHEME_WEAK_HOOK_USED + scope:hook = yes + } + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.8 + desc = AI_OPINION_REASON + } + # Refusal is Treason + ## It's always treason, but worth pointing it out. + modifier = { + add = 20 + desc = AI_REFUSAL_IS_TREASON + } + # Revoking own capital. + modifier = { + add = 50 + desc = AI_TITLE_IS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + # We don't buff claimants because you *have* to be a claimant for a diarch revoke. + ## Compensated for by refusal _always_ being treason. + # I am a King! + modifier = { + add = -20 + desc = offer_vassalization_interaction_aibehavior_hightier_tt + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + # Title is part of vassal's primary title de-jure. + modifier = { + add = -25 + desc = AI_REFUSAL_IS_DE_JURE_UNDER + OR = { + scope:recipient.primary_title = { is_de_jure_liege_or_above_target = scope:landed_title } + scope:recipient.primary_title = scope:landed_title + } + } + # Dread + ## Intimidation + modifier = { + add = intimidated_halved_reason_value + desc = INTIMIDATED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + ## Cowing + modifier = { + add = cowed_halved_reason_value + desc = COWED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + # Comparative military strength. + modifier = { + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength + divide = { value = scope:actor.max_military_strength min = 1 } + } + multiply = 50 + max = 20 + } + desc = offer_vassalization_interaction_aibehavior_power_tt + scope:actor = { is_landed_or_landless_administrative = yes } + } + # Legalistic tradition + modifier = { + add = legalistic_vassal_punishment_acceptance + desc = tradition_legalistic_name + scope:actor = { + has_revoke_title_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # Greed is always a factor. + ai_greed = { + if = { + limit = { + scope:recipient = { + NOT = { ai_greed = 0 } + } + } + value = -0.75 + } + } + # If AI is honourable and the law compels them to obey the liege, AI will be more likely to obey. + ai_honor = { + if = { + limit = { + scope:recipient = { ai_honor > 0 } + } + value = 0.5 + } + } + } + # Bump up landless diarchs if we could survive the transition. + modifier = { + add = 100 + scope:actor = { is_ruler = no } + scope:recipient = { + any_held_county = { count >= 2 } + } + } + } + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + is_diarch = yes + liege = { has_realm_law_flag = title_revocation_allowed } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_core_loop_base_value + + # Additions. + ## Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.25 + } + ## Personality. + ai_value_modifier = { + ai_boldness = 0.75 + ai_honor = -0.5 + } + ## Traits. + ### +++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = ambitious + } + ### +++ Greedy. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### +++ Vengeful (under certain criteria). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = vengeful + has_opinion_modifier = { + modifier = revoked_title + target = scope:recipient + } + } + ### ++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = arbitrary + } + ### - Generous. + modifier = { + add = diarch_ai_desire_minus_1_value + has_trait = generous + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = just + } + ### --- Content. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = content + } + ## Landless characters want land, but also want to focus on taking from those who might give it up. + ### So we prioritise hooked AI counts. + modifier = { + add = 100 + is_landed = no + has_hook = scope:recipient + scope:recipient = { + highest_held_title_tier = tier_county + is_ai = yes + } + } + ### Then just hooked AI. + modifier = { + add = 50 + is_landed = no + has_hook = scope:recipient + scope:recipient = { is_ai = yes } + } + ## Always revoke preferred capital and capital duchy. + modifier = { + add = 1000 + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:landed_title = scope:actor.primary_title.title_capital_county + scope:landed_title = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + ## Slight preference for higher-tier titles. + modifier = { + add = { + value = scope:landed_title.tier + multiply = 10 + } + } + ## We avoid wars here too, but only in the resulting event. + # Factors. + ## Relationships. + ### + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ### x0 Don't go into prestige debt! + modifier = { + factor = 0 + prestige <= 0 + } + } +} + +# Diarch (actor) takes a vassal from a vassal (recipient) of their liege with an optional veto for the liege (third_party). +diarch_retract_vassal_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + interface_priority = 10 + highlighted_reason = HIGHLIGHTED_CAN_DIARCH_RETRACT + notification_text = RETRACT_VASSAL_PROPOSAL + intermediary_notification_text = diarch_interaction_requesting_sign_off.tt + intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES + intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO + intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE + intermediary_answer_accept_key = REPLY_ANSWER_ALLOW + intermediary_answer_reject_key = REPLY_ANSWER_VETO + pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES + pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO + pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE + icon = icon_liege + redirect = { + scope:actor.liege ?= { save_scope_as = intermediary } + } + + desc = diarch_retract_vassal_interaction_desc + send_name = diarch_retract_vassal_interaction.send_name + + special_interaction = retract_vassal_interaction + interface = transfer_vassal + ai_maybe = yes + ai_intermediary_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = diarch_rebel_or_crime_summary.retract + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_diarch_retract_vassal_interaction } + # Plus you need to be landed for this. + is_landed_or_landless_administrative = yes + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_duchy + } + } + + is_valid = { + # Here to correct for some dodgy inheritance situations. + scope:actor != scope:intermediary + } + is_valid_showing_failures_only = { + # Standard validity checks. + vassal_retraction_standard_valid_showing_failures_only_trigger = yes + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Scope:recipient must hold at least one of scope:actor's de jure vassals. + scope:actor = { + custom_description = { + text = "you_must_have_a_de_jure_vassal_to_retract" + object = scope:recipient + any_held_title = { + title_tier >= duchy + any_direct_de_jure_vassal_title = { + exists = holder + holder.liege = scope:recipient + } + } + } + } + # Plus make sure there's a legal right to retract. + scope:actor.liege = { + trigger_if = { + limit = { government_has_flag = government_is_tribal } + custom_description = { + text = "liege_has_law_allowing_vassal_retraction_tribal" + has_realm_law_flag = vassal_retraction_allowed + } + } + trigger_if = { + limit = { + NOT = { government_has_flag = government_is_tribal } + } + custom_description = { + text = "liege_has_law_allowing_vassal_retraction_crown" + has_realm_law_flag = vassal_retraction_allowed + } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_retract_vassal_interaction } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + cooldown = { years = 1 } + cooldown_against_recipient = { years = 3 } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + is_highlighted = { + # Diarch retractions require a de jure claim - this is uncommon, so we always highlight it. + diarch_retraction_is_de_jure_liege_trigger = yes + } + + populate_recipient_list = { + scope:actor = { + every_held_title = { + title_tier >= duchy + every_direct_de_jure_vassal_title = { + limit = { exists = holder } + holder = { + if = { + limit = { liege = scope:recipient } + add_to_list = characters + } + } + } + } + } + } + + # Hooks can be used to force this through. + ## We don't force-force this on/for the player (so no pain but less benefits), but AI regard weak hooks as compulsory from/for other AI. + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_auto_accept = { + scope:recipient = { trigger_event = char_interaction.0271 } + } + + on_accept = { + # Follow the standard flow for retraction. + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + retract_vassal_interaction_effect = yes + scope:actor = { + # Tell them that the retraction went through fine. + trigger_event = char_interaction.0272 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + + # Debug logging. + debug_log = debug_log.diarch_retract_vassal.accepted + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_accept_intermediary_list } + } + } + + on_intermediary_decline = { + # Scope:intermediary eats a prestige cost for their veto. + scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_high } + scope:actor = { + # Inform scope:actor that their liege has vetoed them. + ## First, we log which interaction this is for the event's effects. + save_scope_value_as = { + name = diarch_interaction + value = flag:vassal_retract + } + ## Then, fire the event. + trigger_event = char_interaction.0291 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Inform scope:recipient that scope:intermediary has their back. + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_action_vetoed.tt + left_icon = scope:actor + right_icon = scope:intermediary + custom_tooltip = diarch_retract_vassal_interaction.tt.inform_recipient + } + } + # Flick out some opinions. + diarch_retract_vassal_interaction_intermediary_fail_opinions_effect = yes + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_veto } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_veto_intermediary_list } + } + } + + on_decline = { + scope:actor = { + # Tell them that the retraction ran into issues. + trigger_event = char_interaction.0273 + # And give a crime reason for both them and their liege. + show_as_tooltip = { + random_list = { + 50 = { + show_chance = no + desc = char_interaction.0273.result.criminal + diarch_declare_recipient_criminal_effect = yes + } + 50 = { + show_chance = no + desc = char_interaction.0273.result.war + diarch_declare_vassalisation_war_effect = yes + } + } + } + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Flick out some opinions. + ## Scope:recipient is annoyed with scope:actor. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + + # Debug logging. + debug_log = debug_log.diarch_retract_vassal.rejected + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_retract_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_retract_decline_intermediary_list } + } + } + + auto_accept = { + OR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + ai_intermediary_accept = { + # The AI should be inclined to trust their regent, at least a little. + base = 0 + modifier = { add = liege_trust_diarch_trilateral_interaction_default_value } + + # Standard modifiers. + intermediary_liege_will_accept_standard_modifiers = { + CURRENCY = prestige + COST = liege_diarchy_veto_prestige_cost_high + } + # Misc important reasons. + ## Retracting vassal with own capital. + modifier = { + add = 50 + desc = AI_VASSAL_HOLDS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + OR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + } + } + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + # Hook used + modifier = { + add = 40 + desc = SCHEME_WEAK_HOOK_USED + scope:hook = yes + } + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + # + modifier = { + add = 25 + desc = AI_REFUSAL_IS_TREASON + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + } + + ai_value_modifier = { + who = scope:recipient + ai_greed = { + if = { + limit = { + scope:recipient = { NOT = { ai_greed = 0 } } + } + value = -0.25 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.75 + } + } + } + modifier = { + add = 50 + desc = AI_VASSAL_HOLDS_REALM_CAPITAL + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + OR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + } + + modifier = { #Sub-Vassal is NOT De jure of current Vassal. + add = 25 + desc = AI_REFUSAL_IS_NOT_DE_JURE_LIEGE + NOT = { + scope:recipient = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:secondary_recipient.primary_title + } + } + } + } + modifier = { #Sub-Vassal is De jure of liege title. + add = 15 + desc = AI_REFUSAL_IS_DE_JURE_LIEGE + scope:actor = { + any_held_title = { + this = scope:secondary_recipient.primary_title.de_jure_liege + } + } + } + modifier = { + add = intimidated_halved_reason_value + desc = INTIMIDATED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + modifier = { + add = cowed_halved_reason_value + desc = COWED_REASON + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + modifier = { #Comparative military strength. + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength + divide = { value = scope:actor.max_military_strength min = 1 } + } + multiply = 100 + } + desc = offer_vassalization_interaction_aibehavior_power_tt + } + modifier = { #Different faith, no pluralism. + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + desc = AI_REFUSAL_SPLITTING_SAME_FAITH_VASSALS + scope:actor.faith = scope:secondary_recipient.faith #Will not care as much if the vassal being retracted is of a different faith. + scope:actor = { + NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic. + faith = scope:recipient.faith + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + } + } + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + + ai_potential = { + is_diarch = yes + has_realm_law_flag = title_revocation_allowed + primary_title.tier > tier_county + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_secondary_powers_base_value + + # Additions. + ## Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.25 + } + ## Personality. + ai_value_modifier = { + ai_boldness = 0.75 + ai_honor = -0.5 + } + ## Traits. + ### +++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = ambitious + } + ### +++ Greedy. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### +++ Vengeful (under certain criteria). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = vengeful + has_opinion_modifier = { + modifier = revoked_title + target = scope:recipient + } + } + ### ++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = arbitrary + } + ### - Generous. + modifier = { + add = diarch_ai_desire_minus_1_value + has_trait = generous + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = just + } + ### --- Content. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = content + } + ## Always revoke preferred capital and capital duchy + modifier = { + add = 1000 + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor = { + any_held_title = { this = scope:actor.primary_title.title_capital_county.de_jure_liege } + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { is_title_created = no } + } + scope:secondary_recipient = { + any_sub_realm_county = { this = scope:actor.primary_title.title_capital_county } + } + } + # Always retract preferred capital duchy + modifier = { + add = 1000 + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + any_sub_realm_duchy = { this = scope:actor.primary_title.title_capital_county.de_jure_liege } + } + } + ## Slight preference for higher-tier titles + modifier = { + add = { + value = scope:secondary_recipient.highest_held_title_tier + multiply = 10 + } + } + ## We avoid wars here too, but only in the resulting event. + # Factors. + ## Relationships. + ### + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ### x0 Exempt the party baron. + modifier = { + factor = 0 + scope:recipient = { has_character_flag = is_party_baron } + } + } +} + +# Diarch (actor) imprisons a character (recipient) who's a sub-realm character of their liege, with an optional veto for the liege (third_party). +diarch_imprison_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + interface_priority = 16 + notification_text = DIARCH_IMPRISON_PROPOSAL + intermediary_notification_text = diarch_interaction_requesting_sign_off.tt + intermediary_breakdown_yes = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_YES + intermediary_breakdown_no = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_NO + intermediary_breakdown_maybe = ANSWER_TRILATERAL_INTERMEDIARY_LIEGE_MAYBE + intermediary_answer_accept_key = REPLY_ANSWER_ALLOW + intermediary_answer_reject_key = REPLY_ANSWER_VETO + pre_answer_yes_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_YES + pre_answer_no_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_NO + pre_answer_maybe_breakdown_key = ANSWER_TRILATERAL_RECIPIENT_MAYBE + icon = prison + redirect = { + scope:actor.liege ?= { save_scope_as = intermediary } + } + + desc = diarch_imprison_interaction_desc + send_name = diarch_imprison_interaction.send_name + + ai_maybe = yes + ai_intermediary_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + on_decline_summary = diarch_rebel_or_crime_summary.crominal + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_diarch_imprison_interaction } + # The prisoner goes to your dungeon, so we want you to actually have one. + is_landed_or_landless_administrative = yes + } + # Make sure scope:recipient is suitable. + scope:recipient = { is_imprisoned = no } + # Scope:recipient can't be visiting elsewhere. + trigger_if = { + limit = { + scope:recipient = { is_courtier = yes } + } + NOT = { + scope:recipient.host = { + any_foreign_court_guest = { this = scope:recipient } + } + } + } + # Finally, make sure this isn't someone scope:actor could use the conventional interaction on. + scope:actor = { + liege = { + basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + NOT = { + basic_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + } + } + + is_valid = { + # Here to correct for some dodgy inheritance situations. + scope:actor != scope:intermediary + } + is_valid_showing_failures_only = { + scope:actor = { + advanced_allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_a_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_imprison_interaction } + scope:actor.liege = { + trigger_if = { + limit = { has_realm_law_flag = imprisonment_toggle_enable } #Present on all tribal authority to disable imprisonment + has_realm_law_flag = imprisonment_toggle_on #Present from tribal authority level 1 to re-enable imprisonment + } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + cooldown = { years = 1 } + cooldown_against_recipient = { years = 3 } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + is_highlighted = { + scope:recipient = { is_imprisoned = no } + scope:actor = { has_imprisonment_reason = scope:recipient } + } + + #Use hook + send_option = { + is_valid = { + exists = scope:recipient + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_auto_accept = { + scope:actor = { trigger_event = char_interaction.0281 } + diarch_imprison_general_accept_effect = yes + } + + on_accept = { + if = { + limit = { scope:hook = yes } + scope:actor = { use_hook = scope:recipient } + } + # Tell them that the imprisonment went through fine. + scope:actor = { trigger_event = char_interaction.0282 } + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + diarch_imprison_general_accept_effect = yes + + # Debug logging. + debug_log = debug_log.diarch_imprison.accepted + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_accept_intermediary_list } + } + } + + on_intermediary_decline = { + # Scope:intermediary eats a prestige cost for their veto. + scope:intermediary = { add_prestige = liege_diarchy_veto_prestige_cost_medium } + scope:actor = { + # Inform scope:actor that their liege has vetoed them. + ## First, we log which interaction this is for the event's effects. + save_scope_value_as = { + name = diarch_interaction + value = flag:imprison + } + ## Then, fire the event. + trigger_event = char_interaction.0291 + # Scope:actor can be hostile again. + clear_hostile_actions_lock_flag_effect = yes + } + # Inform scope:recipient that scope:intermediary has their back. + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_action_vetoed.tt + left_icon = scope:actor + right_icon = scope:intermediary + custom_tooltip = diarch_imprison_interaction.tt.inform_recipient + } + } + # Flick out some opinions. + diarch_imprison_interaction_intermediary_fail_opinions_effect = yes + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_veto } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_veto_intermediary_list } + } + } + + on_decline = { + scope:actor = { + imprison_HoF_consequences_effect = yes + imprison_tyranny_effect = yes + } + # Do we want a war or an escape? + scope:recipient = { + # If target is count or higher, we want the option to start a war. + if = { + limit = { + is_landed_or_landless_administrative = yes + highest_held_title_tier >= tier_county + } + # Send the choosing event. + scope:actor = { trigger_event = char_interaction.0283 } + # Display the choices in advance. + show_as_tooltip = { + random_list = { + 50 = { + show_chance = no + desc = char_interaction.0263.result.criminal + diarch_declare_recipient_criminal_effect = yes + } + 50 = { + show_chance = no + desc = char_interaction.0263.result.war + scope:recipient = { + start_war = { + casus_belli = remove_regent_cb + target = scope:actor + } + } + } + } + } + } + #If target is a baron or unlanded, have them escape. + else = { + if = { #To block them from being instantly rehired + limit = { + is_councillor_of = scope:actor + can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor } + } + set_variable = { + name = escaped_imprisonment_from + value = scope:actor + years = 20 + } + } + if = { + limit = { is_landed_or_landless_administrative = yes } + depose_effect = { DEPOSER = scope:actor } + } + if = { + limit = { + is_playable_character = no + trigger_if = { + limit = { is_councillor = yes } + can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege } + } + trigger_if = { + limit = { exists = scope:actor.faith.religious_head } + scope:actor.faith.religious_head != scope:recipient + } + } + custom_tooltip = deposed_and_become_wanderer + select_and_move_to_pool_effect = yes + } + add_opinion = { + target = scope:actor + modifier = attempted_imprisonment_opinion + } + } + } + + #Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230) + scope:actor = { + if = { + limit = { + any_courtier = { has_relation_guardian = scope:recipient } + } + every_courtier = { + limit = { has_relation_guardian = scope:recipient } + save_scope_as = ward + remove_guardian_effect = { + GUARDIAN = scope:recipient + WARD = scope:ward + RETURN_WARD = yes + HIDE_OPINION = no + } + add_to_list = ward_children + } + } + if = { + limit = { + any_courtier = { has_relation_ward = scope:recipient } + } + random_courtier = { + limit = { has_relation_ward = scope:recipient } + save_scope_as = guardian + show_as_tooltip = { + remove_guardian_effect = { + GUARDIAN = scope:guardian + WARD = scope:recipient + RETURN_WARD = yes + HIDE_OPINION = no + } + } + add_to_list = guardian_list + } + hidden_effect = { + scope:guardian = { + send_interface_message = { + type = event_childhood_neutral + title = remove_guardian_interaction_notification + left_icon = scope:recipient + right_icon = scope:guardian + remove_guardian_effect = { + GUARDIAN = scope:guardian + WARD = scope:recipient + RETURN_WARD = yes + HIDE_OPINION = no + } + } + } + } + } + } + # Misc clean-up stuff. + scope:actor = { + if = { + limit = { + scope:recipient = { + OR = { + is_playable_character = no + AND = { + is_landed_or_landless_administrative = yes + primary_title.tier = tier_barony + } + } + } + } + trigger_event = char_interaction.0230 + } + } + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # Debug logging. + debug_log = debug_log.diarch_imprison.rejected + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_imprison_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_recipient_list } + } + scope:intermediary = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_imprison_decline_intermediary_list } + } + } + + auto_accept = no + + ai_intermediary_accept = { + # The AI should be inclined to trust their regent, at least a little. + base = 0 + modifier = { add = liege_trust_diarch_trilateral_interaction_default_value } + + # Standard modifiers. + intermediary_liege_will_accept_standard_modifiers = { + CURRENCY = prestige + COST = liege_diarchy_veto_prestige_cost_medium + } + } + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + add = { + value = scope:actor.intrigue + multiply = 1 + } + desc = IMPRISON_INTRIGUE_ACTOR + } + modifier = { + add = { + value = scope:recipient.intrigue + multiply = -2 + } + desc = IMPRISON_INTRIGUE_RECIPIENT + } + + modifier = { + add = 30 + desc = SCHEME_HOOK_USED + scope:hook = yes + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ai_value_modifier = { + who = scope:recipient + ai_boldness = { + if = { + limit = { + scope:recipient = { NOT = { ai_boldness = 0 } } + } + value = -0.5 + } + } + } + modifier = { + add = 20 + desc = AI_REFUSAL_IS_TREASON + scope:actor = { + any_vassal_or_below = { this = scope:recipient } + has_realm_law_flag = vassal_refusal_is_treason + } + } + modifier = { + add = 50 + desc = AI_PRISON_FEUDAL_COMPLEX_PERK + scope:actor = { + has_perk = prison_feudal_complex_perk + } + } + modifier = { #I am a King! + add = -40 + desc = offer_vassalization_interaction_aibehavior_hightier_tt + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + modifier = { #Courtiers. + add = 50 + desc = AI_REFUSAL_COURTIER + scope:recipient = { is_ruler = no } + } + modifier = { # Your young children can't really stop you + add = 200 + desc = AI_REFUSAL_YOUNG_CHILD + scope:recipient = { + is_child_of = scope:actor + is_courtier_of = scope:actor + is_adult = no + } + } + modifier = { #They're a claimant against you + add = -70 + desc = AI_CLAIMANT_PENALTY + scope:actor = { + OR = { + any_targeting_faction = { + faction_type = claimant_faction + faction_is_at_war = yes + special_character ?= scope:recipient + } + AND = { + exists = var:claimant_faction_sent_demand + var:claimant_faction_sent_demand = scope:recipient + } + } + } + } + modifier = { #Rank difference. + add = { + value = -15 + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 2 + } + } + } + add = 5 + } + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 3 + } + } + } + add = 5 + } + if = { #King asking Baron, modifier becomes positive. + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 4 + } + } + } + add = 10 + } + } + desc = AI_REFUSAL_RANK_DIFFERENCE + scope:recipient = { + is_ruler = yes + highest_held_title_tier < tier_kingdom + } + } + modifier = { + add = intimidated_external_reason_value + desc = INTIMIDATED_REASON + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + modifier = { + add = cowed_external_reason_value + desc = COWED_REASON + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + modifier = { #Comparative military strength. + add = { + value = 1 + subtract = { + value = scope:recipient.max_military_strength + divide = { value = scope:actor.max_military_strength min = 1 } + } + multiply = 100 + min = -1000 + # This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt + max = 20 + } + desc = offer_vassalization_interaction_aibehavior_power_tt + scope:actor = { is_ruler = yes } + scope:recipient = { is_ruler = yes } + } + modifier = { #Rivalry modifier. + add = -50 + desc = offer_vassalization_interaction_aibehavior_rival_tt + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + modifier = { #Nemesis modifier. + add = -100 + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + modifier = { + add = 10 + desc = GRANDEUR_REASON + scope:recipient = { has_royal_court = no } + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level >= 7 + court_grandeur_current_level < 9 + } + } + modifier = { + add = 20 + desc = GRANDEUR_REASON + scope:recipient = { has_royal_court = no } + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level >= 9 + } + } + modifier = { # Legalistic tradition + add = legalistic_vassal_punishment_acceptance + desc = tradition_legalistic_name + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + } + } + + # AI + ai_targets = { + ai_recipients = peer_vassals + ai_recipients = scripted_relations + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_will_do = { + # You should have a _reason_ to try to imprison someone. + base = 0 + + # Additions. + ## Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.5 + } + ## Personality. + ai_value_modifier = { + ai_vengefulness = 1 + ai_boldness = 0.5 + } + ## Flag Management. + ### Make sure the AI uses hooks for this as it's % based + modifier = { + add = 1 + scope:hook = yes + } + ## Traits. + ### +++ Sadistic. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### +++ Vengeful. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = vengeful + } + ### ++ Just (under certain circumstances). + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = just + has_imprisonment_reason = scope:recipient + } + ### -- Compassionate. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = compassionate + } + ### --- Forgiving. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = forgiving + } + ## We avoid wars here too, but only in the resulting event. + ## Agenda impact + modifier = { + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_important } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_important } + } + } + add = -100 + } + } + any_character_struggle = { involvement = involved } + } + modifier = { + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor } + has_trait = fp3_struggle_supporter + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_detractor } + } + } + add = -100 + } + } + any_character_struggle = { involvement = involved } + } + modifier = { + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { phase_has_catalyst = catalyst_imprison_supporter } + } + } + add = -100 + } + } + any_character_struggle = { involvement = involved } + } + # Factors. + ## Relationships. + ### + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ### x0 Don't pick on people without due reason unless we really hate them. + #### Doesn't quite double up with the above factor increase for folks we hate - we want to prioritise them, but we also want to enable them for arbitrary punishment. + modifier = { + factor = 0 + NOR = { + has_imprisonment_reason = scope:recipient + has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient } + # Sadists wants to torture folks. + has_trait = sadistic + # Agents get a time-out. + any_targeting_scheme = { + hostile_scheme_trigger = yes + is_scheme_agent_exposed = scope:recipient + } + # Prior crimes annoy people. + has_any_major_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient } + # Vengeful characters can be a pain over even minor matters. + AND = { + OR = { + has_trait = vengeful + ai_vengefulness >= very_high_positive_ai_value + } + has_any_petty_revenge_opinion_against_character_trigger = { CHARACTER = scope:recipient } + } + } + } + } +} + +# Diarch (actor) offers to boost the CA/TA/IB of liege (recipient), taking on the costs and negatives themselves so that they can use their diarch powers. +diarch_subsidise_crown_authority_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + notification_text = DIARCH_SUBSIDISE_AUTHORITY_PROPOSAL + icon = icon_contract_modification_single + + desc = diarch_subsidise_crown_authority_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege_has_co_emperorship_trigger = no + liege = { has_diarchy_parameter = diarch_can_subsidise_liege_authority } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = diarch_can_subsidise_liege_authority } + # Can't subisidise past the point needed. + custom_tooltip = { + text = diarch_subsidise_crown_authority_interaction.tt.cannot_subsidise_past_necessary + scope:recipient = { + NOT = { has_realm_law_flag = diarchs_want_to_subsidise_without_this_flag } + } + } + # And the liege can't have the max level of authority. + custom_tooltip = { + text = diarch_subsidise_crown_authority_interaction.tt.liege_cannot_have_max_authority + scope:recipient = { + NOT = { has_realm_law_flag = max_authority_level } + } + } + # Aaaand, if you're not tribal/administrative, we need to check some innovations. + scope:recipient = { + # CA0 -> CA1. + trigger_if = { + limit = { has_realm_law = crown_authority_0 } + can_pass_law_ca1_trigger = yes + } + # CA1 -> CA2. + trigger_if = { + limit = { has_realm_law = crown_authority_1 } + can_pass_law_ca2_trigger = yes + } + # CA2 -> CA3. + trigger_if = { + limit = { has_realm_law = crown_authority_2 } + can_pass_law_ca3_trigger = yes + } + + # If the liege is administrative, they have to be independent. + trigger_if = { + limit = { government_allows = administrative } + is_independent_ruler = yes + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Why the hell not? If your liege dies several times in quick succession, sure, centralise all the power you like. That'll go well. + cooldown_against_recipient = { years = 10 } + + cost = { + prestige = { + value = scope:recipient.increase_crown_authority_prestige_cost + multiply = subsidised_liege_authority_discount_value + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_subsidise_crown_authority_interaction.tt.accepted + left_icon = scope:recipient + scope:recipient = { + # Try to change authority. + increase_crown_authority_effect = yes + increase_tribal_authority_effect = yes + increase_imperial_bureaucracy_effect = yes + # No one blames the liege for this. + add_character_modifier = { + modifier = liege_authority_boost_has_scapegoat_modifier + years = 10 + } + } + # Aaaaand everyone knows what you did. + change_strife_opinion = massive_strife_gain + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = diarch_subsidise_crown_authority_interaction.tt.declined + left_icon = scope:recipient + add_opinion = { + target = scope:recipient + modifier = refusal_opinion + opinion = -20 + } + } + } + } + + ai_accept = { + base = 0 + + # You want to do _what_? For free? + modifier = { + add = 100 + desc = diarch_subsidise_crown_authority_interaction.tt.absolutely_yes_please + always = yes + } + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + } + } + } + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + # You also need prestige left over afterwards to use other interactions, so make sure the AI doesn't bankrupt itself on this. + prestige >= { + value = liege.increase_crown_authority_prestige_cost + multiply = subsidised_liege_authority_discount_value + add = major_prestige_value + } + } + + ai_will_do = { + base = 0 + + # Government situation. + ## Does your liege's gubermint allow you to bully people and take their stuff? No? Then you want to take this interaction; anyone who wouldn't has been pre-filtered. + modifier = { + add = 1000 + liege = { + NOR = { + has_realm_law_flag = title_revocation_allowed + has_realm_law_flag = vassal_retraction_allowed + } + } + } + } +} + +# Diarch (actor) requests an adjustment of liege's (recipient's) IB, taking on the costs and negatives themselves _or_ reducing their strife, depending on whether they boost centralisation or decrease it. +diarch_adjust_bureaucracy_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + interface_priority = 9 + notification_text = { + first_valid = { + # Decentralise. + triggered_desc = { + trigger = { scope:decrease_centralisation = yes } + desc = DIARCH_ADJUST_BUREAUCRACY_PROPOSAL.DECENTRALISE + } + # Centralise. + desc = DIARCH_ADJUST_BUREAUCRACY_PROPOSAL.CENTRALISE + } + } + icon = icon_contract_modification_single + + desc = diarch_adjust_bureaucracy_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege_has_co_emperorship_trigger = yes + liege = { has_diarchy_parameter = unlock_adjust_imperial_bureaucracy_interaction } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_adjust_imperial_bureaucracy_interaction } + # And the liege can't have the max level of authority. + custom_tooltip = { + text = diarch_subsidise_crown_authority_interaction.tt.liege_cannot_have_max_authority + scope:recipient = { + NOT = { has_realm_law_flag = max_authority_level } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Co-emperors can't keep doing this in quick succession. + cooldown = { years = 10 } + + cost = { + prestige = { + value = scope:recipient.increase_crown_authority_prestige_cost + if = { + limit = { scope:increase_centralisation = yes } + multiply = subsidised_liege_authority_discount_value + } + else = { multiply = lowered_liege_authority_discount_value } + } + } + + # Increase IB + send_option = { + flag = increase_centralisation + is_valid = { + scope:recipient = { + NOT = { has_realm_law = imperial_bureaucracy_3 } + } + } + localization = increase_centralisation_name + current_description = increase_centralisation + starts_enabled = { always = yes } + } + # Decrease IB + ## The AI doesn't use this. + send_option = { + flag = decrease_centralisation + is_valid = { + scope:recipient = { + NOT = { has_realm_law = imperial_bureaucracy_0 } + } + } + localization = decrease_centralisation_name + current_description = decrease_centralisation + } + + on_send = { + # Tell the AI to set their only send option. + if = { + limit = { + scope:actor = { is_ai = yes } + } + save_scope_value_as = { + name = increase_centralisation + value = yes + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = diarch_subsidise_crown_authority_interaction.tt.accepted + left_icon = scope:recipient + scope:recipient = { + # Try to change authority. + if = { + limit = { scope:increase_centralisation = yes } + increase_imperial_bureaucracy_effect = yes + # No one blames the liege for this. + add_character_modifier = { + modifier = liege_authority_boost_has_scapegoat_modifier + years = 10 + } + } + else = { decrease_imperial_bureaucracy_effect = yes } + } + # Aaaaand everyone knows what you did. + ## For good. + if = { + limit = { scope:increase_centralisation = yes } + change_strife_opinion = massive_strife_gain + } + ## Or for ill. + else = { change_strife_opinion = massive_strife_loss } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = diarch_subsidise_crown_authority_interaction.tt.declined + left_icon = scope:recipient + add_opinion = { + target = scope:recipient + modifier = refusal_opinion + opinion = -20 + } + } + } + } + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + # Your level of influence. + ## Impotent + modifier = { + add = -10 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT + scope:actor.influence_level = 0 + } + ## Influential + ### Would be zero, so it wouldn't appear. + ## Persuasive + modifier = { + add = 10 + desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE + scope:actor.influence_level = 2 + } + ## Controlling + modifier = { + add = 20 + desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING + scope:actor.influence_level = 3 + } + ## Authoritative + modifier = { + add = 30 + desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE + scope:actor.influence_level = 4 + } + ## Imperious + modifier = { + add = 40 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS + scope:actor.influence_level = 5 + } + # Traits. + ## --- Arrogant + modifier = { + add = -30 + desc = ai_acceptance_trait_arrogant + scope:recipient = { has_trait = arrogant } + } + ## --- Ambitious + modifier = { + add = -30 + desc = ai_acceptance_trait_ambitious + scope:recipient = { has_trait = ambitious } + } + ## --- Stubborn + modifier = { + add = -30 + desc = ai_acceptance_trait_stubborn + scope:recipient = { has_trait = stubborn } + } + ## -- Paranoid + modifier = { + add = -20 + desc = ai_acceptance_trait_paranoid + scope:recipient = { has_trait = paranoid } + } + ## + Craven + modifier = { + add = 10 + desc = ai_acceptance_trait_craven + scope:recipient = { has_trait = craven } + } + ## ++ Trusting + modifier = { + add = 20 + desc = ai_acceptance_trait_trusting + scope:recipient = { has_trait = trusting } + } + ## ++ Fickle + modifier = { + add = 20 + desc = ai_acceptance_trait_fickle + scope:recipient = { has_trait = fickle } + } + ## +++ Content + modifier = { + add = 30 + desc = ai_acceptance_trait_content + scope:recipient = { has_trait = content } + } + ## +++ Humble + modifier = { + add = 30 + desc = ai_acceptance_trait_humble + scope:recipient = { has_trait = humble } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # The meeker they are, the more they'll go along with your wishes. + ai_boldness = { + if = { + limit = { + scope:recipient = { + NOT = { ai_boldness = 0 } + } + } + value = -1 + } + } + # And the lazier. + ai_energy = { + if = { + limit = { + scope:recipient = { ai_energy > 0 } + } + value = 0.5 + } + } + } + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + scope:increase_centralisation = yes + } + } + } + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + liege_has_co_emperorship_trigger = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + # You also need prestige left over afterwards to use other interactions, so make sure the AI doesn't bankrupt itself on this. + prestige >= { + value = liege.increase_crown_authority_prestige_cost + multiply = subsidised_liege_authority_discount_value + add = major_prestige_value + } + } + + ai_will_do = { + base = 0 + + # Government situation. + ## Does your liege's gubermint allow you to bully people and take their stuff? No? Then you want to take this interaction; anyone who wouldn't has been pre-filtered. + modifier = { + add = 1000 + liege = { + NOR = { + has_realm_law_flag = title_revocation_allowed + has_realm_law_flag = vassal_retraction_allowed + } + } + } + # Otherwise, there's just a slight constant chance based on energy. + ai_value_modifier = { + ai_energy = 2 + # Assuming you're the heir, as otherwise... + trigger = { liege.player_heir ?= root } + } + } +} + + + + + + + + + + + +################################################## +# ANCILLARY DIARCH POWERS + +# Diarch (actor) either tests learning or spends prestige to gain an unpressed claim on a title held by a vassal of their liege (recipient). +diarch_legal_meddling_interaction = { + category = interaction_category_diarch + common_interaction = yes + interface_priority = 165 + diarch_interaction = yes + icon = vassal_claim_liege_title_interaction + + desc = diarch_legal_meddling_interaction_desc + + ai_intermediary_maybe = yes + target_type = title + target_filter = recipient_domain_titles + popup_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_legal_meddling_interaction } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_county + } + } + + is_valid_showing_failures_only = { + # You can't claim a title from someone if you already have claims on all their titles. + custom_tooltip = { + text = diarch_legal_meddling_interaction.tt.they_must_have_at_least_one_unclaimed_title + scope:recipient = { + any_held_title = { + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_a_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_legal_meddling_interaction } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:diarch_legal_meddling_interaction_duel_learning = yes + scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes + scope:diarch_legal_meddling_interaction_pay_prestige_full = yes + } + } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cooldown = { months = 6 } + cooldown_against_recipient = { years = 3 } + + can_be_picked_title = { + scope:target = { + # Really anything you don't already have a claim on and which isn't special. + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + + # Attempt Methods + send_options_exclusive = yes + ## Duel for it. + send_option = { + # You can always try to duel for it. + flag = diarch_legal_meddling_interaction_duel_learning + } + ## Pay partial prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = legal_meddling_interaction_title_discounted_cost_value + multiply = -1 + } + } + } + flag = diarch_legal_meddling_interaction_pay_prestige_partial + } + ## Pay full prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = legal_meddling_interaction_title_cost_value + multiply = -1 + } + } + } + flag = diarch_legal_meddling_interaction_pay_prestige_full + } + + on_send = { + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = forge_claim } + } + + on_accept = { + scope:actor = { + # Resolution method. + ## If we're duelling, then we duel. + if = { + limit = { scope:diarch_legal_meddling_interaction_duel_learning = yes } + # Now: FIGHT! WITH WORDS! + duel = { + skill = learning + target = scope:recipient + # Victory! A claim for you. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + desc = diarch_legal_meddling_interaction.tt.success + diarch_legal_meddling_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + desc = diarch_legal_meddling_interaction.tt.failure + diarch_legal_meddling_interaction_apply_fail_effect = yes + } + } + } + ## Otherwise we can take an uneven gamble against a reduced prestige cost.. + else_if = { + limit = { scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes } + random_list = { + # Victory! A claim for you. + 100 = { + desc = diarch_legal_meddling_interaction.tt.success + diarch_legal_meddling_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 100 = { + desc = diarch_legal_meddling_interaction.tt.failure + diarch_legal_meddling_interaction_apply_fail_effect = yes + } + } + } + ## Or pay the full price. + else = { + custom_tooltip = diarch_legal_meddling_interaction.tt.success + diarch_legal_meddling_interaction_apply_success_effect = yes + } + } + + # Debug logging. + debug_log = debug_log.legal_meddling.attempt_made + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_core_loop_base_value + + # Additions. + ## Weight for opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ## Weight for personality. + ai_value_modifier = { + ai_boldness = 0.25 + ai_greed = 0.5 + ai_honor = 0.5 + } + ## Flag Management. + ### Duel for it if we're massively superior. + modifier = { + add = 100 + scope:diarch_legal_meddling_interaction_duel_learning = yes + learning_diff = { + target = scope:recipient + value >= @ai_skill_diff_upper_threshold + } + } + ### Else we'll try to pay full prestige, if we've got lots to spare. + modifier = { + add = 50 + scope:diarch_legal_meddling_interaction_pay_prestige_full = yes + prestige >= { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Or else we'll to chance it, if we can afford that + some slack. + modifier = { + add = 25 + scope:diarch_legal_meddling_interaction_pay_prestige_partial = yes + prestige < { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + prestige >= { + value = shift_privileges_interaction_target_discounted_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Otherwise we'll risk a regular duel. + ## Weight up for bordering or de jure areas. + modifier = { + add = 50 + is_landed_or_landless_administrative = yes + any_sub_realm_county = { + any_neighboring_county = { + holder = { + OR = { + this = scope:recipient + any_liege_or_above = { this = scope:recipient } + } + } + } + } + } + modifier = { + add = 50 + is_landed_or_landless_administrative = yes + scope:actor = { + any_held_title = { + any_direct_de_jure_vassal_title = { + holder ?= { + OR = { + this = scope:recipient + this = { + any_liege_or_above = { this = scope:recipient } + } + } + } + } + } + } + } + ## Weight down for folks outside of our de jure kingdom. + modifier = { + add = -100 + is_landed_or_landless_administrative = yes + scope:recipient.primary_title.de_jure_liege ?= { + this != scope:actor.primary_title.de_jure_liege + } + } + ## Landless characters want land, but also want to focus on taking from those who might give it up. + ### So we prioritise hooked AI counts. + modifier = { + add = 100 + is_landed = no + has_hook = scope:recipient + scope:recipient = { + highest_held_title_tier = tier_county + is_ai = yes + } + } + ### Then just hooked AI. + modifier = { + add = 50 + is_landed = no + has_hook = scope:recipient + scope:recipient = { is_ai = yes } + } + # Factors. + ## + Weight up if we're lacking valid claims + modifier = { + factor = 1.5 + NOR = { + is_claimant = yes + any_claim = { + exists = holder + exists = holder.liege + holder.liege = scope:actor.liege + } + } + } + ## + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## + If we're landless, turbo charge this when we lack suitable claims. + modifier = { + factor = 3 + scope:actor = { + is_ruler = no + any_claim = { + count < @ai_threshold_for_revoke_cyle + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + } + ## + If we're landless, try to prioritise anyone we've got a hook on. + modifier = { + factor = 2 + scope:actor = { + is_ruler = no + has_usable_hook = scope:recipient + } + } + ## - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ## x0 If we're landless, don't claim more titles if we've already got enough we can try to action. + modifier = { + factor = 0 + scope:actor = { + is_ruler = no + any_claim = { + count >= @ai_threshold_for_revoke_cyle + diarch_legal_meddling_claimable_title_trigger = { ACTOR = scope:actor } + } + } + } + ## x0 If we're landless, don't pick on people who won't give their lands up. + modifier = { + factor = 0 + scope:actor = { is_ruler = no } + scope:recipient = { + any_held_county = { count <= 1 } + } + } + ### x0 Don't go into prestige debt! + modifier = { + factor = 0 + prestige < 0 + } + } +} + +# Diarch (actor) either tests stewardship or spends prestige to gain gold at the expense of negative modifiers delivered to the liege (recipient). +diarch_syphon_treasury_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + icon = icon_gold + common_interaction = yes + + desc = diarch_syphon_treasury_interaction_desc + + + interface_priority = 60 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_syphon_treasury_interaction } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + OR = { + # We only target the liege... + this = scope:actor.liege + # ... but we want to see it for peer-vassals and such. + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # If scope:actor's stewardship is too crap, then we need to make sure they haven't somehow managed to riddle scope:recipient's lands with negative modifiers already. + trigger_if = { + limit = { scope:actor.stewardship < syphon_treasury_stewardship_medium } + custom_tooltip = { + text = diarch_syphon_treasury_interaction.tt.not_enough_marks_or_stewardship + scope:recipient = { + any_held_county = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_a_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_syphon_treasury_interaction } + } + # Must have selected an amount to embezzle. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = diarch_interactions.tt.must_embezzle_something + OR = { + scope:diarch_syphon_treasury_sum_small = yes + scope:diarch_syphon_treasury_sum_medium = yes + scope:diarch_syphon_treasury_sum_large = yes + scope:diarch_syphon_treasury_sum_huge = yes + } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cooldown = { years = 3 } + + # Attempt Methods + send_options_exclusive = yes + ## Steal a small sum. + ### Bonus to scope:actor. + send_option = { + flag = diarch_syphon_treasury_sum_small + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_small_name + current_description = diarch_syphon_treasury_sum_small + } + ## Steal a moderate sum. + ### No bonus, no malus. + send_option = { + flag = diarch_syphon_treasury_sum_medium + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_medium_name + current_description = diarch_syphon_treasury_sum_medium + starts_enabled = { always = yes } + } + ## Steal a large sum. + ### Malus to scope:actor + send_option = { + flag = diarch_syphon_treasury_sum_large + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_large_name + current_description = diarch_syphon_treasury_sum_large + } + ## Steal a _huge_sum. + ### _Huge_ malus to scope:actor. + send_option = { + flag = diarch_syphon_treasury_sum_huge + # We're doing gross overrides here so that we don't need to relocalise some perfectly good stuff. + localization = diarch_syphon_treasury_sum_huge_name + current_description = diarch_syphon_treasury_sum_huge + } + + on_send = { + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = embezzle } + } + + on_accept = { + # Time for a skill duel! + scope:actor = { + duel = { + skill = stewardship + value = syphon_treasury_duel_target_value + # Victory! Gold for scope:actor, maluses for the liege. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + # Bonus for smaller amounts. + modifier = { + add = 25 + always = scope:diarch_syphon_treasury_sum_small + } + # You always have some kind of a chance. + min = 10 + desc = diarch_syphon_treasury_interaction.tt.success + # Inform scope:actor what type of embezzlement they'll be pursuing. + ## Very high stewardship characters syphon development growth from a few counties. + if = { + limit = { + stewardship >= syphon_treasury_stewardship_very_high + NOT = { government_has_flag = government_is_nomadic } + } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_development_growth + } + ## Alternatively, herd for nomadic rulers + else_if = { + limit = { + stewardship >= syphon_treasury_stewardship_very_high + government_has_flag = government_is_nomadic + } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_herd + } + ## High stewardship characters syphon some control from various counties. + else_if = { + limit = { stewardship >= syphon_treasury_stewardship_high } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_control_several_counties + } + ## Medium stewardship characters syphon lots of control from one county. + else_if = { + limit = { stewardship >= syphon_treasury_stewardship_medium } + custom_tooltip = diarch_syphon_treasury_interaction.tt.success.syphon_control_county + } + ## Low stewardship characters apply county modifiers. + else = { custom_tooltip = diarch_syphon_treasury_interaction.tt.success.apply_county_modifier } + # Now we sort the actual effects. + ## A nice toast to tell us about our new gold. + send_interface_toast = { + type = event_toast_effect_good + title = diarch_syphon_treasury_interaction.tt.success + left_icon = scope:recipient + # Transfer gold. + ## Small amount. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_small } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_low + } + add_gold = syphon_treasury_gold_gain_low + } + ## Medium amount. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_medium + } + add_gold = syphon_treasury_gold_gain_medium + } + ## Large amount. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_high + } + add_gold = syphon_treasury_gold_gain_high + } + ## Huge amount. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + give_or_update_embezzler_secret_effect = { + TARGET = scope:recipient + STAKE = syphon_treasury_gold_gain_very_high + } + add_gold = syphon_treasury_gold_gain_very_high + } + } + ## Plus the maluses for the liege. + scope:recipient = { + # Very high stewardship characters syphon development growth from a few counties. + if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_very_high } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = massive_development_progress_loss } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = major_development_progress_loss } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = medium_development_progress_loss } + } + ## Low. + else = { + diarch_syphon_treasury_interaction_syphon_development_growth_effect = { LOSS = minor_development_progress_loss } + } + } + # Alternatively, for nomadic rulers, we steal some herd + else_if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_very_high government_has_flag = government_is_nomadic } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + scope:recipient = { + domicile ?= { change_herd = monumental_herd_loss } + } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + scope:recipient = { + domicile ?= { change_herd = massive_herd_loss } + } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + scope:recipient = { + domicile ?= { change_herd = major_herd_loss } + } + } + ## Low. + else = { + scope:recipient = { + domicile ?= { change_herd = medium_herd_loss } + } + } + } + # High stewardship characters syphon some control from various counties. + else_if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_high } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = monumental_county_control_loss } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = extreme_county_control_loss } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = major_county_control_loss } + } + ## Low. + else = { + diarch_syphon_treasury_interaction_syphon_control_effect = { LOSS = medium_county_control_loss } + } + } + # Medium stewardship characters syphon lots of control from one county. + else_if = { + limit = { scope:actor.stewardship >= syphon_treasury_stewardship_medium } + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = monumental_county_control_loss + } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = extreme_county_control_loss + } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = major_county_control_loss + } + } + ## Low. + else = { + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { + this != scope:recipient.capital_county + } + alternative_limit = { always = yes } + change_county_control = medium_county_control_loss + } + } + } + # Low stewardship characters apply county modifiers. + else = { + # Gold transfer was... + ## Very high. + if = { + limit = { always = scope:diarch_syphon_treasury_sum_huge } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_massive_sum_modifier + years = 5 + } + } + } + ## High. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_large } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_large_sum_modifier + years = 5 + } + } + } + ## Medium. + else_if = { + limit = { always = scope:diarch_syphon_treasury_sum_medium } + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_medium_sum_modifier + years = 5 + } + } + } + ## Low. + else = { + random_held_county = { + # Try to prefer against the capital, as that's more noticeable. + limit = { diarch_syphon_treasury_embezzlement_modifiers_trigger = no } + add_county_modifier = { + modifier = syphon_treasury_small_sum_modifier + years = 5 + } + } + } + } + } + } + # Defeat! No gold, just strife & a crime opinion. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + # Malus for higher amounts. + modifier = { + add = 25 + always = scope:diarch_syphon_treasury_sum_large + } + # Chungus malus for chungus higher amounts. + modifier = { + add = 100 + always = scope:diarch_syphon_treasury_sum_huge + } + # You can always fail. + min = 20 + desc = diarch_syphon_treasury_interaction.tt.failure.actor + send_interface_toast = { + type = event_toast_effect_bad + title = diarch_syphon_treasury_interaction.tt.failure.actor + left_icon = scope:recipient + show_as_tooltip = { diarch_syphon_treasury_interaction_caught_embezzling_effect = yes } + } + hidden_effect = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_neutral + title = diarch_syphon_treasury_interaction.tt.failure.recipient + left_icon = scope:actor + diarch_syphon_treasury_interaction_caught_embezzling_effect = yes + } + } + } + } + } + } + + # Debug logging. + debug_log = debug_log.syphon_treasury.attempt_made + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + # Honest and generous characters never embezzle. + NOR = { + has_trait = honest + has_trait = generous + } + } + + ai_will_do = { + # Embezzlement is serious, so you need actual reasons for it. + base = 0 + + # Additions. + ## Weight for opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ## Weight for personality. + ai_value_modifier = { + ai_boldness = 0.25 + ai_greed = 1 + ai_honor = -0.5 + } + ## Flag Management. + ### The AI never goes for a huge sum, that's just there to tempt the player. + ### We prefer a large sum if we've got a massive skill disparity. + modifier = { + add = 100 + scope:diarch_syphon_treasury_sum_large = yes + stewardship_diff = { + target = scope:recipient + value >= @ai_skill_diff_upper_threshold + } + } + ### But a moderate sum does well if we're more evenly matched. + modifier = { + add = 50 + scope:diarch_syphon_treasury_sum_medium = yes + stewardship_diff = { + target = scope:recipient + value < @ai_skill_diff_upper_threshold + } + stewardship_diff = { + target = scope:recipient + value >= @ai_skill_diff_lower_threshold + } + } + ### Aaaand otherwise we'll accept a small amount. + modifier = { + add = 25 + scope:diarch_syphon_treasury_sum_small = yes + stewardship_diff = { + target = scope:recipient + value < @ai_skill_diff_lower_threshold + } + } + ## Less likely in tribal societies with less bookwork to hide theft in. + modifier = { + add = -50 + scope:recipient = { government_has_flag = government_is_tribal } + } + ## Debt is a great motivator for theft. + ### Is slightly in debt. + modifier = { + add = 10 + debt_level = 1 + } + ### Is one year in debt. + modifier = { + add = 25 + debt_level = 2 + } + ### Is two years in debt. + modifier = { + add = 40 + debt_level = 3 + } + ### Is three years in debt. + modifier = { + add = 60 + debt_level = 4 + } + ### Is four years in debt. + modifier = { + add = 100 + debt_level = 5 + } + ### Is over five years in debt. + modifier = { + add = 200 + debt_level >= 6 + } + ## Certain traits can affect likelihood directly. + ### It's intentional that these don't sync up value-wise with their opposite traits. + ### Honest/generous excluded because they're hard locked out of the interaction for the AI. + ### +++ Greedy. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = greedy + } + ### ++ Deceitful. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = deceitful + } + ### + Arbitrary. + modifier = { + add = diarch_ai_desire_plus_1_value + has_trait = arbitrary + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = just + } + ## Skill considerations. + ### Very low negative comparative stewardship. + modifier = { + add = -50 + stewardship_diff = { + target = scope:recipient + value <= 10 + } + # Filter out arrogant characters, who can't believe they suck. + NOT = { has_trait = arrogant } + } + ### Low negative comparative stewardship. + modifier = { + add = -25 + stewardship_diff = { + target = scope:recipient + value <= 5 + } + # Filter out arrogant characters, who can't believe they suck. + NOT = { has_trait = arrogant } + } + ### High positive comparative stewardship. + modifier = { + add = 25 + stewardship_diff = { + target = scope:recipient + value >= 5 + } + # Filter out humble characters, who give their liege too much credit. + NOT = { has_trait = humble } + } + ### Very high positive comparative stewardship. + modifier = { + add = 50 + stewardship_diff = { + target = scope:recipient + value >= 10 + } + # Filter out humble characters, who give their liege too much credit. + NOT = { has_trait = humble } + } + # Factors. + ## + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## We're happy to bully players here, since we're not taking their land. + } +} + +# Diarch (actor) either tests diplomacy or spends prestige to give negative modifiers to the lands of a vassal of their liege (secondary recipient), who can't resist. +diarch_shift_privileges_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + icon = icon_shift_privileges + common_interaction = yes + + ai_intermediary_maybe = yes + desc = diarch_shift_privileges_interaction_desc + + popup_on_receive = yes + + interface_priority = 285 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + liege = { has_diarchy_parameter = unlock_shift_privileges_interaction } + } + # Make sure scope:recipient is suitable. + scope:recipient = { + # We only target vassals of the liege... + liege = scope:actor.liege + this != scope:actor.liege + # ... who are appropriately landed. + is_landed_or_landless_administrative = yes + scope:recipient.highest_held_title_tier >= tier_county + } + } + + is_valid_showing_failures_only = { + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarch revocations require a claim. + custom_tooltip = { + text = diarch_shift_privileges_interaction.tt.no_affectable_counties + scope:recipient = { + any_held_county = { diarch_shift_privileges_valid_target_title_trigger = yes } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_shift_privileges_interaction } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:diarch_shift_privileges_interaction_duel_diplomacy = yes + scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes + scope:diarch_shift_privileges_interaction_pay_prestige_full = yes + } + } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cooldown = { months = 6 } + cooldown_against_recipient = { years = 3 } + + # Attempt Methods + send_options_exclusive = yes + ## Duel for it. + send_option = { + # You can always try to duel for it. + flag = diarch_shift_privileges_interaction_duel_diplomacy + } + ## Pay partial prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = shift_privileges_interaction_target_discounted_cost_value + multiply = -1 + } + } + } + flag = diarch_shift_privileges_interaction_pay_prestige_partial + } + ## Pay full prestige. + send_option = { + is_valid = { + scope:actor = { + prestige >= { + value = shift_privileges_interaction_target_cost_value + multiply = -1 + } + } + } + flag = diarch_shift_privileges_interaction_pay_prestige_full + } + + on_send = { + # Did a landless diarch send this? + log_diarch_send_interaction_as_variable_effect = { INTERACTION = shift_privileges } + } + + on_accept = { + scope:actor = { + # Resolution method. + ## If we're duelling, then we duel. + if = { + limit = { scope:diarch_shift_privileges_interaction_duel_diplomacy = yes } + # Now: FIGHT! WITH WORDS! + duel = { + skill = diplomacy + target = scope:recipient + # Victory! Cash for you, negative modifier for your opponent. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + desc = diarch_shift_privileges_interaction.tt.success + diarch_shift_privileges_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + desc = diarch_shift_privileges_interaction.tt.failure + diarch_shift_privileges_interaction_apply_fail_effect = yes + } + } + } + ## Otherwise we can take an even gamble against a reduced prestige cost.. + else_if = { + limit = { scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes } + random_list = { + # Victory! A claim for you. + 100 = { + desc = diarch_shift_privileges_interaction.tt.success + diarch_shift_privileges_interaction_apply_success_effect = yes + } + # Defeat! Into the loser's bin you go. + 100 = { + desc = diarch_shift_privileges_interaction.tt.failure + diarch_shift_privileges_interaction_apply_fail_effect = yes + } + } + } + ## Or pay the full price. + else = { + custom_tooltip = diarch_shift_privileges_interaction.tt.success + diarch_shift_privileges_interaction_apply_success_effect = yes + } + # Prestige costs. + ## Point out the lack of cost. + if = { + limit = { scope:diarch_shift_privileges_interaction_duel_diplomacy = yes } + custom_tooltip = diarch_interaction_pay_prestige_none + } + ## Point out the discount. + else_if = { + limit = { scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes } + add_prestige = shift_privileges_interaction_target_discounted_cost_value + } + ## Soz mate, yerr payin' full price. + else = { add_prestige = shift_privileges_interaction_target_cost_value } + tgp_activate_catalyst_against_hegemon_effect = { + HEGEMON = scope:actor.top_liege + CATALYST = catalyst_diarch_mandate + } + } + + # Debug logging. + debug_log = debug_log.shift_privileges.attempt_made + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = peer_vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_secondary_powers_base_value + + # Additions. + ## Weight for opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ## Weight for personality. + ai_value_modifier = { + ai_boldness = 0.25 + ai_greed = 0.5 + ai_honor = 0.5 + } + ## Flag Management. + ### Duel for it if we're massively superior. + modifier = { + add = 100 + scope:diarch_shift_privileges_interaction_duel_diplomacy = yes + diplomacy_diff = { + target = scope:recipient + value >= @ai_skill_diff_upper_threshold + } + } + ### Else we'll try to pay full prestige, if we've got lots to spare. + modifier = { + add = 50 + scope:diarch_shift_privileges_interaction_pay_prestige_full = yes + prestige >= { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Or else we'll chance it, if we can afford that + some slack. + modifier = { + add = 25 + scope:diarch_shift_privileges_interaction_pay_prestige_partial = yes + prestige < { + value = shift_privileges_interaction_target_cost_value + multiply = @ai_prestige_bank_threshold + } + prestige >= { + value = shift_privileges_interaction_target_discounted_cost_value + multiply = @ai_prestige_bank_threshold + } + } + ### Otherwise we'll risk a regular duel. + ## Landless AI want to do this more. + modifier = { + add = 25 + is_ruler = no + } + ## AI who are in debt seek ways out of it. + modifier = { + add = 100 + debt_level >= 0 + } + ## Certain traits make it either very likely or very unlikely. + ### +++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = arbitrary + } + ### --- Just. + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = just + } + # Factors. + ## + Do pick on people we hate. + modifier = { + factor = 1.5 + should_prioritise_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## - Try not to pick on allies of our liege. + modifier = { + factor = 0.25 + should_avoid_hostile_action_against_due_to_liege_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on our friends or allies. + modifier = { + factor = 0 + should_avoid_hostile_action_against_due_to_personal_relations_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + ## x0 Don't pick on players unless they're of at least a decent size. + modifier = { + factor = 0 + scope:recipient = { + is_ai = no + any_held_county = { count <= 3 } + } + } + ### x0 Don't go into prestige debt! + modifier = { + factor = 0 + prestige < 0 + } + } +} + +# Diarch (actor) requests use of a special CB from liege (recipient), allowing them to powerfully expand the empire's borders and harvest influence. +diarch_request_imperial_expedition_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + notification_text = DIARCH_REQUESTS_IMPERIAL_EXPEDITION + icon = invasion + interface_priority = 5 + + desc = diarch_request_imperial_expedition_interaction_desc + + ai_maybe = yes + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege = { has_diarchy_parameter = unlock_diarch_requests_military_expedition_interaction } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_requests_military_expedition_interaction } + # And you have to have _some_ troops of your own. + custom_tooltip = { + text = diarch_request_imperial_expedition_interaction.tt.minimum_troop_count + scope:actor.max_military_strength >= request_imperial_expedition_minimum_troop_count_value + } + # _And_ you don't already have a charge. + custom_tooltip = { + text = diarch_request_imperial_expedition_interaction.tt.actor_already_has_charge + scope:actor = { + NOT = { has_variable = imperial_expedition_charged } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Hefty cooldown on this guy, as you shouldn't be able to do these often. + cooldown_against_recipient = { years = 25 } + + cost = { + influence = { + if = { + limit = { scope:influence_major = yes } + add = request_imperial_expedition_influence_stake_major_value + } + else_if = { + limit = { scope:influence_medium = yes } + add = request_imperial_expedition_influence_stake_medium_value + } + else_if = { + limit = { scope:influence_minor = yes } + add = request_imperial_expedition_influence_stake_minor_value + } + } + } + + # How much influence do we want to outlay on this? + ## A cheapy amount. + send_option = { + # Always valid. + flag = influence_minor + localization = diarch_request_imperial_expedition_interaction.tt.influence_minor_name + } + ## A medium amount. + send_option = { + is_valid = { scope:actor.influence >= request_imperial_expedition_influence_stake_medium_value } + flag = influence_medium + localization = diarch_request_imperial_expedition_interaction.tt.influence_medium_name + } + ## A large amount. + send_option = { + is_valid = { scope:actor.influence >= request_imperial_expedition_influence_stake_major_value } + flag = influence_major + localization = diarch_request_imperial_expedition_interaction.tt.influence_major_name + } + ## Use a hook instead. + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_auto_accept = { + # Fire the notification event telling scope:recipient what's been done. + scope:recipient = { trigger_event = diarchy.8003 } + } + + on_accept = { + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_request_imperial_expedition_accepted_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8001 + } + } + + on_decline = { + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_request_imperial_expedition_rejected_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8002 + } + } + + auto_accept = { + scope:recipient = { + trigger_if = { + limit = { scope:hook = yes } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + trigger_else_if = { + limit = { scope:influence_major = yes } + influence < request_imperial_expedition_influence_stake_major_value + } + trigger_else_if = { + limit = { scope:influence_medium = yes } + influence < request_imperial_expedition_influence_stake_medium_value + } + trigger_else_if = { + limit = { scope:influence_minor = yes } + influence < request_imperial_expedition_influence_stake_minor_value + } + trigger_else = { always = no } + } + } + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + # Your level of influence. + ## Impotent + modifier = { + add = -10 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT + scope:actor.influence_level = 0 + } + ## Influential + ### Would be zero, so it wouldn't appear. + ## Persuasive + modifier = { + add = 10 + desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE + scope:actor.influence_level = 2 + } + ## Controlling + modifier = { + add = 20 + desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING + scope:actor.influence_level = 3 + } + ## Authoritative + modifier = { + add = 30 + desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE + scope:actor.influence_level = 4 + } + ## Imperious + modifier = { + add = 40 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS + scope:actor.influence_level = 5 + } + # Traits. + ## ---- Paranoid + modifier = { + add = -50 + desc = ai_acceptance_trait_paranoid + scope:recipient = { has_trait = paranoid } + } + ## --- Stubborn + modifier = { + add = -30 + desc = ai_acceptance_trait_stubborn + scope:recipient = { has_trait = stubborn } + } + ## --- Content + modifier = { + add = -30 + desc = ai_acceptance_trait_content + scope:recipient = { has_trait = content } + } + ## - Humble + modifier = { + add = -10 + desc = ai_acceptance_trait_humble + scope:recipient = { has_trait = humble } + } + ## + Arrogant + modifier = { + add = 10 + desc = ai_acceptance_trait_arrogant + scope:recipient = { has_trait = arrogant } + } + ## + Ambitious + modifier = { + add = 10 + desc = ai_acceptance_trait_ambitious + scope:recipient = { has_trait = ambitious } + } + ## ++ Trusting + modifier = { + add = 20 + desc = ai_acceptance_trait_trusting + scope:recipient = { has_trait = trusting } + } + ## ++ Fickle + modifier = { + add = 20 + desc = ai_acceptance_trait_fickle + scope:recipient = { has_trait = fickle } + } + ## ++ Lazy + modifier = { + add = 20 + desc = ai_acceptance_trait_lazy + scope:recipient = { has_trait = lazy } + } + ## +++ Craven + modifier = { + add = 30 + desc = ai_acceptance_trait_craven + scope:recipient = { has_trait = craven } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # The meeker they are, the more they'll go along with your wishes. + ai_boldness = { + if = { + limit = { + scope:recipient = { + NOT = { ai_boldness = 0 } + } + } + value = -1 + } + } + # And the lazier. + ai_energy = { + if = { + limit = { + scope:recipient = { ai_energy > 0 } + } + value = 0.5 + } + } + } + } + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + liege = { has_diarchy_active_parameter = unlock_diarch_requests_military_expedition_interaction } + NOR = { + has_trait = craven + has_trait = lazy + has_trait = content + } + } + + ai_will_do = { + base = -50 + + # Personality. + ai_value_modifier = { + ai_energy = 2 + ai_boldness = 1 + ai_greed = 1 + } + # Traits. + ## Brave + modifier = { + add = 25 + has_trait = brave + } + ## Ambitious + modifier = { + add = 50 + has_trait = ambitious + } + ## Arrogant + modifier = { + add = 25 + has_trait = arrogant + } + ## Loyal & Disloyal (same result, different motivations) + modifier = { + add = 25 + OR = { + has_trait = loyal + has_trait = disloyal + } + } + ## Diligent + modifier = { + add = 25 + has_trait = diligent + } + ## We've already filtered out craven, lazy, & content by this point. + # Military. + ## For every thousand troops we can put in ourselves, make us more likely to ask. + modifier = { + add = { + value = scope:actor.max_military_strength + divide = 100 + floor = yes + } + always = yes + } + # Flag Management. + ## Make sure the AI uses hooks for this as it's % based + modifier = { + add = 1 + scope:hook = yes + } + ## Otherwise, try to spend the most influence possible whenever we can. + modifier = { + add = 3 + scope:influence_minor = yes + } + modifier = { + add = 2 + scope:influence_medium = yes + } + modifier = { + add = 1 + scope:influence_major = yes + } + } +} + +# Diarch (actor) requests a kingdom governor title from liege (recipient). +diarch_demand_despotate_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + notification_text = DIARCH_DEMANDS_DESPOTATE + icon = icon_found_despotate + interface_priority = 15 + + desc = diarch_demand_despotate_interaction_desc + + target_type = title + target_filter = secondary_recipient_de_jure_titles + can_be_picked_title = { + scope:target = { valid_kingdom_for_diarch_to_demand_as_despotate_trigger = yes } + } + has_valid_target_showing_failures_only = { + # Only show kingdoms. + scope:target.tier = tier_kingdom + # Don't show the empire's capital kingdom. + NOT = { + scope:recipient.capital_county = { target_is_de_jure_liege_or_above = scope:target } + } + } + # We do this via redirects because recipient_de_jure_titles did not turn up for work today. + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + } + ai_maybe = yes + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + liege = { has_diarchy_parameter = unlock_diarch_demand_kingdom_interaction } + } + # Same sub-realm only. + OR = { + scope:actor.liege = scope:recipient + scope:recipient = { + any_liege_or_above = { this = scope:actor.liege } + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_diarch_demand_kingdom_interaction } + # You do not already have a kingdom tier title + custom_tooltip = { + text = diarch_demand_despotate_interaction.tt.already_have_high_titles + scope:actor.highest_held_title_tier < tier_kingdom + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + # Hefty cooldown on this guy, as you shouldn't be able to pester about this often. + cooldown_against_recipient = { years = 25 } + + cost = { + influence = { + if = { + limit = { scope:influence_major = yes } + add = diarch_demand_despotate_interaction_stake_major_value + } + else_if = { + limit = { scope:influence_medium = yes } + add = diarch_demand_despotate_interaction_stake_medium_value + } + else_if = { + limit = { scope:influence_minor = yes } + add = diarch_demand_despotate_interaction_stake_minor_value + } + } + } + + # How much influence do we want to outlay on this? + ## A cheapy amount. + send_option = { + # Always valid. + flag = influence_minor + localization = diarch_demand_despotate_interaction.tt.influence_minor_name + } + ## A medium amount. + send_option = { + is_valid = { scope:actor.influence >= diarch_demand_despotate_interaction_stake_medium_value } + flag = influence_medium + localization = diarch_demand_despotate_interaction.tt.influence_medium_name + } + ## A large amount. + send_option = { + is_valid = { scope:actor.influence >= diarch_demand_despotate_interaction_stake_major_value } + flag = influence_major + localization = diarch_demand_despotate_interaction.tt.influence_major_name + } + ## Use a hook instead. + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_auto_accept = { + # Fire the notification event telling scope:recipient what's been done. + scope:recipient = { trigger_event = diarchy.8033 } + } + + on_accept = { + # Notify the player of how to force their liege's hand. + if = { + limit = { + scope:influence_major = yes + scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_major_inverted_value + } + custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_major_value.tt.liege_can_refuse + } + else_if = { + limit = { + scope:influence_medium = yes + scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_medium_inverted_value + } + custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_medium_value.tt.liege_can_refuse + } + else_if = { + limit = { + scope:influence_minor = yes + scope:recipient.influence >= diarch_demand_despotate_interaction_stake_to_raise_minor_inverted_value + } + custom_tooltip = diarch_demand_despotate_interaction_stake_to_raise_minor_value.tt.liege_can_refuse + } + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_demand_despotate_interaction_accepted_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8031 + } + } + + on_decline = { + scope:actor = { + # Display effects in the interaction. + show_as_tooltip = { diarch_demand_despotate_interaction_rejected_effect = yes } + # Fire the notification event. + trigger_event = diarchy.8032 + } + } + + auto_accept = { + scope:recipient = { + trigger_if = { + limit = { scope:hook = yes } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + trigger_else_if = { + limit = { scope:influence_major = yes } + influence < diarch_demand_despotate_interaction_stake_to_raise_major_inverted_value + } + trigger_else_if = { + limit = { scope:influence_medium = yes } + influence < diarch_demand_despotate_interaction_stake_to_raise_medium_inverted_value + } + trigger_else_if = { + limit = { scope:influence_minor = yes } + influence < diarch_demand_despotate_interaction_stake_to_raise_minor_inverted_value + } + trigger_else = { always = no } + } + } + + ai_accept = { + base = -50 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + # Your level of influence. + ## Impotent + modifier = { + add = -10 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPOTENT + scope:actor.influence_level = 0 + } + ## Influential + ### Would be zero, so it wouldn't appear. + ## Persuasive + modifier = { + add = 10 + desc = AI_OPINION_INFLUENCE_LEVEL_PERSUASIVE + scope:actor.influence_level = 2 + } + ## Controlling + modifier = { + add = 20 + desc = AI_OPINION_INFLUENCE_LEVEL_CONTROLLING + scope:actor.influence_level = 3 + } + ## Authoritative + modifier = { + add = 30 + desc = AI_OPINION_INFLUENCE_LEVEL_AUTHORITATIVE + scope:actor.influence_level = 4 + } + ## Imperious + modifier = { + add = 40 + desc = AI_OPINION_INFLUENCE_LEVEL_IMPERIOUS + scope:actor.influence_level = 5 + } + # Traits. + ## ---- Paranoid + modifier = { + add = -50 + desc = ai_acceptance_trait_paranoid + scope:recipient = { has_trait = paranoid } + } + ## --- Stubborn + modifier = { + add = -30 + desc = ai_acceptance_trait_stubborn + scope:recipient = { has_trait = stubborn } + } + ## --- Greedy + modifier = { + add = -30 + desc = ai_acceptance_trait_greedy + scope:recipient = { has_trait = greedy } + } + ## -- Arrogant + modifier = { + add = -20 + desc = ai_acceptance_trait_arrogant + scope:recipient = { has_trait = arrogant } + } + ## ++ Humble + modifier = { + add = 20 + desc = ai_acceptance_trait_humble + scope:recipient = { has_trait = humble } + } + ## ++ Trusting + modifier = { + add = 20 + desc = ai_acceptance_trait_trusting + scope:recipient = { has_trait = trusting } + } + ## ++ Fickle + modifier = { + add = 20 + desc = ai_acceptance_trait_fickle + scope:recipient = { has_trait = fickle } + } + ## ++ Lazy + modifier = { + add = 20 + desc = ai_acceptance_trait_lazy + scope:recipient = { has_trait = lazy } + } + ## ++ Generous + modifier = { + add = 20 + desc = ai_acceptance_trait_generous + scope:recipient = { has_trait = generous } + } + # Factor for personality. + ai_value_modifier = { + who = scope:recipient + # The meeker they are, the more they'll go along with your wishes. + ai_boldness = { + if = { + limit = { + scope:recipient = { + NOT = { ai_boldness = 0 } + } + } + value = -1 + } + } + # And the lazier. + ai_energy = { + if = { + limit = { + scope:recipient = { ai_energy > 0 } + } + value = 0.5 + } + } + } + } + + # AI + ai_set_target = { + scope:recipient = { + # Grab our empires. + every_held_title = { + title_tier >= empire + add_to_list = empires_list + } + # Then from that, formulate our kingdoms. + every_in_list = { + list = empires_list + every_in_de_jure_hierarchy = { + limit = { + tier = tier_kingdom + valid_kingdom_for_diarch_to_demand_as_despotate_trigger = yes + } + continue = { tier >= tier_kingdom } + add_to_list = kingdoms_list + } + } + # Now pick our best shot. + ordered_in_list = { + list = kingdoms_list + order_by = { + # Tell the AI to grab its own kingdom first of all. + if = { + limit = { this = scope:actor.capital_county.kingdom } + add = 1000 + } + # Otherwise, go for the biggest within the empire. + else = { + every_de_jure_county_holder = { + limit = { top_liege = scope:recipient } + add = 1 + } + } + } + save_scope_as = target + } + } + } + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 24 + hegemony = 24 + } + ai_potential = { + is_diarch = yes + liege = { has_diarchy_active_parameter = unlock_diarch_demand_kingdom_interaction } + NOR = { + has_trait = humble + has_trait = content + } + # Loyal diarchs don't ask for what their liege could give freely. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + base = 25 + + # Personality. + ai_value_modifier = { + ai_greed = 1 + ai_boldness = 1 + ai_energy = 0.25 + } + # Opinion. + ## The more we like our emperor, the less likely we are to want to interfere in their planned setup. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + # Traits. + ## +++ Ambitious. + modifier = { + add = 50 + has_trait = ambitious + } + ## +++ Arrogant. + modifier = { + add = 50 + has_trait = arrogant + } + ## ++ Greedy. + modifier = { + add = 25 + has_trait = greedy + } + ## ++ Diligent. + modifier = { + add = 25 + has_trait = diligent + } + ## -- Generous. + modifier = { + add = -25 + has_trait = generous + } + ## --- Lazy. + modifier = { + add = -50 + has_trait = lazy + } + ## Humble & Content have both been pre-filtered out. + # Flag Management. + ## Make sure the AI uses hooks for this as it's % based + modifier = { + add = 4 + scope:hook = yes + } + ## Otherwise, try to spend the most influence possible whenever we can. + modifier = { + add = 3 + scope:influence_minor = yes + } + modifier = { + add = 2 + scope:influence_medium = yes + } + modifier = { + add = 1 + scope:influence_major = yes + } + } +} + + + + + + + + + + +################################################## +# DIARCH COUP LIEGE INTERACTIONS + +diarch_coup_liege_interaction = { + category = interaction_category_diarch + diarch_interaction = yes + icon = icon_scheme_claim_throne + interface_priority = 50 + pre_answer_no_breakdown_key = diarch_coup_liege_interaction_pre_answer_no_breakdown_key + pre_answer_yes_breakdown_key = diarch_coup_liege_interaction_pre_answer_yes_breakdown_key + + desc = diarch_coup_liege_interaction_desc + + # First, grab every other powerful vassal of your liege & plonk them in a list. + populate_recipient_list = { + scope:actor.liege = { + every_powerful_vassal = { + limit = { + this != scope:actor + } + add_to_list = characters + } + every_powerful_family = { + limit = { + NOR = { + house_head = scope:actor + house_head = scope:recipient + } + } + house_head = { add_to_list = characters } + } + } + } + redirect = { + # Turn the old scope:recipient into the target. + if = { + limit = { + NOR = { + scope:recipient = scope:actor + scope:recipient = scope:actor.liege + } + } + scope:recipient = { save_scope_as = secondary_recipient } + } + # Always make sure we're targeting your liege as the recipient for UX consistency. + scope:actor.liege = { save_scope_as = recipient } + } + + is_shown = { + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + OR = { + AND = { + exists = liege + is_diarch_of_target = liege + } + is_designated_diarch = yes + } + } + # Valid on vassals of your liege or your liege themselves. + ## More complex triggers don't generally work because redirect brings the interaction back to targeting the liege as scope:recipient, so we're left with this. + ### Don't try to improve it, it's not worth it, but if you _do_, then test your changes thoroughly. + #### When this breaks (which it does easily), it tends to mean the interaction shows up as valid against _every_ other character in diplomatic range. + OR = { + scope:recipient = scope:actor.liege + scope:secondary_recipient.liege ?= scope:actor.liege + } + } + + is_valid_showing_failures_only = { + # Diarch must be able to act. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + # Loyalty hooks, per the name, will tend to block this. + custom_tooltip = { + text = diarch_coup_liege_interaction.tt.action_blocked_by_loyalty_hook + NOT = { + diarch_loyalty_due_to_hook_trigger = { + LIEGE = scope:recipient + DIARCH = scope:actor + } + } + } + # They can't already be in the list. + custom_tooltip = { + text = diarch_coup_liege_interaction.tt.secondary_recipient_is_already_in_list + NOT = { + scope:actor = { + any_in_list = { + variable = coup_pv_supporters_list + this = scope:secondary_recipient + } + } + } + } + # Must be in an actual diarchy — we show most interactions greyed out for designated diarchs. + custom_tooltip = { + text = diarch_interactions.tt.you_must_be_in_an_entrenched_regency_to_access + scope:actor = { is_diarch = yes } + } + # And, relatedly, there's some checks that we don't show you unless you *are* already in a diarchy. + trigger_if = { + limit = { + scope:actor = { is_diarch = yes } + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege ?= { has_diarchy_active_parameter = regents_can_try_to_overthrow_present_lieges } + } + trigger_if = { + limit = { exists = scope:secondary_recipient } + # Must be available. + ## So no kids. + scope:secondary_recipient = { is_adult = yes } + ## & no one in prison. + scope:secondary_recipient = { is_imprisoned = no } + # Plus, currently, humans can't be part of these plots. + scope:secondary_recipient = { is_ai = yes } + } + # Must select something — tooltips'll knacker otherwise + just for consistency. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:promise_nothing = yes + scope:promise_hook_weak = yes + scope:promise_hook_strong = yes + scope:promise_gold_medium = yes + scope:promise_gold_large = yes + } + } + } + # Cannot be at war with your liege. + NOT = { + scope:actor = { is_at_war_with = scope:actor.liege } + } + } + + can_send = { + # We check this here to make the interaction generally findable, so you can get at the list easily, but prevent you from inviting randos to the coup. + ## It's actually technically harmless - they won't help but don't get their payout if they're not powerful when the coup hits. + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_has_powerful_families } + } + scope:secondary_recipient.house = { is_powerful_family = yes } + } + trigger_else = { + scope:secondary_recipient = { is_powerful_vassal = yes } + } + } + + # Promise bugger all. + send_option = { + flag = promise_nothing + localization = PROMISE_NOTHING + } + # Promise hook. + send_option = { + is_valid = { + # Can't offer a hook if they've already got any type of hook on you. + NOT = { + scope:secondary_recipient ?= { has_hook = scope:actor } + } + } + flag = promise_hook_weak + localization = PROMISE_HOOK_WEAK + } + # Promise strong hook. + send_option = { + is_valid = { + # Can't offer a strong hook if they've already got a strong hook on you. + NOT = { + scope:secondary_recipient ?= { has_strong_hook = scope:actor } + } + } + flag = promise_hook_strong + localization = PROMISE_HOOK_STRONG + } + # Promise gold. + send_option = { + flag = promise_gold_medium + localization = PROMISE_GOLD_MEDIUM + } + # Promise piles of gold. + send_option = { + flag = promise_gold_large + localization = PROMISE_GOLD_LARGE + } + + on_accept = { + if = { + limit = { exists = scope:secondary_recipient } + scope:actor = { + # Scope:secondary_recipient joins your conspiracy. + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.joins_conspiracy + ## Send a notification just for a bit of extra feedback. + send_interface_toast = { + type = event_toast_effect_good + title = diarch_coup_liege_interaction.tt.secondary_recipient.joins_conspiracy + left_icon = scope:secondary_recipient + } + # HerHis reward is collected if you succeed. + if = { + limit = { scope:promise_nothing = no } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.reward + } + # Certain scope:secondary_recipients may betray their liege in the throne room itself. + ## Chancellors in diplo coups. + if = { + limit = { scope:secondary_recipient ?= scope:recipient.cp:councillor_chancellor } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.chancellor_sabotage + } + ## Spymasters in intrigue coups. + if = { + limit = { scope:secondary_recipient ?= scope:recipient.cp:councillor_spymaster } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.spymaster_sabotage + } + ## Personal Champions in prowess coups. + if = { + limit = { + scope:secondary_recipient = { has_court_position = champion_court_position } + } + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.champion_sabotage + # Yes, there are other candidates, but we're not tooltipping every conceivable case. Rulers are gonna have supporters. + custom_tooltip = diarch_coup_liege_interaction.tt.secondary_recipient.champion_sabotage.others + } + # Right, actually record them. + ## Including in the variable. + add_to_variable_list = { + name = coup_pv_supporters_list + target = scope:secondary_recipient + } + ## And their promised payment, if anything. + ### Weak hooks. + if = { + limit = { scope:promise_hook_weak = yes } + add_to_variable_list = { + name = coup_promise_list_weak_hook + target = scope:secondary_recipient + } + } + ### Strong hooks. + else_if = { + limit = { scope:promise_hook_strong = yes } + add_to_variable_list = { + name = coup_promise_list_strong_hook + target = scope:secondary_recipient + } + } + ### Cash. + else_if = { + limit = { scope:promise_gold_medium = yes } + add_to_variable_list = { + name = coup_promise_list_gold + target = scope:secondary_recipient + } + } + ### Big Cash. + else_if = { + limit = { scope:promise_gold_large = yes } + add_to_variable_list = { + name = coup_promise_list_big_gold + target = scope:secondary_recipient + } + } + tgp_activate_catalyst_against_hegemon_effect = { + HEGEMON = scope:actor.top_liege + CATALYST = catalyst_diarch_mandate + } + } + } + } + + # Disguise the interaction from players. + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + ai_accept = { + # Base reluctance to commit to a risky, treasonous plan. + base = -50 + + # Opinion. + ## Of scope:actor. + opinion_modifier = { + who = scope:secondary_recipient + opinion_target = scope:actor + multiplier = 1 + } + ## Of scope:recipient. + opinion_modifier = { + who = scope:secondary_recipient + opinion_target = scope:recipient + multiplier = -0.5 + } + # Personality. + ## Values. + ai_value_modifier = { + who = scope:secondary_recipient + ai_honor = -1 + ai_boldness = 0.25 + } + ## Traits. + ### +++ Disloyal. + modifier = { + add = diarch_ai_desire_plus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.disloyal + scope:secondary_recipient = { has_trait = disloyal } + } + ### +++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.ambitious + scope:secondary_recipient = { has_trait = ambitious } + } + ### ++ Arbitrary. + modifier = { + add = diarch_ai_desire_plus_2_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.arbitrary + scope:secondary_recipient = { has_trait = arbitrary } + } + ### + Fickle. + modifier = { + add = diarch_ai_desire_plus_1_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.fickle + scope:secondary_recipient = { has_trait = fickle } + } + ### - Stubborn. + modifier = { + add = diarch_ai_desire_minus_1_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.stubborn + scope:secondary_recipient = { has_trait = stubborn } + } + ### -- Just. + modifier = { + add = diarch_ai_desire_minus_2_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.just + scope:secondary_recipient = { has_trait = just } + } + ### --- Content. + modifier = { + add = diarch_ai_desire_minus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.content + scope:secondary_recipient = { has_trait = content } + } + ### --- Loyal. + modifier = { + add = diarch_ai_desire_minus_3_value + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook.tt.has_trait.loyal + scope:secondary_recipient = { has_trait = loyal } + } + # Hooks. + ## Weak hooks are happy to have you in power. + modifier = { + add = 25 + scope:secondary_recipient = { has_weak_hook = scope:actor } + } + ## Strong hooks are *very* happy to have you in power. + modifier = { + add = 75 + scope:secondary_recipient = { has_strong_hook = scope:actor } + } + ## And conversely, don't want you to coup scope:recipient if they've already got a strong hook on them. + modifier = { + add = -100 + scope:secondary_recipient = { has_strong_hook = scope:recipient } + } + ## Loyalty hooks stop the AI signing up. + modifier = { + add = -1000 + desc = diarch_coup_liege_interaction.tt.liege_has_loyalty_hook + diarch_loyalty_due_to_hook_trigger = { + LIEGE = scope:recipient + DIARCH = scope:secondary_recipient + } + } + # Various. + ## Scope:secondary_recipient generally doesn't want to betray an ally. + modifier = { + add = { + value = -100 + # Reduce the malus a little if also allied to scope:actor. + if = { + limit = { + scope:secondary_recipient = { is_allied_to = scope:actor } + } + add = 50 + } + } + scope:secondary_recipient = { is_allied_to = scope:recipient } + } + ## Heirs don't generally want to betray scope:recipient, as they'll lose out. + modifier = { + add = -100 + desc = diarch_coup_liege_interaction.tt.heir_will_not_side_against_benefactor + scope:recipient = { + any_heir = { this = scope:secondary_recipient } + } + } + # Promises. + ## Weak hook. + modifier = { + add = { + value = 25 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = honest } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = deceitful } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_hook + scope:promise_hook_weak = yes + } + ## Strong hook. + modifier = { + add = { + value = 50 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = honest } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = deceitful } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_strong_hook + scope:promise_hook_strong = yes + } + ## Gold. + modifier = { + add = { + value = 25 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = generous } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = greedy } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_gold + scope:promise_gold_medium = yes + } + ## Lotsa gold. + modifier = { + add = { + value = 50 + # Multiply this... + ## ... down for folks who wouldn't care... + if = { + limit = { has_trait = generous } + multiply = 0.5 + } + ## ... & and up for those who would. + if = { + limit = { has_trait = greedy } + multiply = 2 + } + } + desc = diarch_coup_liege_interaction.tt.wants_strong_gold + scope:promise_gold_large = yes + } + } + + # AI + ## The AI doesn't use this interaction automatically - they try it manually upon hitting the required threshold. +} + + + + + + + + + +################################################## +# LIEGE ON DIARCH POWERS + +# Liege (actor) transfers vizier's (recipient's) extravagance modifiers into their own gold. +mulct_vizier_interaction = { + category = interaction_category_diarch + common_interaction = yes + icon = icon_gold + + desc = mulct_vizier_interaction_desc + + is_shown = { + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # Plus only on viziers. + has_diarchy_active_parameter = unlock_mulct_vizier_interaction + } + } + + is_valid_showing_failures_only = { + scope:actor = { + # Some basic checks. + is_available_adult = yes + # Shouldn't happen, but just in case. + NOT = { is_at_war_with = scope:recipient } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:mulct_vizier_interaction_minimal = yes + scope:mulct_vizier_interaction_minor = yes + scope:mulct_vizier_interaction_medium = yes + scope:mulct_vizier_interaction_major = yes + scope:mulct_vizier_interaction_massive = yes + } + } + } + } + + # Don't squeeze them too often. + cooldown = { years = 10 } + + # Attempt Methods + send_options_exclusive = yes + ## Minimal. + ### Always show this'un. + send_option = { flag = mulct_vizier_interaction_minimal } + ## Minor. + send_option = { flag = mulct_vizier_interaction_minor } + ## Medium. + send_option = { flag = mulct_vizier_interaction_medium } + ## Major. + send_option = { flag = mulct_vizier_interaction_major } + ## Massive. + send_option = { flag = mulct_vizier_interaction_massive } + + can_send = { + trigger_if = { + limit = { scope:mulct_vizier_interaction_minor = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t1 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t1_treasure_modifier + has_character_modifier = vizier_extravagance_t1_activities_modifier + has_character_modifier = vizier_extravagance_t1_property_modifier + has_character_modifier = vizier_extravagance_t1_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_minor_value + } + } + trigger_if = { + limit = { scope:mulct_vizier_interaction_medium = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t2 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t2_treasure_modifier + has_character_modifier = vizier_extravagance_t2_activities_modifier + has_character_modifier = vizier_extravagance_t2_property_modifier + has_character_modifier = vizier_extravagance_t2_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_medium_value + } + } + trigger_if = { + limit = { scope:mulct_vizier_interaction_major = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t3 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t3_treasure_modifier + has_character_modifier = vizier_extravagance_t3_activities_modifier + has_character_modifier = vizier_extravagance_t3_property_modifier + has_character_modifier = vizier_extravagance_t3_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_major_value + } + } + trigger_if = { + limit = { scope:mulct_vizier_interaction_massive = yes } + custom_tooltip = { + text = mulct_vizier_interaction.extravagances_required.t4 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t4_treasure_modifier + has_character_modifier = vizier_extravagance_t4_activities_modifier + has_character_modifier = vizier_extravagance_t4_property_modifier + has_character_modifier = vizier_extravagance_t4_charity_modifier + } + } + } + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.vizier_mulct_swing_check_value >= vizier_mulct_swing_gain_massive_value + } + } + } + + on_accept = { + # Sort the gold transfer. + mulct_vizier_for_cash_effect = { VIZIER = scope:recipient } + scope:recipient = { + # How angry is scope:recipient? + if = { + limit = { scope:mulct_vizier_interaction_minimal = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 1 } + } + if = { + limit = { scope:mulct_vizier_interaction_minor = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 2 } + } + if = { + limit = { scope:mulct_vizier_interaction_medium = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 3 } + } + if = { + limit = { scope:mulct_vizier_interaction_major = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 4 } + } + if = { + limit = { scope:mulct_vizier_interaction_massive = yes } + mulct_vizier_for_cash_opinion_reaction_effect = { MULT = 5 } + } + # How much stress is this causing them? + stress_impact = { + ambitious = major_stress_impact_loss + arrogant = medium_stress_impact_loss + generous = minor_stress_impact_loss + greedy = major_stress_impact_gain + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_vizmulct_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_vizmulct_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_vizmulct_accept_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 120 + kingdom = 120 + empire = 120 + hegemony = 120 + } + ai_potential = { + has_active_diarchy = yes + has_diarchy_parameter = unlock_mulct_vizier_interaction + } + + ai_will_do = { + # You generally want to do this if you can. + base = 100 + + # Circumstances. + ## Are we in debt? + modifier = { + add = 100 + gold <= -1 + } + ## Are we at war? + modifier = { + add = 100 + is_at_war = yes + } + + # Vizier Extravagances. + ## Are they in the upper tiers? + modifier = { + add = 50 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t3_treasure_modifier + has_character_modifier = vizier_extravagance_t3_activities_modifier + has_character_modifier = vizier_extravagance_t3_property_modifier + has_character_modifier = vizier_extravagance_t3_charity_modifier + } + } + } + ## Are they in the uppermost tier? + modifier = { + add = 25 + scope:recipient = { + OR = { + has_character_modifier = vizier_extravagance_t4_treasure_modifier + has_character_modifier = vizier_extravagance_t4_activities_modifier + has_character_modifier = vizier_extravagance_t4_property_modifier + has_character_modifier = vizier_extravagance_t4_charity_modifier + } + } + } + + # Traits. + ## Greedy characters'll do it whenever they can. + modifier = { + add = 50 + has_trait = greedy + } + ## Generous characters'll only do it occasionally. + modifier = { + add = -50 + has_trait = generous + } + + # Send Option Usage. + ## These teach the AI how to use the send options. + ## These are linear; basically, prefer the largest number you're valid for (since the can_send'll block whatever you can't mulct). + modifier = { + add = 1 + scope:mulct_vizier_interaction_minimal = yes + } + modifier = { + add = 2 + scope:mulct_vizier_interaction_minor = yes + } + modifier = { + add = 3 + scope:mulct_vizier_interaction_medium = yes + } + modifier = { + add = 4 + scope:mulct_vizier_interaction_major = yes + } + modifier = { + add = 5 + scope:mulct_vizier_interaction_massive = yes + } + } +} + + + + + + + + + + +################################################## +# BOTH-WAYS POWERS + +# Diarch or liege target their opposite number and inflict negative realm opinion equivalent to the multiplied difference between intrigue or diplomacy in exchange for influence. +scapegoat_counterpart_interaction = { + category = interaction_category_diarch + icon = icon_scheme_slander + + desc = scapegoat_counterpart_interaction_desc + + interface_priority = 25 + + is_shown = { + # You must be one of the partners in a diarchy. + is_in_scapegoating_diarchy_visibility_trigger = { PARAMETER_TYPE = has_diarchy_parameter } + } + + is_valid_showing_failures_only = { + # Free adults only: you can't issue this type of decree from prison, and it wouldn't be fair to stop you from slandering a child but let a child slander you. + scope:actor = { + is_imprisoned = no + is_adult = yes + } + # And you can't blame a literal child. + scope:recipient = { is_adult = yes } + # Nor can you blame the opposing party if you're a deactivated diarch. + trigger_if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + } + custom_tooltip = { + text = scapegoat_counterpart_interaction.tt.skill_requirements + OR = { + scope:actor.diplomacy > scope:recipient.diplomacy + scope:actor.intrigue > scope:recipient.intrigue + } + } + is_in_scapegoating_diarchy_visibility_trigger = { PARAMETER_TYPE = has_diarchy_active_parameter } + # Cannot be at war with each other. + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + cooldown = { years = 3 } + + cost = { + # Non-ruler diarchs have all the time to do this the slow way. + prestige = { + if = { + limit = { + scope:actor = { is_ruler = yes } + } + value = medium_prestige_value + } + } + } + + # Diplomacy + ## Small amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.diplomacy_small.is_valid + scope:actor.diplomacy > scope:recipient.diplomacy + } + } + flag = diplomacy_small + localization = scapegoat_counterpart_interaction.diplomacy_small.t + } + ## Large amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.diplomacy_large.is_valid + scope:actor.diplomacy > scope:recipient.diplomacy + } + } + flag = diplomacy_large + localization = scapegoat_counterpart_interaction.diplomacy_large.t + } + # Intrigue + ## Small amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.intrigue_small.is_valid + scope:actor.intrigue > scope:recipient.intrigue + } + } + flag = intrigue_small + localization = scapegoat_counterpart_interaction.intrigue_small.t + } + ## Large amount + send_option = { + is_valid = { + custom_tooltip = { + text = scapegoat_counterpart_interaction.intrigue_large.is_valid + scope:actor.intrigue > scope:recipient.intrigue + } + } + flag = intrigue_large + localization = scapegoat_counterpart_interaction.intrigue_large.t + } + + on_accept = { + scope:recipient = { + # Send out our effects for the diarch. + if = { + limit = { is_diarch_of_target = scope:actor } + trigger_event = diarchy.8041 + every_player = { + limit = { + top_liege = scope:actor.top_liege + NOR = { + this = scope:actor + this = scope:recipient + } + } + trigger_event = diarchy.8041 + } + scapegoat_counterpart_interaction_process_results_effect = { + REALM_OPINION_ACTOR = add_tyranny + REALM_OPINION_RECIPIENT = change_strife_opinion + } + } + # And our effects for the liege. + else = { + tgp_activate_catalyst_against_hegemon_effect = { + HEGEMON = scope:actor.top_liege + CATALYST = catalyst_diarch_mandate + } + trigger_event = diarchy.8042 + every_player = { + limit = { + top_liege = scope:actor.top_liege + NOR = { + this = scope:actor + this = scope:recipient + } + } + trigger_event = diarchy.8042 + } + scapegoat_counterpart_interaction_process_results_effect = { + REALM_OPINION_ACTOR = change_strife_opinion + REALM_OPINION_RECIPIENT = add_tyranny + } + } + } + # Regardless of what happens, scope:recipient is a bit miffed. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = slandered_me_opinion + opinion = { + value = scope:multiplied_diff + divide = -20 + max = -10 + } + } + } + custom_tooltip = scapegoat_counterpart_interaction.tt.infighting_sullies_the_realm + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + OR = { + # Either they're a liege. + AND = { + has_active_diarchy = yes + # With suitable skill diffs to give some kind of a gain. + OR = { + diplomacy_diff = { + target = diarch + value >= 5 + } + intrigue_diff = { + target = diarch + value >= 5 + } + } + } + # Or they're the diarch. + AND = { + is_diarch = yes + # With suitable skill diffs to give some kind of a gain. + OR = { + diplomacy_diff = { + target = liege + value >= 5 + } + intrigue_diff = { + target = liege + value >= 5 + } + } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + } + # Filter out some traits that would never do this. + NOR = { + has_trait = just + has_trait = honest + has_trait = loyal + } + } + + ai_will_do = { + base = -50 + + # Opinion. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -2.5 + } + ## Plus weight up a bit further for bad relationships. + first_valid = { + # Nemeses. + modifier = { + add = 200 + has_relation_nemesis = scope:recipient + } + # Rivals. + modifier = { + add = 50 + has_relation_rival = scope:recipient + } + } + # Traits. + ## +++ Deceitful + modifier = { + add = 30 + has_trait = deceitful + } + ## +++ Ambitious + modifier = { + add = 30 + has_trait = ambitious + } + ## ++ Arrogant + modifier = { + add = 20 + has_trait = arrogant + } + ## ++ Arbitrary + modifier = { + add = 20 + has_trait = arbitrary + } + ## ++ Vengeful & doesn't like you + modifier = { + add = 20 + has_trait = vengeful + opinion = { + target = scope:recipient + value <= -1 + } + } + ## + Sadistic + modifier = { + add = 10 + has_trait = sadistic + } + ## + Fickle + modifier = { + add = 10 + has_trait = fickle + } + ## + Eccentric + modifier = { + add = 10 + has_trait = eccentric + } + ## + Greedy + modifier = { + add = 10 + has_trait = greedy + } + ## - Generous + modifier = { + add = -10 + has_trait = generous + } + ## -- Compassionate + modifier = { + add = -20 + has_trait = compassionate + } + ## -- Craven + modifier = { + add = -20 + has_trait = craven + } + ## --- Forgiving + modifier = { + add = -30 + has_trait = forgiving + } + ## --- Humble + modifier = { + add = -30 + has_trait = humble + } + ## ---- Content + modifier = { + add = -50 + has_trait = content + } + ## We've already pre-filtered out Honest & Just. + # Dread. + ## Intimidated. + modifier = { + add = -50 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 1 + } + } + } + ## Cowed. + modifier = { + add = -100 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 2 + } + } + } + # Flag Management. + ## Okay, we want to try and pick the larger of either our diplo diff or our intrigue diff. + ### If our diplo diff is higher than our intrigue diff, go for diplo. + modifier = { + add = 4 + scope:diplomacy_large = yes + scapegoat_counterpart_interaction_calc_diplo_diff_treshhold_value >= scapegoat_counterpart_interaction_calc_intrigue_diff_treshhold_value + } + ### Else, go for intrigue. + modifier = { + add = 3 + scope:intrigue_large = yes + } + ### These two should never trigger, but we've got them here as fallbacks. + modifier = { + add = 2 + scope:diplomacy_small = yes + } + modifier = { + add = 1 + scope:intrigue_small = yes + } + ### And then the AI otherwise doesn't worry about which smaller send option to pick. + # Influence status. + ## Swimming in influence? Not worth it. + modifier = { + factor = 0 + scope:actor.influence >= 500 + } + ## In debt? Weight it up. + modifier = { + factor = 2 + scope:actor.influence <= -1 + } + } +} + + + + + + + + + + +################################################## +# MANAGE DIARCHY INTERACTIONS + +# Diarch or liege target their opposite number and sink currency to reaffirm their influence in the realm. +swing_scales_currency_interaction = { + category = interaction_category_diarch + common_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_SWING_SCALES + icon = scroll_scales + + desc = swing_scales_currency_interaction_desc + + interface_priority = 20 + + is_shown = { + # You must be one of the partners in a diarchy. + OR = { + scope:actor = { is_diarch_of_target = scope:recipient } + scope:recipient = { is_diarch_of_target = scope:actor } + } + } + + is_valid_showing_failures_only = { + # Forbid when we're at max swing... + ## ... for the regent. + trigger_if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:recipient.diarchy_swing < 100 + } + } + ## ... and for the liege. + trigger_if = { + limit = { + NOT = { + scope:actor = { has_diarchy_active_parameter = liege_may_voluntarily_cede_authority } + } + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + # As long as you're able to give something even vaguely like an order to someone who might advocate on your behalf, you're gucci. + scope:actor = { + is_imprisoned = no + age >= 8 + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:swing_influence = yes + scope:swing_cede_authority = yes + scope:swing_prestige = yes + scope:swing_piety = yes + scope:swing_gold = yes + scope:swing_hook = yes + scope:swing_hof = yes + } + } + } + # And in the _rare_ circumstance that a diarch is a child, they must be at least this tall. + ## Note that we _don't_ do this for the liege, since we want the player to be able to manage their regency — assume that _someone_ is looking out for the child's best interests. + scope:actor = { + trigger_if = { + limit = { + is_diarch_of_target = scope:recipient + is_adult = no + } + age >= 8 + } + } + # Cannot be at war with each other. + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + cooldown = { years = 2 } + + cost = { + influence = { + if = { + limit = { always = scope:swing_influence } + value = scope:actor.swing_scales_influence_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + prestige = { + if = { + limit = { always = scope:swing_prestige } + value = scope:actor.swing_scales_prestige_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + piety = { + if = { + limit = { + OR = { + always = scope:swing_piety + always = scope:swing_hof + } + } + value = scope:actor.swing_scales_piety_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + gold = { + if = { + limit = { + OR = { + always = scope:swing_gold + always = scope:swing_hof + } + } + value = scope:actor.swing_scales_cash_cost_value + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + if = { + limit = { scope:actor = { is_valid_for_legitimacy_change = yes } } + multiply = legitimacy_regent_swing_scale_multipler_value + } + } + } + } + + # Influence + send_option = { + is_shown = { + # Make sure influence would be relevant. + OR = { + AND = { + scope:recipient.liege ?= scope:actor + scope:actor = { government_allows = administrative } + } + AND = { + scope:actor.liege ?= scope:recipient + scope:recipient = { government_allows = administrative } + } + } + } + is_valid = { + scope:actor = { government_allows = administrative } + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value } + flag = swing_influence + localization = SWING_INFLUENCE + current_description = SWING_INFLUENCE_DESC + } + # Movement Power + send_option = { + starts_enabled = { + exists = scope:actor.var:movement_power_individual + scope:actor.var:movement_power_individual >= decent_movement_power_value + } + is_shown = { + scope:actor = { + government_has_flag = government_is_celestial + is_diarch_of_target = scope:recipient + } + scope:recipient = { government_has_flag = government_is_celestial } + } + is_valid = { + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_min_movement_power + scope:actor.var:movement_power_individual >= medium_movement_power_value + } + } + flag = swing_movement_power + localization = SWING_MOVEMENT_POWER + current_description = SWING_MOVEMENT_POWER_DESC + } + # Cede control voluntarily. + send_option = { + is_shown = { + scope:actor = { has_diarchy_active_parameter = liege_may_voluntarily_cede_authority } + scope:recipient = { is_diarch_of_target = scope:actor } + } + is_valid = { + # Can't be a liege with the scales swung too far in favour of their diarch. + custom_tooltip = { + text = mulct_vizier_interaction.scales_too_swung.tt + scope:actor.diarchy_swing <= 90 + } + } + starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value } + flag = swing_cede_authority + localization = SWING_CEDE_AUTHORITY + current_description = SWING_CEDE_AUTHORITY_DESC + } + # Prestige + send_option = { + starts_enabled = { scope:actor.prestige >= scope:actor.swing_scales_prestige_cost_value } + is_valid = { + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + flag = swing_prestige + localization = SWING_PRESTIGE + current_description = SWING_PRESTIGE_DESC + } + # Piety + send_option = { + is_valid = { + # You must share a HoF to be able to petition one. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.no_shared_hof + # We're also secretly just testing if characters are the same faith. + OR = { + scope:actor.faith = scope:recipient.faith + AND = { + exists = scope:actor.faith.religious_head + exists = scope:recipient.faith.religious_head + scope:actor.faith.religious_head = scope:recipient.faith.religious_head + } + } + } + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + starts_enabled = { scope:actor.piety >= scope:actor.swing_scales_piety_cost_value } + flag = swing_piety + localization = SWING_PIETY + current_description = SWING_PIETY_DESC + } + # Gold + send_option = { + is_shown = { + # Filter out for the liege in vizierates - they can mulct the vizier, so we don't give them the chance to spend that gold back. + interaction_actor_is_liege_with_vizierate_trigger = no + } + starts_enabled = { scope:actor.gold >= scope:actor.swing_scales_cash_cost_value } + is_valid = { + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + flag = swing_gold + localization = SWING_GOLD + current_description = SWING_GOLD_DESC + } + # Hook + send_option = { + starts_enabled = { + scope:actor = { has_usable_hook = scope:recipient } + } + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + flag = swing_hook + localization = SWING_HOOK + current_description = SWING_HOOK_DESC + } + # HoF + send_option = { + is_shown = { + # Filter out for the liege in vizierates - they can mulct the vizier, so we don't give them the chance to spend that gold back. + interaction_actor_is_liege_with_vizierate_trigger = no + } + is_valid = { + diarch_swing_scales_valid_shared_hof_trigger = yes + # Can't be a liege with the scales swung completely towards them. + trigger_if = { + limit = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_max_swung + scope:actor.diarchy_swing > 0 + } + } + } + # Top of the prio order for enablement. + starts_enabled = { diarch_swing_scales_valid_shared_hof_trigger = yes } + flag = swing_hof + localization = SWING_HOF + current_description = SWING_HOF_DESC + } + + on_accept = { + # Swing the scales in the direction of scope:actor. + scope:recipient = { + # Swing the scales up if we're ceding power. + if = { + limit = { scope:swing_cede_authority = yes } + send_interface_message = { + type = msg_mandate_results_neutral_effect + title = swing_scales_interaction_by_liege.t + right_icon = scope:actor + scope:actor = { + # Viziers give you more bang for your buck when swinging against 'em. + # Perk check for Voyager perk + if = { + limit = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + has_perk = power_at_home_perk + is_travelling = yes + } + update_diarchy_swing_with_perspective_effect = { + SWING = monumental_sop_swing_diarch_gain + LIEGE = scope:actor + } + } + # Perk or Vizier + else_if = { + limit = { + OR = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + AND = { + has_perk = power_at_home_perk + is_travelling = yes + } + } + } + update_diarchy_swing_with_perspective_effect = { + SWING = massive_sop_swing_diarch_gain + LIEGE = scope:actor + } + } + # Neither + else = { + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_diarch_gain + LIEGE = scope:actor + } + } + diarch_swing_scales_guts_effect = yes + # Plus, everyone benefits. + change_influence = { + value = 200 + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + multiply = legitimacy_regent_swing_scale_multipler_value + round = yes + } + scope:recipient = { + change_influence = { + value = 200 + # LEGITIMACY OF RULER AFFECTS COSTS FOR REGENTS + multiply = legitimacy_regent_swing_scale_multipler_value + round = yes + } + } + } + } + } + # Swing the scales down if this is the liege. + else_if = { + limit = { is_diarch_of_target = scope:actor } + send_interface_message = { + type = msg_mandate_results_bad_effect + title = swing_scales_interaction_by_liege.t + right_icon = scope:actor + scope:actor = { + # Viziers give you more bang for your buck when swinging against 'em. + # Perk check for Voyager perk + if = { + limit = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + has_perk = power_at_home_perk + is_travelling = yes + } + update_diarchy_swing_with_perspective_effect = { + SWING = massive_sop_swing_liege_gain + LIEGE = scope:actor + } + } + # Perk or Vizier + else_if = { + limit = { + OR = { + has_diarchy_active_parameter = lieges_swing_more_against_diarchs + AND = { + has_perk = power_at_home_perk + is_travelling = yes + } + } + } + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_liege_gain + LIEGE = scope:actor + } + } + # Neither + else = { + update_diarchy_swing_with_perspective_effect = { + SWING = medium_sop_swing_liege_gain + LIEGE = scope:actor + } + } + diarch_swing_scales_guts_effect = yes + } + } + } + # And up if this is the diarch. + else = { + send_interface_message = { + type = msg_mandate_results_bad_effect + title = swing_scales_interaction_by_diarch.t + right_icon = scope:actor + if = { + limit = { + scope:actor = { + has_perk = power_at_home_perk + is_travelling = yes + } + } + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_diarch_gain + LIEGE = scope:recipient + } + } + else = { + update_diarchy_swing_with_perspective_effect = { + SWING = medium_sop_swing_diarch_gain + LIEGE = scope:recipient + } + } + scope:actor = { diarch_swing_scales_guts_effect = yes } + } + } + } + # Unless you gave power to them, scope:recipient is a bit miffed. + scope:recipient = { + # We're actually giving them swing, so gain opinion. + ## We lessen the gains from this over time, as they become more and more entitled. + if = { + limit = { scope:swing_cede_authority = yes } + # Actual gains. + if = { + limit = { + OR = { + NOT = { has_variable = diarch_authority_ceded } + var:diarch_authority_ceded < diarch_authority_ceded_opinion_value + } + } + # First, check to see how much opinion we should give. + save_scope_value_as = { + name = opinion_gain + value = { + value = diarch_authority_ceded_opinion_value + if = { + limit = { has_variable = diarch_authority_ceded } + subtract = var:diarch_authority_ceded + } + } + } + # Then, adjust the opinion. + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = scope:opinion_gain + } + # And decrease our gain next time. + increment_variable_effect = { + VAR = diarch_authority_ceded + VAL = 5 + } + } + # Otherwise, a paltry amount. + ## We're deliberately giving you basically nothing here — the 1 is for comedic effect. + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 1 + } + } + } + # Co-monarchs are more annoyed. + else_if = { + limit = { + OR = { + AND = { + scope:actor = { is_diarch_of_target = scope:recipient } + scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + AND = { + scope:recipient = { is_diarch_of_target = scope:actor } + scope:actor = { has_diarchy_active_parameter = diarchy_is_co_rulership } + } + } + } + add_opinion = { + target = scope:actor + modifier = frustrated_opinion + opinion = -20 + } + } + # Take away a normal amount. + else = { + add_opinion = { + target = scope:actor + modifier = frustrated_opinion + opinion = -10 + } + } + } + # Some diarchs might be swinging as a prelude to a coup attempt. + ai_diarch_check_to_see_if_should_launch_coup_effect = yes + + # Debug & object explorer logging. + ## Diarch swung. + if = { + limit = { + exists = scope:recipient.diarch + scope:actor = scope:recipient.diarch + } + debug_log = debug_log.swing_scales.diarch_swung + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_diarch } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_diarch_list } + } + } + ## Else liege swung. + else = { + debug_log = debug_log.swing_scales.liege_swung + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_liege } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_liege_list } + } + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = liege + ai_recipients = diarch + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + + ai_potential = { + OR = { + # Either they're a liege. + AND = { + has_active_diarchy = yes + # With some kind of valid cause to worry. + OR = { + # Lieges don't care unless your regency is entrenched _and_ it's looking to stay that way... + has_diarchy_active_parameter = regency_cant_be_ended_above_this_point + # ... unless they could get out of it. + can_leave_diarchy_trigger = yes + } + } + # Or they're the diarch. + AND = { + is_diarch = yes + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + } + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_secondary_powers_base_value + + # Additions. + ## Flag management. + ### Influence. + modifier = { + add = 7 + scope:swing_influence = yes + } + modifier = { + add = 6 + scope:swing_movement_power = yes + } + ### Cede Authority. + #### Only do this if you're also humble. + modifier = { + add = 10 + scope:swing_cede_authority = yes + has_trait = humble + } + ### Prestige. + modifier = { + add = 2 + scope:swing_prestige = yes + } + ### Piety. + modifier = { + add = 3 + scope:swing_piety = yes + } + ### Gold. + modifier = { + add = 1 + scope:swing_gold = yes + } + ### Hook. + modifier = { + add = 5 + scope:swing_hook = yes + } + ### HoF - combined Gold/Piety. + modifier = { + add = 4 + scope:swing_hof = yes + } + # Factors. + ## x0 Don't go into prestige debt! + modifier = { + factor = 0 + scope:swing_prestige = yes + prestige < 0 + } + ## We otherwise take care of these in the ai_potential block, because otherwise the AI interacts very, very weirdly with them. + } +} + +# For titleless diarchs: anyone playable uses the regular interaction. +diarch_swing_scales_currency_interaction = { + category = interaction_category_diarch + common_interaction = yes + diarch_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_SWING_SCALES + icon = scroll_scales + + desc = swing_scales_currency_interaction_desc + + interface_priority = 20 + + is_shown = { + scope:recipient = scope:actor.liege + # This is for landless diarchs only, and we pre-filter them, so we don't really care about this block. + ## But filter out players anyway for that _seamless_ debug play experience. + scope:actor = { is_ai = yes } + } + + is_valid_showing_failures_only = { + # Forbid when we're at max swing. + scope:recipient = { + # Plus also weed out some weird errors where we got confused and looked at ourselves. + has_active_diarchy = yes + # Now the actual check. + trigger_if = { + limit = { has_active_diarchy = yes } + diarchy_swing < 100 + } + trigger_else = { always = no } + } + # As long as you're able to give something even vaguely like an order to someone who might advocate on your behalf, you're gucci. + scope:actor = { is_imprisoned = no } + # And in the _rare_ circumstance that a diarch is a child, they must be at least this tall. + ## Note that we _don't_ do this for the liege, since we want the player to be able to manage their regency — assume that _someone_ is looking out for the child's best interests. + scope:actor = { + trigger_if = { + limit = { + is_diarch_of_target = scope:recipient + is_adult = no + } + age >= 8 + } + } + } + + cooldown = { years = 2 } + + cost = { + influence = { + if = { + limit = { always = scope:swing_influence } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_influence_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_influence_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + prestige = { + if = { + limit = { always = scope:swing_prestige } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_prestige_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_prestige_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + piety = { + if = { + limit = { + OR = { + always = scope:swing_piety + always = scope:swing_hof + } + } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_piety_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_piety_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + gold = { + if = { + limit = { + OR = { + always = scope:swing_gold + always = scope:swing_hof + } + } + # Diarch version. + if = { + limit = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + # Costs should always be applied on the diarch. + add = scope:actor.swing_scales_cash_cost_value + } + # Liege version. + else = { + # Costs should always be applied on the diarch. + add = scope:recipient.swing_scales_cash_cost_value + } + # Cost scaling mults. + multiply = scope:actor.swing_scales_discounts_multiplier_value + } + } + } + + # Influence + send_option = { + is_shown = { + # Make sure influence would be relevant. + OR = { + AND = { + scope:recipient.liege ?= scope:actor + scope:actor = { government_allows = administrative } + } + AND = { + scope:actor.liege ?= scope:recipient + scope:recipient = { government_allows = administrative } + } + } + } + is_valid = { + scope:actor = { government_allows = administrative } + } + starts_enabled = { scope:actor.influence >= scope:actor.swing_scales_influence_cost_value } + flag = swing_influence + localization = SWING_INFLUENCE + current_description = SWING_INFLUENCE_DESC + } + # Movement Power + send_option = { + starts_enabled = { + exists = scope:actor.var:movement_power_individual + scope:actor.var:movement_power_individual >= decent_movement_power_value + } + is_shown = { + scope:actor = { + government_has_flag = government_is_celestial + is_diarch_of_target = scope:recipient + } + scope:recipient = { government_has_flag = government_is_celestial } + } + is_valid = { + custom_tooltip = { + text = swing_scales_currency_interaction.tt.scales_min_movement_power + scope:actor.var:movement_power_individual >= medium_movement_power_value + } + } + flag = swing_movement_power + localization = SWING_MOVEMENT_POWER + current_description = SWING_MOVEMENT_POWER_DESC + } + # Prestige + send_option = { + starts_enabled = { scope:actor.prestige >= scope:actor.swing_scales_prestige_cost_value } + flag = swing_prestige + localization = SWING_PRESTIGE + } + # Piety + send_option = { + is_valid = { + # You must share a HoF to be able to petition one. + custom_tooltip = { + text = swing_scales_currency_interaction.tt.no_shared_hof + # We're also secretly just testing if characters are the same faith. + OR = { + scope:actor.faith = scope:recipient.faith + AND = { + exists = scope:actor.faith.religious_head + exists = scope:recipient.faith.religious_head + scope:actor.faith.religious_head = scope:recipient.faith.religious_head + } + } + } + } + starts_enabled = { scope:actor.piety >= scope:actor.swing_scales_piety_cost_value } + flag = swing_piety + localization = SWING_PIETY + } + # Gold + send_option = { + starts_enabled = { scope:actor.gold >= scope:actor.swing_scales_cash_cost_value } + flag = swing_gold + localization = SWING_GOLD + } + # Hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + starts_enabled = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = swing_hook + localization = SWING_HOOK + } + # HoF + send_option = { + is_valid = { diarch_swing_scales_valid_shared_hof_trigger = yes } + # Top of the prio order for enablement. + starts_enabled = { diarch_swing_scales_valid_shared_hof_trigger = yes } + flag = swing_hof + localization = SWING_HOF + } + + on_accept = { + # Swing the scales down, since scope:actor is always a landless diarch. + scope:recipient = { + # Slight chance delays may lead to a diarchy ending before this is received. + if = { + limit = { has_active_diarchy = yes } + send_interface_message = { + type = msg_mandate_results_bad_effect + title = swing_scales_interaction_by_diarch.t + right_icon = scope:actor + update_diarchy_swing_with_perspective_effect = { + SWING = medium_sop_swing_diarch_gain + LIEGE = scope:recipient + } + scope:actor = { diarch_swing_scales_guts_effect = yes } + } + } + # Scope:recipient is a bit miffed. + add_opinion = { + target = scope:actor + modifier = frustrated_opinion + opinion = -10 + } + } + # Some diarchs might be swinging as a prelude to a coup attempt. + ai_diarch_check_to_see_if_should_launch_coup_effect = yes + + # Debug logging. + debug_log = debug_log.swing_scales.diarch_swung + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_swung_diarch } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_swung_diarch_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + # We turn the frequency up higher than the cooldown so that diarchs don't take two years to get into the loop. + ai_frequency_by_tier = { + barony = 0 + county = 6 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + # Double check due to some irritating errors. + is_diarch = yes + liege = { has_active_diarchy = yes } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # We're generally ruthless here. + base = @ai_core_loop_base_value + + # Additions. + ## Flag management. + ### Influence. + modifier = { + add = 6 + scope:swing_influence = yes + } + ### Prestige. + modifier = { + add = 2 + scope:swing_prestige = yes + } + ### Piety. + modifier = { + add = 3 + scope:swing_piety = yes + } + ### Gold. + modifier = { + add = 1 + scope:swing_gold = yes + } + ### Hook. + modifier = { + add = 5 + scope:swing_hook = yes + } + ### HoF - combined Gold/Piety. + modifier = { + add = 4 + scope:swing_hof = yes + } + # Factors. + ## x0 Don't go into prestige debt! + modifier = { + factor = 0 + scope:swing_prestige = yes + prestige < 0 + } + } +} + +# Diarch (actor) shifts from a Temporary Regency to an Entrenched Regency. +diarch_entrench_regency_interaction = { + category = interaction_category_diarch + common_interaction = yes + diarch_interaction = yes + highlighted_reason = HIGHLIGHTED_CAN_DIARCH_ENTRENCH_REGENCY + icon = icon_entrench_regency + + desc = diarch_entrench_regency_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + # With the extra consideration that we only want this to appear for Temporary Regencies. + liege = { has_diarchy_parameter = unlock_entrench_regency_interaction } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = unlock_entrench_regency_interaction } + # You must be able to act as diarch. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + } + + on_accept = { + scope:recipient = { + # Tell scope:recipient what's up. + send_interface_toast = { + type = msg_start_diarchy + title = diarch_entrench_regency_interaction.tt.recipient_notification + left_icon = scope:actor + # Change the diarchy type to entrenched. + set_diarchy_type = regency + # Set our power level down a bit, but still higher than entrenched regencies that *start* that way would be. + set_diarchy_swing = 40 + } + # Plus scope:recipient probably isn't super happy about this. + add_opinion = { + target = scope:actor + modifier = suspicion_opinion + opinion = -20 + } + } + # Bit o'prestige for your hard work. + scope:actor = { add_prestige = medium_prestige_gain } + + # Debug logging. + debug_log = debug_log.entrench_regency.attempt_made + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entrench } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entrench_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entrench_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + ai_potential = { + is_diarch = yes + # Don't entrench for no reason — we want to have a bit of a delay so that the AI can go off travelling or get locked in prison once in a while. + liege = { years_in_diarchy >= 2 } + } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + } +} + +# Diarch (actor) shifts from an Entrenched Regency to Co-Emperorship. +diarch_regent_appoints_self_co_emperor_interaction = { + category = interaction_category_diarch + common_interaction = yes + diarch_interaction = yes + icon = icon_entrench_regency + + desc = diarch_regent_appoints_self_co_emperor_interaction_desc + + popup_on_receive = yes + pause_on_receive = yes + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + exists = liege + is_diarch_of_target = liege + # With the extra consideration that we only want this to appear for those who can actually _have_ co-emperors. + liege = { + has_diarchy_parameter = diarch_can_appoint_self_co_emperor + may_appoint_co_emperors_trigger = yes + } + } + } + + is_valid_showing_failures_only = { + # Make sure scope:recipient is the liege. + custom_tooltip = { + text = custom_description.tt.must_target_liege + scope:recipient = scope:actor.liege + } + # Diarchs must have unlocked the appropriate power. + scope:actor.liege = { has_diarchy_active_parameter = diarch_can_appoint_self_co_emperor } + # You must be able to act as diarch. + diarch_cannot_be_disabled_trigger = { DIARCH = scope:actor } + } + + cost = { + influence = { + # Rulers pay influence, non-rulers get a freebie (since they otherwise likely won't accrue the requisite influence). + if = { + limit = { + scope:actor = { is_ruler = yes } + } + value = 500 + } + # If we're doing this vs. someone who could leave a regency, it's significantly costlier. + if = { + limit = { + scope:recipient = { regency_for_personal_reasons_trigger = no } + } + add = 1000 + } + } + } + + on_accept = { + scope:recipient = { + # Tell scope:recipient what's up. + send_interface_toast = { + type = msg_start_diarchy + title = diarch_regent_appoints_self_co_emperor_interaction.tt.recipient_notification + left_icon = scope:actor + # Change the diarchy type to a co-emperorship. + custom_tooltip = { + text = diarch_regent_appoints_self_co_emperor_interaction.tt.become_co_emperorship + set_diarchy_type = co_emperorship + } + # Set our power level down a bit, we've just got one helluva prize. + custom_tooltip = { + text = diarch_regent_appoints_self_co_emperor_interaction.tt.set_swing + set_diarchy_swing = diarch_regent_appoints_self_co_emperor_interaction_sop_swing_set_value + } + add_legitimacy = minor_legitimacy_loss + } + # Plus scope:recipient probably isn't super happy about this. + add_opinion = { + target = scope:actor + modifier = suspicion_opinion + opinion = -50 + } + } + # Notify the player about the price spike. + if = { + limit = { + scope:recipient = { regency_for_personal_reasons_trigger = yes } + } + custom_tooltip = diarch_regent_appoints_self_co_emperor_interaction.tt.adults_cost_more + } + else = { custom_tooltip = diarch_regent_appoints_self_co_emperor_interaction.children_cost_less } + # Bit o'prestige for your hard work. + scope:actor = { add_prestige = medium_prestige_gain } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 12 + hegemony = 12 + } + ai_potential = { + is_diarch = yes + # Filter us down nice'n'tight. + liege = { may_appoint_co_emperors_trigger = yes } + # Loyal diarchs don't engage in skullduggery. + diarch_loyalty < diarch_loyalty_visibly_loyal_threshold + } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + } +} + +# Liege (actor) ends a Temporary Regency. +liege_dismiss_temporary_regency_interaction = { + category = interaction_category_diarch + common_interaction = yes + icon = icon_dismiss_temporary_regency + + desc = liege_dismiss_temporary_regency_interaction_desc + + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # With the extra consideration that we only want this to appear for Temporary Regencies. + has_diarchy_parameter = can_be_instantly_dismissed + } + } + + is_valid_showing_failures_only = { + # Basic requirements must be fulfilled. + scope:actor = { can_leave_diarchy_trigger = yes } + } + + on_accept = { + scope:actor = { + # Tell scope:recipient what's up. + send_interface_toast = { + type = event_toast_effect_neutral + title = liege_dismiss_temporary_regency_interaction.tt.recipient_notification + left_icon = scope:actor + right_icon = scope:recipient + # End the diarchy. + end_diarchy = yes + scope:recipient = { + # Bit o'prestige for your hard work. + if = { + limit = { + exists = dynasty + NOT = { + exists = scope:actor.dynasty.dynast + dynasty.dynast = scope:actor.dynasty.dynast + } + } + custom_tooltip = liege_dismiss_temporary_regency_interaction.tt.dynasty_receives_prestige + hidden_effect = { + dynasty = { add_dynasty_prestige = liege_dismiss_temporary_regency_interaction_dynasty_prestige_value } + } + } + else = { add_prestige = medium_prestige_gain } + } + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_dismtemp_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismtemp_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismtemp_accept_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + ai_potential = { has_active_diarchy = yes } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + } +} + +# Liege (actor) moves to end an Entrenched Regency. +liege_dismiss_entrenched_regency_interaction = { + category = interaction_category_diarch + common_interaction = yes + notification_text = liege_dismiss_entrenched_regency_interaction_proposal + icon = icon_dismiss_entrenched_regency + + desc = liege_dismiss_entrenched_regency_interaction_desc + + ai_maybe = yes + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + interface_priority = 60 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # With the extra consideration that we only want this to appear for Entrenched Regencies. + OR = { + has_diarchy_parameter = dismissal_requires_gift + AND = { + has_diarchy_parameter = dismissal_requires_no_ministry + tgp_has_access_to_ministry_trigger = no + } + } + } + } + + cooldown = { years = 1 } + + is_valid_showing_failures_only = { + # Basic requirements must be fulfilled. + scope:actor = { can_leave_diarchy_trigger = yes } + # And you mustn't be locked in by your regent's power. + scope:actor = { + NOT = { has_diarchy_active_parameter = regency_cant_be_ended_above_this_point } + } + # Must select something. + trigger_if = { + # AI won't exploit and need this exception, as they don't actually open the windows, so they'll be blocked from taking the interaction otherwise. + limit = { + scope:actor = { is_ai = no } + } + custom_tooltip = { + text = interactions_general.tt.must_select_one_option + OR = { + scope:diarchy_ending_gift_unnecessary = yes + scope:diarchy_ending_gift_stiffed = yes + scope:diarchy_ending_gift_hook = yes + scope:diarchy_ending_gift_dynasty_prestige = yes + scope:diarchy_ending_gift_piety = yes + scope:diarchy_ending_gift_cash = yes + scope:diarchy_ending_gift_herd = yes + } + } + } + custom_tooltip = { + text = government_is_celestial_tt + scope:actor = { + tgp_has_access_to_ministry_trigger = no + } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + # Ending gifts. + send_options_exclusive = yes + ## No gift required. + send_option = { + flag = diarchy_ending_gift_unnecessary + current_description = diarchy_ending_gift_unnecessary_desc + is_shown = { + scope:actor = { + NOT = { has_diarchy_active_parameter = regency_free_end_below_this_point } + } + } + } + ## Stiff scope:recipient for opinion loss. + send_option = { + flag = diarchy_ending_gift_stiffed + current_description = diarchy_ending_gift_stiffed_desc + is_shown = { + scope:actor = { has_diarchy_active_parameter = regency_free_end_below_this_point } + } + } + ## A hook for scope:recipient on scope:actor. + send_option = { + flag = diarchy_ending_gift_hook + current_description = diarchy_ending_gift_hook_desc + is_shown = { + scope:recipient = { + NOT = { has_hook = scope:actor } + } + } + } + ## Transfer some of your prestige into their dynasty prestige. + send_option = { + flag = diarchy_ending_gift_dynasty_prestige + current_description = diarchy_ending_gift_dynasty_prestige_desc + is_shown = { + # Filter out characters with no dynasty. + exists = scope:recipient.dynasty + # And make sure that they don't share a dynasty. + trigger_if = { + limit = { exists = scope:actor.dynasty } + scope:actor.dynasty != scope:recipient.dynasty + } + } + } + ## Pray for them to transfer piety. + ### Requires same-HoF. + send_option = { + flag = diarchy_ending_gift_piety + current_description = diarchy_ending_gift_piety_desc + is_shown = { + shared_faith_or_hof_trigger = { + ACTOR = scope:actor + RECIPIENT = scope:recipient + } + } + } + ## Cash. + send_option = { + flag = diarchy_ending_gift_cash + current_description = diarchy_ending_gift_cash_desc + } + ## Horse. + send_option = { + flag = diarchy_ending_gift_herd + current_description = diarchy_ending_gift_herd_desc + is_shown = { + # Can only pay herd if actor has herd to pay and recipient accepts herd as a currency + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { government_has_flag = government_is_nomadic } + } + } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + # Remove the waiting flag. + add_character_flag = trying_to_dismiss_regent + } + } + + on_accept = { + # End the diarchy. + scope:actor = { end_diarchy = yes } + scope:recipient = { + # Transfer a gift. + ## ... or don't, 'cause one isn't necessary! + if = { + limit = { scope:diarchy_ending_gift_unnecessary = yes } + custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.no_gift_necessary + } + ## Give 'em *nothing*, even though they earnt it. + if = { + limit = { scope:diarchy_ending_gift_stiffed = yes } + custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.stiff_them + # Scope:recipient is unhappy about this. + if = { + limit = { is_ai = yes } + # More so if they're arrogant, as they take such a smack in the face even more on the proverbial nose. + if = { + limit = { has_trait = arrogant } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -50 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = disappointed_opinion + opinion = -30 + } + } + } + } + ## Give 'em a hook. + if = { + limit = { scope:diarchy_ending_gift_hook = yes } + # Transfer the hook. + add_hook = { + type = favor_hook + target = scope:actor + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're deceitful, since they value favours. + if = { + limit = { has_trait = deceitful } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + ## Give 'em some dynasty prestige. + if = { + limit = { scope:diarchy_ending_gift_dynasty_prestige = yes } + scope:actor = { add_prestige = minor_prestige_loss } + # Transfer the prestige. + custom_tooltip = liege_dismiss_entrenched_regency_interaction.tt.dynasty_receives_prestige + hidden_effect = { + dynasty = { add_dynasty_prestige = liege_dismiss_entrenched_regency_interaction_dynasty_prestige_value } + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're the dynasty head, as then they can make use of it. + if = { + limit = { dynasty.dynast = scope:recipient } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + ## Give 'em some piety. + if = { + limit = { scope:diarchy_ending_gift_piety = yes } + # Transfer the piety. + scope:actor = { add_piety = medium_piety_loss } + add_piety = major_piety_value + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're zealous, as zealots like piety. + if = { + limit = { has_trait = zealous } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + ## Five 'em cold, hard cash. + if = { + limit = { scope:diarchy_ending_gift_cash = yes } + # Transfer the cash. + scope:actor = { + pay_short_term_gold = { + target = scope:recipient + gold = major_gold_value + } + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're greedy, 'cause greedy likes money. + if = { + limit = { has_trait = greedy } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + # Herd + if = { + limit = { scope:diarchy_ending_gift_herd = yes } + # Transfer the cash. + scope:actor = { + #gold = major_gold_value + pay_herd = { + target = scope:recipient + value = domicile.ten_percent_herd_value + } + } + # Plus they're happy. + if = { + limit = { is_ai = yes } + # More so if they're greedy, 'cause greedy likes money i mean horses. + if = { + limit = { has_trait = greedy } + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 30 + } + } + else = { + add_opinion = { + target = scope:actor + modifier = pleased_opinion + opinion = 15 + } + } + } + } + } + + # Object explorer logging. + if = { + limit = { always = scope:diarchy_ending_gift_unnecessary } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_unnecessary_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_unnecessary_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_unnecessary_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_stiffed } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_stiffed_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_hook } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_hook_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_dynasty_prestige } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_dynpres_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_piety } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_piety_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_cash } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_cash_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_accept_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_herd } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_herd_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_accept_recipient_list } + } + } + } + + on_decline = { + scope:actor = { + # Attempting to assert authority pushes scope:actor's scales in their favour. + update_diarchy_swing_with_perspective_effect = { + SWING = major_sop_swing_liege_gain + LIEGE = scope:actor + } + # Plus AI don't like being told *no*. + if = { + limit = { is_ai = no } + add_opinion = { + target = scope:recipient + modifier = trust_opinion + opinion = -30 + } + } + } + # Clean-up that pesky flag. + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + # And add a _new_ pesky flag to stop 'em doubling up whilst also telling them to try to take this interaction again AQAP. + ## This is to stop the AI from failing to tackle this efficiently. + scope:actor = { + if = { + limit = { is_ai = yes } + add_character_flag = trying_to_dismiss_regent + trigger_event = { + id = diarchy.0111 + days = 366 + } + } + } + + # Object explorer logging. + if = { + limit = { always = scope:diarchy_ending_gift_stiffed } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_stiffed_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_stiffed_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_hook } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_hook_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_hook_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_dynasty_prestige } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_dynpres_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_dynpres_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_piety } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_piety_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_piety_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_cash } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_cash_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_cash_decline_recipient_list } + } + } + else_if = { + limit = { always = scope:diarchy_ending_gift_herd } + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_entr_herd_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_entr_herd_decline_recipient_list } + } + } + } + + auto_accept = { + custom_tooltip = { + text = liege_dismiss_entrenched_regency_interaction.tt.force_ending + scope:diarchy_ending_gift_unnecessary = yes + } + } + + ai_accept = { + # Diarchs don't *want* to agree, by default... + base = 0 + + # ... except loyal ones, who really, really do... + modifier = { + add = 100 + desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.loyal_diarch + diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold + } + # ... plus inactive ones, who can't really refuse. + modifier = { + add = 50 + desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.is_disabled + scope:recipient = { is_diarch_able_trigger = no } + } + # If you could just end the diarchy without any fuss, then they're much more inclined to agree. + modifier = { + add = 1000 + desc = liege_dismiss_entrenched_regency_interaction.modifier.desc.could_freely_dismiss_me + scope:actor = { + NOT = { has_diarchy_active_parameter = regency_free_end_below_this_point } + } + } + # Factor for diplomacy. + ## Yours. + modifier = { + add = { + value = scope:actor.diplomacy + multiply = 2 + } + desc = INTERACTION_DIPLOMACY_ACTOR + } + ## Theirs. + modifier = { + add = { + value = scope:recipient.diplomacy + multiply = -2 + } + desc = INTERACTION_DIPLOMACY_RECIPIENT + } + # Factor for opinion. + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + # Factor for AI personalities. + ai_value_modifier = { + ai_honor = 1 + ai_boldness = -0.5 + } + # Factor for Scales of Power. + modifier = { + add = { + value = scope:actor.diarchy_swing + # Reduce by 40. + ## 20 is (currently) the node at which things become free, so we want to subtract above this point and invert below it. + ## The extra -20 is so that diarchs are more willing to go in exchange for a gift when their power is ebbing, rather than holding on until they can be discharged without one. + add = -40 + # Invert it, since scope:actor wants low scales. + multiply = -1 + } + desc = INTERACTION_SCALES_OF_POWER + } + # Intimidation. + ## Intimidated. + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + ## Cowed. + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + # Factor for low grandeur. + ## 1 level below. + modifier = { + add = -20 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 1_levels_below_expected_level + court_grandeur_current_level > 3_levels_below_expected_level + } + ## 3 levels below. + modifier = { + add = -40 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 3_levels_below_expected_level + court_grandeur_current_level > 5_levels_below_expected_level + } + ## 5 levels below. + modifier = { + add = -60 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 5_levels_below_expected_level + court_grandeur_current_level > 7_levels_below_expected_level + } + ## 7 levels below. + modifier = { + add = -80 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 7_levels_below_expected_level + court_grandeur_current_level > 9_levels_below_expected_level + } + ## 9 levels below. + modifier = { + add = -100 + desc = GRANDEUR_REASON + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level <= 9_levels_below_expected_level + } + # Negative relationships. + ## Rival. + modifier = { + add = -50 + desc = offer_vassalization_interaction_aibehavior_rival_tt + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + ## Nemesis. + modifier = { + add = -100 + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + scope:recipient = { has_relation_nemesis = scope:actor } + } + # Plus for whether you're offering a gift and if it's one they need or not. + ## No gift offered. + ### No base-vs.-trait modifier here, as we want arrogant characters to be dramatic little bastards. + modifier = { + add = -30 + desc = AI_OPINION_OFFENDED + scope:diarchy_ending_gift_stiffed = yes + } + ## Favour. + ### Deceitful variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.deceitful_likes_hook + scope:diarchy_ending_gift_hook = yes + has_trait = deceitful + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_hook = yes + NOT = { has_trait = deceitful } + } + ## Dynasty Prestige. + ### Dynasty Head variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.dynasty_head_likes_dynasty_prestige + scope:diarchy_ending_gift_dynasty_prestige = yes + this = dynasty.dynast + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_dynasty_prestige = yes + this != dynasty.dynast + } + ## Piety. + ### Zealous variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.zealous_likes_piety + scope:diarchy_ending_gift_piety = yes + has_trait = zealous + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_piety = yes + NOT = { has_trait = zealous } + } + ## Cash. + ### Greedy variant. + modifier = { + add = 60 + desc = liege_dismiss_entrenched_regency_interaction.tt.greedy_likes_cash + scope:diarchy_ending_gift_cash = yes + has_trait = greedy + } + ### Base variant. + modifier = { + add = 30 + desc = liege_dismiss_entrenched_regency_interaction.tt.offered_gift + scope:diarchy_ending_gift_cash = yes + NOT = { has_trait = greedy } + } + ### Also debters like this. + modifier = { + add = 60 + desc = PT_AI_IS_IN_DEBT + scope:diarchy_ending_gift_cash = yes + debt_level >= 1 + } + } + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + ai_potential = { + # Are we in a diarchy at all? + has_active_diarchy = yes + # Can we leave it? + can_leave_diarchy_trigger = yes + # Are we locked into a speed-leave cycle? + NOT = { has_character_flag = trying_to_dismiss_regent } + } + + ai_will_do = { + # You never _don't_ want to do this. + base = 1000 + + # Flag management. + ## Auto-dismiss. + modifier = { + add = 10 + scope:diarchy_ending_gift_unnecessary = yes + } + ## Stiff 'em. + ### If we hate the diarch, try to stiff them till we can dismiss 'em. + modifier = { + scope:diarchy_ending_gift_stiffed = yes + add = 9 + diarch_liege_wants_to_stiff_regent_trigger = yes + } + ### Otherwise, try to down prio this. It'll just make things harder. + modifier = { + scope:diarchy_ending_gift_stiffed = yes + add = 1 + diarch_liege_wants_to_stiff_regent_trigger = no + } + ## Hook. + modifier = { + add = 4 + scope:diarchy_ending_gift_hook = yes + } + ## Dynasty Prestige. + modifier = { + add = 5 + scope:diarchy_ending_gift_dynasty_prestige = yes + } + ## Piety. + modifier = { + add = 2 + scope:diarchy_ending_gift_piety = yes + } + ## Cash. + modifier = { + add = 3 + scope:diarchy_ending_gift_cash = yes + } + ## Herd. + modifier = { + add = 5 + scope:diarchy_ending_gift_herd = yes + } + } +} + +# Liege (actor) dismisses a Vizierate. +liege_dismiss_vizier_interaction = { + category = interaction_category_diarch + common_interaction = yes + icon = icon_dismiss_temporary_regency + + desc = liege_dismiss_vizier_interaction_desc + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Diarchy checks for scope:actor. + scope:actor = { + # If you're not in a diarchy, we don't care. + diarch ?= scope:recipient + # With the extra consideration that we only want this to appear for Vizierates. + has_diarchy_parameter = primeminister_dismissal_will_upset_administration + } + } + + is_valid_showing_failures_only = { + # Basic requirements must be fulfilled. + scope:actor = { can_leave_diarchy_trigger = yes } + } + + cooldown = { years = 5 } + + on_accept = { + scope:actor = { + # We've dismissed your vizier! + ## Do we need to give a warning tooltip first? + if = { + limit = { has_diarchy_active_parameter = primeminister_dismissal_will_upset_administration } + custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.vizier_too_entrenched + } + ## Now apply the real effects. + send_interface_toast = { + type = event_toast_effect_neutral + title = liege_dismiss_vizier_interaction.toast.t + left_icon = scope:actor + # Will this have ripple effects (actual)? + if = { + limit = { has_diarchy_active_parameter = primeminister_dismissal_will_upset_administration } + # Apply the modifier, scaling to how much we dun goofed. + add_character_modifier = { + modifier = civil_service_in_chaos_modifier + years = 10 + } + } + # End the diarchy. + end_diarchy = yes + } + } + # How badly do they take it? + scope:recipient = { + # Vengeful takes it badly. + if = { + limit = { + has_trait = vengeful + can_set_relation_rival_trigger = { CHARACTER = scope:actor } + } + set_relation_rival = { + target = scope:actor + reason = rival_dismissed_me_from_vizierate + } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -50 + } + } + # Even if they have something stopping them from becoming a rival (e.g., they're already your vizier). + else_if = { + limit = { has_trait = vengeful } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -50 + } + } + # Forgiving isn't mad, they're just disappointed. + else_if = { + limit = { has_trait = forgiving } + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -10 + } + } + # Otherwise, a bit of pain is to be expected. + else = { + progress_towards_rival_effect = { + REASON = rival_dismissed_me_from_vizierate + CHARACTER = scope:actor + OPINION = 0 + } + # Throw the opinion manually so we can keep the type unified. + add_opinion = { + target = scope:actor + modifier = insult_opinion + opinion = -25 + } + } + # Plus some stress. + stress_impact = { + lazy = major_stress_impact_loss + humble = medium_stress_impact_loss + content = medium_stress_impact_loss + diligent = medium_stress_impact_gain + ambitious = major_stress_impact_gain + arrogant = major_stress_impact_gain + } + # Extravagance modifiers taken care of in the on_action. + } + # Plus, remember to advertise to the player that there are alternatives. + ## We're deliberately doing this outside of scope:actor so we can make it a lil subtitle rather than something lumped in with the effect block. + ## Just give 'em a duchy. + if = { + limit = { + scope:actor = { has_diarchy_active_parameter = primeminister_requires_duchy } + } + custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.bribe.duchy + } + ## Just give 'em a county. + else_if = { + limit = { + scope:actor = { has_diarchy_active_parameter = primeminister_requires_county } + } + custom_tooltip = liege_dismiss_vizier_interaction.tt.problematic_dismissal.bribe.county + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_dismviz_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismviz_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_dismviz_accept_recipient_list } + } + } + + auto_accept = yes + + # AI + ai_targets = { ai_recipients = diarch } + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 24 + } + ai_potential = { has_active_diarchy = yes } + + ai_will_do = { + # You should actively want to get rid of them. + base = -25 + + # If you appointed this vizier, don't remove them unless you get booted down to county or something. + modifier = { + add = -500 + var:my_vizier ?= scope:recipient + } + + # Realm. + ## Weight up heavily for counts; they shouldn't generally get them, but they don't want to keep them if they do. + modifier = { + add = 1000 + highest_held_title_tier = tier_county + } + ## Weight up for dukes. + modifier = { + add = 25 + highest_held_title_tier = tier_duchy + } + ## Weight down for kings. + modifier = { + add = -25 + highest_held_title_tier = tier_kingdom + } + ## Weight down for emperors. + modifier = { + add = -50 + highest_held_title_tier >= tier_empire + } + ## Realm Size. + ### Smaller you are, the more likely you are to do this. + ### Tiny or less. + modifier = { + add = 50 + realm_size <= tiny_realm_size + } + ### Minor. + modifier = { + add = 25 + realm_size > tiny_realm_size + realm_size <= minor_realm_size + } + ### Major. + modifier = { + add = -25 + realm_size >= major_realm_size + realm_size < massive_realm_size + } + ### Massive or more. + modifier = { + add = -50 + realm_size >= massive_realm_size + } + + # Traits. + ## +++ Ambitious. + modifier = { + add = 25 + has_trait = ambitious + } + ## +++ Arrogant. + modifier = { + add = 25 + has_trait = arrogant + } + ## ++ Diligent. + modifier = { + add = 15 + has_trait = diligent + } + ## ++ Patient. + modifier = { + add = 15 + has_trait = patient + } + ## + Gregarious. + modifier = { + add = 5 + has_trait = gregarious + } + ## - Shy. + modifier = { + add = -5 + has_trait = shy + } + ## - Content. + modifier = { + add = -5 + has_trait = content + } + ## -- Impatient. + modifier = { + add = -15 + has_trait = impatient + } + ## -- Content. + modifier = { + add = -15 + has_trait = content + } + ## -- Humble. + modifier = { + add = -15 + has_trait = humble + } + ## --- Greedy. + modifier = { + add = -25 + has_trait = greedy + } + ## --- Lazy. + modifier = { + add = -25 + has_trait = lazy + } + } +} + +# A vassal requests their liege designate them as regent, should the need arise. +declare_me_regent_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + filter_tags = { admin_liege rep_liege } + + desc = declare_me_regent_interaction_desc + notification_text = DECLARE_ME_REGENT_PROPOSAL + + interface_priority = 20 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + + is_shown = { + # The obvious. + scope:actor != scope:recipient + # Only useable on your liege. + scope:recipient = scope:actor.liege + # And said-liege can't be in a regency already... + scope:recipient = { + trigger_if = { + limit = { + NOT = { has_diarchy_type = grand_secretariat } + } + has_active_diarchy = no + } + trigger_else = { + scope:actor = { + OR = { + has_title = title:e_minister_grand_marshal + has_title = title:e_minister_chancellor + has_title = title:e_minister_censor + } + } + } + } + # ... or have declared you their regent already! + scope:actor = { + is_designated_diarch = no + NOR = { + is_diarch_of_target = scope:recipient + # Can't be used during the Cid story cycle + has_variable = ongoing_cid_story_cycle + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + # Can't do if you're already expected to be regent. + is_designated_diarch = no + # Can't be too young. + is_adult = yes + # Or imprisoned. + is_imprisoned = no + # Or, for that matter, incapable. + NOT = { has_trait = incapable } + is_diarch_valid_trigger = yes + } + # Put a general cooldown on this stuff. + scope:recipient = { + trigger_if = { + limit = { + exists = designated_diarch + } + time_after_diarch_designated = { years >= 10 } + } + } + } + + # No general cooldown: if your liege changes, ask away. + # Long specific cooldown, though. We don't want these going through constantly. + cooldown_against_recipient = { years = 10 } + + # High cost to reduce spam. + cost = { prestige = 500 } + + #Use hook + send_options_exclusive = no + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_SPEND_A_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = declare_me_regent_interaction.tt.success + left_icon = scope:recipient + # Jump the queue to become diarch. + scope:recipient = { + if = { + limit = { + has_diarchy_type = grand_secretariat + } + if = { + limit = { + scope:actor = { + has_title = title:e_minister_grand_marshal + } + } + add_realm_law = grand_marshal_law + } + else_if = { + limit = { + scope:actor = { + has_title = title:e_minister_chancellor + } + } + add_realm_law = grand_chancellor_law + } + else_if = { + limit = { + scope:actor = { + has_title = title:e_minister_censor + } + } + add_realm_law = grand_censor_law + } + scope:actor = { + set_variable = { + name = asked_to_be_secretary_director + value = yes + } + } + } + else = { + designate_diarch = scope:actor + } + } + # This prompts some strife. + change_strife_opinion = major_strife_gain + } + # If you used a hook, calc some extra stuff. + ## We move this outside of the toast because we've not got enough room for all this info in there. + if = { + limit = { + scope:hook = yes + has_usable_hook = scope:recipient + } + # Use the hook up. + use_hook = scope:recipient + # Plus scope:recipient is _very_ upset. + reverse_add_opinion = { + target = scope:recipient + modifier = suspicion_opinion + opinion = -20 + } + } + } + scope:recipient = { + # Some folks may not be happy. + custom_tooltip = declare_me_regent_interaction.tt.warning.opinions.succession + custom_tooltip = declare_me_regent_interaction.tt.warning.opinions.courtlies + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_desigme_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_accept_recipient_list } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = declare_me_regent_interaction.tt.failure + left_icon = scope:recipient + # AI lose opinion of their opposite number. + if = { + limit = { is_ai = yes } + add_opinion = { + target = scope:recipient + modifier = insult_opinion + opinion = -40 + } + } + # Even trying produces some strife. + change_strife_opinion = medium_strife_gain + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_desigme_decline } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_decline_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_desigme_decline_recipient_list } + } + } + + auto_accept = { + scope:recipient = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + } + + ai_accept = { + # Try to make it 0 for most interactions + base = -40 + + # Weight for dislike of current regent. + # Designated regent. + modifier = { + add = { + # Designated diarchs. + if = { + limit = { + designated_diarch ?= { + save_temporary_scope_as = diarch_successor_temp + save_temporary_opinion_value_as = { + name = recipient_opinion_temp + target = scope:diarch_successor_temp + } + } + } + add = scope:recipient_opinion_temp + # Invert to get the true total. + multiply = -1 + } + # Expected diarchs. + else_if = { + limit = { + diarchy_successor ?= { + save_temporary_scope_as = diarch_successor_temp + scope:actor = { + save_temporary_opinion_value_as = { + name = recipient_opinion_temp + target = scope:diarch_successor_temp + } + } + } + } + add = scope:recipient_opinion_temp + # Invert to get the true total. + multiply = -1 + } + } + desc = declare_me_regent_interaction.tt.opinion_of_current_regent + } + # Opinion of scope:actor. + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + } + # Personality. + ai_value_modifier = { + # Meek characters are more likely to accept this. + ai_boldness = -0.5 + # Characters with low energy just want to avoid all this planning. + ai_energy = -0.25 + } + # Familial closeness. + ## Close family get a decent boost. + modifier = { + add = 30 + desc = declare_me_regent_interaction.tt.actor_is.close_family + is_close_family_of = scope:actor + # Make sure this isn't cancelled out by the incumbent sharing the relation. + diarchy_successor = { + NOT = { + is_close_family_of = scope:recipient + } + } + } + ## Extended family get a minor boost. + modifier = { + add = 20 + desc = declare_me_regent_interaction.tt.actor_is.extended_family + is_extended_family_of = scope:actor + # Make sure this isn't cancelled out by the incumbent sharing the relation. + diarchy_successor = { + NOT = { + is_extended_family_of = scope:recipient + } + } + } + ## House members get a slight boost. + modifier = { + add = 10 + desc = declare_me_regent_interaction.tt.actor_is.house_member + house = scope:actor.house + NOT = { + is_close_or_extended_family_of = scope:actor + } + # Make sure this isn't cancelled out by the incumbent sharing the relation. + diarchy_successor = { + house != scope:recipient.house + } + } + # Relationships. + ## Positive. + modifier = { + add = 25 + desc = declare_me_regent_interaction.tt.actor_is.positive_relationship + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:actor } + # We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish. + } + ## Negative. + modifier = { + add = -25 + desc = declare_me_regent_interaction.tt.actor_is.negative_relationship + has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:actor } + # We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish. + } + # Succession score is a direct factor. + modifier = { + add = scope:actor.diarchy_regent_succession_score_value + desc = declare_me_regent_interaction.tt.actor_is.succession_score + scope:recipient = { + NOT = { has_diarchy_type = grand_secretariat } + } + } + + # Grand Secretariat + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor.top_participant_group:dynastic_cycle ?= { + exists = var:movement_favored + } + desc = diarch_candidate_score.grand_secretariat.favored_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor = { + is_any_movement_leader = yes + } + desc = you_are_a_movement_leader_desc_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor = { + is_in_pro_hegemon_or_hegemon_movement = yes + } + desc = diarch_candidate_score.grand_secretariat.pro_hegemon_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + scope:actor = { + has_court_position = favored_minister_court_position + } + desc = grand_secretariat_aptitude.favored_minister_value + add = 20 + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + desc = actors_merit_level_desc + add = { + if = { + limit = { + scope:actor.merit_level >= scope:actor.top_liege.diarch.merit_level + scope:actor.merit >= scope:actor.top_liege.merit + } + add = 10 + } + else = { + add = -10 + } + } + } + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + desc = ACTOR_HIGH_MOVEMENT_POWER + add = { + if = { + limit = { + exists = scope:actor.top_liege.diarch.var:movement_power + exists = scope:actor.var:movement_power + scope:actor.var:movement_power >= scope:actor.top_liege.diarch.var:movement_power + } + add = 10 + } + else = { + add = -40 + } + } + } + # Events + modifier = { + add = 25 + desc = tgp_power_undermined_modifier_tt + has_character_modifier = tgp_power_undermined_modifier + # We don't factor for this in the designated/expected diarch 'cause the matrix of overlap'd be hellish. + } + } + + # AI + #ai_targets = { ai_recipients = liege } + #ai_frequency = 0 + # + #ai_potential = { + # # Turning off for the AI for the moment due to not being able to display who you'll offend if you do it. + # ## Should otherwise work and can be turned back on again if wished. + # always = no + # # Some traits lock the AI out. + # ## Calc these first 'cause they're cheaper. + # NOR = { + # has_trait = lazy + # has_trait = humble + # has_trait = content + # } + # OR = { + # # Driven by traits or personality. + # has_trait = arrogant + # has_trait = ambitious + # # Family think themselves worthy. + # any_close_or_extended_family_member = { this = liege } + # } + #} + + ai_will_do = { + # Most AI think this is audacious. + base = 0 + + # Weight for personality. + ## Both modifier. + ai_value_modifier = { + # Bold, energetic characters fancy the gig. + ai_boldness = 0.5 + ai_energy = 0.5 + } + ## And traits! + ### These are balanced differently to the other interactions, so it's deliberate that they're not using the @values here. + ### +++ Ambitious. + modifier = { + add = 15 + has_trait = ambitious + } + ### ++ Arrogant. + modifier = { + add = 10 + has_trait = arrogant + } + ### + Diligent. + modifier = { + add = 5 + has_trait = diligent + } + ### + Loyal. + modifier = { + add = 5 + has_trait = loyal + } + ### - Humble. + modifier = { + add = -5 + has_trait = humble + } + ### --- Content. + modifier = { + add = -15 + has_trait = content + } + ### --- Lazy. + modifier = { + add = -15 + has_trait = lazy + } + # Weight by proximity to the ruler: close family, spouses, etc. + modifier = { + add = 25 + OR = { + any_close_or_extended_family_member = { this = scope:recipient } + any_spouse = { this = scope:recipient } + } + } + # Councillors have ambitions. + modifier = { + add = 25 + is_councillor = yes + } + # Weight for opinion of current regent. + modifier = { + add = { + scope:recipient = { + # Designated diarchs. + if = { + limit = { + designated_diarch ?= { + save_temporary_scope_as = diarch_successor_temp + scope:actor = { + save_temporary_opinion_value_as = { + name = actor_opinion_temp + target = scope:diarch_successor_temp + } + } + } + } + add = scope:actor_opinion_temp + # Invert to get the true total. + multiply = -1 + } + # Expected diarchs. + else_if = { + limit = { + diarchy_successor ?= { + save_temporary_scope_as = diarch_successor_temp + scope:actor = { + save_temporary_opinion_value_as = { + name = actor_opinion_temp + target = scope:diarch_successor_temp + } + } + } + } + add = scope:actor_opinion_temp + # Invert to get the true total. + multiply = -1 + } + } + } + always = yes + } + # The AI will only use a Hook if they couldn't otherwise do this + modifier = { + scope:hook = yes + add = -1 + } + # Grand Secretariat + modifier = { + scope:recipient = { + has_diarchy_type = grand_secretariat + } + add = { + if = { + limit = { + scope:actor.top_participant_group:dynastic_cycle ?= { + exists = var:movement_favored + } + } + add = 10 + } + if = { + limit = { + scope:actor = { + has_court_position = favored_minister_court_position + } + } + add = 20 + } + if = { + limit = { + scope:actor.merit_level >= scope:actor.top_liege.diarch.merit_level + scope:actor.merit >= scope:actor.top_liege.merit + } + add = 10 + } + if = { + limit = { + exists = scope:actor.top_liege.diarch.var:movement_power + exists = scope:actor.var:movement_power + } + if = { + limit = { + scope:actor.var:movement_power >= scope:actor.top_liege.diarch.var:movement_power + } + add = 10 + } + else = { + add = -100 + } + } + } + } + } +} + +# Liege (actor) selects a vizier to help them run the realm. +appoint_vizier_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + + desc = appoint_vizier_interaction_desc + interface_priority = 20 + + is_shown = { + scope:actor = { + # Must be able to retain a vizier. + government_has_flag = may_appoint_viziers + # Plus obscure the interaction if we've already got one, else it's annoyingly redundant. + NOT = { has_diarchy_active_parameter = diarchy_is_vizierate } + } + # We perform this upon ourselves or our (probable) candidates. + scope:recipient = { + OR = { + this = scope:actor + is_courtier_of = scope:actor + AND = { + highest_held_title_tier = tier_barony + liege = scope:actor + } + } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Must be of a decent tier. + custom_tooltip = { + text = appoint_vizier_interaction.tt.duchy_or_more + scope:actor.highest_held_title_tier >= tier_duchy + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + # And can't have put the realm into turmoil over this recently. + scope:actor = { + NOT = { has_character_modifier = civil_service_in_chaos_modifier } + } + } + + cooldown = { years = 5 } + + populate_recipient_list = { sort_vizier_candidates_to_list_effect = yes } + + cost = { + prestige = major_prestige_value + renown = { + if = { + limit = { + exists = scope:secondary_recipient + exists = scope:actor.house + scope:secondary_recipient.house ?= scope:actor.house + } + add = scope:actor.dynasty.massive_dynasty_prestige_value + } + } + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_vizier_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ordered_in_list = { + list = characters + order_by = diarchy_vizier_succession_score_value + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a vizierate with scope:secondary_recipient. + custom_tooltip = { + text = appoint_vizier_interaction.tt.enter_vizierate_with_secondary_recipient + try_start_diarchy = vizierate + # The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + set_diarch = scope:secondary_recipient + } + # Whereas the AI grabs their pre-selected candidate. + else = { + set_diarch = scope:ai_recipient + } + } + # Apply opinion. + ## AI. + if = { + limit = { exists = scope:ai_recipient } + scope:ai_recipient = { + add_opinion = { + target = scope:actor + modifier = compliment_opinion + opinion = 30 + } + stress_impact = { + ambitious = minor_stress_impact_loss + arrogant = minor_stress_impact_loss + lazy = major_stress_impact_gain + } + } + } + ## Player. + else = { + scope:secondary_recipient = { + add_opinion = { + target = scope:actor + modifier = compliment_opinion + opinion = 30 + } + stress_impact = { + ambitious = minor_stress_impact_loss + arrogant = minor_stress_impact_loss + lazy = major_stress_impact_gain + } + } + } + # And get X tax jurisdictions. + custom_tooltip = appoint_vizier_interaction.tt.secondary_recipient_grants_tax_jurisdictions + # If scope:secondary_recipient isn't the most qualified candidate, we'll take a scaling negative stewardship modifier. + ## The AI will always pick the highest scoring character, so we only do this for players - lock it off so we're not doing lots of unnecessary calculating. + if = { + limit = { is_ai = no } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_vizier_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ordered_in_list = { + list = characters + order_by = diarchy_vizier_succession_score_value + save_scope_as = best_candidate + } + # Is our chap _the_ chap? + if = { + limit = { + scope:secondary_recipient != scope:best_candidate + } + # Ok, now display some warnings. + custom_tooltip = appoint_vizier_interaction.tt.secondary_recipient_is_not_best_candidate + add_character_modifier = { + modifier = civil_service_upset_modifier + years = 10 + } + } + } + # Are they of our house? + if = { + limit = { + exists = scope:secondary_recipient.house + house ?= scope:secondary_recipient.house + } + custom_tooltip = appoint_vizier_interaction.tt.same_house_penalty + } + # If we have a designated diarch (and it's not this guy), then they're annoyed. + designated_diarch ?= { + if = { + limit = { + this != scope:secondary_recipient + } + add_opinion = { + target = scope:actor + modifier = appointed_vizier_over_designated_regent_opinion + opinion = -40 + } + } + } + # Set a reminder that we appointed this vizier — the AI'll use this to help with determining whether they should remove them or not. + set_variable = { + name = my_vizier + value = scope:recipient + } + # Finally, let's do some stress. + stress_impact = { + trusting = massive_stress_impact_loss + lazy = major_stress_impact_loss + paranoid = minor_stress_impact_gain + diligent = minor_stress_impact_gain + } + } + # Notify about council problemos. + scope:secondary_recipient = { + if = { + limit = { is_councillor = yes } + custom_tooltip = appoint_vizier_interaction.tt.warning.vizier_replace_councillor + } + } + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appviz_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appviz_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appviz_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = self } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 240 + kingdom = 120 + empire = 120 + hegemony = 120 + } + + ai_potential = { + government_has_flag = may_appoint_viziers + } + + ai_will_do = { + base = 0 + + # Realm. + ## Weight up for kings. + modifier = { + add = 50 + highest_held_title_tier = tier_kingdom + } + ## Weight up for emperors. + modifier = { + add = 75 + highest_held_title_tier >= tier_empire + } + ## Add realm size directly. + modifier = { + add = sub_realm_size + is_landed = yes + } + + # Traits. + ## +++ Lazy. + modifier = { + add = 25 + has_trait = lazy + } + ## +++ Greedy. + modifier = { + add = 25 + has_trait = greedy + } + ## ++ Humble. + modifier = { + add = 15 + has_trait = humble + } + ## ++ Content. + modifier = { + add = 15 + has_trait = content + } + ## ++ Impatient. + modifier = { + add = 15 + has_trait = impatient + } + ## + Content. + modifier = { + add = 5 + has_trait = content + } + ## + Shy. + modifier = { + add = 5 + has_trait = shy + } + ## - Gregarious. + modifier = { + add = -5 + has_trait = gregarious + } + ## -- Patient. + modifier = { + add = -15 + has_trait = patient + } + ## -- Diligent. + modifier = { + add = -15 + has_trait = diligent + } + ## --- Arrogant. + modifier = { + add = -25 + has_trait = arrogant + } + ## --- Ambitious. + modifier = { + add = -25 + has_trait = ambitious + } + } +} + +# Liege (actor) selects a junior emperor to be their heir. +appoint_junior_emperor_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + if = { + limit = { scope:secondary_recipient = scope:actor } + clear_saved_scope = secondary_recipient + } + if = { + limit = { + NOT = { + scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } + } + } + clear_saved_scope = secondary_recipient + } + } + + desc = appoint_junior_emperor_interaction_desc + interface_priority = 20 + + is_shown = { + # Must be able to retain a co-emperor. + scope:actor = { may_appoint_co_emperors_trigger = yes } + # We perform this upon ourselves or our (probable) candidates. + OR = { + scope:recipient ?= scope:actor + scope:secondary_recipient ?= { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Make sure we're targeting the right people, since redirects make this a lil slippery. + trigger_if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { valid_junior_emperor_candidate_trigger = { LIEGE = scope:actor } } + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + } + + populate_recipient_list = { sort_junior_emperor_candidates_to_list_effect = yes } + + cost = { + prestige = designate_heir_admin_prestige_cost + influence = designate_heir_admin_influence_cost + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_junior_emperor_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ## And by that I mean play literal favourites. + ordered_in_list = { + list = characters + order_by = "reverse_opinion(scope:actor)" + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a junior emperorship with scope:secondary_recipient. + ## The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + custom_tooltip = { + text = appoint_junior_emperor_interaction.tt.enter_junior_emperorship_with_secondary_recipient + try_start_diarchy = junior_emperorship + set_diarch = scope:secondary_recipient + } + # We set them to be our designated heir. + ## & if we already have an heir, warn that this overwrites it. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + custom_tooltip = appoint_junior_emperor_interaction.tt.overwrite_designated_heir + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Designate and inform. + set_designated_heir = scope:secondary_recipient + } + ## Whereas the AI grabs their pre-selected candidate. + else = { + try_start_diarchy = junior_emperorship + set_diarch = scope:ai_recipient + # We set them to be our designated heir. + ## First grabbing the old one for opinions. + designated_heir ?= { + if = { + limit = { this != scope:ai_recipient } + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Then overwriting. + set_designated_heir = scope:ai_recipient + } + } + # And remember who appointed them on scope:recipient. + grateful_for_appointment_as_co_emperor_effect = yes + # Your designated heir is _very_ pissed. + diarch_overwrites_old_designated_heir_apply_opinions_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Your designated regent is also unhappy (probably). + designated_diarch_overwridden_by_co_ruler_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Make sure we have our co-ruler directly with us. + ## Courtiers are given to us immediately. + if = { + limit = { + scope:secondary_recipient = { is_ruler = no } + scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } } + } + scope:actor = { add_courtier = scope:secondary_recipient } + } + ## Vassals are retracted. + if = { + limit = { scope:secondary_recipient.liege != scope:actor } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + create_title_and_vassal_change = { + type = revoked + save_scope_as = change + } + scope:secondary_recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + + + + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appjunemp_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appjunemp_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appjunemp_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = children } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 60 + hegemony = 60 + } + + ai_potential = { + # Filter us down nice'n'tight. + may_appoint_co_emperors_trigger = yes + # Plus rule out any diarchies already on the go. + has_active_diarchy = no + # Aaaand finally, the AI won't do this unless they're considering their age and they've got no adult kids. + age >= 50 + any_child = { + count = all + is_adult = no + } + } + + ai_will_do = { + # The AI doesn't like doing this without good reason. + base = -100 + + ai_wants_junior_or_co_emperor_modifier = yes + } +} + +# Liege (actor) selects a co-emperor to be their heir/influence farming stooge. +appoint_co_emperor_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + if = { + limit = { scope:secondary_recipient ?= scope:actor } + clear_saved_scope = secondary_recipient + } + if = { + limit = { + NOT = { + scope:secondary_recipient ?= { + valid_co_emperor_candidate_trigger = { LIEGE = scope:actor } + } + } + } + clear_saved_scope = secondary_recipient + } + } + + desc = appoint_co_emperor_interaction_desc + interface_priority = 280 + + is_shown = { + # Must be able to retain a co-emperor. + scope:actor = { may_appoint_co_emperors_trigger = yes } + # We perform this upon ourselves or our (probable) candidates. + OR = { + scope:recipient ?= scope:actor + scope:secondary_recipient ?= { + valid_co_emperor_candidate_trigger = { LIEGE = scope:actor } + } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Make sure we're targeting the right people, since redirects make this a lil slippery. + trigger_if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { + valid_co_emperor_candidate_trigger = { LIEGE = scope:actor } + } + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + } + + populate_recipient_list = { sort_co_emperor_candidates_to_list_effect = yes } + + cost = { + prestige = designate_heir_admin_prestige_cost + influence = designate_heir_admin_influence_cost + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_co_emperor_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ## And by that I mean play literal favourites. + ordered_in_list = { + list = characters + order_by = { + value = "reverse_opinion(scope:actor)" + # Boost up anyone we're related to by blood or marriage. + if = { + limit = { + OR = { + is_close_or_extended_family_of = scope:actor + house ?= scope:actor.house + any_spouse = { is_close_or_extended_family_of = scope:actor } + } + } + # This means we should _generally_ prefer people who are in with the imperial family, but if we hate them then we boot them down the list even further. + multiply = 10 + } + } + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a co-emperorship with scope:secondary_recipient. + ## The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + custom_tooltip = { + text = appoint_co_emperor_interaction.tt.enter_co_emperorship_with_secondary_recipient + try_start_diarchy = co_emperorship + set_diarch = scope:secondary_recipient + } + # If appropriate, we set them to be our designated heir. + if = { + limit = { + scope:secondary_recipient = { + is_close_or_extended_family_of = scope:actor + house ?= scope:actor.house + } + } + # & if we already have an heir, warn that this overwrites it. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + custom_tooltip = appoint_co_emperor_interaction.tt.overwrite_designated_heir + # Nab them for use further on. + save_scope_as = old_heir + } + } + # Designate and inform. + set_designated_heir = scope:secondary_recipient + } + } + ## Whereas the AI grabs their pre-selected candidate. + else = { + try_start_diarchy = co_emperorship + set_diarch = scope:ai_recipient + # If appropriate, we set them to be our designated heir. + if = { + limit = { + scope:secondary_recipient = { + is_close_or_extended_family_of = scope:actor + house ?= scope:actor.house + } + } + # First grabbing the old one for opinions. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + # Nab them for use further on. + save_scope_as = old_heir + } + } + # Then overwriting. + set_designated_heir = scope:ai_recipient + } + } + } + # And remember who appointed them on scope:recipient. + grateful_for_appointment_as_co_emperor_effect = yes + # Your designated heir is _very_ pissed. + diarch_overwrites_old_designated_heir_apply_opinions_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Your designated regent is also unhappy (probably). + designated_diarch_overwridden_by_co_ruler_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Make sure we have our co-ruler directly with us. + ## Courtiers are given to us immediately. + if = { + limit = { + scope:secondary_recipient = { is_ruler = no } + } + scope:actor = { add_courtier = scope:secondary_recipient } + } + ## Vassals are retracted. + if = { + limit = { + scope:secondary_recipient.liege != scope:actor + scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } } + } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + create_title_and_vassal_change = { + type = revoked + save_scope_as = change + } + scope:secondary_recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + + + + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appcoemp_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcoemp_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcoemp_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = children } + ai_targets = { ai_recipients = vassals } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 0 + empire = 60 + hegemony = 60 + } + + ai_potential = { + # Filter us down nice'n'tight. + may_appoint_co_emperors_trigger = yes + # Plus rule out any diarchies already on the go. + has_active_diarchy = no + # Aaaand finally, the AI won't do this unless they're considering their age and they've got adult kids. + age >= 50 + any_child = { is_adult = yes } + } + + ai_will_do = { + # The AI doesn't like doing this without good reason. + base = -100 + + ai_wants_junior_or_co_emperor_modifier = yes + } +} + +# Liege (actor) selects one of their children to be their heir & diarch. +appoint_co_monarch_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + redirect = { + scope:recipient = { save_scope_as = secondary_recipient } + if = { + limit = { scope:secondary_recipient ?= scope:actor } + clear_saved_scope = secondary_recipient + } + if = { + limit = { + NOT = { + scope:secondary_recipient ?= { is_child_of = scope:actor } + } + } + clear_saved_scope = secondary_recipient + } + } + + desc = appoint_co_monarch_interaction_desc + interface_priority = 20 + + is_shown = { + # Must be able to retain a co-emperor. + scope:actor = { may_appoint_co_monarchs_trigger = yes } + # We perform this upon ourselves or our (probable) candidates. + OR = { + scope:recipient ?= scope:actor + scope:secondary_recipient ?= { is_child_of = scope:actor } + } + } + + is_valid_showing_failures_only = { + # You can't already be in a diarchy of any kind. + scope:actor = { + has_active_diarchy = no + } + # Make sure we're targeting the right people, since redirects make this a lil slippery. + trigger_if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } } + } + # Plus the usuals. + scope:actor = { is_available_at_peace = yes } + } + + populate_recipient_list = { sort_co_monarch_candidates_to_list_effect = yes } + + cost = { + prestige = { + value = designate_heir_cost + # Discount it because this _is_ worse than the standard path. + multiply = 0.5 + } + } + + auto_accept = yes + + pre_auto_accept = { + # If we're an AI, set the secondary_recipient up for us. + scope:actor = { + if = { + limit = { is_ai = yes } + # First, we need to calc who _is_ most qualified; we don't have access to the character list any more, so reassemble it. + sort_co_monarch_candidates_to_list_effect = yes + # Now, parse through the list to find the best character. + ## And by that I mean play literal favourites. + ordered_in_list = { + list = characters + limit = { valid_co_monarch_candidate_trigger = { LIEGE = scope:actor } } + order_by = "reverse_opinion(scope:actor)" + save_scope_as = ai_recipient + } + } + } + } + + on_accept = { + scope:actor = { + # We enter into a co-emperorship with scope:secondary_recipient. + ## The player uses scope:secondary_recipient. + if = { + limit = { + # We use a NOT here rather than is_ai = no because the AI was occasionally managing to bork its selection process, and the title does _not_ like setting an empty diarch, so we fallback AI who can't behave to a sub-optimal choice. + NOT = { exists = scope:ai_recipient } + } + custom_tooltip = { + text = appoint_co_monarch_interaction.tt.enter_co_monarchy_with_secondary_recipient + try_start_diarchy = co_monarchy + set_diarch = scope:secondary_recipient + } + # We set them to be our designated heir. + ## & if we already have an heir, warn that this overwrites it. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + custom_tooltip = appoint_co_monarch_interaction.tt.overwrite_designated_heir + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Designate and inform. + set_designated_heir = scope:secondary_recipient + } + ## Whereas the AI grabs their pre-selected candidate. + else = { + try_start_diarchy = co_emperorship + set_diarch = scope:ai_recipient + # We set them to be our designated heir. + ## First grabbing the old one for opinions. + designated_heir ?= { + if = { + limit = { this != scope:secondary_recipient } + # Nab them for use further on. + save_scope_as = old_heir + } + } + ## Then overwriting. + set_designated_heir = scope:ai_recipient + } + } + # And remember who appointed them on scope:recipient. + grateful_for_appointment_as_co_emperor_effect = yes + # Your designated heir is _very_ pissed. + diarch_overwrites_old_designated_heir_apply_opinions_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Your designated regent is also unhappy (probably). + designated_diarch_overwridden_by_co_ruler_effect = { + LIEGE = scope:actor + CO_RULER = scope:secondary_recipient + } + # Make sure we have our co-ruler directly with us. + ## Courtiers are given to us immediately. + if = { + limit = { + scope:secondary_recipient = { is_ruler = no } + scope:secondary_recipient = { NOT = { is_in_the_same_court_as = scope:actor } } + } + scope:actor = { add_courtier = scope:secondary_recipient } + } + ## Vassals are retracted. + if = { + limit = { scope:secondary_recipient.liege != scope:actor } + scope:secondary_recipient.liege = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + create_title_and_vassal_change = { + type = revoked + save_scope_as = change + } + scope:secondary_recipient = { + change_liege = { + liege = scope:actor + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + } + + + + + # Object explorer logging. + scope:actor = { + diarch_interaction_set_or_update_global_variable_effect = { VARIABLE = di_track_appcomon_accept } + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcomon_accept_actor_list } + } + scope:recipient = { + diarch_interaction_add_to_global_list_effect = { VARIABLE_LIST = di_track_appcomon_accept_recipient_list } + } + } + + # AI + ai_targets = { ai_recipients = children } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 120 + empire = 120 + hegemony = 120 + } + + ai_potential = { + # Filter us down nice'n'tight. + may_appoint_co_monarchs_trigger = yes + # Plus rule out any diarchies already on the go. + has_active_diarchy = no + # Aaaand finally, the AI won't do this unless they're considering their age and they've got adult kids. + age >= 50 + any_child = { is_adult = yes } + } + + ai_will_do = { + # The AI doesn't like doing this without good reason. + base = -100 + + ai_wants_junior_or_co_emperor_modifier = yes + } +} + +# Start a scheme to replace an incumbent regent. +overthrow_regent_scheme_interaction = { + category = interaction_category_diarch + icon = icon_declare_me_regent + ignores_pending_interaction_block = yes + + scheme = overthrow_regent + desc = overthrow_regent_scheme_interaction_desc + + interface_priority = 20 + + is_shown = { + # Standard setup. + scope:actor.liege ?= { + has_active_diarchy = yes + # You can't overthrow non-regencies. At least not this way. + has_diarchy_parameter = diarchy_is_regency + } + scope:recipient = { + this != scope:actor + liege ?= { + this = scope:actor.liege + diarch ?= scope:recipient + this != scope:actor + } + } + } + + is_valid_showing_failures_only = { + # Make sure you wouldn't just cop out immediately. + ## Disabling is fine, FWIW. You'll de-disable with time. + scope:actor = { is_diarch_valid_trigger = yes } + # Have we been vetoed from succession due to politicking? + custom_tooltip = { + text = overthrow_regent_scheme_interaction.tt.filtered_due_to_incumbent_politicking + NOT = { scope:actor.var:diarch_succession_filtered_due_to_incumbents_politicking ?= scope:recipient } + } + } + + # Long specific cooldown. If you give up, you should give it a rest 'less things change. + cooldown_against_recipient = { years = 10 } + + # Scheme Starter Packages + options_heading = schemes.t.agent_packages + send_options_exclusive = yes + ## Balanced agents. + send_option = { + flag = agent_focus_balance + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_balance + } + ## Focused on Success Chance. + send_option = { + flag = agent_focus_success + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_success + } + ## Focused on Speed. + send_option = { + flag = agent_focus_speed + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_speed + } + ## Focused on Secrecy. + send_option = { + flag = agent_focus_secrecy + current_description = overthrow_regent_scheme_interaction.tt.agent_focus_secrecy + } + + on_accept = { + scope:actor = { + # Sort some stress stuff. + overthrow_regent_scheme_interaction_actor_stress_effect = yes + # And some feedback for starting. + send_interface_toast = { + type = event_toast_effect_neutral + title = overthrow_regent_scheme_interaction.tt.started_scheme + left_icon = scope:actor + right_icon = scope:recipient + # Success. + if = { + limit = { scope:agent_focus_success ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_ambusher + AGENT_3 = agent_muscle + # Speed. + AGENT_4 = agent_footpad + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Speed. + else_if = { + limit = { scope:agent_focus_speed ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Speed. + AGENT_1 = agent_footpad + AGENT_2 = agent_tracker + AGENT_3 = agent_planner + # Success. + AGENT_4 = agent_thug + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Secrecy. + else_if = { + limit = { scope:agent_focus_secrecy ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Secrecy. + AGENT_1 = agent_lookout + AGENT_2 = agent_lookout + AGENT_3 = agent_decoy + # Success. + AGENT_4 = agent_thug + # Speed. + AGENT_5 = agent_footpad + } + } + # Balanced. + else = { + begin_scheme_with_agents_effect = { + SCHEME_TYPE = overthrow_regent + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_ambusher + # Speed. + AGENT_3 = agent_footpad + AGENT_4 = agent_planner + # Secrecy. + AGENT_5 = agent_lookout + } + } + } + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = peer_vassals + ai_recipients = scripted_relations + } + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 60 + kingdom = 60 + empire = 60 + hegemony = 60 + } + + ai_potential = { + # Some traits lock the AI out. + ## Calc these first 'cause they're cheaper. + NOR = { + has_trait = lazy + has_trait = humble + has_trait = content + } + OR = { + # Driven by traits or personality. + has_trait = arrogant + has_trait = ambitious + # Family think themselves worthy. + any_close_or_extended_family_member = { this = liege } + # If you're rivals with the current regent, that's a good cause. + any_relation = { + type = rival + is_diarch_of_target = root.liege + } + } + } + + ai_will_do = { + # Most AI think this is audacious. + base = -50 + + # Opinion Factor + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + # Weight for personality. + ## Both modifier. + ai_value_modifier = { + # Bold, energetic characters fancy the gig. + ai_boldness = 0.5 + ai_energy = 0.5 + } + ## And traits! + ### These are balanced differently to the other interactions, so it's deliberate that they're not using the @values here. + ### +++ Loyal (if current regent is disloyal). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = loyal + exists = liege + scope:recipient = { diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold } + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold + } + ### +++ Disloyal (if current regent is loyal). + modifier = { + add = diarch_ai_desire_plus_3_value + has_trait = disloyal + exists = liege + scope:recipient = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold } + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_disloyal_threshold + } + ### ++ Ambitious. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = ambitious + } + ### ++ Arrogant. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = arrogant + } + ### ++ Deceitful. + modifier = { + add = diarch_ai_desire_plus_2_value + has_trait = deceitful + } + ### + Diligent. + modifier = { + add = diarch_ai_desire_plus_1_value + has_trait = diligent + } + ### - Lazy. + modifier = { + add = diarch_ai_desire_minus_1_value + has_trait = lazy + } + ### -- Honest. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = honest + } + ### -- Humble. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = humble + } + ### -- Content. + modifier = { + add = diarch_ai_desire_minus_2_value + has_trait = content + } + ### --- Disloyal (if current regent is disloyal). + modifier = { + add = diarch_ai_desire_minus_3_value + has_trait = disloyal + exists = liege + scope:recipient = { diarch_loyalty <= diarch_loyalty_visibly_disloyal_threshold } + diarch_loyalty_score_type_regency_value <= diarch_loyalty_visibly_disloyal_threshold + } + ### --- Loyal (if current regent is loyal). + #### Also some loyal-adjacent traits that would otherwise cause stress. + modifier = { + add = diarch_ai_desire_minus_3_value + OR = { + has_trait = loyal + has_trait = honest + has_trait = compassionate + has_trait = just + } + exists = liege + scope:recipient = { diarch_loyalty >= diarch_loyalty_visibly_loyal_threshold } + diarch_loyalty_score_type_regency_value >= diarch_loyalty_visibly_loyal_threshold + } + # Weight by proximity to the ruler: close family, spouses, etc. + modifier = { + add = diarch_ai_desire_plus_2_value + exists = scope:recipient.liege + OR = { + any_close_or_extended_family_member = { this = scope:recipient.liege } + any_spouse = { this = scope:recipient.liege } + } + } + # Councillors have ambitions. + modifier = { + add = diarch_ai_desire_plus_2_value + is_councillor = yes + } + # Factors. + ## If relations are near-perfect, we don't want to go plotting, as it'll look weird. + modifier = { + factor = 0 + OR = { + has_any_good_relationship_with_character_trigger = { CHARACTER = scope:recipient } + opinion = { + target = scope:recipient + value >= very_high_positive_opinion + } + } + } + } +} diff --git a/common/character_interactions/00_gift.txt b/common/character_interactions/00_gift.txt new file mode 100644 index 00000000..b06b8dc1 --- /dev/null +++ b/common/character_interactions/00_gift.txt @@ -0,0 +1,789 @@ +#Give characters money to improve their opinion of you +gift_interaction = { + icon = icon_gold + category = interaction_category_friendly + common_interaction = yes + interface_priority = 65 + desc = gift_interaction_desc + + greeting = positive + notification_text = SEND_GIFT_PROPOSAL + + answer_accept_key = SEND_GIFT_ACCEPT + answer_reject_key = SEND_GIFT_REJECT + + ai_targets = { + ai_recipients = scripted_relations + ai_recipients = liege + ai_recipients = head_of_faith + } + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + max = 10 + } + ai_targets = { + ai_recipients = vassals + max = 10 + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 120 + county = 60 + duchy = 60 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + is_shown = { + scope:recipient != scope:actor + + # Prioritize paying back loans first + scope:actor = { + trigger_if = { + limit = { + exists = var:loan_amount_owed + exists = var:loan_holder + } + NOT = { var:loan_holder = scope:recipient } + } + } + } + + is_highlighted = { + scope:recipient = { + OR = { + house ?= { + OR = { + is_dominant_family = yes + is_powerful_family = yes + } + } + } + } + } + + highlighted_reason = HIGHLIGHTED_FAMILY_RATING + + is_valid_showing_failures_only = { + scope:actor.gold >= gift_value + scope:recipient = { + NOT = { is_imprisoned_by = scope:actor } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0100 + } + } + + on_accept = { + scope:recipient = { + # Verify that they could become friend + if = { + limit = { + NAND = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_best_friend = scope:actor + } + } + gifting_leads_towards_friendship_effect = yes + } + } + # HOUSE RELATIONS + if = { + limit = { + scope:actor = { + is_house_head = yes + } + scope:recipient = { + is_house_head = yes + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + } + scope:recipient.house = { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_improve_medium_value + REASON = sent_a_gift + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + scope:actor = { + # Warning for multiple gifts + if = { + limit = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + custom_tooltip = ALREADY_SENT_GIFT_WARNING + } + + send_interface_message = { + type = event_gold_neutral + title = gift_interaction_notification + right_icon = scope:recipient + pay_short_term_gold = { + gold = gift_value + target = scope:recipient + } + stress_impact = { + greedy = medium_stress_impact_gain + } + if = { + limit = { + scope:recipient = { + NOT = { + is_heir_of = scope:actor + } + } + } + stress_impact = { + generous = medium_stress_impact_loss + } + } + + #FP3 Tenet Communal Possessions Perk - piety gain for gift giving. + if = { + limit = { + scope:actor = { + faith = { + has_doctrine_parameter = piety_from_gifts_active + } + } + } + scope:actor = { + add_piety = minor_piety_gain + } + } + + # Check if the target already has been sent a gift or not. If not, apply the following effects + if = { + limit = { + NOT = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + } + + # Struggle Catalyst + if = { + limit = { + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_gift_independent_ruler + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_gift_independent_ruler + CHAR = scope:recipient + } + } + } + } + hidden_effect = { + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { phase_has_catalyst = catalyst_gift_independent_ruler } + activate_struggle_catalyst = { + catalyst = catalyst_gift_independent_ruler + character = scope:actor + } + } + } + } + } + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:actor = { + any_character_struggle = { + #involvement = involved + activate_struggle_catalyst_secondary_character_involvement_either_trigger = { + CATALYST = catalyst_gift_supporter_detractor_ruler + CHAR = scope:recipient + } + } + } + } + hidden_effect = { + scope:actor = { + every_character_struggle = { + #involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_either_trigger = { + CATALYST = catalyst_gift_supporter_detractor_ruler + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_gift_supporter_detractor_ruler + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_gift_supporter_detractor_ruler } + } + } + } + } + + # FP2 Urbanism Legacy Perk 2: increase cultural acceptance when gifting a republican vassal + if = { + limit = { + scope:actor = { + dynasty ?= { has_dynasty_perk = fp2_urbanism_legacy_4 } + } + scope:recipient = { + AND = { + is_vassal_of = scope:actor + government_has_flag = government_is_republic + } + } + scope:actor.culture != scope:recipient.capital_province.county.culture + } + scope:recipient.capital_province.county.culture = { + change_cultural_acceptance = { + target = scope:actor.culture + value = { + value = 20 + multiply = scope:recipient.capital_province.county.development_level + divide = 100 + } + desc = cultural_acceptance_gain_gift_dynasty_perk + } + } + } + } + + # Let's apply the opinion modifier last, as to apply everything else correctly first + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = gift_opinion + opinion = send_gift_opinion + } + } + } + + if = { # for tutorial purposes + limit = { + is_ai = no + scope:recipient = { is_child_of = scope:actor } + } + add_character_flag = { + flag = tutorial_sent_gift + days = 200 + } + } + #Influence gain between admin rulers + if = { + limit = { + is_ruler = yes + government_allows = administrative + scope:recipient = { + is_ruler = yes + government_allows = administrative + any_held_title = { + is_noble_family_title = yes + } + } + } + if = { + limit = { + scope:recipient = { + OR = { + house = { + is_dominant_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 5 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 8 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_dominant_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 3 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 7 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_dominant_family = yes + } + this = scope:actor.top_liege + } + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 6 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_powerful_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 5 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 6 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_powerful_family = yes + } + this = scope:actor.top_liege + } + influence_level >= 3 + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 5 + } + } + else_if = { + limit = { + scope:recipient = { + OR = { + house = { + is_powerful_family = yes + } + this = scope:actor.top_liege + } + } + } + change_influence = { + value = miniscule_influence_gain + multiply = 4 + } + } + else_if = { + limit = { + scope:recipient = { influence_level >= 5 } + } + change_influence = { + value = miniscule_influence_gain + multiply = 3 + } + } + else_if = { + limit = { + scope:recipient = { influence_level >= 3 } + } + change_influence = { + value = miniscule_influence_gain + multiply = 2 + } + } + else = { + change_influence = miniscule_influence_gain + } + } + } + } + + ai_accept = { + base = 0 + modifier = { + add = 100 + desc = GOLD_REASON + } + + # Struggle motive + modifier = { + desc = AI_STRUGGLE_INTENT + scope:recipient = { + top_liege = this + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_gift_independent_ruler + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_gift_independent_ruler + } + } + } + add = 200 + } + } + } + } + + ai_potential = { + is_available_at_peace_ai_adult = yes + ai_greed < medium_positive_ai_value + short_term_gold >= gift_interaction_cutoff + NOT = { + has_trait = greedy + } + NOT = { has_variable = conqueror } + ai_should_focus_on_building_in_their_capital = no + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + } + } + } + + ai_min_reply_days = 1 + ai_max_reply_days = 1 + + ai_will_do = { + base = 100 + + modifier = { # Do not send double-gifts + factor = 0 + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + + modifier = { # Basic Filtering + factor = 0 + scope:recipient = { + NOR = { + AND = { # Bankrupt lovers, friends and a bankrupt liege should be considered + OR = { + scope:actor = { + any_liege_or_above = { + this = scope:recipient + } + } + has_secret_relation_lover = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + } + gold < 0 + } + AND = { # Generous characters will give gifts to their friends/lovers + is_ruler = yes + OR = { + has_secret_relation_lover = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + } + scope:actor = { + OR = { + ai_greed <= high_negative_ai_value + AND = { + ai_greed < 0 + culture = { + has_cultural_parameter = gives_more_gifts + } + } + } + } + } + AND = { # Characters with the Generous Cultural Tradition will give gifts to more people + is_ruler = yes + OR = { + is_allied_to = scope:actor + is_close_or_extended_family_of = scope:actor + } + scope:actor = { + ai_greed < 0 + culture = { + has_cultural_parameter = gives_more_gifts + } + } + } + AND = { # Characters with the loyal trait more likely to give gifts to friends/lieges + OR = { + scope:actor.liege ?= this + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + is_allied_to = scope:actor + is_close_or_extended_family_of = scope:actor + } + scope:actor = { + ai_greed <= 0 + has_trait = loyal + } + } + AND = { # Zealous characters want to support the defending side in GHW's + gold < 200 + any_character_war = { + OR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + primary_defender = scope:recipient + } + scope:actor = { + ai_zeal >= 50 + } + } + AND = { # Powerful vassals should be considered + is_powerful_vassal_of = scope:actor + opinion = { + target = scope:actor + value < 0 + } + NOT ={ + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + AND = { # Factioneering vassals should be considered + is_vassal_of = scope:actor + is_a_faction_member = yes + NOT ={ + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + AND = { # Realm Priests should be considered + scope:actor = { + faith = { has_doctrine = doctrine_theocracy_temporal } + exists = cp:councillor_court_chaplain + cp:councillor_court_chaplain = scope:recipient + } + opinion = { + target = scope:actor + value <= 25 + } + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = gift_opinion + } + } + } + AND = { # Rulers at war with your rivals deserve gold if they're bankrupt + gold < 0 + is_at_war = yes + any_war_enemy = { + has_relation_rival = scope:actor + } + } + AND = { # Independent ruler within the struggle should be considered + any_character_struggle = { + phase_has_catalyst = catalyst_gift_independent_ruler + } + } + } + } + } + + # Struggle + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_gift_independent_ruler + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_gift_independent_ruler + } + NOT = { + has_relation_rival = scope:recipient + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = { + value = 150 + if = { + limit = { scope:recipient = { is_ai = no} } + add = 150 # higher for human player to Prioritize them + } + # Then lower the intent depending on the gold reserve + # Base value applied if the AI has 3x the gold cutoff + multiply = { + value = short_term_gold + divide = { + value = gift_interaction_cutoff + multiply = 3 + } + } + } + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + } + add = { + value = 25 + if = { + limit = { scope:recipient = { is_ai = no} } + add = 150 # higher for human player to Prioritize them + } + # Then lower the intent depending on the gold reserve + # Base value applied if the AI has 3x the gold cutoff + multiply = { + value = short_term_gold + divide = { + value = gift_interaction_cutoff + multiply = 3 + } + } + } + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + opinion = { + target = scope:actor + value < 0 + } + NAND = { + is_vassal_of = scope:actor + scope:actor = { + ai_rationality > 50 + } + } + } + } + + modifier = { + add = 100 + scope:actor = { + is_at_war = no + has_trait = fp3_struggle_supporter + any_character_struggle = { is_struggle_type = persian_struggle } + } + scope:recipient = { + title:d_sunni.holder ?= this + gold < 0 + } + } + + # Nomads are slightly less likely to do this since they'd prefer to send Herd instead + modifier = { + add = -10 + scope:actor = { + government_has_flag = government_is_nomadic + } + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + has_relation_rival = scope:actor + } + } + + modifier = { + factor = 2 + scope:actor.house.house_confederation ?= { + has_cohesion_level_parameter = bloc_members_send_leader_gifts + leading_house.house_head ?= scope:recipient + } + } + } +} diff --git a/common/character_interactions/00_grant_titles_interaction.txt b/common/character_interactions/00_grant_titles_interaction.txt index 464e711c..e9d99379 100644 --- a/common/character_interactions/00_grant_titles_interaction.txt +++ b/common/character_interactions/00_grant_titles_interaction.txt @@ -42,7 +42,7 @@ grant_titles_interaction = { limit = { scope:actor = { government_has_flag = government_is_nomadic NOT = { government_has_flag = government_allows_nomad_domicile_titles }} } - scope:recipient = { NOT = { government_has_flag = government_is_herder } } + scope:recipient = { NOT = { government_has_flag = government_is_true_herder } } } } diff --git a/common/character_interactions/00_invite_agent_to_scheme.txt b/common/character_interactions/00_invite_agent_to_scheme.txt new file mode 100644 index 00000000..2723d6ab --- /dev/null +++ b/common/character_interactions/00_invite_agent_to_scheme.txt @@ -0,0 +1,844 @@ + +invite_agent_to_scheme_interaction = { + special_interaction = invite_to_scheme_interaction + hidden = yes + + # Delaying the response makes it possible to invite multiple agents to the same slot. + ai_instant_response = yes + + on_accept = { + scope:recipient = { + if = { + limit = { + OR = { + always = scope:mandala_trickster + always = scope:gift + always = scope:gift_significant + always = scope:offer_hook + always = scope:offer_hook_strong + always = scope:hook + always = scope:opportunities_t1 + always = scope:opportunities_t2 + always = scope:prestige + always = scope:influence + always = scope:council_rights + always = scope:de_jure_title + always = scope:claimed_title + always = scope:piety + always = scope:herd + var:devotee_agent_var ?= scope:actor + } + } + force_add_to_agent_slot = { + agent_slot = scope:agent_slot + years = 5 + } + } + else = { add_to_agent_slot = scope:agent_slot } + } + scope:actor = { + # No bribe. + ## We hack this in to stop the window jumping around as you add or remove bribes. + if = { + limit = { + NOR = { + always = scope:mandala_trickster + always = scope:gift + always = scope:gift_significant + always = scope:offer_hook + always = scope:offer_hook_strong + always = scope:hook + always = scope:opportunities_t1 + always = scope:opportunities_t2 + always = scope:prestige + always = scope:influence + always = scope:council_rights + always = scope:de_jure_title + always = scope:claimed_title + always = scope:piety + always = scope:herd + } + } + custom_tooltip = offer_bribes.tt.window_jump_fix + } + # Mandala Trickster + if = { + limit = { always = scope:mandala_trickster } + add_piety = { + value = trickster_mandala_force_agent_bribe_value + multiply = -1 + } + } + # Bribe + if = { + limit = { always = scope:gift } + pay_short_term_gold = { + gold = bribe_value + target = scope:recipient + } + stress_impact = { greedy = minor_stress_impact_gain } + } + # Big Bribe + if = { + limit = { always = scope:gift_significant } + pay_short_term_gold = { + gold = greater_bribe_value + target = scope:recipient + } + stress_impact = { greedy = medium_stress_impact_gain } + } + # Offer Hook + if = { + limit = { always = scope:offer_hook } + stress_impact = { + base = minor_stress_impact_gain + paranoid = major_stress_impact_gain + } + scope:recipient = { + add_hook = { + type = favor_hook + target = scope:actor + } + } + } + # Offer Strong Hook + if = { + limit = { always = scope:offer_hook_strong } + stress_impact = { base = major_stress_impact_gain } + scope:recipient = { + add_hook = { + type = strong_favor_hook + target = scope:actor + } + } + } + # Use Hook + if = { + limit = { always = scope:hook } + use_hook = scope:recipient + } + # Burn Opportunities + if = { + limit = { always = scope:opportunities_t1 } + custom_tooltip = { + text = spend_agent_charges.tt.t1 + scope:scheme = { + change_opportunities = { + value = invite_agent_opportunities_t1_value + multiply = -1 + } + } + } + } + # Burn More Opportunities + if = { + limit = { always = scope:opportunities_t2 } + custom_tooltip = { + text = spend_agent_charges.tt.t2 + scope:scheme = { + change_opportunities = { + value = invite_agent_opportunities_t2_value + multiply = -1 + } + } + } + } + # Prestige + if = { + limit = { always = scope:prestige } + add_prestige = { + value = prestige_bribe_value + multiply = -1 + } + scope:recipient = { add_prestige = prestige_bribe_value } + } + # Influence + if = { + limit = { always = scope:influence } + change_influence = { + value = influence_bribe_value + multiply = -1 + } + scope:recipient = { change_influence = influence_bribe_value } + } + # Council Rights + if = { + limit = { always = scope:council_rights } + scope:recipient = { + vassal_contract_set_obligation_level = { + type = council_rights + level = 1 + } + set_subject_contract_modification_blocked = yes + } + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + } + # De Jure County + if = { + limit = { always = scope:de_jure_title } + random_held_title = { + limit = { + actor_has_valid_de_jure_enticement_county_trigger = yes + any_this_title_or_de_jure_above = { + holder ?= { this = scope:recipient } + } + } + change_title_holder = { + holder = scope:recipient + change = scope:change + } + } + } + # Claimed County + if = { + limit = { always = scope:claimed_title } + random_held_title = { + limit = { + actor_has_valid_claimed_enticement_county_trigger = yes + scope:recipient = { has_claim_on = prev } + } + change_title_holder = { + holder = scope:recipient + change = scope:change + } + } + } + resolve_title_and_vassal_change = scope:change + # Piety + if = { + limit = { always = scope:piety } + scope:actor = { + add_piety = { + value = piety_bribe_value + multiply = -1 + } + } + scope:recipient = { add_piety = piety_bribe_value } + } + # Herd + if = { + limit = { always = scope:herd } + if = { + limit = { + scope:recipient.domicile ?= { + herd > 0 + } + } + scope:actor = { + pay_herd = { + target = scope:recipient + value = domicile.herd_bribe_value + } + } + } + else = { + scope:actor = { custom_tooltip = scheme_change_herd_value } + hidden_effect = { + scope:actor.domicile = { + change_herd = { + value = herd_bribe_value + multiply = -1 + } + } + scope:recipient = { + add_gold = { + value = domicile.herd_bribe_value + multiply = 0.1 + } + } + } + } + } + } + # Stress. + ## For scope: recipient. + scope:recipient = { + if = { + limit = { + scope:scheme = { is_scheme_category = contract } + } + # Honourable characters don't like being forced into criminal schemes. + if = { + limit = { + OR = { + has_trait = just + has_trait = compassionate + } + scope:scheme.task_contract ?= { is_criminal = yes } + } + add_opinion = { + target = scope:actor + modifier = forced_me_to_help_crimes_opinion + opinion = -20 + } + stress_impact = { + just = minor_stress_impact_gain + compassionate = miniscule_stress_impact_gain + } + } + # Lazy characters don't like being made to work at all. + else_if = { + limit = { has_trait = lazy } + add_opinion = { + target = scope:actor + modifier = forced_me_to_work_opinion + opinion = -10 + } + stress_impact = { lazy = miniscule_stress_impact_gain } + } + } + } + } + + ai_accept = { + base = 0 + scheme_modifier = { + object = scope:scheme + target = scope:recipient + } + # You should not add modifiers here! If you want to add modifiers, they should be added to either: + ## - ai_agent_join_chance_hostile_general_suite_modifier + ## - ai_agent_join_chance_personal_general_suite_modifier + } + + auto_accept = { + trigger_if = { + limit = { + scope:recipient.var:devotee_agent_var ?= scope:actor # They are a devotee of yours + } + custom_tooltip = devotee_agent_desc + } + trigger_else_if = { + limit = { scope:mandala_trickster = yes } + custom_tooltip = { + text = SCHEME_AGENT_MANDALA_TRICKSTER + always = yes + } + } + trigger_else_if = { + limit = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + always = yes + } + } + trigger_else_if = { + limit = { + scope:scheme = { is_scheme_category = contract } + } + # Should be synced with the modifiers in ai_agent_join_chance_laamp_contract_modifier, else agents'll leave the scheme immediately after joining. + scope:recipient = { + is_courtier_of = scope:actor + NOR = { + has_relation_rival = scope:actor + custom_tooltip = { + text = invite_agent_to_scheme_interaction.tt.no_stooges + AND = { + scope:actor = { has_court_position = stooge_camp_officer } + is_court_position_employer = { + court_position = stooge_camp_officer + who = scope:actor + } + } + } + } + } + } + trigger_else = { always = no } + } + + options_heading = invite_agent_to_scheme_interaction.t.options_header + # Everyone + ## Spend opportunities. + ### x1. + send_option = { + flag = opportunities_t1 + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_opportunities.tt.need_an_opportunity.t1 + scope:scheme = { scheme_agent_charges >= invite_agent_opportunities_t1_value } + } + custom_tooltip = { + text = offer_opportunities.tt.cannot_offer_multiple_sets + scope:opportunities_t2 = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_OPPORTUNITIES_T1 + } + ### x3. + send_option = { + flag = opportunities_t2 + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_opportunities.tt.need_an_opportunity.t2 + scope:scheme = { scheme_agent_charges >= invite_agent_opportunities_t2_value } + } + custom_tooltip = { + text = offer_opportunities.tt.cannot_offer_multiple_sets + scope:opportunities_t1 = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_OPPORTUNITIES_T2 + } + ## Mandala Trickery Aspect + send_option = { + flag = mandala_trickster + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + scope:actor = { + government_has_flag = government_is_mandala + house = { has_house_head_parameter = unlock_force_agent_using_piety } + is_house_head = yes + } + } + is_valid = { + scope:actor.piety >= trickster_mandala_force_agent_bribe_value + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:piety = no + } + custom_tooltip = { + text = not_two_overrides + trigger_if = { + limit = { scope:hook = yes } + NOT = { + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_MANDALA_TRICKSTER + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= trickster_mandala_force_agent_bribe_value } + desc = SCHEME_AGENT_MANDALA_TRICKSTER_VALID + } + } + } + ## Gold + send_option = { + flag = gift + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.gold >= bribe_value + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:gift_significant = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_GOLD + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.gold >= bribe_value } + desc = SCHEME_AGENT_GOLD_VALID + } + } + } + ## Even more gold + send_option = { + flag = gift_significant + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.gold >= greater_bribe_value + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:gift = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_GOLD_SIGNIFICANT + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.gold >= greater_bribe_value } + desc = SCHEME_AGENT_GOLD_SIGNIFICANT_VALID + } + } + } + ## Offer a hook + send_option = { + flag = offer_hook + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_hook.tt.cannot_offer_both_hooks + scope:offer_hook_strong = no + } + NOT = { + scope:recipient = { has_hook = scope:actor } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_HOOK + } + ## Offer a strong hook + send_option = { + flag = offer_hook_strong + is_shown = { + scope:actor = { has_trait_with_flag = can_offer_strong_hook_to_agents } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = offer_hook.tt.cannot_offer_both_hooks + scope:offer_hook = no + } + NOT = { + scope:recipient = { has_strong_hook = scope:actor } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_HOOK_STRONG + } + ## Use hook. + ### Weak hook bonus is added through the scheme's agent join chance. + ### Strong hook is in the auto_accept block. + send_option = { + flag = hook + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + custom_tooltip = { + text = not_two_overrides + trigger_if = { + limit = { + scope:actor = { has_strong_hook = scope:recipient } + } + scope:mandala_trickster = no + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_HOOK_EXPLICIT + } + # Rulers + ## Prestige + send_option = { + flag = prestige + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.prestige >= prestige_bribe_value + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_PRESTIGE + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.prestige >= prestige_bribe_value } + desc = SCHEME_AGENT_PRESTIGE_VALID + } + } + } + ## Influence + send_option = { + flag = influence + is_shown = { + scope:actor.top_liege ?= scope:recipient.top_liege + scope:actor = { government_allows = administrative } + scope:recipient = { + OR = { + government_allows = administrative + host = { government_allows = administrative } + AND = { + highest_held_title_tier = tier_barony + liege = { government_allows = administrative } + } + } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.influence >= influence_bribe_value + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_INFLUENCE + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.influence >= influence_bribe_value } + desc = SCHEME_AGENT_INFLUENCE_VALID + } + } + } + ## Council Rights + send_option = { + flag = council_rights + is_shown = { + would_actor_consider_dramatic_enticement_trigger = yes + scope:recipient.liege ?= scope:actor + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:recipient = { vassal_contract_has_modifiable_obligations = yes } + NOT = { + scope:recipient = { has_trait = lazy } + } + custom_tooltip = { + text = council_rights.tt.already_has_council_rights + scope:recipient = { + NOR = { + vassal_contract_has_flag = can_demand_council_seat + vassal_contract_has_flag = can_demand_kurultai_seat + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_COUNCIL_RIGHTS + } + ## De jure county of theirs you hold. + send_option = { + flag = de_jure_title + is_shown = { + would_actor_consider_dramatic_enticement_trigger = yes + scope:recipient = { + is_landed = yes + any_liege_or_above = { this = scope:actor } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + custom_tooltip = { + text = de_jure_title.tt.no_suitable_county + scope:actor = { + any_held_title = { + actor_has_valid_de_jure_enticement_county_trigger = yes + any_this_title_or_de_jure_above = { + holder ?= { this = scope:recipient } + } + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_DE_JURE_TITLE + } + # Landless Chars + ## County they hold a claim to that you hold. + send_option = { + flag = claimed_title + is_shown = { + would_actor_consider_dramatic_enticement_trigger = yes + trigger_if = { + limit = { + exists = scope:scheme.scheme_target_character + } + scope:recipient = { + is_ruler = no + # And you don't want them _because_ they're in your target's court. + host != scope:scheme.scheme_target_character + } + } + trigger_if = { + limit = { + exists = scope:scheme.scheme_target_title + } + scope:recipient = { + is_ruler = no + # And you don't want them _because_ they're in your target's court. + host != scope:scheme.scheme_target_title.holder + } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:recipient = { + trigger_if = { + limit = { + any_claim = { } + } + custom_tooltip = { + text = claimed_title.tt.no_valid_county + any_claim = { actor_has_valid_claimed_enticement_county_trigger = yes } + } + } + trigger_else = { + custom_tooltip = { + text = claimed_title.tt.no_claims + always = no + } + } + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_CLAIMED_TITLE + } + # Nomad Chars + ## Use Herd + send_option = { + flag = herd + is_shown = { + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + scope:actor = { + government_has_flag = government_is_nomadic + is_ai = no + } + scope:recipient = { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + scope:actor.domicile.herd >= herd_bribe_value + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_HERD + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.domicile.herd >= herd_bribe_value } + desc = SCHEME_AGENT_HERD_VALID + } + } + } + # Cofaithists + ## Piety + send_option = { + flag = piety + is_shown = { + trigger_if = { #Mandala override + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + scope:actor = { + house = { has_house_head_parameter = unlock_agent_piety_bribe } + is_house_head = yes + } + } + trigger_else = { #Everyone else + ## Target amenable to this argument. + scope:recipient = { + OR = { + has_trait = devoted + has_trait = zealous + has_council_position = councillor_court_chaplain + government_has_flag = government_is_theocracy + } + } + ## In-group out-group requirements. + OR = { + ## Either we share a faith. + scope:actor.faith = scope:recipient.faith + ## Or our faiths *really* get along. + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value <= faith_fully_accepted_level + } + } + } + } + # We don't show bribes for schemes where agents will always auto-accept or else deny. + NAND = { + scope:scheme = { is_scheme_category = contract } + scope:recipient = { is_courtier_of = scope:actor } + } + } + is_valid = { + scope:actor.piety >= piety_bribe_value + trigger_if = { #Mandala override + limit = { + scope:actor = { + NOT = { government_has_flag = government_is_mandala } + } + } + NOT = { + scope:recipient = { has_trait = cynical } + } + } + custom_tooltip = { + text = offer_gold.tt.cannot_offer_both_bribes + scope:mandala_trickster = no + } + would_agent_accept_petty_bribes_against_target_trigger = yes + } + localization = SCHEME_AGENT_PIETY + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= piety_bribe_value } + desc = SCHEME_AGENT_PIETY_VALID + } + } + } + send_options_exclusive = no +} diff --git a/common/character_interactions/00_marriage_interactions.txt b/common/character_interactions/00_marriage_interactions.txt index 62a5dfb5..d32e7b30 100644 --- a/common/character_interactions/00_marriage_interactions.txt +++ b/common/character_interactions/00_marriage_interactions.txt @@ -3224,7 +3224,7 @@ offer_concubine = { } } scope:recipient = { - #NOT = { government_has_flag = government_is_herder } + #NOT = { government_has_flag = government_is_true_herder } allowed_concubines = yes is_adult = yes } diff --git a/common/character_interactions/00_modifiy_vassal_contract.txt b/common/character_interactions/00_modifiy_vassal_contract.txt new file mode 100644 index 00000000..b22ce9bc --- /dev/null +++ b/common/character_interactions/00_modifiy_vassal_contract.txt @@ -0,0 +1,2464 @@ +liege_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + interface_priority = 5 + + send_name = "modify_vassal_contract_interaction_SEND" + desc = liege_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + this != scope:actor + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_has_modifiable_obligations = yes + NOT = { government_allows = administrative } + NOT = { government_has_flag = government_is_nomadic } + } + } + + is_valid_showing_failures_only = { + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = liege_modify_vassal_contract_mandala_cooldown + NOT = { + scope:recipient = { var:liege_recently_adjusted_mandala_vassal_contract ?= scope:actor } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + + custom_description = { + text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap" + object = scope:actor + NOT = { + vassal_obligation_increase_tyranny_gain_multiplier > 1 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_vassal + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_vassal > 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_vassal + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_vassal = 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + trigger_else = {} # Otherwise we're fine! + } + } + #The rest + trigger_else_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + + custom_description = { + text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap" + object = scope:actor + NOT = { + vassal_obligation_increase_tyranny_gain_multiplier > 1 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_vassal + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_vassal > 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_vassal + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_vassal = 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + trigger_else = {} # Otherwise we're fine! + } + } + } + + auto_accept = yes + on_accept = { + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + if = { + limit = { + catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Enact changes. + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + # Add tyranny for each level increased. Can spend one hook to avoid one level of tyranny hit. + add_tyranny = vassal_obligation_increase_tyranny_gain + if = { + limit = { vassal_obligation_increase_tyranny_gain != 0 } + stress_impact = { + just = medium_stress_impact_gain + generous = medium_stress_impact_gain + } + } + if = { + limit = { + always = scope:hook + } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + scope:recipient = { + hidden_effect = { + set_subject_contract_modification_blocked = yes + } + set_variable = { + name = liege_recently_adjusted_mandala_vassal_contract + value = scope:actor + years = mandala_vassal_obligation_cooldown_years + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no +} + +vassal_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "modify_vassal_contract_interaction_SEND" + desc = vassal_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_LIEGE + + redirect = { + # need to reverse the role for the UI to work properly + scope:recipient = { + save_scope_as = secondary_recipient + } + scope:actor = { + save_scope_as = recipient + } + + scope:secondary_recipient = { + save_scope_as = actor + } + } + + is_shown = { + scope:recipient = { + top_liege != this + this != scope:actor + liege ?= scope:actor # this excludes tributary contracts by default + vassal_contract_has_modifiable_obligations = yes + NOT = { government_allows = administrative } + NOT = { government_has_flag = government_is_nomadic } + } + } + + is_valid_showing_failures_only = { + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = vassal_modify_vassal_contract_mandala_cooldown + NOT = { + scope:actor = { var:vassal_recently_adjusted_mandala_vassal_contract ?= scope:recipient } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + + scope:recipient = { + # Must be an even trade overall + trigger_if = { + limit = { + count_obligation_improvements_for_vassal_include_hook >= 0 + } + custom_description = { + text = "vassal_modify_vassal_contract_cannot_increase_obligation_level" + object = scope:actor + value = count_obligation_improvements_for_vassal_include_hook + count_obligation_improvements_for_vassal_include_hook = 0 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + } + } + #The rest + trigger_else_if = { #If you're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + + scope:recipient = { + # Must be an even trade overall + trigger_if = { + limit = { + count_obligation_improvements_for_vassal_include_hook >= 0 + } + custom_description = { + text = "vassal_modify_vassal_contract_cannot_increase_obligation_level" + object = scope:actor + value = count_obligation_improvements_for_vassal_include_hook + count_obligation_improvements_for_vassal_include_hook = 0 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + } + } + } + + auto_accept = yes + + on_accept = { + # Enact changes. + scope:recipient = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:actor + if = { + limit = { always = scope:hook } + use_hook = scope:actor + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + hidden_effect = { set_subject_contract_modification_blocked = yes } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + } + } + } + scope:actor = { + set_variable = { + name = vassal_recently_adjusted_mandala_vassal_contract + value = scope:recipient + years = mandala_vassal_obligation_cooldown_years + } + } + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:recipient + } + } + } + } + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:recipient = { + has_usable_hook = scope:actor + } + } + flag = hook + localization = SCHEME_HOOK + } + send_option = { + is_shown = { + scope:recipient = { is_diarch_of_target = scope:actor } + scope:actor = { has_diarchy_parameter = diarch_gets_a_free_change_on_vassal_contract } + } + is_valid = { + scope:recipient = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:actor + } + } + } + } + scope:actor = { has_diarchy_active_parameter = diarch_gets_a_free_change_on_vassal_contract } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:recipient = { has_usable_hook = scope:actor } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no +} + +ai_only_liege_modify_vassal_contract_interaction = { + category = interaction_category_vassal + send_name = "modify_vassal_contract_interaction_SEND" + desc = liege_modify_vassal_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + has_usable_hook = scope:recipient + } + scope:recipient = { + this != scope:actor + NOT = { + has_strong_hook = scope:actor + } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_can_be_modified_trigger = yes + does_ai_liege_in_vassal_contract_desire_obligation_change = yes + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + on_accept = { + scope:actor = { + stress_impact = { + generous = minor_stress_impact_gain + } + } + + scope:recipient = { + set_subject_contract_modification_blocked = yes + trigger_event = char_interaction.0250 + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + ai_potential = { + trigger_if = { + limit = { + NOT = { government_allows = administrative } + } + is_at_war = no + } + } + + ai_targets = { + ai_recipients = vassals + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 12 + kingdom = 24 + empire = 24 + hegemony = 36 + } + + ai_will_do = { + base = 100 + + modifier = { + factor = 0 + scope:recipient = { + OR = { + AND = { + scope:actor = { + ai_greed <= high_positive_ai_value + } + has_relation_friend = scope:actor + } + has_relation_best_friend = scope:actor + has_relation_soulmate = scope:actor + } + } + } + } +} + +# AI only interaction for specifically Admin Province obligations +ai_only_liege_modify_vassal_contract_admin_province_interaction = { + category = interaction_category_vassal + send_name = "modify_vassal_contract_interaction_SEND" + desc = liege_modify_vassal_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + AND = { + government_has_flag = government_uses_admin_province_obligations + scope:recipient = { government_has_flag = government_uses_admin_province_obligations } + } + } + scope:recipient = { + this != scope:actor + NOT = { + has_strong_hook = scope:actor + } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + government_has_flag = government_uses_admin_province_obligations + + does_ai_liege_in_vassal_contract_desire_admin_province_obligation_change = yes + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + on_accept = { + scope:actor = { + stress_impact = { + generous = minor_stress_impact_gain + } + } + + scope:recipient = { + trigger_event = char_interaction.0253 + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + ai_targets = { + ai_recipients = vassals + max = 10 + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 6 + empire = 6 + hegemony = 3 + } + + is_available = { + # This also blocks non-admin govs with admin vassals from changing province obligations... but we're OK with that. + government_has_flag = government_uses_admin_province_obligations + } + + ai_will_do = { + base = 100 + } +} + +ai_only_vassal_modify_vassal_contract_interaction = { + category = interaction_category_vassal + send_name = "modify_vassal_contract_interaction_SEND" + desc = vassal_modify_vassal_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + top_liege != this + has_usable_hook = scope:recipient + vassal_contract_can_be_modified_trigger = yes + does_ai_vassal_in_vassal_contract_desire_obligation_change = yes + } + scope:recipient = { + this != scope:actor + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + NOT = { + has_strong_hook = scope:actor + } + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + on_accept = { + scope:recipient = { + trigger_event = char_interaction.0251 + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + ai_potential = { + always = yes + } + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 24 + kingdom = 24 + empire = 36 + hegemony = 0 + } + + ai_will_do = { + base = 100 + + modifier = { + factor = 0 + scope:recipient = { + OR = { + AND = { + scope:actor = { + ai_greed <= high_positive_ai_value + } + has_relation_friend = scope:actor + } + has_relation_best_friend = scope:actor + has_relation_soulmate = scope:actor + } + } + } + } +} + +# Separate interactions are set up for Administrative - This is to help with localisation and some of the effects +admin_liege rep_liege_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + interface_priority = 1000 + icon = icon_contract_modification_single + + send_name = admin_liege rep_liege_modify_vassal_contract_interaction + desc = admin_liege rep_liege_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + this != scope:actor + OR = { + is_landed = yes + is_councillor_of = scope:actor.top_liege + } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_has_modifiable_obligations = yes + government_allows = administrative + any_held_title = { + OR = { + tier >= holder.main_administrative_tier + tier >= holder.min_title_maa_tier + } + is_noble_family_title = no + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + tgp_is_ceremonial_liege_trigger = no + } + } + + can_send = { + trigger_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:recipient = { + has_variable = admin_contract_cooldown + } + } + custom_tooltip = { + text = admin_contract_cooldown_desc + scope:recipient = { + NOT = { has_variable = admin_contract_cooldown } + } + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + } + } + } + + auto_accept = yes + on_accept = { + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + if = { + limit = { + catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Enact changes. + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + + scope:recipient = { + hidden_effect = { + set_variable = { + name = admin_contract_cooldown + value = yes + years = admin_contract_cooldown_value + } + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + + # Update the succession law for celestial province types if applicable - That way, we don't have to wait until the current law invalidates. + if = { + limit = { + government_has_flag = government_is_celestial + scope:obligation.vassal_contract_type = vassal_contract:celestial_provinces + } + + if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_military + vassal_contract_has_flag = celestial_province_protectorate + } + NOT = { has_realm_law = celestial_military_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_military_appointment_succession_law + } + else_if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_standard + vassal_contract_has_flag = celestial_province_industrial + vassal_contract_has_flag = celestial_province_metropolitan + } + NOT = { has_realm_law = celestial_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_appointment_succession_law + } + } + } + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_options_exclusive = no +} + +admin_vassal_modify_vassal_contract_interaction = { + special_interaction = vassal_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + interface_priority = 65 + common_interaction = yes + icon = icon_contract_modification_single + + filter_tags = { admin_liege rep_liege } + + send_name = "admin_vassal_modify_vassal_contract_interaction_send" + desc = admin_vassal_modify_vassal_contract_interaction_desc + + is_shown = { + scope:actor = { + top_liege != this + this != scope:recipient + liege ?= scope:recipient # this excludes tributary contracts by default + vassal_contract_has_modifiable_obligations = yes + government_allows = administrative + tgp_is_ceremonial_liege_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_tooltip = { + text = admin_vassal_not_holding_a_theme_desc + any_held_title = { + OR = { + tier >= holder.main_administrative_tier + tier >= holder.min_title_maa_tier + } + is_noble_family_title = no + } + } + NOT = { is_at_war_with = scope:recipient } + } + } + + can_send = { + trigger_if = { #If you're blocked we don't want to show anything else (we don't really use this for admin, but we'll keep the logic, just in case) + limit = { + scope:actor = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:actor = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:actor = { + has_variable = admin_contract_cooldown + } + } + custom_tooltip = { + text = admin_contract_cooldown_desc_vassal + scope:actor = { + NOT = { has_variable = admin_contract_cooldown } + } + } + } + trigger_else = { + custom_tooltip = { + text = admin_contract_request_cooldown_desc + scope:actor = { + NOT = { has_variable = admin_contract_request_cooldown } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + } + + # You can afford the influence cost + trigger_if = { + limit = { + NOR = { + scope:hook = yes + scope:dominant_family = yes + } + } + scope:actor = { + influence >= major_influence_value + } + } + } + } + + auto_accept = { + custom_tooltip = { + text = admin_vassal_force_obligation_change_desc + OR = { + scope:hook = yes + scope:dominant_family = yes + scope:diarch = yes + } + } + } + + on_accept = { + # Enact changes + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + + # If you use a hook - Spend it + if = { + limit = { always = scope:hook } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + # If you didn't use a hook or leveraged your position as a Dominant Family, pay Influence + if = { + limit = { + has_changed_contract_obligation_trigger = yes # Don't show the cost unless we actually change the contract + NOR = { + scope:hook = yes + scope:dominant_family = yes + scope:diarch = yes + } + } + scope:actor = { + change_influence = major_influence_loss + } + } + + # Activate cooldown - To prevent liege from changing it too soon + hidden_effect = { + set_variable = { + name = admin_contract_cooldown + value = yes + years = admin_contract_cooldown_value + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:actor = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + + # Update the succession law for celestial province types if applicable - That way, we don't have to wait until the current law invalidates. + if = { + limit = { + government_has_flag = government_is_celestial + scope:obligation.vassal_contract_type = vassal_contract:celestial_provinces + } + + if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_military + vassal_contract_has_flag = celestial_province_protectorate + } + NOT = { has_realm_law = celestial_military_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_military_appointment_succession_law + } + else_if = { + limit = { + OR = { + vassal_contract_has_flag = celestial_province_standard + vassal_contract_has_flag = celestial_province_industrial + vassal_contract_has_flag = celestial_province_metropolitan + } + NOT = { has_realm_law = celestial_appointment_succession_law } + } + add_realm_law_skip_effects = celestial_appointment_succession_law + } + } + } + } + } + } + + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:recipient = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:actor + } + } + } + } + scope:recipient = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:actor + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + # Improving contract catalyst + if = { + limit = { + scope:actor.count_obligation_improvements_for_vassal > 0 + scope:recipient = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:actor + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:actor + } + } + } + } + scope:recipient = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:actor + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:recipient + } + } + } + } + } + } + + on_decline = { + # Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept) + hidden_effect = { + scope:actor = { + set_variable = { + name = admin_contract_request_cooldown + value = yes + years = admin_contract_cooldown_value + } + } + } + } + + # Send Options + # Hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + # Dominant Family + send_option = { + is_shown = { + scope:actor = { + house ?= { is_dominant_family = yes } + } + } + flag = dominant_family + localization = OPTION_DOMINANT_FAMILY + } + # Diarch + send_option = { + is_shown = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + is_valid = { + scope:actor = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:recipient + } + } + } + } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + + # Governor efficiency - Skilled governors are more likely to get accepted + modifier = { + add = scope:actor.governor_efficiency_presented + desc = AI_GOVERNOR_EFFICIENCY + } + + # Members of a powerful family are more likely to get accepted + modifier = { + scope:actor = { + house ?= { is_powerful_family = yes } + NOT = { house ?= scope:recipient.house } + } + add = 50 + desc = AI_POWERFUL_FAMILY + } + + # Members of the emperors family are much more likely to get accepted + modifier = { + scope:actor = { + house ?= scope:recipient.house + } + add = 60 + desc = AI_SAME_HOUSE + } + } +} + +# Separate interactions are set up for Nomads - This is to help with localisation and some of the effects +nomad_liege_modify_vassal_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + + send_name = nomad_liege_modify_vassal_contract_interaction + desc = nomad_liege_modify_vassal_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + NOT = { this = scope:actor } + liege ?= scope:actor # this excludes tributary contracts by default + is_ruler = yes + vassal_contract_has_modifiable_obligations = yes + government_has_flag = government_is_nomadic + } + } + + is_valid_showing_failures_only = { + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + } + + can_send = { + trigger_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + + custom_description = { + text = "liege_modify_vassal_contract_cannot_exceed_tyranny_cap" + object = scope:actor + NOT = { + vassal_obligation_increase_tyranny_gain_multiplier > 1 + } + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_vassal + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_vassal > 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_vassal + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_vassal = 0 } + custom_description = { + text = "vassal_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + trigger_else = {} # Otherwise we're fine! + } + } + } + + auto_accept = yes + on_accept = { + hidden_effect = { + # Struggle Catalysts + ## We work these out first so they're not invalidated by the actual effect block. + if = { + limit = { + catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + if = { + limit = { + catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection + character = scope:actor + } + } + } + } + + # Improving contract catalyst + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal > 0 + scope:actor = { + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal + character = scope:actor + } + } + } + } + } + + # Enact changes. + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + if = { + limit = { vassal_obligation_increase_tyranny_gain != 0 } + stress_impact = { + just = medium_stress_impact_gain + generous = medium_stress_impact_gain + } + } + if = { + limit = { + always = scope:hook + } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + scope:recipient = { + hidden_effect = { + set_subject_contract_modification_blocked = yes + set_variable = { + name = vassal_modify_contract_cooldown + value = yes + years = vassal_modify_contract_cooldown_value + } + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no +} + +nomad_vassal_modify_vassal_contract_interaction = { + special_interaction = vassal_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + interface_priority = 65 + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "nomad_vassal_modify_vassal_contract_interaction_send" + desc = nomad_vassal_modify_vassal_contract_interaction_desc + + redirect = { + # need to reverse the role for the UI to work properly + scope:recipient = { + save_scope_as = secondary_recipient + } + scope:actor = { + save_scope_as = recipient + } + + scope:secondary_recipient = { + save_scope_as = actor + } + } + + is_shown = { + scope:recipient = { + is_independent_ruler = no + NOT = { this = scope:actor } + liege ?= scope:actor # this excludes tributary contracts by default + vassal_contract_has_modifiable_obligations = yes + government_has_flag = government_is_nomadic + } + } + + is_valid_showing_failures_only = { + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + trigger_if = { #If you're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:actor = { + has_variable = vassal_modify_contract_cooldown + } + } + custom_tooltip = { + text = vassal_modify_contract_cooldown_desc + scope:actor = { + NOT = { has_variable = vassal_modify_contract_cooldown } + } + } + } + trigger_else = { + custom_tooltip = { + text = nomad_contract_request_cooldown_desc + scope:actor = { + NOT = { has_variable = nomad_contract_request_cooldown } + } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + } + + scope:recipient = { + # Must be an even trade overall + custom_description = { + text = "vassal_modify_vassal_contract_cannot_increase_obligation_level" + object = scope:actor + value = count_obligation_improvements_for_vassal_include_hook + count_obligation_improvements_for_vassal_include_hook = 0 + } + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + } + } + } + + auto_accept = yes + + on_accept = { + # Enact changes + scope:recipient = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:actor + if = { + limit = { always = scope:hook } + use_hook = scope:actor + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + # Activate cooldown - To prevent liege from changing it too soon + hidden_effect = { + set_variable = { + name = vassal_modify_contract_cooldown + value = yes + years = vassal_modify_contract_cooldown_value + } + } + + hidden_effect = { set_subject_contract_modification_blocked = yes } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + vassal_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + } + } + } + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + on_decline = { + # Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept) + hidden_effect = { + scope:recipient = { + set_variable = { + name = nomad_contract_request_cooldown + value = yes + years = vassal_modify_contract_cooldown_value + } + } + } + } + + # Send Options + # Hook + send_option = { + is_valid = { + scope:recipient = { + has_usable_hook = scope:actor + } + } + flag = hook + localization = SCHEME_HOOK + } + send_option = { + is_shown = { + scope:recipient = { is_diarch_of_target = scope:actor } + } + is_valid = { + scope:recipient = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:actor + } + } + } + } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:recipient = { has_usable_hook = scope:actor } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no +} + +suzerain_modify_tributary_contract_interaction = { + special_interaction = liege_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "suzerain_modify_tributary_contract_interaction_send" + desc = suzerain_modify_tributary_contract_interaction_desc + + force_notification = yes + notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL + + is_shown = { + scope:recipient = { + is_tributary_of = scope:actor # excludes vassals by default + subject_contract_has_modifiable_obligations = yes + NOT = { government_has_flag = government_is_true_herder } + } + } + + is_valid_showing_failures_only = { + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = suzerain_modify_subject_contract_mandala_cooldown + NOT = { + scope:recipient = { var:suzerain_recently_adjusted_mandala_subject_contract ?= scope:actor } + } + } + scope:actor = { + has_changed_contract_obligation_trigger = yes + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_tributary + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_tributary > 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_tributary + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_tributary = 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + + # You can afford the prestige cost of an unequal contract + trigger_else_if = { + limit = { + scope:obligations_favoring_tributary < 0 + NOT = { always = scope:hook } + } + scope:actor = { piety >= major_piety_value } + } + trigger_else = {} # Otherwise we're fine! + } + } + trigger_else_if = { #If they're blocked we don't want to show anything else + limit = { + scope:recipient = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:recipient = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + scope:actor = { + has_changed_contract_obligation_trigger = yes + + # Cannot change more than three things at once + custom_description = { + text = "vassal_modify_vassal_contract_obligation_change_limit" + value = list_size:changed_obligations + list_size:changed_obligations <= max_contract_changes + } + + # If the trade without the hook usage is already in the vassal's favour or fair then don't waste your hook + save_temporary_scope_value_as = { + name = obligations_favoring_tributary + value = scope:recipient.count_obligation_improvements_for_vassal + } + trigger_if = { + limit = { scope:obligations_favoring_tributary > 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_vassal_favor" + object = scope:recipient + value = scope:obligations_favoring_tributary + NOT = { always = scope:hook } + } + } + trigger_else_if = { + limit = { scope:obligations_favoring_tributary = 0 } + custom_description = { + text = "tributary_modify_vassal_contract_unnecessary_hook_usage_equal" + object = scope:recipient + NOT = { always = scope:hook } + } + } + + # You can afford the prestige cost of an unequal contract + trigger_else_if = { + limit = { + scope:obligations_favoring_tributary < 0 + NOT = { always = scope:hook } + } + scope:actor = { + prestige >= medium_prestige_value + } + } + trigger_else = {} # Otherwise we're fine! + } + } + } + + auto_accept = yes + + on_accept = { + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + if = { + limit = { + always = scope:hook + } + use_hook = scope:recipient + add_achievement_flag_effect = { FLAG = achievement_fine_print_flag } + } + + # Prestige and opinion cost of making an unequal contract without a hook + if = { + limit = { + scope:recipient.count_obligation_improvements_for_vassal < 0 + NOT = { always = scope:hook } + } + + if = { + limit = { government_has_flag = government_is_mandala } + add_piety = major_piety_loss + } + else = { add_prestige = medium_prestige_loss } + + scope:recipient = { + add_opinion = { + modifier = outraged_opinion + opinion = -30 + target = scope:actor + } + } + + every_tributary = { + limit = { + NOT = { this = scope:recipient } + } + add_opinion = { + modifier = outraged_opinion + opinion = -10 + target = scope:actor + } + } + } + + scope:recipient = { + hidden_effect = { + set_subject_contract_modification_blocked = yes + } + set_variable = { + name = suzerain_recently_adjusted_mandala_subject_contract + value = scope:actor + years = mandala_vassal_obligation_cooldown_years + } + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:recipient = { + tributary_contract_set_obligation_level = { + type = scope:obligation.vassal_contract_type + level = scope:obligation + } + } + } + } + } + + # Additional Flavor Titles + scope:recipient = { additional_flavor_check_effect = yes } + } + + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no +} + +subject_modify_tributary_contract_interaction = { + special_interaction = vassal_modify_vassal_contract + interface = modify_vassal_contract + category = interaction_category_vassal + interface_priority = 65 + common_interaction = yes + icon = icon_contract_modification_single + + send_name = "subject_modify_tributary_contract_interaction_send" + desc = subject_modify_tributary_contract_interaction_desc + + is_shown = { + scope:actor = { + is_tributary_of = scope:recipient # excludes vassals by default + subject_contract_has_modifiable_obligations = yes + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_travelling = no + } + NOT = { scope:recipient = { is_at_war_with = scope:actor } } + } + + can_send = { + #Mandala gets special treatment + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + } + custom_tooltip = { + text = subject_modify_subject_contract_mandala_cooldown + NOT = { + scope:actor = { var:subject_recently_adjusted_mandala_subject_contract ?= scope:recipient } + } + } + # You can afford the cost if there is one + scope:actor = { + has_changed_contract_obligation_trigger = yes + trigger_if = { + limit = { scope:hook = no } # no cost + trigger_if = { + limit = { subject_standing < 0 } # this means we don't use subject standing + trigger_if = { + limit = { + government_has_flag = government_is_nomadic + scope:recipient = { government_has_flag = government_is_nomadic } + } + domicile.herd >= domicile.major_herd_value + } + trigger_else = { + gold >= major_gold_value + } + } + trigger_else = { + subject_standing > 20 + } + } + } + } + trigger_else_if = { #If you're blocked we don't want to show anything else (we don't really use this for admin, but we'll keep the logic, just in case) + limit = { + scope:actor = { + subject_contract_is_blocked_from_modification = yes + } + } + scope:actor = { + subject_contract_is_blocked_from_modification = no + } + } + trigger_else = { + # There is no cooldown present - To make sure we somehow don't show both cooldowns at the same time, we split them into separate triggers + trigger_if = { + limit = { + scope:actor = { + has_variable = tributary_modify_contract_cooldown + } + } + custom_tooltip = { + text = tributary_modify_contract_cooldown_desc + scope:actor = { + NOT = { has_variable = tributary_modify_contract_cooldown } + } + } + } + trigger_else = { + custom_tooltip = { + text = tributary_modify_contract_cooldown_desc + scope:actor = { + NOT = { has_variable = tributary_modify_contract_cooldown } + } + } + } + + # You can afford the cost if there is one + scope:actor = { + trigger_if = { + limit = { scope:hook = no } # no cost + trigger_if = { + limit = { subject_standing < 0 } # this means we don't use subject standing + trigger_if = { + limit = { + government_has_flag = government_is_nomadic + scope:recipient = { government_has_flag = government_is_nomadic } + } + domicile.herd >= domicile.major_herd_value + } + trigger_else = { + gold >= major_gold_value + } + } + trigger_else = { + subject_standing > 20 + } + } + } + } + } + + auto_accept = { + custom_tooltip = { + text = nomad_vassal_force_obligation_change_desc + scope:hook = yes + } + } + + on_accept = { + # Enact changes + scope:actor = { + send_interface_message = { + type = msg_vassal_contract_change + title = modify_vassal_contract_interaction_notification + right_icon = scope:recipient + + # If you use a hook - Spend it + if = { + limit = { always = scope:hook } + use_hook = scope:recipient + } + else = { + if = { + limit = { subject_standing < 0 } # this means we don't use subject standing + if = { + limit = { + government_has_flag = government_is_nomadic + scope:recipient = { government_has_flag = government_is_nomadic } + } + pay_herd = { + target = scope:recipient + value = domicile.major_herd_value + } + } + else = { + pay_short_term_gold = { + target = scope:recipient + gold = major_gold_value + } + } + } + else = { + if = { # the subject tilting the contract in their favor costs Subject Standing + limit = { scope:new_value < 0 } + add_subject_standing = { + value = 10 + multiply = scope:new_value + } + } + } + } + + # Activate cooldown - To prevent liege from changing it too soon + hidden_effect = { + set_variable = { + name = tributary_modify_contract_cooldown + value = yes + years = tributary_modify_contract_cooldown_value + } + } + set_variable = { + name = subject_recently_adjusted_mandala_subject_contract + value = scope:recipient + years = mandala_vassal_obligation_cooldown_years + } + + every_in_list = { + list = changed_obligations + + save_scope_as = obligation + + scope:actor = { + tributary_contract_set_obligation_level = { + type = scope:obligation.subject_contract_type + level = scope:obligation + } + } + } + } + } + + # If there's a diarch involved, and they called in their change, that gets flagged. + diarch_changed_own_contract_effect = yes + } + + on_decline = { + # Activate cooldown - You may only ask for it to be changed every so often (this mostly exists for MP, since you cannot send it to the AI unless they accept) + hidden_effect = { + scope:actor = { + set_variable = { + name = tributary_modify_contract_cooldown + value = yes + years = tributary_modify_contract_cooldown_value + } + } + } + } + + # Send Options + # Hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + send_option = { + is_shown = { + scope:actor = { is_diarch_of_target = scope:recipient } + } + is_valid = { + scope:actor = { + trigger_if = { + limit = { has_variable_list = diarch_contract_rights_used_list } + NOT = { + is_target_in_variable_list = { + name = diarch_contract_rights_used_list + target = scope:recipient + } + } + } + } + } + flag = diarch + localization = CALL_IN_DIARCH_RIGHTS + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + + ai_accept = { + base = -25 + + # Opinion Factor + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + + modifier = { + add = { + add = scope:new_value + multiply = -20 #Overlord favoring options have a negative score + if = { # the Chinese Emperor cares less since they get tribute through missions as well + limit = { + scope:new_value < 0 + scope:actor = { + OR = { + has_subject_contract_group = tributary_celestial + has_subject_contract_group = tributary_hegemonic + } + } + } + multiply = 0.5 + } + } + desc = AI_CONTRACT_BALANCE + } + } +} + +ai_only_hegemonic_tributary_modify_tributary_contract_interaction = { + category = interaction_category_vassal + desc = subject_modify_tributary_contract_interaction_desc + + auto_accept = yes + + is_shown = { + scope:actor = { + is_ai = yes + is_available = yes # Let's not have the AI do this when they're away from home etc (like paying tribute) + is_tributary_of = scope:recipient # excludes vassals by default + OR = { + has_subject_contract_group = tributary_celestial + has_subject_contract_group = tributary_hegemonic + } + subject_standing > 40 + subject_contract_has_modifiable_obligations = yes + does_ai_subject_in_subject_contract_desire_obligation_change = yes + NOT = { is_at_war_with = scope:recipient } + } + } + + on_accept = { + scope:actor = { + if = { + # if the subject has a Seal of Investiture, they will always ask for an Investiture Privilege if they can + limit = { + any_character_artifact = { + OR = { + artifact_type = seal_of_investiture + artifact_type = seal_of_investiture_court + } + } + } + random_list = { + 33 = { + trigger = { + tributary_contract_obligation_level_can_be_increased = celestial_tributary_investiture_privilege_trade + } + save_scope_value_as = { name = ask value = flag:trade } + } + 33 = { + trigger = { + tributary_contract_obligation_level_can_be_increased = celestial_tributary_investiture_privilege_marriage + } + save_scope_value_as = { name = ask value = flag:marriage } + } + 33 = { + trigger = { + tributary_contract_obligation_level_can_be_increased = celestial_tributary_investiture_privilege_politics + } + save_scope_value_as = { name = ask value = flag:politics } + } + } + } + suzerain = { + trigger_event = char_interaction.0252 + } + } + } + + ai_potential = { + always = yes + } + + ai_targets = { + ai_recipients = suzerain + } + + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 0 + } + + ai_will_do = { + base = 100 + } +} diff --git a/common/character_interactions/00_prison_interactions.txt b/common/character_interactions/00_prison_interactions.txt new file mode 100644 index 00000000..499e303b --- /dev/null +++ b/common/character_interactions/00_prison_interactions.txt @@ -0,0 +1,8286 @@ +imprison_interaction = { + interface_priority = 120 + common_interaction = yes + icon = prison + + category = interaction_category_hostile + highlighted_reason = { + triggered_desc = { + trigger = { + scope:actor = { + has_title = title:e_minister_of_justice + NOT = { has_imprisonment_reason = scope:recipient } + } + } + desc = HIGHLIGHTED_MINISTER_IMPRISONMENT_REASON + } + triggered_desc = { + trigger = { + scope:actor = { + has_imprisonment_reason = scope:recipient + } + } + desc = HIGHLIGHTED_HAS_IMPRISONMENT_REASON + } + } + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + desc = imprison_interaction_desc + + greeting = negative + notification_text = REQUEST_ARREST_NOTIFICATION_TEXT + pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED + pre_answer_no_key = ANSWER_CANT_SUCCEED + pre_answer_yes_key = ANSWER_WILL_SUCCEED + pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE + + on_decline_summary = { + triggered_desc = { + trigger = { + scope:recipient = { + NOR = { + AND = { + has_government = landless_adventurer_government + reverse_has_opinion_modifier = { + target = scope:actor + modifier = eviction_ignored_opinion + } + } + scope:actor = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + } + } + } + } + desc = imprison_decline_summary + } + } + + ai_potential = { + trigger_if = { + limit = { has_realm_law_flag = imprisonment_toggle_enable } + has_realm_law_flag = imprisonment_toggle_on + } + is_imprisoned = no + } + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + OR = { + AND = { + has_title = title:e_minister_of_justice + scope:recipient = { + tgp_is_any_minister = no + liege = { + basic_allowed_to_imprison_character_trigger = { + CHARACTER = scope:recipient + } + } + } + } + basic_allowed_to_imprison_character_trigger = { + CHARACTER = scope:recipient + } + } + } + # Scope:recipient can't be visiting elsewhere. + trigger_if = { + limit = { + scope:recipient = { is_courtier_of = scope:actor } + } + NOT = { + scope:recipient.host = { + any_foreign_court_guest = { this = scope:recipient } + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + trigger_if = { + limit = { + has_title = title:e_minister_of_justice + scope:recipient = { + tgp_is_any_minister = no + } + NOT = { + allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + } + top_liege = { + allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + } + trigger_else = { + allowed_to_imprison_character_trigger = { CHARACTER = scope:recipient } + } + trigger_if = { + limit = { + government_has_flag = government_is_nomadic + } + NOT = { has_realm_law = nomadic_authority_1 } + } + trigger_if = { + limit = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + NOT = { + is_close_or_extended_family_of = scope:actor.top_liege + } + } + } + } + imprison_neutral_is_valid_showing_failures_only_triggers_trigger = yes + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + trigger_if = { + limit = { + is_ai = no + } + scope:recipient = { + trigger_if = { + limit = { + has_government = landless_adventurer_government + reverse_has_opinion_modifier = { + target = scope:actor + modifier = eviction_ignored_opinion + } + } + is_travelling = no + } + } + } + trigger_else = { + OR = { + has_imprisonment_reason = scope:recipient + any_character_struggle = { + involvement = involved + } + } + } + } + } + + is_highlighted = { + scope:recipient = { + is_imprisoned = no + } + scope:actor = { + OR = { + has_imprisonment_reason = scope:recipient + has_title = title:e_minister_of_justice + } + } + } + + #Use hook + send_option = { + is_valid = { + exists = scope:recipient + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_imprison_interaction_value + treasury = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + NOT = { is_courtier_of = scope:actor } + } + } + value = { + value = 0 + desc = BASE + } + add = { + value = scope:actor.major_treasury_value + desc = IMPRISON_MINISTER_OF_JUSTICE_TREASURY_COST + } + } + } + } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_auto_accept = { + # the rest of the necessary logic is covered by auto_accept also triggering on_accept below + scope:recipient = { + trigger_event = char_interaction.0233 + } + } + + on_accept = { + scope:actor = { + if = { + limit = { + has_title = title:e_minister_of_justice + } + if = { + limit = { + NOR = { + has_imprisonment_reason = scope:recipient + scope:recipient.liege = { + has_imprisonment_reason = scope:recipient + } + scope:hook = yes + } + any_character_situation = { + situation_type = dynastic_cycle + situation_top_has_catalyst = catalyst_minister_imprison + } + } + save_scope_value_as = { + name = use_strife_not_tyranny + value = yes + } + situation:dynastic_cycle = { + trigger_situation_catalyst = { + catalyst = catalyst_minister_imprison + character = scope:recipient + } + } + } + if = { + limit = { + government_allows = merit + } + change_merit = { + value = minor_merit_gain + multiply = scope:recipient.highest_held_title_tier + } + } + if = { + limit = { + government_has_flag = government_has_influence + } + change_influence = { + value = minor_influence_gain + multiply = scope:recipient.highest_held_title_tier + } + } + scope:recipient.liege = { + if = { + limit = { has_imprisonment_reason = scope:recipient } + consume_imprisonment_reasons = scope:recipient + } + } + } + } + if = { + limit = { scope:hook = yes } + scope:actor = { use_hook = scope:recipient } + } + illegal_imprisonment_dread_effect = yes + imprison_court_chaplain_consequences_effect = yes + imprison_HoF_consequences_effect = yes + scope:recipient = { + if = { + limit = { + is_a_faction_member = yes + liege = scope:actor + } + joined_faction = { save_scope_as = retaliating_faction } + } + } + imprison_character_effect = { + TARGET = scope:recipient + IMPRISONER = scope:actor + } + # If they recently revoked your title, or asked for your excommunication, they become your rival + imprison_attempt_escalates_rivalry_effect = yes + scope:actor = { + trigger_event = char_interaction.0231 + if = { + limit = { + has_imprisonment_reason = scope:recipient + } + stress_impact = { + compassionate = minor_stress_impact_gain + forgiving = minor_stress_impact_gain + } + } + else = { + stress_impact = { + just = medium_stress_impact_gain + compassionate = medium_stress_impact_gain + } + if = { + limit = { exists = scope:retaliating_faction} + scope:retaliating_faction = { + imprisonment_retribution_start_faction_war_if_valid = yes + } + } + } + } + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # If we're a clan this interaction affects unity + if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity + limit = { + NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } + scope:recipient = { is_landed_or_landless_administrative = yes } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity + limit = { + NOT = { scope:actor = { has_imprisonment_reason = scope:recipient } } + scope:recipient = { is_landed_or_landless_administrative = no } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family) + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # Harrying logic. + scope:actor = { + if = { + limit = { + character_is_valid_for_harrying_of_the_north_trigger = yes + scope:recipient = { + character_is_valid_for_harrying_of_the_north_trigger = yes + is_important_or_vip_struggle_character = yes + } + culture != scope:recipient.culture + } + global_var:harrying_of_the_north = { save_scope_as = story } + if = { + limit = { + character_is_valid_norman_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_pacification_effect = { AMOUNT = harrying_minor_increase_value } + } + else_if = { + limit = { + character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes + scope:recipient = { character_is_valid_norman_for_harrying_of_the_north_trigger = yes } + } + ep3_increase_resistance_effect = { AMOUNT = harrying_minor_increase_value } + } + } + } + } + + on_decline = { + if = { + limit = { + scope:recipient = { + has_government = landless_adventurer_government + reverse_has_opinion_modifier = { + target = scope:actor + modifier = eviction_ignored_opinion + } + } + } + scope:recipient = { + if = { + limit = { current_military_strength >= ep3_interactions_events_0500_troops_count_value } + start_war = { + cb = ep3_laamp_apprehend_adventurer_cb + target = scope:actor + } + } + else = { + # Remove them immediately. + remove_laamp_from_exiled_county_automatically_effect = { + PROVINCE = scope:recipient.location + LAAMP = scope:recipient + } + } + } + } + else = { + scope:actor = { + imprison_HoF_consequences_effect = yes + imprison_tyranny_effect = yes + } + scope:recipient = { + #If target is count or higher, start war. + if = { + limit = { + is_playable_character = yes + primary_title.tier > tier_barony + } + if = { + limit = { + is_a_faction_member = yes + liege = scope:actor + joined_faction = { + faction_target = scope:actor + NOT = { faction_is_type = populist_faction } + } + } + joined_faction = { + save_scope_as = retaliating_faction # For loc + imprisonment_retribution_start_faction_war_if_valid = yes + } + hidden_effect = { + if = { + limit = { NOT = { exists = joined_faction.faction_war } } + war_for_imprison_effect = yes + } + } + } + else = { + war_for_imprison_effect = yes + } + } + #If target is a baron or unlanded, have them escape. + else = { + if = { #To block them from being instantly rehired + limit = { + is_councillor_of = scope:actor + can_be_fired_from_council_trigger = { COURT_OWNER = scope:actor } + } + set_variable = { + name = escaped_imprisonment_from + value = scope:actor + years = 20 + } + } + imprison_court_chaplain_consequences_effect = yes + if = { + limit = { + is_landed_or_landless_administrative = yes + } + depose_effect = { DEPOSER = scope:actor } + } + else_if = { + limit = { + is_hostage = yes + warden = scope:actor + } + save_scope_as = imprison_failure + save_scope_as = hostage + warden = { save_scope_as = warden } + home_court = { save_scope_as = home_court } + scope:warden = { trigger_event = bp2_hostage_system.0400 } + scope:home_court = { trigger_event = bp2_hostage_system.0401 } + return_hostage = yes + } + else_if = { + limit = { + is_landed_or_landless_administrative = no + trigger_if = { + limit = { + is_councillor = yes + } + can_be_fired_from_council_trigger = { COURT_OWNER = scope:recipient.liege } + } + trigger_if = { + limit = { + exists = scope:actor.faith.religious_head + } + scope:actor.faith.religious_head != scope:recipient + } + } + select_and_move_to_pool_effect = yes + } + add_opinion = { + target = scope:actor + modifier = attempted_imprisonment_opinion + } + } + } + + if = { + limit = { + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = treasonous_imprison_refusal + } + } + } + } + + #Remove them as guardian/ward for any courtier (feedback given in char_interaction.0230) + scope:actor = { + if = { + limit = { + any_courtier = { + has_relation_guardian = scope:recipient + } + } + every_courtier = { + limit = { + has_relation_guardian = scope:recipient + } + save_scope_as = ward + scope:recipient = { remove_relation_ward = scope:ward } + + scope:ward = { + if = { + limit = { + host != liege + } + return_to_court = yes + } + guardian_remove_opinion_effect = { + GUARDIAN = scope:recipient + WARD = this + WARD_LIEGE = scope:actor + } + } + + add_to_list = ward_children + } + } + if = { + limit = { + any_courtier = { + has_relation_ward = scope:recipient + } + } + random_courtier = { + limit = { + has_relation_ward = scope:recipient + } + save_scope_as = guardian + scope:guardian = { remove_relation_ward = scope:recipient } + + scope:guardian = { + if = { + limit = { + host != liege + } + return_to_court = yes + } + guardian_remove_opinion_effect = { + GUARDIAN = this + WARD = scope:recipient + WARD_LIEGE = scope:actor + } + } + + add_to_list = guardian_list + } + + hidden_effect = { + scope:guardian = { + send_interface_message = { + type = event_childhood_neutral + title = remove_guardian_interaction_notification + left_icon = scope:recipient + right_icon = scope:guardian + remove_guardian_effect = { + GUARDIAN = scope:guardian + WARD = scope:recipient + RETURN_WARD = yes + HIDE_OPINION = no + } + } + } + } + } + } + + scope:actor = { + if = { + limit = { + scope:recipient = { + OR = { + is_playable_character = no + AND = { + is_playable_character = yes + primary_title.tier = tier_barony + } + } + } + } + trigger_event = char_interaction.0230 + } + } + + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + # If we're a clan this interaction affects unity + if = { # If you don't have an imprisonment reason, and the target is landed, you lose more unity + limit = { + NOT = { + scope:actor = { has_imprisonment_reason = scope:recipient } + } + scope:recipient = { is_landed_or_landless_administrative = yes } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { # If you don't have an imprisonment reason, and the target is unlanded, you lose slightly less unity + limit = { + NOT = { + scope:actor = { has_imprisonment_reason = scope:recipient } + } + scope:recipient = { is_landed_or_landless_administrative = no } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { # If you have a valid reason, you lose only a tiny bit of unity (criminal or not, they are still family) + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = miniscule_unity_loss + DESC = clan_unity_imprison.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + auto_accept = { + # OR does not display properly here + trigger_if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + } + } + custom_description = { + text = you_are_the_minister_of_justice + scope:actor = { + has_title = title:e_minister_of_justice + } + } + } + trigger_else_if = { + limit = { + scope:recipient = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + } + } + custom_description = { + text = noble_family_head_cannot_refuse_your_power + scope:recipient = { + is_landed = no + any_held_title = { + is_noble_family_title = yes + } + } + } + } + trigger_else = { + always = no + } + } + + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + add = { + value = scope:actor.intrigue + multiply = 1 + } + desc = IMPRISON_INTRIGUE_ACTOR + } + modifier = { + add = { + value = scope:recipient.intrigue + multiply = -2 + } + desc = IMPRISON_INTRIGUE_RECIPIENT + } + + modifier = { + add = 30 + scope:hook = yes + desc = SCHEME_HOOK_USED + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ai_value_modifier = { + who = scope:recipient + ai_boldness = { + if = { + limit = { + scope:recipient = { NOT = { ai_boldness = 0 } } + } + value = -0.5 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_imprisonment_reason = scope:recipient + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.75 + } + } + } + modifier = { + add = 20 + scope:actor = { + any_vassal_or_below = { this = scope:recipient } + has_realm_law_flag = vassal_refusal_is_treason + } + desc = AI_REFUSAL_IS_TREASON + } + modifier = { + add = 50 + scope:actor = { + has_perk = prison_feudal_complex_perk + } + desc = AI_PRISON_FEUDAL_COMPLEX_PERK + } + modifier = { #I am a King! + desc = offer_vassalization_interaction_aibehavior_hightier_tt + scope:recipient = { highest_held_title_tier = tier_kingdom } + add = -40 + } + modifier = { #Courtiers. + desc = AI_REFUSAL_COURTIER + scope:recipient = { is_ruler = no } + add = 50 + } + modifier = { # Your young children can't really stop you + desc = AI_REFUSAL_YOUNG_CHILD + scope:recipient = { + is_child_of = scope:actor + is_courtier_of = scope:actor + is_adult = no + } + add = 200 + } + modifier = { #They're a claimant against you + desc = AI_CLAIMANT_PENALTY + scope:actor = { + OR = { + any_targeting_faction = { + faction_type = claimant_faction + faction_is_at_war = yes + special_character ?= scope:recipient + } + AND = { + exists = var:claimant_faction_sent_demand + var:claimant_faction_sent_demand = scope:recipient + } + } + } + add = -70 + } + modifier = { #Rank difference. + desc = AI_REFUSAL_RANK_DIFFERENCE + scope:recipient = { + is_ruler = yes + is_landed = yes + highest_held_title_tier < tier_kingdom + } + add = { + value = -15 + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 2 + } + } + } + add = 5 + } + if = { + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 3 + } + } + } + add = 5 + } + if = { #King asking Baron, modifier becomes positive. + limit = { + scope:actor = { + tier_difference = { + target = scope:recipient + value >= 4 + } + } + } + add = 10 + } + } + } + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = intimidated_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_external_reason_value + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #Comparative military strength. + desc = offer_vassalization_interaction_aibehavior_power_tt + trigger = { + scope:actor = { is_ruler = yes } + scope:recipient = { is_ruler = yes } + } + add = { + value = 1 + subtract = { + value = scope:recipient.current_military_strength + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 100 + min = -1000 + # This max needs to match the loc in offer_vassalization_interaction_aibehavior_power_tt + max = 20 + } + } + modifier = { #Rivalry modifier. + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -50 + } + modifier = { #Nemesis modifier. + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { + add = 10 + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + is_liege_or_above_of = scope:recipient + court_grandeur_current_level >= 7 + court_grandeur_current_level < 9 + } + desc = GRANDEUR_REASON + } + modifier = { + add = 20 + scope:actor = { + has_royal_court = yes + has_dlc_feature = royal_court + is_liege_or_above_of = scope:recipient + court_grandeur_current_level >= 9 + } + desc = GRANDEUR_REASON + } + modifier = { # Legalistic tradition + desc = tradition_legalistic_name + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + add = legalistic_vassal_punishment_acceptance + } + modifier = { # AI Mongols, tyranny wars just delay the inevitable fun! + scope:actor = { + is_ai = yes + OR = { + has_trait = greatest_of_khans + has_character_modifier = the_great_khan_modifier + } + } + scope:recipient = { + is_ai = yes + } + add = 500 + } + # Thug accolade increases imprison chance because they scary + modifier = { + scope:actor = { + any_active_accolade = { + accolade_parameter = accolade_imprisonment_chance + } + } + desc = THUG_REASON + add = accolade_imprisonment_chance_value + } + modifier = { + scope:actor = { + any_active_accolade = { + accolade_parameter = accolade_imprisonment_chance_high + } + } + desc = THUG_REASON_HIGH + add = accolade_imprisonment_chance_value_high + } + evaluate_action_decreasing_house_unity = { + VALUE = 100 + } + modifier = { + add = -25 + scope:recipient = { + culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands } + } + desc = VASSALS_REFUSAL_indomitable_azatani + } + modifier = { + add = 10 + scope:recipient = { has_character_modifier = ach_intent_imprisonment_modifier } + desc = ach_host_intent_imprison_reason + } + } + + # AI + ai_targets = { + ai_recipients = vassals + chance = 0.5 + } + ai_targets = { + ai_recipients = courtiers + chance = 0.25 + } + + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 10 + kingdom = 10 + empire = 10 + hegemony = 10 + } + + ai_will_do = { + base = -100 + + modifier = { # Make sure the AI uses hooks for this as it's % based + scope:hook = yes + add = 1 + } + + modifier = { # Default imprisonment reason weight + add = 200 + scope:actor = { + has_imprisonment_reason = scope:recipient + } + } + + modifier = { # More likely to imprison criminal Soryo's if Ritsuryo + add = 200 + scope:actor = { + has_imprisonment_reason = scope:recipient + government_has_flag = government_is_japan_administrative + } + scope:recipient = { + government_has_flag = government_is_japan_feudal + } + } + + modifier = { # Even more imprisonment reason if you are a danger to the Kampaku + add = 400 + scope:actor = { + primary_title = title:e_japan + has_imprisonment_reason = scope:recipient + } + scope:recipient = { + exists = house.house_confederation + house.house_confederation.combined_military_strength > scope:actor.current_military_strength + } + } + + modifier = { # Avoid Tyranny wars at inopportune times + add = -190 + scope:actor = { + ai_rationality > -100 # Lunatics can do whatever, let the world burn... + is_at_war = yes + } + scope:recipient = { + is_playable_character = yes + } + } + + modifier = { # Avoid imprisonments in certain circumstances + add = -190 + scope:actor = { + ai_rationality > -100 # Lunatics can do whatever, let the world burn... + NOR = { + AND = { + intrigue > scope:recipient.intrigue + intrigue >= 12 + } + has_perk = prison_feudal_complex_perk + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level >= 1 + } + } + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + current_military_strength >= scope:recipient.twice_current_military_strength + scope:recipient.ai_boldness <= -100 + } + } + scope:recipient = { + is_playable_character = yes + } + } + + modifier = { # If the AI is not very bold, avoid imprisoning people unless you're more powerful + add = -190 + scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... + scope:actor.ai_boldness <= 25 + scope:actor.current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength + } + + modifier = { # Avoid imprisoning people that would destroy you + add = -190 + scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... + scope:actor.current_military_strength < scope:recipient.current_military_strength + } + + modifier = { # Do not imprison when the chance of success if exceedingly low + add = -190 + scope:actor.ai_rationality > -100 # Lunatics can do whatever, let the world burn... + scope:recipient = { + is_playable_character = yes + } + NOT = { + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + scope:actor = { + gold < minimum_ai_gold_value_for_tyranny_wars + } + } + + modifier = { # Don't imprison people you like + scope:actor = { + NOT = { + has_trait = sadistic + } + OR = { + has_secret_relation_lover = scope:recipient + has_relation_lover = scope:recipient + has_relation_soulmate = scope:recipient + has_relation_friend = scope:recipient + has_relation_best_friend = scope:recipient + opinion = { + target = scope:recipient + value > very_high_positive_opinion + } + } + } + add = -1000 + } + + modifier = { # Don't imprison your own children... unless they're your rival/nemesis + scope:recipient = { + is_child_of = scope:actor + NOR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + add = -1000 + } + + modifier = { # Don't imprison your spouse, unless they're your rival/have cheated on you + scope:recipient = { + is_spouse_of = scope:actor + NOR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + add = -1000 + } + + modifier = { # Try to avoid pointless imprisonments + scope:recipient = { + NOR = { + scope:actor = { # Sadists want people to torture + has_trait = sadistic + } + AND = { # Imprisoning vassals you have revoke reasons on is relevant + is_playable_character = yes + scope:actor = { has_revoke_title_reason = scope:recipient } + } + is_a_faction_member = yes + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + scope:actor = { # Scheme Agents should be imprisoned indiscriminately + any_targeting_scheme = { + hostile_scheme_trigger = yes + is_scheme_agent_exposed = scope:recipient + } + } + AND = { # Zealots will imprison characters of other faiths + scope:actor.ai_zeal >= medium_positive_ai_value + scope:actor.faith != scope:recipient.faith + } + scope:actor = { + has_opinion_modifier = { + modifier = murdered_close_family_crime + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = attempted_murder_close_family_crime + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = executed_close_family + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = slept_with_spouse_discovered_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = slept_with_spouse_exposed_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = unfaithful_spouse_discovered_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = unfaithful_spouse_exposed_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = refused_to_renounce_lover_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = betrayed_our_promise + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = botched_my_treatment_crime_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = botched_treatment_of_kin_crime_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = smeared_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = insulted_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = mocked_me_in_time_of_need + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = loved_one_dungeon_death + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = abandoned_me_opinion + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = reason_child_died + target = scope:recipient + } + } + scope:actor = { + has_opinion_modifier = { + modifier = falsely_accused + target = scope:recipient + } + } + } + } + add = -1000 + } + + modifier = { + exists = scope:recipient.primary_title + add = scope:recipient.primary_title.tier + } + + # Agenda impact + modifier = { + scope:recipient = { + is_important_or_vip_struggle_character = yes + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_important + } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_important + } + } + } + add = -100 + } + } + } + modifier = { + scope:recipient = { + has_trait = fp3_struggle_supporter + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_supporter + } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_supporter + } + } + } + add = -100 + } + } + } + modifier = { + scope:recipient = { + has_trait = fp3_struggle_detractor + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_detractor + } + has_trait = fp3_struggle_supporter + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_imprison_detractor + } + } + } + add = -100 + } + } + } + + # TGP Be more careful with blocs generally + house_bloc_tyranny_war_modifiers = yes + + modifier = { # Avoid triggering Tyranny wars mid-grand activity + factor = 0 + scope:actor = { + has_ongoing_grand_activity_trigger = yes + } + scope:recipient = { + highest_held_title_tier >= tier_county + } + } + + evaluate_action_decreasing_house_unity = { + VALUE = 100 + } + } +} + +move_to_dungeon_interaction = { + interface_priority = 30 + category = interaction_category_prison + desc = move_to_dungeon_interaction_desc + icon = prison + + is_shown = { + scope:actor = { + is_landless_ruler = no + } + scope:recipient = { + is_imprisoned_by = scope:actor + is_in_prison_type = house_arrest + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + scope:recipient = { + hidden_effect = { + change_prison_type = dungeon + } + trigger_event = prison_notification.1001 + custom_tooltip = MOVE_PRISONER_TO_DUNGEON + scope:recipient = { + every_close_or_extended_family_member = { + custom = all_family_members + limit = { + scope:actor != this + } + add_opinion = { + modifier = family_moved_to_dungeon_opinion + target = scope:actor + } + } + } + } + scope:actor = { + stress_impact = { + compassionate = medium_stress_impact_gain + forgiving = medium_stress_impact_gain + } + hidden_effect = { + send_interface_message = { + type = event_prison_neutral + title = msg_move_prisoner_to_dungeon + right_icon = scope:recipient + custom_tooltip = MOVE_PRISONER_TO_DUNGEON + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_move_to_dungeon.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = prisoners + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:actor.ai_compassion < medium_positive_ai_value + scope:actor = { + opinion = { + target = scope:recipient + value <= high_negative_opinion + } + } + } + modifier = { # Family Feud + add = 25 + trigger = { + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + + } + } + desc = INTERACTION_FAMILY_FEUD_REASON + } + } +} + +move_to_house_arrest_interaction = { + interface_priority = 30 + category = interaction_category_prison + desc = move_to_house_arrest_interaction_desc + icon = prison + + is_shown = { + scope:actor = { + is_landless_ruler = no + } + scope:recipient = { + is_imprisoned_by = scope:actor + is_in_prison_type = dungeon + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + if = { + limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } + scope:recipient = { remove_character_modifier = moldy_gruel_diet } + } + scope:recipient = { + hidden_effect = { + change_prison_type = house_arrest + trigger_event = prison_notification.1002 + } + custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST + scope:recipient = { + every_close_or_extended_family_member = { + custom = all_family_members + limit = { + scope:actor != this + } + add_opinion = { + modifier = moved_to_house_arrest_opinion + target = scope:actor + } + } + } + } + scope:actor = { + stress_impact = { + sadistic = medium_stress_impact_gain + vengeful = medium_stress_impact_gain + } + hidden_effect = { + send_interface_message = { + type = event_prison_neutral + title = msg_move_prisoner_to_house_arrest + right_icon = scope:recipient + custom_tooltip = MOVE_PRISONER_TO_HOUSE_ARREST + } + } + } + } + + auto_accept = yes +} + +ransom_interaction = { + interface_priority = 50 + common_interaction = no + use_diplomatic_range = no + category = interaction_category_prison + special_interaction = ransom_interaction + icon = icon_gold + redirect = { + scope:recipient = { + save_scope_as = secondary_recipient + if = { + limit = { + is_ruler = no + exists = liege + } + liege = { + save_scope_as = recipient + } + } + } + } + + desc = ransom_interaction_desc + + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:secondary_recipient = scope:recipient + } + desc = OFFER_RANSOM_PROPOSAL_PERSONAL + } + desc = OFFER_RANSOM_PROPOSAL + } + } + + is_shown = { + scope:secondary_recipient = { + #exists = liege + is_imprisoned_by = scope:actor + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + trigger_if = { + limit = { + scope:invalid = yes + } + always = no + } + + scope:secondary_recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:secondary_recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + cost = { + influence = { + value = 0 + if = { + limit = { scope:influence_send_option = yes } + add = scope:actor.medium_influence_value + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + if = { + limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } + scope:recipient = { remove_character_modifier = moldy_gruel_diet } + } + # Set up event scopes and trigger the exchange. + if = { + limit = { scope:secondary_recipient = { is_imprisoned_by = scope:actor } } # To prevent simultaneous release-shenanigans + scope:secondary_recipient = { + save_scope_as = prisoner + } + scope:recipient = { + save_scope_as = payer + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + scope:prisoner = { + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + } + custom_tooltip = has_person_haggler_decrease_ransom_cost + } + # If the recipient doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. + if = { + limit = { + OR = { + exists = scope:current_gold + exists = scope:extortionate_current_gold + } + } + save_scope_value_as = { + name = ransom_saved_gold_value + value = scope:payer.current_gold_value + } + } + } + scope:actor = { + save_scope_as = imprisoner + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + scope:recipient = { + scope:prisoner = { + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + } + custom_tooltip = has_person_haggler_increase_ransom_cost + } + } + + #Save scopes for portraits + scope:recipient = { save_scope_as = portrait_first } + if = { + limit = { + scope:portrait_first != scope:prisoner + } + scope:prisoner = { save_scope_as = portrait_second } + # Must come after we save the payment value, or the payer won't know how much they need to pay. + send_interface_message = { + type = event_prison_good + title = msg_ransom_prisoner + right_icon = scope:portrait_first + left_icon = scope:portrait_second + ransom_interaction_effect = yes + } + } + else = { + # Must come after we save the payment value, or the payer won't know how much they need to pay. + send_interface_message = { + type = event_prison_good + title = msg_ransom_prisoner + right_icon = scope:portrait_first + ransom_interaction_effect = yes + } + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:secondary_recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:secondary_recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_important + character = scope:actor + } + } + } + } + } + } + + on_decline = { + # If a player declines this ransom offer, wait 10 years before sending another one (they presumably will ransom that character themselves when they want them back). + if = { + limit = { scope:recipient = { is_ai = no } } + scope:secondary_recipient = { + add_character_flag = { + flag = character_ransom_refused_by_player + years = 10 + } + } + } + + # Trigger notification event + scope:actor = { + trigger_event = char_interaction.0131 + } + } + + # Pay me an extortionate amount! + send_option = { + is_shown = { + scope:actor = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:recipient ?= { + gold >= scope:secondary_recipient.increased_ransom_cost_value + } + } + flag = extortionate_gold + localization = "RANSOM_EXTORTIONATE_GOLD_OPTION" + } + + # If you don't have what they're worth, pay me what you have (extort version)! + send_option = { + is_shown = { + scope:actor = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:recipient ?= { + gold < scope:secondary_recipient.increased_ransom_cost_value + gold >= 1 + } + } + flag = extortionate_current_gold + localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_OPTION" + } + + # Pay me what they're worth! + send_option = { + is_shown = { + scope:actor = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:recipient ?= { + gold >= scope:secondary_recipient.ransom_cost_value + } + } + flag = gold + localization = "RANSOM_GOLD_OPTION" + } + + # If you don't have what they're worth, pay me what you have! + send_option = { + is_shown = { + scope:actor = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:recipient ?= { + gold < scope:secondary_recipient.ransom_cost_value + gold >= 1 + } + } + flag = current_gold + localization = "RANSOM_CURRENT_GOLD_OPTION" + } + + send_option = { + is_shown = { + trigger_if = { # in the mass action ransom we only want to do it for gold + limit = { exists = scope:mass_action } + scope:mass_action = no + } + } + is_valid = { + scope:actor = { + can_add_hook = { #To match the hook added through ransom_interaction_effect + target = scope:recipient + type = favor_hook + } + } + } + flag = favor + localization = "RANSOM_FAVOR_OPTION" + } + + send_option = { # EP3 Influence + is_shown = { # Actor must have a government that uses influence + trigger_if = { # in the mass action ransom we only want to do it for gold + limit = { exists = scope:mass_action } + scope:mass_action = no + } + scope:actor = { + government_has_flag = government_has_influence + } + } + is_valid = { + # Actor has enough influence + scope:actor = { influence >= medium_influence_value } + # Both characters are within the same top realm + custom_tooltip = { + text = not_same_realm_tt + scope:recipient.top_liege = scope:actor.top_liege + } + } + flag = influence_send_option + localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE + } + + # MPO Herd + send_option = { + is_shown = { # Actor must have a government that uses Herd + scope:actor = { + government_has_flag = government_is_nomadic + exists = domicile + is_ai = no + } + # Recipient must care about Herd + scope:recipient ?= { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + # Recipient has enough Herd + scope:recipient = { domicile.herd >= domicile.medium_herd_value } + } + flag = herd_send_option + localization = RANSOM_HERD_OPTION + } + + localization_values = { + EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value + RANSOM_COST = scope:secondary_recipient.ransom_cost_value + CURRENT_GOLD = scope:recipient.gold + RANSOM_HERD_COST = ransom_herd_value_recipient + } + + ai_accept = { + base = 0 + modifier = { # Greedy characters can have their greed get the better of them... + add = { + value = scope:recipient.ai_greed + multiply = -0.5 + } + scope:recipient.ai_greed >= medium_positive_ai_value + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + scope:recipient != scope:secondary_recipient + desc = AI_VALUE_MODIFIER_GREED + } + modifier = { # Generous characters are more willing to pay + add = { + value = scope:recipient.ai_greed + multiply = -0.10 + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + scope:recipient != scope:secondary_recipient + scope:recipient.ai_greed <= medium_negative_ai_value + desc = AI_VALUE_MODIFIER_GENEROUS + } + modifier = { + add = -10 + scope:recipient != scope:secondary_recipient + scope:recipient = { + NOR = { + is_spouse_of = scope:secondary_recipient + is_close_or_extended_family_of = scope:secondary_recipient + has_relation_lover = scope:secondary_recipient + has_relation_friend = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + has_relation_soulmate = scope:secondary_recipient + has_relation_best_friend = scope:secondary_recipient + is_parent_of = scope:secondary_recipient + } + } + desc = "UNIMPORTANT_CHAR_REASON" + } + modifier = { + add = 100 + scope:recipient = scope:secondary_recipient + desc = "WANTS_FREEDOM_REASON" + } + modifier = { # Acceptance boon for lovers, friends, etc + add = 25 + scope:recipient != scope:secondary_recipient + scope:recipient = { + OR = { + is_spouse_of = scope:secondary_recipient + is_close_or_extended_family_of = scope:secondary_recipient + has_relation_lover = scope:secondary_recipient + has_relation_friend = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + } + NOR = { + has_relation_soulmate = scope:secondary_recipient + has_relation_best_friend = scope:secondary_recipient + is_parent_of = scope:secondary_recipient + } + } + desc = "DEAR_TO_ME_REASON" + } + modifier = { # Massive acceptance boon for Soulmates and Best Friends + add = 200 + scope:recipient = { + OR = { + has_relation_soulmate = scope:secondary_recipient + has_relation_best_friend = scope:secondary_recipient + is_parent_of = scope:secondary_recipient + } + NOR = { + is_spouse_of = scope:secondary_recipient + AND = { + NOT = { + is_parent_of = scope:secondary_recipient + } + is_close_or_extended_family_of = scope:secondary_recipient + } + has_relation_lover = scope:secondary_recipient + has_relation_friend = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + } + } + desc = "DEAR_TO_ME_REASON" + } + modifier = { # Say no to rivals + add = -200 + scope:recipient = { + has_relation_rival = scope:secondary_recipient + } + desc = "RIVAL_TO_ME_REASON" + } + modifier = { # Say no to rivals + add = -500 + scope:recipient = { + has_relation_nemesis = scope:secondary_recipient + } + desc = "NEMESIS_TO_ME_REASON" + } + modifier = { + add = 10 + scope:recipient = { + NOR = { + this = scope:secondary_recipient + is_spouse_of = scope:secondary_recipient + is_close_or_extended_family_of = scope:secondary_recipient + has_relation_lover = scope:secondary_recipient + has_relation_soulmate = scope:secondary_recipient + has_secret_relation_lover = scope:secondary_recipient + } + NOR = { + has_relation_rival = scope:secondary_recipient + has_relation_nemesis = scope:secondary_recipient + } + } + scope:recipient.dynasty = scope:secondary_recipient.dynasty + desc = "MY_DYNASTY_REASON" + } + modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege + add = intimidated_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + desc = INTIMIDATED_REASON + } + + modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege + add = cowed_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + desc = COWED_REASON + } + } + + # AI + ai_targets = { + ai_recipients = prisoners + } + ai_frequency_by_tier = { + barony = 36 + county = 6 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + OR = { + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + AND = { + scope:recipient = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + scope:current_gold = yes + } + } + } + + modifier = { + add = ai_greed + ai_greed > 0 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + } + + modifier = { + add = -100 + has_relation_rival = scope:secondary_recipient + } + + modifier = { + add = -300 + has_relation_nemesis = scope:secondary_recipient + } + + modifier = { + add = 100 + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + # Struggle Agenda + modifier = { + scope:secondary_recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + } + } + add = 200 + } + } + } + + modifier = { # Do not ransom at war + factor = 0 + scope:actor = { is_at_war = yes } + } + + modifier = { # Don't annoy players + factor = 0 + scope:recipient = { is_ai = no } + OR = { + scope:recipient = { is_at_war = yes } + scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player } + } + } + + #don't ransom if they are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:secondary_recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } + + # Needs to be after all other send options so we only default to it if everything else is blocked + send_option = { + is_shown = { # When doing the mass ransom, its possible for no option to be valid for the gold costs, so instead of defaulting wrong we explitly fail it + exists = scope:mass_action + scope:mass_action = yes + } + flag = invalid + localization = "INVALID" + } +} + +#For lieges to ransom their courtiers +pay_ransom_interaction = { + interface_priority = 50 + common_interaction = no + use_diplomatic_range = no + category = interaction_category_prison + icon = icon_gold + + redirect = { + scope:recipient = { + save_scope_as = secondary_recipient + if = { + limit = { + exists = imprisoner + } + imprisoner = { save_scope_as = recipient } + } + } + } + + desc = pay_ransom_interaction_desc + + cost = { + influence = { + value = 0 + if = { + limit = { scope:influence_send_option = yes } + add = scope:actor.medium_influence_value + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + } + + greeting = positive + notification_text = PAY_RANSOM_PROPOSAL + + is_shown = { + exists = scope:recipient + scope:secondary_recipient = { + this != scope:actor + is_imprisoned_by = scope:recipient + OR = { + liege ?= scope:actor # You can ransom anyone you have in your court + is_close_family_of = scope:actor # And anyone who is your close family + dynasty ?= { # And anyone from your Dynasty + this ?= scope:actor.dynasty + } + any_spouse = { # And anyone married to one of your close kin or dynasty members + OR = { + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + } + } + has_relation_lover = scope:actor # And Lovers + has_relation_friend = scope:actor # And Friends + } + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:secondary_recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + } + + on_accept = { + # Set up event scopes and trigger the exchange. + if = { + limit = { scope:secondary_recipient = { is_imprisoned_by = scope:recipient } } + scope:secondary_recipient = { + save_scope_as = prisoner + } + scope:recipient = { + save_scope_as = imprisoner + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + custom_tooltip = has_person_haggler_increase_ransom_cost + } + } + scope:actor = { + save_scope_as = payer + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + + } + scope:prisoner = { + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + } + custom_tooltip = has_person_haggler_decrease_ransom_cost + } + # Stress impacts + if = { + limit = { + scope:prisoner = { # Stress impact for random courtiers + NOR = { + is_vassal_of = scope:actor + is_consort_of = scope:actor + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + any_spouse = { + OR = { + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + } + } + has_relation_lover = scope:actor + has_relation_friend = scope:actor + } + } + } + stress_impact = { + compassionate = minor_stress_impact_loss + generous = medium_stress_impact_loss + } + } + else_if = { # Stress impact for 'relevant' ransoms; in other words, everyone but random courtiers + limit = { + scope:prisoner = { + OR = { + is_vassal_of = scope:actor + is_consort_of = scope:actor + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + any_spouse = { + OR = { + is_close_family_of = scope:actor + dynasty ?= { + this ?= scope:actor.dynasty + } + } + } + has_relation_lover = scope:actor + has_relation_friend = scope:actor + } + } + } + stress_impact = { + compassionate = medium_stress_impact_loss + generous = minor_stress_impact_loss + just = minor_stress_impact_loss + } + } + + if = { # Lustful characters want their lovers back + limit = { + scope:prisoner = { + has_relation_lover = scope:actor + } + } + stress_impact = { + lustful = major_stress_impact_loss + } + } + + if = { # Loyal characters want to free their friends and lovers + limit = { + scope:prisoner = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + stress_impact = { + loyal = major_stress_impact_loss + } + } + + if = { # Family should be free! + limit = { + scope:prisoner = { + is_close_family_of = scope:payer + } + } + stress_impact = { + family_first = miniscule_stress_impact_loss + } + } + + # If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. + if = { + limit = { + OR = { + exists = scope:current_gold + exists = scope:extortionate_current_gold + } + } + save_scope_value_as = { + name = ransom_saved_gold_value + value = scope:payer.current_gold_value + } + } + + # Must come after we save the payment value, or the payer won't know how much they need to pay. + trigger_event = char_interaction.0140 + } + hidden_effect = { + scope:prisoner = { + send_interface_toast = { + type = event_toast_effect_good + title = ransomed_by_someone + left_icon = scope:payer + show_as_tooltip = { + scope:imprisoner = { + ransom_interaction_effect = yes + } + } + } + } + scope:prisoner = { + if = { + limit = { + liege ?= { + is_ai = no + NOR = { + this = scope:payer + this = scope:imprisoner + } + OR = { + is_close_or_extended_family_of = scope:prisoner + is_consort_of = scope:prisoner + has_relation_lover = scope:prisoner + has_relation_friend = scope:prisoner + } + } + } + liege = { + save_scope_as = prisoner_liege_scope + send_interface_toast = { + type = event_toast_effect_good + title = ransomed_by_someone_third_party + left_icon = scope:payer + right_icon = scope:prisoner + custom_tooltip = ransomed_by_someone_third_party_desc + } + } + } + } + } + scope:imprisoner = { + send_interface_message = { + type = event_prison_neutral + title = recipient_released_from_prison + right_icon = scope:prisoner + left_icon = scope:imprisoner + ransom_interaction_effect = yes + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_important + character = scope:imprisoner + } + } + } + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:imprisoner + SECOND = scope:prisoner + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_supporter_detractor + CHAR = scope:prisoner + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_supporter_detractor + CHAR = scope:prisoner + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_supporter_detractor + character = scope:imprisoner + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_ransom_supporter_detractor } + } + } + } + if = { + limit = { scope:hook = yes } + scope:actor = { + use_hook = scope:recipient + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:prisoner + VALUE = medium_unity_gain + DESC = clan_unity_ransom.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + on_decline = { + # If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping that character in prison). + if = { + limit = { scope:recipient = { is_ai = no } } + scope:secondary_recipient = { + add_character_flag = { + flag = character_ransom_refused_by_player + years = 10 + } + } + } + + # Trigger notification event + scope:actor = { + trigger_event = char_interaction.0141 + } + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + is_valid = { + exists = scope:recipient + scope:actor = { + gold >= scope:secondary_recipient.increased_ransom_cost_value + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold >= scope:secondary_recipient.increased_ransom_cost_value + } + } + flag = extortionate_gold + localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + # If you don't have what they're worth, pay me what you have (extort version)! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold < scope:secondary_recipient.increased_ransom_cost_value + gold > 0 + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold < scope:secondary_recipient.increased_ransom_cost_value + gold > 0 + } + } + flag = extortionate_current_gold + localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + } + is_valid = { + exists = scope:recipient + scope:actor = { + gold >= scope:secondary_recipient.ransom_cost_value + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold >= scope:secondary_recipient.ransom_cost_value + } + } + flag = gold + localization = "RANSOM_GOLD_PAY_OPTION" + } + + # If you don't have what they're worth, pay me what you have! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold < scope:secondary_recipient.ransom_cost_value + gold > 0 + } + } + starts_enabled = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold < scope:secondary_recipient.ransom_cost_value + gold > 0 + } + } + flag = current_gold + localization = "RANSOM_CURRENT_PAY_GOLD_OPTION" + } + + send_option = { + is_valid = { + exists = scope:recipient + scope:recipient = { + can_add_hook = { #To match the hook added through ransom_interaction_effect + target = scope:actor + type = favor_hook + } + } + } + flag = favor + localization = "RANSOM_OWE_FAVOR_OPTION" + } + + send_option = { # EP3 Influence + is_shown = { # Actor must have a government that uses influence + scope:actor = { + government_has_flag = government_has_influence + } + } + is_valid = { + # Actor has enough influence + scope:actor = { influence >= medium_influence_value } + # Both characters are within the same top realm + custom_tooltip = { + text = not_same_realm_tt + scope:recipient.top_liege = scope:actor.top_liege + } + } + flag = influence_send_option + localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE + } + + send_option = { # MPO Herd + is_shown = { # Actor must have a government that uses Herd + scope:actor = { + government_has_flag = government_is_nomadic + exists = domicile + is_ai = no + } + # Recipient must care about Herd + scope:recipient = { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + # Actor has enough Herd + scope:actor = { domicile.herd >= domicile.medium_herd_value } + } + flag = herd_send_option + localization = PAY_FOR_BETTER_AI_ACCEPTANCE + } + + #Use hook + send_option = { + is_valid = { + exists = scope:recipient + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + localization_values = { + EXTORTIONATE_RANSOM_COST = scope:secondary_recipient.increased_ransom_cost_value + RANSOM_COST = scope:secondary_recipient.ransom_cost_value + CURRENT_GOLD = scope:actor.gold + RANSOM_HERD_COST = ransom_herd_value_actor + } + + ai_accept = { + base = 0 + modifier = { + add = 50 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + desc = "GOLD_POSITIVE_REASON" + } + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:current_gold = yes + AND = { + scope:actor = { gold >= scope:secondary_recipient.half_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:extortionate_current_gold = yes + AND = { + scope:actor = { gold >= scope:secondary_recipient.half_increased_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + modifier = { + add = 50 + scope:favor = yes + scope:recipient.top_liege = scope:actor.top_liege + desc = "FAVOR_POSITIVE_REASON" + } + modifier = { + add = 0 + scope:favor = yes + scope:recipient.top_liege != scope:actor.top_liege + desc = "NO_USE_FOR_A_FAVOR_REASON" + } + modifier = { # For clarification + add = 0 + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + OR = { + scope:actor = { gold < scope:secondary_recipient.half_ransom_cost_value } + scope:recipient.ai_greed >= medium_positive_ai_value + } + desc = "WANTS_MORE_GOLD" + } + modifier = { # Say no to rivals + add = -55 + scope:recipient = { + has_relation_rival = scope:secondary_recipient + } + desc = "RIVAL_TO_ME_REASON" + } + modifier = { # Say no to rivals + add = -300 + scope:recipient = { + has_relation_nemesis = scope:secondary_recipient + } + desc = "NEMESIS_TO_ME_REASON" + } + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war_with = scope:actor + } + desc = "IS_AT_WAR_REASON" + } + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war = yes + any_primary_war_enemy = { + scope:secondary_recipient = { + liege ?= prev + } + } + } + desc = "IS_POW_REASON" + } + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war_with = scope:secondary_recipient + } + desc = "IS_AT_WAR_WITH_TARGET_REASON" + } + #opinion_modifier = { # A lot more likely if Recipient likes Actor + # who = scope:recipient + # opinion_target = scope:actor + # multiplier = 1.0 + # desc = AI_OPINION_REASON + #} + #opinion_modifier = { # A lot more likely if Recipient likes secondary_recipient/prisoner + # who = scope:recipient + # opinion_target = scope:secondary_recipient + # multiplier = 1.0 + # desc = AI_OPINION_REASON + #} + modifier = { + scope:hook = yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege + add = 40 + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + desc = INTIMIDATED_REASON + } + + modifier = { # An Cowed recipient is significantly more likely to accept an offer from the liege + add = 100 + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + desc = COWED_REASON + } + + modifier = { + add = 25 + scope:influence_send_option = yes + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + + modifier = { + add = 25 + scope:herd_send_option = yes + desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + + # AI + ai_targets = { + ai_recipients = family + ai_recipients = spouses + ai_recipients = scripted_relations + ai_recipients = liege + } + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = top_realm_domicile_owners + max = 5 + } + ai_frequency_by_tier = { + barony = 0 + county = 6 + duchy = 6 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + ai_potential = { + gold >= 25 + } + + ai_target_quick_trigger = { + prison = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + } + } + + modifier = { + add = -100 + has_relation_rival = scope:secondary_recipient + } + + modifier = { + add = -300 + has_relation_nemesis = scope:secondary_recipient + } + + modifier = { + add = 100 + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + modifier = { # Ransom your primary heir first + add = 10 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + AND = { + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + } + scope:secondary_recipient = { + is_primary_heir_of = scope:actor + } + } + + modifier = { # Only ransom people you care about... unless you're very compassionate + factor = 0 + ai_compassion < high_positive_ai_value + scope:secondary_recipient = { + NOR = { + is_heir_of = scope:actor + is_child_of = scope:actor + is_grandchild_of = scope:actor + is_great_grandchild_of = scope:actor + is_consort_of = scope:actor + is_parent_of = scope:actor + is_grandparent_of = scope:actor + is_great_grandparent_of = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_secret_relation_lover = scope:actor + any_spouse = { + OR = { + is_heir_of = scope:actor + is_child_of = scope:actor + is_grandchild_of = scope:actor + is_great_grandchild_of = scope:actor + is_parent_of = scope:actor + is_grandparent_of = scope:actor + is_great_grandparent_of = scope:actor + has_relation_friend = scope:actor + } + } + } + } + } + + modifier = { # If you're very compassionate, well, then you ransom most people you can! + factor = 0 + ai_compassion >= high_positive_ai_value + scope:secondary_recipient = { + NOR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + is_consort_of = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_secret_relation_lover = scope:actor + any_spouse = { + OR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + has_relation_friend = scope:actor + } + } + } + } + } + + modifier = { # If you're very greedy... then they're a little bit more restrictive! + factor = 0 + ai_greed >= high_positive_ai_value + scope:secondary_recipient = { + NOR = { # Very Greedy rulers only ransom people in their own realm, or their heir + is_courtier_of = scope:actor + is_vassal_or_below_of = scope:actor + is_heir_of = scope:actor + } + NOR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + is_consort_of = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_secret_relation_lover = scope:actor + any_spouse = { + OR = { + is_heir_of = scope:actor + is_close_or_extended_family_of = scope:actor + has_relation_friend = scope:actor + } + } + } + } + } + + # Some exceptions! + modifier = { # Lustful characters want to ransom lovers + add = 100 + has_trait = lustful + ai_greed <= 50 + scope:secondary_recipient = { + has_relation_lover = scope:actor + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + } + } + + modifier = { # Loyal characters want to ransom their relations + add = 100 + has_trait = loyal + scope:secondary_recipient = { + OR = { + has_relation_lover = scope:actor + has_relation_friend = scope:actor + } + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:secondary_recipient = { + time_in_prison = { years > 1 } + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + } + } + + modifier = { # Certain characters will try to ransom their liege! + add = 100 + ai_greed <= very_high_negative_ai_value + ai_compassion >= very_high_negative_ai_value + NOT = { exists = joined_faction } + is_at_war = no + OR = { + has_trait = loyal + ai_honor >= high_positive_ai_value + } + scope:secondary_recipient = { + is_liege_or_above_of = scope:actor + } + OR = { + scope:gold = yes + scope:extortionate_gold = yes + # They won't offer current gold, only full ransoms + } + } + + modifier = { # Favors only relevant within the realm + add = -100 + scope:favor = yes + scope:recipient = { + NOR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + modifier = { # Don't spam the player with cheapskate offers + add = -100 + scope:current_gold = yes + scope:recipient = { + is_ai = no + } + scope:secondary_recipient = { + highest_held_title_tier >= tier_duchy + } + } + + # Struggle Agenda + modifier = { + scope:secondary_recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + } + } + add = 200 + } + } + } + + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + + modifier = { # Don't give away prisoners for free + factor = 0 + NOR = { + scope:favor = yes + scope:extortionate_gold = yes + scope:extortionate_current_gold = yes + scope:gold = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:current_gold = yes + } + } + } + + modifier = { # Don't annoy players + factor = 0 + scope:recipient = { is_ai = no } + OR = { + scope:recipient = { is_at_war = yes } + scope:secondary_recipient = { has_character_flag = character_ransom_refused_by_player } + } + } + + #don't ransom prisoners that are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:secondary_recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } +} + +#To ransom yourself +ransom_me_interaction = { + interface_priority = 50 + common_interaction = yes + use_diplomatic_range = no + category = interaction_category_prison + icon = icon_gold + + greeting = positive + notification_text = PAY_RANSOM_PROPOSAL_PERSONAL + + desc = ransom_me_interaction_desc + + redirect = { # So that users can ransom themselves by clicking on their portrait + if = { + limit = { + scope:actor = scope:recipient + exists = scope:actor.imprisoner + } + scope:actor.imprisoner = { save_scope_as = recipient } + } + } + + is_shown = { + scope:actor = { + is_imprisoned_by = scope:recipient + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:actor = { is_imprisoned_by = scope:recipient } } + scope:actor = { + save_scope_as = prisoner + } + scope:recipient = { + save_scope_as = imprisoner + } + scope:actor = { + save_scope_as = payer + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + save_scope_value_as = { + name = new_ransom_value + value = haggler_ransom_cost_modifier + } + custom_tooltip = has_person_haggler_decrease_ransom_cost + } + + # If the payer doesn't have enough funds to pay the full amount and we're only requesting their current funds, save how much they've agreed to pay. + if = { + limit = { + OR = { + exists = scope:current_gold + exists = scope:extortionate_current_gold + } + } + save_scope_value_as = { + name = ransom_saved_gold_value + value = scope:payer.current_gold_value + } + } + + # Must come after we save the payment value, or the payer won't know how much they need to pay. + trigger_event = char_interaction.0150 + } + scope:imprisoner = { + if = { + limit = { + employs_court_position = person_haggler_camp_officer + is_asking_for_gold_in_ransom_trigger = yes + } + random_court_position_holder = { + type = person_haggler_camp_officer + save_scope_as = haggler + } + scope:actor = { + custom_tooltip = has_person_haggler_increase_ransom_cost + } + } + send_interface_message = { + type = event_prison_neutral + title = recipient_released_from_prison + right_icon = scope:prisoner + left_icon = scope:imprisoner + ransom_interaction_effect = yes + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_ransom_important + CHAR = scope:prisoner + } + } + activate_struggle_catalyst = { + catalyst = catalyst_ransom_important + character = scope:imprisoner + } + } + } + } + if = { + limit = { always = scope:hook } + scope:actor = { + use_hook = scope:recipient + } + } + } + } + + on_decline = { + # If a player declines this ransom offer, wait 10 years before sending another one (they presumably have reasons for keeping you in prison). + if = { + limit = { scope:recipient = { is_ai = no } } + scope:actor = { + add_character_flag = { + flag = character_ransom_refused_by_player + years = 10 + } + } + } + + # Trigger notification event + scope:actor = { + trigger_event = char_interaction.0151 + } + } + + cost = { + influence = { + value = 0 + if = { + limit = { scope:influence_send_option = yes } + add = scope:actor.medium_influence_value + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + is_valid = { + scope:actor = { + gold >= increased_ransom_cost + } + } + flag = extortionate_gold + localization = "RANSOM_EXTORTIONATE_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + # If you don't have what they're worth, pay me what you have (extort version)! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + dynasty ?= { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + scope:actor = { + gold < increased_ransom_cost + gold > 0 + } + } + flag = extortionate_current_gold + localization = "RANSOM_EXTORTIONATE_CURRENT_GOLD_IMPRISONED_PERSPECTIVE_OPTION" + } + + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + } + is_valid = { + scope:actor = { + gold >= ransom_cost + } + } + flag = gold + localization = "RANSOM_GOLD_OPTION" + } + + # If you don't have what they're worth, pay me what you have! + send_option = { + is_shown = { + exists = scope:recipient + scope:recipient = { + OR = { + is_lowborn = yes + NOT = { + dynasty = { + has_dynasty_perk = fp1_pillage_legacy_3 + } + } + } + } + scope:actor = { + gold < ransom_cost + gold > 0 + } + } + flag = current_gold + localization = "RANSOM_CURRENT_GOLD_OPTION" + } + + send_option = { + is_valid = { + scope:recipient = { + can_add_hook = { #To match the hook added through ransom_interaction_effect + target = scope:actor + type = favor_hook + } + } + } + flag = favor + localization = "RANSOM_FAVOR_OPTION" + } + + send_option = { # EP3 Influence + is_shown = { # Actor must have a government that uses influence + scope:actor = { + government_has_flag = government_has_influence + } + } + is_valid = { + # Actor has enough influence + scope:actor = { influence >= medium_influence_value } + # Both characters are within the same top realm + custom_tooltip = { + text = not_same_realm_tt + scope:recipient.top_liege = scope:actor.top_liege + } + } + flag = influence_send_option + localization = TRADE_INFLUENCE_FOR_BETTER_AI_ACCEPTANCE + } + + send_option = { # MPO Herd + is_shown = { # Actor must have a government that uses Herd + scope:actor = { + government_has_flag = government_is_nomadic + exists = domicile + } + # Recipient must care about Herd + scope:recipient = { + government_has_flag = government_is_nomadic + exists = domicile + } + } + is_valid = { + # Actor has enough Herd + scope:actor = { domicile.herd >= domicile.medium_herd_value } + } + flag = herd_send_option + localization = PAY_FOR_BETTER_AI_ACCEPTANCE + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + localization_values = { + EXTORTIONATE_RANSOM_COST = scope:actor.increased_ransom_cost_value + RANSOM_COST = scope:actor.ransom_cost_value + CURRENT_GOLD = scope:actor.gold + RANSOM_HERD_COST = ransom_herd_value_actor + } + + ai_accept = { + base = 0 + modifier = { + add = 50 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + } + desc = "GOLD_POSITIVE_REASON" + } + + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:current_gold = yes + AND = { + scope:actor = { gold >= half_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + + modifier = { # Accept more than half the ransom (unless greedy) + add = 25 + scope:extortionate_current_gold = yes + AND = { + scope:actor = { gold >= half_increased_ransom_cost_value } + NOT = { scope:recipient.ai_greed >= medium_positive_ai_value } + } + desc = "GOLD_POSITIVE_REASON" + } + + modifier = { + add = 50 + scope:favor = yes + scope:recipient.top_liege = scope:actor.top_liege + desc = "FAVOR_POSITIVE_REASON" + } + + modifier = { + add = -50 + scope:favor = yes + NOR = { + scope:gold = yes + scope:extortionate_gold = yes + } + OR = { + scope:recipient.top_liege != scope:actor.top_liege + scope:recipient.ai_greed >= medium_positive_ai_value + } + desc = "NO_USE_FOR_A_FAVOR_REASON" + } + + modifier = { # For clarification + add = 0 + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + OR = { + scope:actor = { gold < half_ransom_cost_value } + scope:recipient.ai_greed >= medium_positive_ai_value + } + desc = "WANTS_MORE_GOLD" + } + + #opinion_modifier = { # A lot more likely if Recipient likes Actor + # who = scope:recipient + # opinion_target = scope:actor + # multiplier = 1.0 + # desc = AI_OPINION_REASON + #} + + modifier = { # Say no to rivals + add = -55 + scope:recipient = { + has_relation_rival = scope:actor + } + desc = "ACTOR_RIVAL_TO_ME_REASON" + } + modifier = { # Say no to nemesis + add = -300 + scope:recipient = { + has_relation_nemesis = scope:actor + } + desc = "ACTOR_NEMESIS_TO_ME_REASON" + } + + + modifier = { # At war + add = -300 + scope:recipient = { + is_at_war_with = scope:actor + } + desc = "IS_AT_WAR_REASON" + } + + modifier = { + scope:hook = yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { # An Intimidated recipient is significantly more likely to accept an offer from the liege + add = intimidated_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + } + desc = INTIMIDATED_REASON + } + + modifier = { # A Cowed recipient is significantly more likely to accept an offer from the liege + add = cowed_reason_value + trigger = { + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + } + desc = COWED_REASON + } + modifier = { # Family Feud + add = -50 + trigger = { + scope:recipient = { + house_has_feud_relation_with_trigger = { TARGET = scope:actor } + + } + } + desc = INTERACTION_FAMILY_FEUD_REVERSE_REASON + } + + modifier = { + add = 25 + scope:influence_send_option = yes + desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION + } + + modifier = { + add = 25 + scope:herd_send_option = yes + desc = HERD_INTERACTION_ACCEPTANCE_SEND_OPTION + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + # AI + ai_frequency_by_tier = { + barony = 72 + county = 24 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_targets = { + ai_recipients = self + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + OR = { + scope:gold = yes + scope:extortionate_gold = yes + AND = { + scope:actor = { + gold >= 25 + } + OR = { + time_in_prison = { years > 1 } + has_trait = impatient #LET ME OUT! I want out! NOW! + } + OR = { + scope:current_gold = yes + scope:extortionate_current_gold = yes + } + } + scope:herd_send_option = yes + } + } + + modifier = { + add = 100 + scope:favor = yes + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + modifier = { + add = -100 + scope:favor = yes + scope:recipient = { + NOR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + + # Struggle Agenda + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_ransom_important + } + } + } + add = 200 + } + } + } + + modifier = { # Don't give away prisoners for free + factor = 0 + NOR = { + scope:favor = yes + scope:gold = yes + scope:extortionate_gold = yes + scope:current_gold = yes + scope:herd_send_option = yes + AND = { + scope:actor = { + gold >= 25 + } + scope:current_gold = yes + } + } + } + + modifier = { # Don't annoy players + factor = 0 + scope:recipient = { is_ai = no } + OR = { + scope:recipient = { is_at_war = yes } + scope:actor = { has_character_flag = character_ransom_refused_by_player } + } + } + + #don't do it if you are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:actor = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } +} + +release_from_prison_interaction = { + interface_priority = 30 + common_interaction = yes + category = interaction_category_prison + special_interaction = release_from_prison_interaction + icon = prison + + desc = release_from_prison_interaction_desc + + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:take_vows = no + scope:recruit = no + scope:disfigure = no + scope:blind = no + scope:castrate = no + } + desc = RELEASE_PRISONER_OFFER + } + desc = RELEASE_PRISONER_OFFER_CONDITIONAL + } + } + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { has_character_modifier = allowed_to_go_outside } } + scope:recipient = { remove_character_modifier = allowed_to_go_outside } + } + if = { + limit = { scope:recipient = { has_character_modifier = moldy_gruel_diet } } + scope:recipient = { remove_character_modifier = moldy_gruel_diet } + } + if = { + limit = { scope:recipient = { is_imprisoned_by = scope:actor } } + + scope:recipient = { + # Demand Conversion + if = { + limit = { scope:demand_conversion = yes } + demand_conversion_interaction_effect = yes + add_opinion = { + modifier = demanded_my_conversion_opinion + target = scope:actor + } + + # Struggle Catalyst + if = { + limit = { + scope:actor = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_demanding_important_conversion + CHAR = scope:recipient + } + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_demanding_important_conversion + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_demanding_important_conversion + character = scope:actor + } + } + } + } + } + + # Banish Landed Character + if = { + limit = { + scope:banish = yes + scope:recipient = { is_landed_or_landless_administrative = yes } + } + banish_effect = { BANISHER = scope:actor } + if = { + limit = { + NOT = { + scope:actor = { + has_banish_reason = scope:recipient + } + } + } + scope:actor = { add_tyranny = banishment_tyranny_gain } + } + add_opinion = { + modifier = banished_me + target = scope:actor + } + } + # Banish Unlanded Character + else_if = { + limit = { + AND = { + scope:banish = yes + scope:recipient = { + is_landless_adventurer = no + is_pool_character = no # It is possible for them to end up in the pool between the interaction being sent, and it being accepted + } + } + } + if = { + limit = { + this.gold > 0 + NOR = { + has_character_flag = realm_priest + has_character_flag = was_bookmaker + } + } + pay_short_term_gold = { target = scope:actor gold = this.gold } + } + if = { + limit = { + has_any_artifact = yes + } + every_character_artifact = { + set_owner = { + target = scope:actor + history = { + location = scope:recipient.location + actor = scope:recipient + recipient = scope:actor + type = stolen + } + } + scope:actor = { + if = { + limit = { + NOT = { has_variable = stolen_artifact } + } + set_variable = { + name = stolen_artifact + value = 1 + } + } + else = { + change_variable = { + name = stolen_artifact + add = 1 + } + } + } + } + } + banish = yes + add_opinion = { + modifier = banished_me + target = scope:actor + } + } + # 'Banish' Pool Character + else_if = { + limit = { + AND = { + scope:banish = yes + scope:recipient = { + is_playable_character = no + is_pool_character = yes # They'll just leave for the pool + } + } + } + if = { + limit = { + this.gold > 0 + } + pay_short_term_gold = { target = scope:actor gold = this.gold } + } + add_opinion = { + modifier = banished_me + target = scope:actor + } + } + + # Recruit Character + if = { + limit = { scope:recruit = yes } + if = { + limit = { + scope:actor = { + culture = { + has_cultural_parameter = can_recruit_prisoners_easily + } + } + } + add_opinion = { + modifier = loyal_servant + target = scope:actor + } + scope:actor = { + if = { + limit = { + can_add_hook = { + target = scope:recipient + type = loyalty_hook + } + } + add_hook = { + type = loyalty_hook + target = scope:recipient + } + } + } + } + else = { + add_opinion = { + modifier = demanded_recruitment + target = scope:actor + } + } + scope:actor = { + if = { + limit = { + AND = { + scope:actor.faith = { + has_doctrine = tenet_communal_possessions + } + scope:recipient = { + has_trait = peasant_leader + } + } + } + scope:actor = { + add_piety = medium_piety_gain + } + } + } + scope:actor = { + add_courtier = scope:recipient + } + } + + # Renounce Claims + if = { + limit = { scope:renounce_claims = yes } + add_opinion = { + modifier = demanded_claim_renouncement + target = scope:actor + } + scope:recipient = { + every_claim = { + explicit = yes + limit = { + save_temporary_scope_as = temp_claim + OR = { + holder = scope:actor + AND = { + exists = holder + NOT = { prev = { target_is_liege_or_above = scope:actor } } + holder = { target_is_liege_or_above = scope:actor } + } + scope:actor = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:temp_claim + } + } + } + } + scope:recipient = { remove_claim = prev } + } + } + } + + # Gain Hook + if = { + limit = { scope:gain_hook = yes } + add_opinion = { + modifier = demanded_hook + target = scope:actor + } + scope:actor = { + add_hook = { #Hook effect must match gain_hook option condition + target = scope:recipient + type = favor_hook + } + } + } + + # Take Vows + if = { + limit = { scope:take_vows = yes } + send_child_to_clergy_effect = yes + #Does Byzan go hay-wire with deposing vassals? + if = { + limit = { + scope:actor = { + is_ai = yes + culture = { has_cultural_pillar = heritage_byzantine } + } + } + debug_log = debug_ai_byzan_forced_vows_on_prison_release + debug_log_scopes = yes + } + #Does the AI in general go haywire with deposing prisoners? + else_if = { + limit = { + scope:actor = { is_ai = yes } + } + debug_log = debug_ai_forced_vows_on_prison_release + debug_log_scopes = yes + } + } + + # Become Executioner + if = { + limit = { scope:become_executioner = yes } + release_as_executioner_effect = yes + } + + # Disfigure + if = { + limit = { scope:disfigure = yes } + + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + add_trait = disfigured + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured } + + scope:actor = { + trigger_event = { + id = prison.1030 + days = 1 + } + } + } + + # Blind + if = { + limit = { scope:blind = yes } + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + add_trait = blind + } + } + + # Merciful Blindings + scope:actor = { + if = { + limit = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + add_piety = medium_piety_gain + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } + + scope:actor = { + trigger_event = { + id = prison.1020 + days = 1 + } + } + + # If we're a clan this interaction affects unity + if = { + limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + # Castrate + if = { + limit = { scope:castrate = yes } + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + if = { + limit = { + age < 12 + } + ep3_child_castration_effect = yes + } + else = { + ep3_youth_castration_effect = yes + } + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } + + scope:actor = { + trigger_event = { + id = prison.1025 + days = 1 + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_abelarding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # Demand Admin + if = { + limit = { scope:demand_admin = yes } + scope:recipient = { + change_to_administrative_effect = yes + } + } + + # Shared Torture effects + if = { + limit = { + OR = { + scope:disfigure = yes + scope:blind = yes + scope:castrate = yes + } + } + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + # No Demands Added + if = { + limit = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:become_executioner = no + scope:recruit = no + scope:disfigure = no + scope:blind = no + scope:castrate = no + scope:demand_admin = no + } + # Notification to the imprisoner + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = recipient_released_from_prison + left_icon = scope:recipient + scope:recipient = { + add_opinion = { + modifier = released_from_prison + target = scope:actor + } + } + } + house ?= { + change_house_relation_effect = { + HOUSE = scope:recipient.house + VALUE = house_relation_improve_medium_value + REASON = prison_released + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + add_dread = minor_dread_loss + stress_impact = { + sadistic = medium_stress_impact_gain + callous = minor_stress_impact_gain + } + # Struggle impact + if = { + limit = { + any_character_struggle = { + involvement = involved + OR = { + has_struggle_phase_parameter = release_prisoner_diff_culture_gives_prestige + has_struggle_phase_parameter = release_prisoner_diff_faith_gives_prestige + } + } + is_diff_faith_or_culture_trigger = { + CHAR = scope:recipient + STATUS = involved + } + } + add_prestige = medium_prestige_gain + } + + # Struggle Catalyst + if = { + limit = { + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_important + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_important + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_release_important + character = scope:actor + } + } + } + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_supporter_detractor + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_release_supporter_detractor + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_release_supporter_detractor + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_release_supporter_detractor } + } + } + } + + # If we're a clan (and not making any demands) this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_released_from_own_prison.desc + REVERSE_NON_HOUSE_TARGET = no + } + + # LEGITIMACY GAIN FROM RELEASING DUKES AND ABOVE + if = { + limit = { + exists = scope:recipient.primary_title + scope:recipient.primary_title.tier >= tier_duchy + } + # Minus 2, since we want Duchy to be 1, and it's normally 3 + save_scope_value_as = { + name = title_tier_minus_2 + value = { + value = scope:recipient.primary_title.tier + subtract = 2 + } + } + scope:actor = { + send_interface_toast = { + type = msg_legitimacy_gain + title = legitimacy_gain_toast + left_icon = scope:actor + right_icon = scope:recipient + add_legitimacy = { + value = { + value = miniscule_legitimacy_gain + multiply = scope:title_tier_minus_2 + } + } + } + } + } + } + else = { + scope:actor = { + trigger_event = char_interaction.0160 + } + } + + # If a child was imprisoned due to yearly_4021 they'll come back to say hi + if = { + limit = { + exists = var:marked_for_revenge_in_event_yearly_4021 + } + add_opinion = { + modifier = abandoned_me_opinion + target = var:marked_for_revenge_in_event_yearly_4021 + } + if = { + limit = { + var:marked_for_revenge_in_event_yearly_4021 = { + is_alive = yes + is_ai = no + } + } + save_scope_as = child + if = { + limit = { #Make sure they're sadistic! + NOT = { has_trait = sadistic } + number_of_personality_traits < personality_trait_limit + } + add_trait = sadistic + } + var:marked_for_revenge_in_event_yearly_4021 = { + add_character_flag = { #TO make sure that they don't get spammed about the release + flag = block_for_prison_release_notification + days = 10 + } + trigger_event = yearly.4022 + } + remove_variable = marked_for_revenge_in_event_yearly_4021 + } + } + + if = { + limit = { + is_imprisoned = yes + # Release is handled in follow-up events + scope:disfigure = no + scope:blind = no + scope:castrate = no + } + release_from_prison = yes + } + } + + # FP3 - If prisoner is important for war + scope:actor = { # FP3 + if = { + limit = { + exists = scope:recipient.house + any_character_war = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + } + random_character_war = { + limit = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + primary_attacker = { + hidden_effect = { + send_interface_message = { + type = event_war_good + title = lesson_war_final_notes_victory_step_1 + left_icon = scope:recipient + right_icon = scope:actor + + show_as_tooltip = { + scope:recipient = { release_from_prison = yes } + add_prestige = major_prestige_gain + prev.primary_defender = { add_prestige = major_prestige_loss } + } + } + } + add_prestige = major_prestige_gain + prev.primary_defender = { add_prestige = major_prestige_loss } + } + } + } + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0161 + } + } + + send_option = { + flag = demand_conversion + localization = "RELEASE_DEMAND_CONVERSION" + is_shown = { + scope:recipient.faith != scope:actor.faith + } + is_valid = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_of = scope:actor + } + } + } + + # Cannot ask Landed Rulers to convert if they're not your vassal + custom_description = { + text = cannot_demand_unsubordinate_landed_ruler_conversion + scope:recipient = { + trigger_if = { + limit = { + is_playable_character = yes + } + is_vassal_or_below_of = scope:actor + } + } + } + + # Cannot ask Religious Heads to convert + custom_description = { + text = cannot_demand_religious_head_conversion + NAND = { + exists = scope:recipient.faith.religious_head + scope:recipient.faith.religious_head = scope:recipient + } + } + # Cannot ask Holy Order Master to convert + custom_description = { + text = cannot_demand_holy_order_master_conversion + NAND = { + exists = scope:recipient.faith + scope:recipient.faith = { + any_faith_holy_order = { leader = scope:recipient } + } + } + } + } + } + + send_option = { + flag = renounce_claims + localization = RELEASE_RENOUNCE_CLAIMS + is_shown = { + custom_description = { + text = "release_renounce_claims" + subject = scope:recipient + scope:recipient = { + any_claim = { + explicit = yes + save_temporary_scope_as = temp_claim + OR = { + holder = scope:actor + AND = { + NOT = { prev = { target_is_liege_or_above = scope:actor } } + trigger_if = { + limit = { + exists = holder + } + holder = { target_is_liege_or_above = scope:actor } + } + } + scope:actor = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:temp_claim + } + } + } + } + } + } + } + current_description = { + desc = RELEASE_RENOUNCE_CLAIMS_DESC + } + } + + send_option = { + flag = banish + localization = "RELEASE_BANISH" + is_shown = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + AND = { + is_playable_character = no + is_ruler = no + gold > scope:actor.gold + gold > scope:actor.medium_gold_value + scope:actor.ai_greed > low_negative_ai_value + } + AND = { + is_playable_character = no + is_ruler = no + gold > 0 + scope:actor = { + has_banish_reason = scope:recipient + } + } + AND = { + is_playable_character = no + is_ruler = no + gold > 100 + scope:actor.ai_greed >= high_positive_ai_value + } + AND = { + scope:actor = { + has_banish_reason = scope:recipient + } + scope:actor = { + opinion = { + target = scope:recipient + value <= medium_negative_opinion + } + } + } + } + } + } + trigger_if = { + limit = { + scope:recipient = { + is_playable_character = yes + } + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + trigger_else = { + scope:recipient = { + is_courtier_of = scope:actor + } + } + custom_description = { + text = "release_banish_invalid_take_vows" + object = scope:recipient + scope:take_vows = no + } + scope:recruit = no #Should be impossible to have both but just in case + NOT = { + scope:recipient = { + is_spouse_of = scope:actor + } + } + } + } + + send_option = { + flag = gain_hook + localization = "RELEASE_GAIN_HOOK" + is_shown = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + is_vassal_of = scope:actor + liege ?= scope:actor + } + } + } + } + is_valid = { + scope:actor = { + can_add_hook = { + type = favor_hook #Matches the hook added in the on_accept + target = scope:recipient + } + } + } + } + + send_option = { + flag = take_vows + localization = "RELEASE_TAKE_VOWS" + is_shown = { + scope:actor = { take_vows_available_trigger = yes } + } + is_valid = { + #Handle AI + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + #We're AI and Byzantium + trigger_if = { + limit = { + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + } + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_or_below_of = scope:actor #Weigh this for Byz AI in the modifiers below + has_relation_rival = scope:actor + is_courtier_of = scope:actor + } + NOT = { + is_heir_of = scope:actor + } + } + #Get rid of rivals despite potentially liking them + trigger_if = { + limit = { + scope:recipient = { has_relation_rival = scope:actor } + } + always = yes + } + #Only get rid of family members if we dislike them + trigger_else = { + scope:actor = { + opinion = { + target = scope:recipient + value <= medium_negative_opinion + } + } + } + } + #We're not Byzantium but plain AI + trigger_else = { + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + is_close_or_extended_family_of = scope:actor + NOT = { + is_heir_of = scope:actor + } + } + scope:actor = { + opinion = { + target = scope:recipient + value <= medium_negative_opinion + } + } + custom_description = { + text = "release_vows_invalid_not_your_court" + object = scope:recipient + subject = scope:actor + OR = { + scope:recipient = { is_courtier_of = scope:actor } + scope:recruit = yes + } + } + } + } + #Enhanced Take the Vows for Byzantium players -- who do we want to boot to a monastery far, far away? + trigger_else_if = { + limit = { + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + } + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + custom_description = { + text = "release_byz_vows_invalid" + object = scope:recipient + subject = scope:actor + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_or_below_of = scope:actor + has_relation_rival = scope:actor + is_courtier_of = scope:actor + } + } + } + } + #Otherwise standard procedure Take the Vows requirements + trigger_else = { + scope:recipient = { + is_ai = yes #Not gonna depose player characters, for now + } + scope:actor = { is_close_or_extended_family_of = scope:recipient } #Triggering I_AM_NOT instead of CHARACTER_IS_NOT makes the tooltip look less cursed + custom_description = { + text = "release_vows_invalid_not_your_court" + object = scope:recipient + subject = scope:actor + OR = { + scope:recipient = { is_courtier_of = scope:actor } + scope:recruit = yes + } + } + + } + custom_description = { + text = "release_vows_invalid_not_your_faith" + object = scope:recipient + subject = scope:actor + trigger_if = { + limit = { + scope:recipient.faith != scope:actor.faith + } + scope:demand_conversion = yes + } + } + custom_description = { + text = "release_executioner_invalid_take_vows_condition" + object = scope:recipient + scope:become_executioner = no + } + custom_description = { + text = "release_banish_invalid_take_vows" + object = scope:recipient + scope:banish = no + } + scope:recipient = { + age >= 10 + NOR = { + has_trait = excommunicated + has_trait = devoted + has_trait = incapable + } + #Do they have the "wrong" marriage type? + NOR = { + custom_description = { + text = is_married_matrilineally + subject = scope:recipient + any_spouse = { + is_female = yes + matrilinear_marriage = yes + } + } + custom_description = { + text = is_married_patrilineally + subject = scope:recipient + any_spouse = { + is_male = yes + patrilinear_marriage = yes + } + } + custom_description = { + text = matrilinear_betrothal + subject = scope:recipient + betrothed ?= { + is_female = yes + matrilinear_betrothal = yes + } + } + custom_description = { + text = patrilinear_betrothal + subject = scope:recipient + betrothed ?= { + is_male = yes + patrilinear_betrothal = yes + } + } + } + } + } + } + send_option = { + flag = become_executioner + localization = "RELEASE_AS_EXECUTIONER" + is_shown = { + has_ep1_court_positions_dlc_trigger = yes + scope:actor = { + has_royal_court = yes + } + scope:recipient = { + is_adult = yes + } + } + is_valid = { + scope:actor = { + can_employ_court_position_type = executioner_court_position + NOT = { employs_court_position = executioner_court_position } + } + scope:recipient = { + trigger_if = { + limit = { scope:recruit = yes } + custom_description = { + text = "release_executioner_invalid_recruit" + object = scope:recipient + scope:recruit = yes + } + } + trigger_else = { + is_courtier_of = scope:actor + } + + custom_description = { + text = "release_executioner_invalid_take_vows_condition" + object = scope:recipient + scope:take_vows = no + } + NOT = { is_spouse_of = scope:actor } + } + } + } + + send_option = { + flag = recruit + localization = "RELEASE_RECRUIT" + is_shown = { + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + scope:recipient = { + OR = { + has_relation_best_friend = scope:actor + has_relation_friend = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_secret_relation_lover = scope:actor + is_heir_of = scope:actor + } + } + } + scope:recipient = { + is_ruler = no + NOT = { is_courtier_of = scope:actor } + OR = { + is_adult = yes + AND = { + is_adult = no + OR = { + trigger_if = { + limit = { exists = liege } + NOT = { is_heir_of = liege } + } + NOT = { exists = liege } + } + } + } + } + } + } + + send_option = { + flag = disfigure + localization = "RELEASE_DISFIGURE" + is_shown = { + scope:actor = { + government_allows = administrative + culture = { has_cultural_tradition = tradition_ep3_palace_politics } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + scope:recipient = { + is_adult = yes + } + } + is_valid = { + scope:recipient = { + NOT = { has_trait = disfigured } + } + # Byzantines can't disfigure those not in their realm + trigger_if = { + limit = { + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + } + scope:recipient = { + custom_description = { + text = "release_byz_disfigure_invalid" + object = scope:recipient + subject = scope:actor + OR = { + is_close_or_extended_family_of = scope:actor + is_vassal_or_below_of = scope:actor + has_relation_rival = scope:actor + is_courtier_of = scope:actor + } + } + } + } + custom_description = { + text = "release_prisoner_disfigure_blind_castrate_condition" + object = scope:recipient + scope:blind = no + scope:castrate = no + } + } + } + + send_option = { + flag = blind + localization = "RELEASE_BLIND" + is_shown = { + scope:actor = { + is_adult = yes + culture = { has_cultural_parameter = can_blind_prisoners } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + scope:recipient = { + is_adult = yes + } + } + is_valid = { + scope:recipient = { + NOT = { has_trait = blind } + } + custom_description = { + text = "release_prisoner_disfigure_blind_castrate_condition" + object = scope:recipient + scope:disfigure = no + scope:castrate = no + } + } + } + + send_option = { + flag = castrate + localization = "RELEASE_CASTRATE" + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + is_eunuch_trigger = no + is_male = yes + } + scope:actor = { + is_adult = yes + culture = { + has_cultural_parameter = can_castrate_prisoners + } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + } + is_valid = { + scope:recipient = { + is_eunuch_trigger = no + } + custom_description = { + text = "release_prisoner_disfigure_blind_castrate_condition" + object = scope:recipient + scope:disfigure = no + scope:blind = no + } + } + } + + send_option = { + flag = demand_admin + localization = "RELEASE_DEMAND_ADMIN" + is_shown = { + scope:actor = { government_allows = administrative } + scope:actor = scope:recipient.liege + scope:recipient = { #Requirements match demand admin interaction + highest_held_title_tier >= tier_county + is_landed = yes + is_ruler = yes + NOT = { government_allows = administrative } + NOT = { + scope:recipient = { government_has_flag = government_is_tribal } + } + NOT = { scope:recipient ?= scope:recipient.faith.religious_head } + NOT = { scope:recipient ?= scope:actor.diarch } + } + } + is_valid = { + scope:recipient = { + NOT = { government_allows = administrative } + } + } + } + + send_options_exclusive = no + + auto_accept = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:recruit = no + scope:disfigure = no + scope:blind = no + scope:castrate = no + scope:demand_admin = no + } + + ai_accept = { + base = 0 + modifier = { + add = 100 + desc = "WANTS_FREEDOM_REASON" + } + # Basic modifiers + modifier = { + trigger = { + has_trait = ambitious + } + add = -20 + desc = "RECIPIENT_IS_AMBITIOUS" + } + + # Demand conversion + modifier = { + trigger = { + scope:recipient = { ai_zeal <= 20 } + scope:demand_conversion = yes + } + add = -20 + desc = "CONVERSION_NEGATIVE_REASON" + } + modifier = { + trigger = { + scope:recipient = { ai_zeal > 20 } + scope:demand_conversion = yes + } + add = { + value = ai_zeal + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value = faith_astray_level + } + } + } + multiply = -1 + } + else = { + multiply = -2 + } + } + desc = "CONVERSION_NEGATIVE_REASON" + } + # Renounce claims + modifier = { + add = -25 + trigger = { + scope:renounce_claims = yes + ai_greed < 0 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + modifier = { + add = -50 + trigger = { + scope:renounce_claims = yes + ai_greed >= 0 + ai_greed < 26 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + modifier = { + add = -75 + trigger = { + scope:renounce_claims = yes + ai_greed >= 26 + ai_greed < 51 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + modifier = { + add = -95 + trigger = { + scope:renounce_claims = yes + ai_greed >= 51 + } + desc = "RENOUNCE_CLAIMS_REASON" + } + # Employ executioner + modifier = { + add = -50 + trigger = { + scope:become_executioner = yes + # Sadists don't care about becoming an executioner + NOR = { + has_trait = sadistic + has_trait = callous + } + } + desc = "BECOME_EXECUTIONER_REASON" + } + # Banish + modifier = { + add = -50 + trigger = { + scope:banish = yes + } + NOT = { + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + } + desc = "BANISH_NEGATIVE_REASON" + } + modifier = { # Legalistic tradition + add = legalistic_vassal_punishment_acceptance + trigger = { + scope:banish = yes + } + scope:actor = { + has_imprisonment_reason = scope:recipient + culture = { has_cultural_parameter = vassals_more_likely_accept_punishments } + } + desc = tradition_legalistic_name + } + # Gain hook + modifier = { + add = { + value = -50 + if = { + limit = { + scope:recipient = { + ai_vengefulness > 0 + } + } + subtract = ai_vengefulness + } + } + trigger = { + scope:gain_hook = yes + } + desc = "GAIN_HOOK_NEGATIVE_REASON" + } + # Take vows + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + } + desc = "TAKE_VOWS_NEGATIVE_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = lustful + } + desc = "TAKE_VOWS_LUSTFUL_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = rakish + } + desc = "TAKE_VOWS_RAKISH_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = fornicator + } + desc = "TAKE_VOWS_FORNICATOR_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = seducer + } + desc = "TAKE_VOWS_SEDUCER_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = deviant + } + desc = "TAKE_VOWS_DEVIANT_REASON" + } + modifier = { + add = { + value = -15 + multiply = num_sinful_traits + } + trigger = { + scope:take_vows = yes + num_sinful_traits > 1 + } + desc = "TAKE_VOWS_SINS_REASON" + } + modifier = { + add = -30 + trigger = { + scope:take_vows = yes + has_trait = cynical + } + desc = "TAKE_VOWS_CYNICAL_REASON" + } + # Recruitment + modifier = { + add = -10 + trigger = { + scope:recruit = yes + NOT = { + scope:actor = { + culture = { + has_cultural_parameter = can_recruit_prisoners_easily + } + } + } + } + desc = "RECRUITMET_NEGATIVE_REASON" + } + # Disfigure + modifier = { + add = { + value = -100 + if = { + limit = { + has_trait = beauty_good + } + multiply = 2 + } + } + trigger = { + scope:disfigure = yes + OR = { + NOR = { + has_trait = maimed + has_trait = beauty_bad + ai_sociability < -75 + } + has_trait = beauty_good + } + } + desc = "DISFIGURE_NEGATIVE_REASON" + } + modifier = { + add = -75 + trigger = { + scope:disfigure = yes + OR = { + has_trait = maimed + has_trait = beauty_bad + ai_sociability < -75 + } + NOT = { has_trait = beauty_good } + } + desc = "DISFIGURE_NEGATIVE_REASON" + } + # Blind + modifier = { + add = -100 + trigger = { + scope:blind = yes + NOR = { + has_trait = one_eyed + has_trait = infirm + age > 60 # I.e. they have poor eyesight already + } + } + desc = "BLIND_NEGATIVE_REASON" + } + modifier = { + add = -75 + trigger = { + scope:blind = yes + OR = { + has_trait = one_eyed + has_trait = infirm + age > 60 # I.e. they have poor eyesight already + } + } + desc = "BLIND_NEGATIVE_REASON" + } + # Castrate + modifier = { + add = -75 + trigger = { + scope:castrate = yes + any_child = { count > 0 } + ai_boldness < -50 + } + desc = "CASTRATE_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:castrate = yes + any_child = { count > 0 } + ai_boldness >= -50 + } + desc = "CASTRATE_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:castrate = yes + any_child = { count <= 0 } + } + desc = "CASTRATE_NO_CHILDREN_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:castrate = yes + has_trait = lustful + } + desc = "TAKE_VOWS_LUSTFUL_REASON" + } + # Demand admin + modifier = { + add = -20 + trigger = { + scope:demand_admin = yes + OR = { + culture = { + OR = { + # Historical cultures + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + this = culture:han + any_parent_culture_or_above = { + this = culture:han + } + # Bureaucratic culture + has_cultural_pillar = ethos_bureaucratic + } + } + # Another admin government + government_allows = administrative + } + } + desc = "DEMAND_ADMIN_NEGATIVE_REASON" + } + modifier = { + add = -50 + trigger = { + scope:demand_admin = yes + NOR = { + culture = { + OR = { + # Historical cultures + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + this = culture:han + any_parent_culture_or_above = { + this = culture:han + } + # Bureaucratic culture + has_cultural_pillar = ethos_bureaucratic + } + } + # Another admin government + government_allows = administrative + } + culture = { + NOR = { + has_cultural_tradition = tradition_hereditary_hierarchy + has_cultural_tradition = tradition_staunch_traditionalists + } + } + } + desc = "DEMAND_ADMIN_NEGATIVE_REASON" + } + modifier = { + add = -100 + trigger = { + scope:demand_admin = yes + NOR = { + culture = { + OR = { + # Historical cultures + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + this = culture:han + any_parent_culture_or_above = { + this = culture:han + } + # Bureaucratic culture + has_cultural_pillar = ethos_bureaucratic + } + } + # Another admin government + government_allows = administrative + } + culture = { + OR = { + has_cultural_tradition = tradition_hereditary_hierarchy + has_cultural_tradition = tradition_staunch_traditionalists + } + } + } + desc = "DEMAND_ADMIN_NEGATIVE_REASON" + } + # Struggle + modifier = { + trigger = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:recruit = no + } + scope:recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:recipient = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + } + } + add = 200 + } + } + } + } + + # AI + ai_targets = { + ai_recipients = prisoners + } + ai_frequency = 1 + + ai_potential = { + has_prisoners = yes + } + + ai_will_do = { + base = 0 + + modifier = { + add = 20 + scope:demand_conversion = yes + } + modifier = { + add = 100 + scope:demand_conversion = yes + scope:recipient = { + is_vassal_of = scope:actor + } + } + modifier = { + add = 30 + scope:renounce_claims = yes + } + modifier = { + add = 50 + scope:banish = yes + } + modifier = { + add = 30 + scope:take_vows = yes + } + modifier = { + add = 10 + scope:recruit = yes + } + modifier = { + add = 30 + scope:disfigure = yes + } + modifier = { + add = 20 + scope:blind = yes + } + modifier = { + add = 50 + scope:castrate = yes + } + modifier = { # Rivals can rot + add = -40 + scope:actor = { + NOT = { + has_trait = forgiving + } + } + scope:recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + modifier = { # Rivals can rot FOREVER if vengeful + add = -100 + scope:actor = { + NOT = { + has_trait = forgiving + } + } + scope:actor.ai_vengefulness >= very_high_positive_ai_value + scope:recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + modifier = { # Compassionate characters don't want to keep children in their dungeon for too long + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= low_positive_ai_value + } + scope:recipient = { + is_adult = no + time_in_prison = { years > 1 } + } + } + modifier = { # Very compassionate characters tend to release prisoners + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= very_high_positive_ai_value + } + scope:recipient = { + time_in_prison = { years > 1 } + } + } + modifier = { # Somewhat compassionate characters tend to keep people in their dungeon for a while + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= medium_positive_ai_value + } + scope:recipient = { + is_playable_character = no + time_in_prison = { years > 3 } + } + } + modifier = { # Only truly discompassionate characters will have their dungeon full of hapless victims after 5 years + add = 10 + scope:actor = { + is_at_war = no + ai_compassion >= low_negative_ai_value + } + scope:recipient = { + is_playable_character = no + time_in_prison = { years > 5 } + } + } + modifier = { # Most AI characters will let family out... + add = 10 + scope:actor = { + is_at_war = no + OR = { + ai_compassion >= very_high_positive_ai_value + AND = { + ai_compassion >= high_negative_ai_value + opinion = { + target = scope:recipient + value >= low_negative_opinion + } + } + } + } + scope:recipient = { + time_in_prison = { years > 1 } + is_playable_character = no + is_close_family_of = scope:actor + } + } + modifier = { # Almost all will let their own children out + add = 40 + scope:actor = { + is_at_war = no + ai_compassion >= very_high_negative_ai_value + } + scope:recipient = { + is_playable_character = no + is_child_of = scope:actor + } + } + # Struggle + modifier = { + trigger = { + scope:demand_conversion = no + scope:renounce_claims = no + scope:banish = no + scope:gain_hook = no + scope:take_vows = no + scope:recruit = no + } + scope:recipient = { + any_character_struggle = { + involvement = involved + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + has_character_flag = agenda_towards_escalation + } + } + add = -100 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_release_important + } + NOT = { + ai_greed >= 25 + } + OR = { + ai_compassion > 50 + AND = { + ai_compassion > 0 + scope:recipient = { + time_in_prison = { years > 1 } + } + } + } + } + } + add = 200 + } + } + } + modifier = { # Family Feud + add = -50 + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + + } + } + #Byz AI can shove vassals off to remote monasteries - weigh that here + modifier = { + add = -10 + scope:take_vows = yes + scope:actor = { + culture = { has_cultural_pillar = heritage_byzantine } + } + scope:recipient = { is_vassal_or_below_of = scope:actor } + } + + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + #don't release prisoners that are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } +} + +execute_prisoner_interaction = { + interface_priority = 120 + common_interaction = yes + category = interaction_category_prison + special_interaction = execute_prisoner_interaction + icon = icon_dead + + desc = execute_prisoner_interaction_desc + + ai_targets = { + ai_recipients = prisoners + } + + ai_frequency_by_tier = { + barony = 72 + county = 12 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + is_at_war = no + } + + ai_will_do = { + base = 0 + + opinion_modifier = { + trigger = { + scope:actor != scope:recipient + } + opinion_target = scope:recipient + multiplier = -1 + } + + ai_value_modifier = { + ai_compassion = -1 + } + modifier = { + add = -20 + ai_compassion >= low_positive_ai_value + scope:recipient = { is_adult = no } + } + # Try to avoid Kinslaying + modifier = { + add = -20 + scope:actor.dynasty = scope:recipient.dynasty + NOT = { faith = { has_doctrine = doctrine_kinslaying_any_dynasty_member_crime } } + } + modifier = { + add = -20 + is_close_or_extended_family_of = scope:recipient + NOT = { faith = { has_doctrine = doctrine_kinslaying_extended_family_crime } } + } + modifier = { + add = -20 + is_close_family_of = scope:recipient + NOT = { faith = { has_doctrine = doctrine_kinslaying_close_kin_crime } } + } + modifier = { + add = 50 + has_execute_reason = scope:recipient + OR = { + has_trait = sadistic + has_trait = lunatic + } + } + modifier = { # Executing your way to new titles is a worthy cause... + add = 20 + scope:actor = { + has_execute_reason = scope:recipient + ai_greed > 0 + any_heir_title = { # Execute rulers you can inherit land from + holder ?= scope:recipient + } + } + } + modifier = { # Vengeful characters enjoy executing their rivals + add = 20 + scope:actor = { + has_execute_reason = scope:recipient + ai_vengefulness >= medium_positive_ai_value + OR = { + has_relation_rival = scope:recipient # Execute rivals + has_relation_nemesis = scope:recipient # Execute rivals + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + modifier = { # Executing your way to new titles is a worthy cause... and very greedy characters need no execution reason + add = 35 + scope:actor = { + ai_greed >= very_high_positive_ai_value + any_heir_title = { # Execute rulers you can inherit land from + holder ?= scope:recipient + } + } + } + modifier = { # Vengeful characters enjoy executing their rivals, and very vengeful characters need no execution reason + add = 35 + scope:actor = { + ai_vengefulness >= very_high_positive_ai_value + OR = { + has_relation_rival = scope:recipient # Execute rivals + has_relation_nemesis = scope:recipient # Execute rivals + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + } + } + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { + factor = 0 + scope:actor = { + NOR = { # Do not execute unless you have some sort of reason to do it + has_execute_reason = scope:recipient + has_relation_rival = scope:recipient # Execute rivals + has_relation_nemesis = scope:recipient # Execute rivals + scope:recipient = { + is_spouse_of = scope:actor + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:actor } + } + any_heir_title = { # Execute rulers you can inherit land from + holder ?= scope:recipient + } + has_trait = lunatic # Self explanatory + } + } + } + + # Agenda impact + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + is_important_or_vip_struggle_character = yes + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_important + } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_important + } + } + } + add = -100 + } + } + } + + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + has_trait = fp3_struggle_supporter + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_supporter + } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_supporter + } + } + } + add = -100 + } + } + } + + #Nomads get the special beheading stuff + modifier = { + scope:actor = { + mpo_keep_prisoners_heads_trigger = yes + scope:recipient = { + is_ruler = yes + highest_held_title_tier >= tier_county + is_adult = yes + } + NOT = { + scope:recipient.top_liege ?= { + current_military_strength > scope:actor.current_military_strength + tier_difference = { + target = scope:actor + value >= -1 + } + } + } + } + NOT = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + add = 10 + } + #Boost further if actor if want to keep head + modifier = { + #want to keep head + scope:actor = { + mpo_keep_prisoners_heads_trigger = yes + } + scope:recipient = { + highest_held_title_tier >= tier_kingdom + is_adult = yes + } + NOT = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + add = 20 + } + #Boost further if actor wants to be scary + modifier = { + #want to keep head + scope:actor = { + mpo_keep_prisoners_heads_trigger = yes + scope:recipient = { + is_ruler = yes + highest_held_title_tier >= tier_county + is_adult = yes + } + OR = { + has_trait = conqueror + has_trait = greatest_of_khans + is_gurkhan = yes + } + } + NOT = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + add = 30 + } + + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + } + has_trait = fp3_struggle_detractor + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_detractor + } + has_trait = fp3_struggle_supporter + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_execute_detractor + } + } + } + add = -100 + } + } + } + modifier = { + add = 200 + scope:actor.faith = { + has_doctrine = tenet_extinction_of_dharma + } + scope:recipient.faith = { + religion = root.faith.religion + NOT = { + has_doctrine = tenet_extinction_of_dharma + } + } + } + #don't kill prisoners that are tied with a prison break contract, we don't want it invalidating all the time + modifier = { + factor = 0 + scope:recipient = { + has_character_flag = being_prisonbroken_by_laamp + } + } + } + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + + is_valid_showing_failures_only = { + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + + # Blocked by current struggle phase + custom_tooltip = { + text = struggle_parameter_struggle_cannot_execute_involved_prisoners + NOT = { + scope:actor = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_cannot_execute_involved_prisoners + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:recipient + } + } + } + } + } + + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + + # For use with co-ruler diarchs. + scope:recipient = { is_imprisoned_by = scope:actor } + } + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_execute_prisoner_interaction_value + } + + on_accept = { + # If this is a co-ruler we're executing, tell us if we have alternatives. + scope:actor = { + if = { + limit = { + OR = { + AND = { + has_diarchy_active_parameter = diarchy_is_co_rulership + diarch ?= scope:recipient + } + AND = { + scope:recipient = { has_diarchy_active_parameter = diarchy_is_co_rulership } + is_diarch_of_target = scope:recipient + } + } + } + # If the player doesn't have to execute their partner, point that out. + if = { + limit = { liege_can_maim_co_ruler_without_killing_them_trigger = yes } + custom_tooltip = execute_prisoner_interaction.tt.can_maim_diarch + } + # Otherwise, if they're out diarch, we end it. + if = { + limit = { scope:actor.diarch = scope:recipient } + end_diarchy = yes + every_player = { + limit = { + NOR = { + this = scope:actor + this = scope:recipient + } + top_liege = scope:actor.top_liege + } + trigger_event = diarchy.8022 + } + } + # Else, usurp. + else = { + custom_description_no_bullet = { + text = execute_prisoner_interaction_tt_co_emperor_usurpation + object = scope:recipient + } + create_title_and_vassal_change = { + type = usurped + save_scope_as = change + } + scope:recipient = { + every_held_title = { + limit = { + OR = { + this = scope:recipient.capital_county + this = scope:recipient.capital_county.duchy + AND = { + tier = tier_county + this.duchy = scope:recipient.capital_county.duchy + } + tier >= scope:recipient.highest_held_title_tier + } + } + change_title_holder = { + holder = scope:actor + change = scope:change + } + } + every_vassal = { + custom = custom.recipient_every_vassal + change_liege = { + LIEGE = scope:actor + CHANGE = scope:change + } + } + hidden_effect = { + change_liege = { + LIEGE = scope:actor + CHANGE = scope:change + } + } + } + resolve_title_and_vassal_change = scope:change + every_player = { + limit = { + NOR = { + this = scope:actor + this = scope:recipient + } + top_liege = scope:actor.top_liege + } + trigger_event = diarchy.8023 + } + } + } + # Regardless, this is legit politics, so we don't deduct legitimacy for it. + save_scope_value_as = { + name = suppress_legitimacy_from_crime + value = yes + } + } + # Now, the rest of it. + if = { + limit = { scope:recipient = { is_imprisoned_by = scope:actor } } + # Are you HumSac'ing the HoF of a faith that doesn't practice HumSac? + hidden_effect = { + scope:actor = { + humsacd_a_hof_effect = { + SACRIFICER = scope:actor + SACRIFICED_HOF = scope:recipient + } + } + } + if = { + limit = { always = scope:execution_public } + if = { + limit = { + scope:actor.capital_county = { + NOT = { has_county_modifier = held_public_execution_modifier } + } + } + custom_description_no_bullet = { + text = public_execution_tooltip + } + + scope:actor = { + capital_county = { + add_county_modifier = { + modifier = held_public_execution_modifier + days = 1850 + } + } + custom_tooltip = public_execution_control_effect + hidden_effect = { + every_held_title = { + title_tier = county + change_county_control = executioner_control_value + } + } + } + } + else = { + custom_description_no_bullet = { + text = public_execution_too_soon_tooltip + } + } + } + # Other Effects + if = { # Boil their skull? + limit = { + NOT = { always = scope:execution_devour } + scope:actor = { + has_relation_rival = scope:recipient + has_personality_malicious_trigger = yes + has_royal_court = yes + has_dlc_feature = court_artifacts + } + scope:recipient = { + is_adult = yes + } + } + scope:actor = { + random = { + chance = { + value = 25 + if = { + limit = { + has_relation_nemesis = scope:recipient + } + add = 75 + } + } + hidden_effect = { + scope:recipient = { + save_scope_as = skull_to_boil + } + trigger_event = { + id = artifact.7000 + days = { 3 10 } + } + } + } + } + } + if = { + limit = { + NOT = { always = scope:execution_devour } + scope:actor = { + is_adult = no + age >= 4 + is_ai = no + NOT = { has_character_flag = witnessed_execution_flag } + } + scope:recipient = { + is_adult = yes + } + } + scope:actor = { trigger_event = bp1_yearly.9045 } + } + else_if = { + limit = { + NOT = { always = scope:execution_devour } + scope:actor = { + OR = { + has_relation_friend = scope:recipient + has_relation_lover = scope:recipient + } + is_ai = no + } + scope:recipient = { + is_adult = yes + } + } + scope:actor = { trigger_event = bp1_yearly.9044 } + } + # Gallowsbait. + scope:actor = { + if = { + limit = { + has_government = landless_adventurer_government + scope:recipient = { + is_landless_adventurer = no + is_ruler = yes + } + } + if = { + limit = { scope:recipient.highest_held_title_tier >= tier_empire } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_massive_gain + XP_MIN = gallowsbait_xp_massive_gain + } + } + else_if = { + limit = { scope:recipient.highest_held_title_tier >= tier_kingdom } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_major_gain + XP_MIN = gallowsbait_xp_major_gain + } + } + else_if = { + limit = { scope:recipient.highest_held_title_tier >= tier_duchy } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_medium_gain + XP_MIN = gallowsbait_xp_medium_gain + } + } + else_if = { + limit = { scope:recipient.highest_held_title_tier >= tier_barony } + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = gallowsbait_xp_minor_gain + XP_MIN = gallowsbait_xp_minor_gain + } + } + else = { + laamp_rewards_apply_criminal_xp_effect = { + TRACK = marauder + XP_MAX = 2 + XP_MIN = 2 + } + } + } + } + + # FP3 + # Struggle Catalysts + scope:actor = { + if = { # Execute important + limit = { + scope:recipient = { is_important_or_vip_struggle_character = yes } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_important + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_important + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_execute_important + character = scope:actor + } + } + } + if = { # Execute Supporter/Detractor + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + } + if = { + limit = { + scope:recipient = { has_trait = fp3_struggle_detractor } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_detractor + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_detractor + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_execute_detractor + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = stabil_catalyst_execute_detractor } + } + } + else_if = { + limit = { + scope:recipient = { has_trait = fp3_struggle_supporter } + any_character_struggle = { + involvement = involved + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_supporter + CHAR = scope:recipient + } + } + } + every_character_struggle = { + involvement = involved + limit = { + activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { + CATALYST = catalyst_execute_supporter + CHAR = scope:recipient + } + } + activate_struggle_catalyst = { + catalyst = catalyst_execute_supporter + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = unrest_catalyst_execute_supporter } + } + } + } + # Free House Member CB target executed during war + if = { + limit = { + exists = scope:recipient.house + any_character_war = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + } + random_character_war = { + limit = { + using_cb = fp3_free_house_member_cb + is_defender = scope:actor + primary_attacker.house = scope:recipient.house + } + primary_attacker = { + add_opinion = { + target = scope:actor + modifier = executed_close_relation_opinion + } + } + } + add_prestige = { + value = medium_piety_loss + multiply = { + value = ai_honor + add = 1 + } + } + every_vassal = { + limit = { + OR = { + has_vassal_stance = courtly + has_vassal_stance = glory_hound + ai_honor > 0.48 + } + } + add_opinion = { + target = scope:actor + modifier = executed_valuable_prisoner_modifier + } + } + } + } + + if = { + limit = { + scope:actor.faith = { + has_doctrine = tenet_extinction_of_dharma + } + scope:recipient.faith = { + religion = scope:actor.faith.religion + NOT = { + has_doctrine = tenet_extinction_of_dharma + } + } + } + if = { + limit = { + scope:recipient = { + is_ruler = yes + highest_held_title_tier = tier_county + } + } + scope:actor = { + add_piety = minor_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_duchy + } + } + scope:actor = { + add_piety = medium_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_kingdom + } + } + scope:actor = { + add_piety = major_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_empire + } + } + scope:actor = { + add_piety = massive_piety_value + } + } + else_if = { + limit = { + scope:recipient = { + highest_held_title_tier = tier_hegemony + } + } + scope:actor = { + add_piety = monumental_piety_value + } + } + else = { + scope:actor = { + add_piety = miniscule_piety_value + } + } + } + if = { + limit = { + scope:actor = { + faith = { + has_doctrine = tenet_cranial_trophies + } + } + scope:recipient = { + is_adult = yes + is_faith_dominant_gender = yes + } + } + tgp_cranial_trophies_beheading_effect = { + KILLER = scope:actor + DEAD = scope:recipient + } + } + # Kill the target + if = { + limit = { + scope:recipient = { is_ai = no } + scope:actor = { is_ai = yes } + } + scope:recipient = { trigger_event = char_interaction.0170 } # Give players a chance to see what's about to happen + show_as_tooltip = { + execute_prisoner_effect = { + VICTIM = scope:recipient + EXECUTIONER = scope:actor + } + } + } + else = { + scope:recipient = { trigger_event = char_interaction.0171 } + execute_prisoner_effect = { + VICTIM = scope:recipient + EXECUTIONER = scope:actor + } + } + + if = { + limit = { always = scope:execution_devour } + scope:actor = { + custom_tooltip = devour_as_execution_tooltip + if = { + limit = { + faith = { has_doctrine_parameter = cannibalism_legal } + NOT = { has_trait = cannibal } + } + add_trait = cannibal + } + stress_impact = { + base = medium_stress_impact_loss + compassionate = miniscule_stress_impact_gain + forgiving = miniscule_stress_impact_gain + } + random = { + chance = 20 + show_as_tooltip = { add_trait = ill } + hidden_effect = { + trigger_event = { + id = health.1001 + days = { 3 10 } + } + } + } + } + } + + if = { + limit = { always = scope:execution_provisions } + scope:actor = { + domicile ?= { + change_provisions = human_provision_value + } + } + } + + if = { + limit = { + always = scope:execution_burned + scope:actor.faith = { + has_doctrine = doctrine_pluralism_fundamentalist + NOT = { + has_doctrine = tenet_extinction_of_dharma + } + } + } + scope:actor = { + add_piety = miniscule_piety_value + } + } + + scope:actor = { + hidden_effect = { + send_interface_message = { + type = event_prison_neutral + title = msg_execute_prisoner + right_icon = scope:recipient + custom_tooltip = msg_execute_prisoner_desc + } + } + } + } + } + + options_heading = execution_options_heading + + send_option = { + is_shown = { + scope:actor = { + OR = { + mpo_keep_prisoners_heads_trigger = yes + faith = scope:recipient.faith + faith = { + has_doctrine = tenet_cranial_trophies + } + culture_has_asian_heritage_pillar_trigger = yes + } + NOT = { + faith = { has_doctrine_parameter = human_sacrifice_active } + } + } + } + flag = execution_beheaded + localization = "EXECUTION_BEHEADED" + } + + #Cannibal option. Should be treated as a "normal" execution, but that you eat the body afterwards (in secret if faith does not allow it). + send_option = { + is_shown = { + scope:actor = { + OR = { + scope:actor.faith = { has_doctrine_parameter = cannibalism_legal } + has_trait = cannibal + any_secret = { type = secret_cannibal } + } + } + } + flag = execution_devour + localization = "EXECUTION_DEVOUR" + } + + send_option = { + is_shown = { + scope:actor = { + NOR = { + AND = { + faith = scope:recipient.faith + faith = { has_doctrine_parameter = human_sacrifice_active } + } + mpo_keep_prisoners_heads_trigger = yes + culture_has_asian_heritage_pillar_trigger = yes + } + } + } + flag = execution_burned + localization = "EXECUTION_BURNED" + } + + send_option = { + is_shown = { + scope:actor.faith = { has_doctrine_parameter = human_sacrifice_active } + } + flag = execution_sacrifice + localization = "EXECUTION_SACRIFICE" + } + + send_option = { + is_shown = { + scope:actor = { + employs_court_position = executioner_court_position + any_court_position_holder = { + type = executioner_court_position + is_physically_able = yes + } + exists = capital_county + } + } + is_valid = { + scope:actor = { + NOT = { + capital_county = { + has_county_modifier = held_public_execution_modifier + } + } + } + } + flag = execution_public + localization = "EXECUTION_PUBLIC" + } + + send_option = { + is_shown = { + scope:actor = { + employs_court_position = kennelperson_camp_officer + any_court_position_holder = { + type = kennelperson_camp_officer + is_physically_able = yes + } + } + } + flag = execution_kennel + localization = "EXECUTION_KENNEL" + } + + send_option = { + is_shown = { + scope:actor = { + has_government = landless_adventurer_government + has_perk = fear_tax_perk + } + } + flag = execution_provisions + localization = "EXECUTION_PROVISIONS" + } + + send_options_exclusive = yes + auto_accept = yes +} + +debug_imprison_simple_interaction = { + use_diplomatic_range = no + category = interaction_debug_main + ignores_pending_interaction_block = yes + icon = prison + interface_priority = 1000 + common_interaction = yes + + is_shown = { + debug_only = yes + scope:recipient = { + is_imprisoned = no + } + scope:recipient != scope:actor + } + + on_accept = { + scope:actor = { + imprison = { + target = scope:recipient + type = house_arrest + } + } + } + + auto_accept = yes +} + +torture_interaction = { + interface_priority = 30 + common_interaction = no + icon = torture_interaction + + category = interaction_category_prison + + desc = torture_interaction_desc + + #cooldown = { years = 1 } + cooldown_against_recipient = { years = 5 } + + is_shown = { + scope:recipient = { is_imprisoned_by = scope:actor } + scope:recipient = { is_adult = yes } + scope:actor = { is_adult = yes } + } + + is_valid_showing_failures_only = { + #scope:recipient = { + # NOT = { + # health <= 1.5 #Because torture would definitely kill them + # } + #} + scope:actor = { + trigger_if = { + limit = { + domicile ?= { is_domicile_type = camp } + } + custom_tooltip = { + text = laamp_torture_requires_tools_tt + domicile = { has_domicile_parameter = camp_unlocks_torture_interaction } + } + } + } + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + is_highlighted = { + OR = { + scope:actor = { has_trait = sadistic } + scope:actor = { has_relation_rival = scope:recipient } + scope:actor = { has_relation_nemesis = scope:recipient } + } + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + scope:actor = { save_scope_as = bg_override_char } + ###EFFECT TOOLTIP### + torture_interaction_actor_effect = yes + show_as_tooltip = { + scope:recipient = { + add_character_modifier = { + modifier = recently_tortured + years = 5 + } + } + } + if = { + limit = { + scope:actor = { + domicile ?= { has_domicile_parameter = estate_torture_grants_influence } + } + } + scope:actor = { custom_tooltip = estate_torture_grants_influence_desc } + } + + ###EVENTS### + hidden_effect = { + #Torture method for descs + random_list = { + 3 = { save_scope_value_as = { name = torture_method value = flag:rack } } + 3 = { save_scope_value_as = { name = torture_method value = flag:whip } } + 1 = { save_scope_value_as = { name = torture_method value = flag:rats } } + 8 = { + trigger = { + scope:actor = { has_trait = lifestyle_poet } + } + save_scope_value_as = { + name = torture_method + value = flag:poetry + } + } + } + + #They have a secret I want to know about + if = { + limit = { + scope:recipient = { + OR = { + any_secret = { + torture_secret_trigger = { PARTICIPANT = scope:recipient } + } + any_known_secret = { + secret_owner = { save_temporary_scope_as = torture_secret_owner } + torture_secret_trigger = { PARTICIPANT = scope:torture_secret_owner } + } + } + } + } + scope:recipient = { + trigger_event = { + id = prison.1001 + days = 1 + } + } + } + else = { + scope:actor = { + trigger_event = { + id = prison.1010 + days = 1 + } + } + } + } + + # Dark Insights Perk: + if = { + limit = { + scope:actor = { has_perk = dark_insights_perk } + } + scope:actor = { + dark_insights_skill_gain_roll_effect = yes + } + } + + # House Relation + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + auto_accept = yes + + # AI + ai_targets = { + ai_recipients = prisoners + } + + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 24 + kingdom = 24 + empire = 12 + hegemony = 12 + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = -25 + + modifier = { + has_trait = sadistic + add = 30 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + } +} + +castrate_interaction = { + interface_priority = 30 + icon = eunuch + + category = interaction_category_prison + desc = castrate_interaction_desc + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + is_eunuch_trigger = no + is_male = yes + } + scope:actor = { + is_adult = yes + OR = { + culture = { has_cultural_parameter = can_castrate_prisoners } + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + } + + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + is_highlighted = { + OR = { + scope:actor = { has_trait = sadistic } + scope:actor = { has_relation_rival = scope:recipient } + scope:recipient = { + any_claim = { + holder = scope:actor + } + } + } + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + if = { + limit = { + age < 12 + } + ep3_child_castration_effect = yes + } + else = { + ep3_youth_castration_effect = yes + } + release_from_prison = yes + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } + + scope:actor = { + save_scope_as = bg_override_char + trigger_event = { + id = prison.1025 + days = 1 + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_abelarding.desc + REVERSE_NON_HOUSE_TARGET = no + } + + # House Relation + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = prisoners + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = -20 + + modifier = { + has_trait = sadistic + add = 20 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + #Cruel Latins are really into this + modifier = { + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + add = 30 + } + } + + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 48 + kingdom = 36 + empire = 12 + hegemony = 12 + } +} + +blind_interaction = { + interface_priority = 30 + icon = blind + + category = interaction_category_prison + desc = blind_interaction_desc + + is_shown = { + scope:recipient = { + is_imprisoned_by = scope:actor + NOT = { has_trait = blind } + } + scope:actor = { + is_adult = yes + OR = { + culture = { has_cultural_parameter = can_blind_prisoners } + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + } + # If they're our partner emperor, we should use the maiming interaction instead. + liege_should_systematically_maim_co_ruler_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + cannot_release_former_regent_whilst_old_regent_holds_power_trigger = { + PRISONER = scope:recipient + REGENT = scope:recipient.var:imprisoned_by_diarch + } + custom_tooltip = { + text = is_currently_being_purged_tt + scope:recipient = { + NOT = { + has_character_flag = is_currently_being_purged + } + } + } + } + + is_highlighted = { + OR = { + scope:actor = { has_trait = sadistic } + scope:actor = { has_relation_rival = scope:recipient } + scope:recipient = { + any_claim = { + holder = scope:actor + } + } + scope:actor = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + } + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + blind_castrate_and_disfigure_effect = yes #Stress & dread + + show_as_tooltip = { + scope:recipient = { + add_trait = blind + release_from_prison = yes + } + } + + # Merciful Blindings + scope:actor = { + if = { + limit = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + add_piety = medium_piety_gain + } + } + + torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } + + scope:actor = { + save_scope_as = bg_override_char + trigger_event = { + id = prison.1020 + days = 1 + } + } + + # If we're a clan this interaction affects unity + if = { + limit = { scope:actor.culture = { has_cultural_parameter = merciful_blinding } } # If actor's culture has Merciful Blindings, they lose less unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # House Relation + scope:recipient.house ?= { + change_house_relation_effect = { + HOUSE = scope:actor.house + VALUE = house_relation_damage_medium_value + REASON = torture + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = prisoners + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = -20 + + modifier = { + has_trait = sadistic + add = 20 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -0.25 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + #Cruel Latins are really into this + modifier = { + top_liege.primary_title = { + has_variable = emulating_byz_punishment_var + } + add = 30 + } + } + + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 48 + kingdom = 36 + empire = 12 + hegemony = 12 + } +} + +prison_break_contract_interaction = { + interface_priority = 30 + common_interaction = yes + icon = prison + + category = interaction_category_prison + + desc = prison_break_contract_interaction_desc + + cooldown_against_recipient = { years = 1 } + + is_shown = { + scope:actor = { + any_character_active_contract = { + task_contract_type = laamp_prison_break_contract + OR = { + var:task_contract_target = scope:recipient + var:task_contract_object = scope:recipient + var:task_contract_employer = scope:recipient + } + } + } + } + + redirect = { + scope:actor = { + random_character_active_contract = { + task_contract_type = laamp_prison_break_contract + limit = { + OR = { + var:task_contract_target = scope:recipient + var:task_contract_object = scope:recipient + var:task_contract_employer = scope:recipient + } + } + var:task_contract_object = { + save_scope_as = secondary_recipient + } + var:task_contract_target = { + save_scope_as = recipient + } + var:task_contract_employer = { + save_scope_as = secondary_actor + } + } + } + } + + is_highlighted = { + always = yes + } + + on_accept = { + scope:actor = { + start_scheme = { + type = laamp_prison_break_scheme + target_character = scope:recipient + } + random_scheme = { + type = laamp_prison_break_scheme + limit = { + scheme_target_character = scope:recipient + } + save_scope_as = scheme + } + #save scopes for scheme start event + scope:secondary_recipient = { + save_scope_as = task_contract_object + } + scope:recipient = { + save_scope_as = task_contract_target + } + scope:secondary_actor = { + save_scope_as = task_contract_employer + } + trigger_event = laamp_extra_contract_schemes.0011 + } + } + + auto_accept = yes +} + +systematically_maim_character_interaction = { + interface_priority = 30 + icon = torture_interaction + category = interaction_category_diarch + common_interaction = no + desc = systematically_maim_character_interaction_desc + + is_shown = { + scope:actor = { liege_should_systematically_maim_co_ruler_trigger = yes } + } + + is_valid_showing_failures_only = { + scope:actor = { is_adult = yes } + scope:recipient = { + custom_description = { + text = "currently_being_tortured" + NOT = { has_character_flag = is_being_tortured } + } + } + scope:recipient = { is_imprisoned_by = scope:actor } + # There's literally nothing left to remove. + scope:recipient = { + NAND = { + OR = { + is_eunuch_trigger = yes + is_female = yes + } + has_trait = blind + has_trait = disfigured + has_trait = maimed + has_trait = one_legged + } + } + } + + send_option = { + flag = maim_castrate + is_valid = { + scope:recipient = { + NOR = { + is_eunuch_trigger = yes + is_female = yes + } + } + } + localization = maim_castrate_name + current_description = maim_castrate + } + send_option = { + flag = maim_blind + is_valid = { + scope:recipient = { + NOT = { has_trait = blind } + } + } + localization = maim_blind_name + current_description = maim_blind + + } + send_option = { + flag = maim_face + is_valid = { + scope:recipient = { + NOT = { has_trait = disfigured } + } + } + localization = maim_face_name + current_description = maim_face + } + send_option = { + flag = maim_leg + is_valid = { + scope:recipient = { + NOT = { has_trait = one_legged } + } + } + localization = maim_leg_name + current_description = maim_leg + } + send_option = { + flag = maim_arm + is_valid = { + scope:recipient = { + NOT = { has_trait = maimed } + } + } + localization = maim_arm_name + current_description = maim_arm + } + + on_accept = { + scope:recipient = { + add_character_flag = { + flag = is_being_tortured + months = 6 # Players in MP can keep the event window open... + } + } + + # Stress & dread + blind_castrate_and_disfigure_effect = yes + # Our diarchy will be destroyed. + save_scope_value_as = { + name = destroy_diarchy + value = yes + } + show_as_tooltip = { + scope:actor = { maiming_destroy_diarchy_effect = yes } + } + + # Let the enchoppening begin. + ## Castrate. + if = { + limit = { scope:maim_castrate = yes } + show_as_tooltip = { + scope:recipient = { + if = { + limit = { + age < 12 + } + ep3_child_castration_effect = yes + } + else = { + ep3_youth_castration_effect = yes + } + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = castrated } + scope:actor = { + clear_designated_heir = yes + trigger_event = { + id = prison.1025 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_abelarding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ## Blind. + if = { + limit = { scope:maim_blind = yes } + show_as_tooltip = { + scope:recipient = { + add_trait = blind + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = blinded } + scope:actor = { + clear_designated_heir = yes + # Merciful Blindings + if = { + limit = { + culture = { has_cultural_parameter = merciful_blinding } + OR = { + has_execute_reason = scope:recipient + has_banish_reason = scope:recipient + } + } + add_piety = medium_piety_gain + } + trigger_event = { + id = prison.1020 + days = 1 + } + } + # If actor's culture has Merciful Blindings, they lose less unity. + if = { + limit = { + scope:actor.culture = { has_cultural_parameter = merciful_blinding } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else = { + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_blinding.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + ## Disfigure. + if = { + limit = { scope:maim_face = yes } + show_as_tooltip = { + scope:recipient = { + add_trait = disfigured + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = disfigured } + scope:actor = { + clear_designated_heir = yes + trigger_event = { + id = prison.1030 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_maimed.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ## Take off an arm. + if = { + limit = { scope:maim_arm = yes } + show_as_tooltip = { + scope:recipient = { + apply_maimed_trait_and_modifier_effect = yes + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed } + scope:actor = { + clear_designated_heir = yes + save_scope_value_as = { + name = maim_type + value = flag:arm + } + trigger_event = { + id = prison.1041 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_maimed.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + ## Take off a leg. + if = { + limit = { scope:maim_leg = yes } + show_as_tooltip = { + scope:recipient = { + add_trait = one_legged + release_from_prison = yes + } + } + torture_blind_castrate_disfigure_opinion_effect = { VERB = maimed } + scope:actor = { + clear_designated_heir = yes + save_scope_value_as = { + name = maim_type + value = flag:leg + } + trigger_event = { + id = prison.1041 + days = 1 + } + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_maimed.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + auto_accept = yes + + ai_targets = { ai_recipients = prisoners } + + ai_potential = { + has_diarchy_active_parameter = diarchy_is_co_rulership + liege_can_maim_co_ruler_without_killing_them_trigger = yes + } + + ai_will_do = { + base = -50 + + modifier = { + has_trait = sadistic + add = 50 + } + modifier = { + has_trait = callous + add = 40 + } + ai_value_modifier = { + ai_compassion = tiny_chance_impact_negative_ai_value #Adds +50 for highly uncompassionate characters, -50 for highly compassionate characters + } + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + #Scope:target has caused internal strife in the realm + character_hates_scope_due_to_strife_modifier = { TARGET = scope:recipient } + modifier = { # Family Feud + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + add = 30 + } + modifier = { + scope:actor = { + has_opinion_modifier = { + modifier = tried_to_escape_from_prison_opinion + target = scope:recipient + } + } + add = 25 + } + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 60 + empire = 60 + hegemony = 60 + } +} diff --git a/common/character_interactions/00_religious_interactions.txt b/common/character_interactions/00_religious_interactions.txt index cd98c0a4..239dac97 100644 --- a/common/character_interactions/00_religious_interactions.txt +++ b/common/character_interactions/00_religious_interactions.txt @@ -826,7 +826,7 @@ demand_conversion_vassal_ruler_interaction = { is_ruler = yes OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -836,7 +836,7 @@ demand_conversion_vassal_ruler_interaction = { scope:recipient = { OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } diff --git a/common/character_interactions/00_revoke_title_interaction.txt b/common/character_interactions/00_revoke_title_interaction.txt index d05b7c71..6100af44 100644 --- a/common/character_interactions/00_revoke_title_interaction.txt +++ b/common/character_interactions/00_revoke_title_interaction.txt @@ -72,7 +72,7 @@ is_shown = { scope:recipient = { - NOT = { government_has_flag = government_is_herder } # They have their own interaction without cooldowns/maluses + NOT = { government_has_flag = government_is_true_herder } # They have their own interaction without cooldowns/maluses is_landed_or_landless_administrative = yes # should be shown but be disabled for indirect vassals target_is_liege_or_above = scope:actor @@ -667,7 +667,7 @@ limit = { scope:landed_title.tier != tier_barony NOT = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } } } scope:actor = { @@ -677,7 +677,7 @@ } if = { limit = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } } scope:recipient = { add_opinion = { @@ -703,7 +703,7 @@ limit = { scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } NOT = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } } } scope:actor = { @@ -828,7 +828,7 @@ modifier = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } add = 40 desc = MIGRATION_INTERACTION_HERDER diff --git a/common/character_interactions/00_scheme_interactions.txt b/common/character_interactions/00_scheme_interactions.txt new file mode 100644 index 00000000..226b87ca --- /dev/null +++ b/common/character_interactions/00_scheme_interactions.txt @@ -0,0 +1,2838 @@ +#Character interactions relating to schemes + +start_murder_interaction = { + icon = icon_scheme_murder + common_interaction = yes + interface_priority = 90 + category = interaction_category_hostile + + ignores_pending_interaction_block = yes + + scheme = murder + + send_name = START_SCHEME + + is_shown = { + scope:recipient != scope:actor + + NAND = { # Game Rules! + has_game_rule = no_players_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + is_ai = no + } + } + + NAND = { + has_game_rule = no_player_families_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + OR = { + is_ai = no + any_close_family_member = { + AND = { + is_ai = no + this != scope:actor + } + } + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = murder + target_character = scope:recipient + } + } + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + trigger_if = { + limit = { scope:actor = { has_variable = no_scheming_allowed_var } } + custom_tooltip = { + text = no_scheming_allowed_var_tt + scope:actor.var:no_scheming_allowed_var != scope:recipient + } + } + } + + desc = { + triggered_desc = { + trigger = { + scope:actor = { + can_start_scheme = { + type = murder + target_character = scope:recipient + } + } + } + desc = scheme_interaction_tt_murder_approved + } + } + + # Scheme Starter Packages + options_heading = schemes.t.agent_packages + send_options_exclusive = yes + ## Balanced agents. + send_option = { + flag = agent_focus_balance + current_description = start_murder_interaction.tt.agent_focus_balance + } + ## Focused on Success Chance. + send_option = { + flag = agent_focus_success + current_description = start_murder_interaction.tt.agent_focus_success + } + ## Focused on Speed. + send_option = { + flag = agent_focus_speed + current_description = start_murder_interaction.tt.agent_focus_speed + } + ## Focused on Secrecy. + send_option = { + flag = agent_focus_secrecy + current_description = start_murder_interaction.tt.agent_focus_secrecy + } + + on_accept = { + scope:actor = { + stress_impact = { + compassionate = major_stress_impact_gain + honest = medium_stress_impact_gain + just = medium_stress_impact_gain + } + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = start_murder_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + # Success. + if = { + limit = { scope:agent_focus_success ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_assassin + AGENT_2 = agent_assassin + AGENT_3 = agent_thug + # Speed. + AGENT_4 = agent_infiltrator + # Secrecy. + AGENT_5 = agent_alibi + } + } + # Speed. + else_if = { + limit = { scope:agent_focus_speed ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Speed. + AGENT_1 = agent_infiltrator + AGENT_2 = agent_infiltrator + AGENT_3 = agent_footpad + # Success. + AGENT_4 = agent_assassin + # Secrecy. + AGENT_5 = agent_alibi + } + } + # Secrecy. + else_if = { + limit = { scope:agent_focus_secrecy ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Secrecy. + AGENT_1 = agent_alibi + AGENT_2 = agent_alibi + AGENT_3 = agent_lookout + # Success. + AGENT_4 = agent_assassin + # Speed. + AGENT_5 = agent_infiltrator + } + } + # Balanced. + else = { + begin_scheme_with_agents_effect = { + SCHEME_TYPE = murder + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_assassin + AGENT_2 = agent_assassin + # Speed. + AGENT_3 = agent_infiltrator + AGENT_4 = agent_footpad + # Secrecy. + AGENT_5 = agent_alibi + } + } + } + # Plus any on_start modifiers we may need. + if = { + limit = { var:feast_events_ewan_0001_bonus_value ?= scope:recipient } + # Hand over the modifier. + random_scheme = { + type = murder + limit = { + scheme_target_character = scope:recipient + } + add_scheme_modifier = { type = feast_learnt_habits_modifier } + } + # Remove the variable now that we're done with it. + remove_variable = feast_events_ewan_0001_bonus_value + } + } + } + + auto_accept = yes + + # AI for murders is handled in event murder_scheme_maintenance.1, fired from the five_year_playable_pulse +} + +start_abduct = { + icon = icon_scheme_abduct + interface_priority = 70 + category = interaction_category_hostile + + send_name = START_SCHEME + + scheme = abduct + ignores_pending_interaction_block = yes + + is_shown = { + scope:actor = { + OR = { + has_perk = kidnapper_perk # Scheme unlocked by the Kidnapper Perk + domicile ?= { has_domicile_parameter = camp_unlocks_abduct_scheme } + AND = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = unlocks_abduct_for_all + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:recipient + } + } + } + } + } + + NOR = { + scope:recipient = scope:actor + scope:recipient = { is_imprisoned_by = scope:actor } + } + #exists = scope:recipient.court_owner + + NAND = { # Game Rules! + has_game_rule = no_players_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + is_ai = no + } + } + + NAND = { + has_game_rule = no_player_families_multiplayer_murder_schemes + scope:actor = { + is_ai = no + } + scope:recipient = { + OR = { + is_ai = no + any_close_family_member = { + AND = { + is_ai = no + this != scope:actor + } + } + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = abduct + target_character = scope:recipient + } + } + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + trigger_if = { + limit = { scope:actor = { has_variable = no_scheming_allowed_var } } + custom_tooltip = { + text = no_scheming_allowed_var_tt + scope:actor.var:no_scheming_allowed_var != scope:recipient + } + } + } + + desc = { + triggered_desc = { + trigger = { + scope:actor = { + can_start_scheme = { + type = abduct + target_character = scope:recipient + } + } + } + desc = scheme_interaction_tt_abduct_approved + } + } + + # Scheme Starter Packages + options_heading = schemes.t.agent_packages + send_options_exclusive = yes + ## Balanced agents. + send_option = { + flag = agent_focus_balance + current_description = start_abduct.tt.agent_focus_balance + } + ## Focused on Success Chance. + send_option = { + flag = agent_focus_success + current_description = start_abduct.tt.agent_focus_success + } + ## Focused on Speed. + send_option = { + flag = agent_focus_speed + current_description = start_abduct.tt.agent_focus_speed + } + ## Focused on Secrecy. + send_option = { + flag = agent_focus_secrecy + current_description = start_abduct.tt.agent_focus_secrecy + } + + on_accept = { + scope:actor = { + stress_impact = { + compassionate = medium_stress_impact_gain + honest = minor_stress_impact_gain + just = minor_stress_impact_gain + } + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = start_abduct_notification + + left_icon = scope:actor + right_icon = scope:recipient + + # Success. + if = { + limit = { scope:agent_focus_success ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_thug + AGENT_3 = agent_muscle + # Speed. + AGENT_4 = agent_footpad + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Speed. + else_if = { + limit = { scope:agent_focus_speed ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Speed. + AGENT_1 = agent_footpad + AGENT_2 = agent_footpad + AGENT_3 = agent_infiltrator + # Success. + AGENT_4 = agent_thug + # Secrecy. + AGENT_5 = agent_lookout + } + } + # Secrecy. + else_if = { + limit = { scope:agent_focus_secrecy ?= yes } + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Secrecy. + AGENT_1 = agent_lookout + AGENT_2 = agent_lookout + AGENT_3 = agent_decoy + # Success. + AGENT_4 = agent_thug + # Speed. + AGENT_5 = agent_footpad + } + } + # Balanced. + else = { + begin_scheme_with_agents_effect = { + SCHEME_TYPE = abduct + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + # Success. + AGENT_1 = agent_thug + AGENT_2 = agent_muscle + # Speed. + AGENT_3 = agent_footpad + AGENT_4 = agent_infiltrator + # Secrecy. + AGENT_5 = agent_lookout + } + } + } + } + } + + ai_targets = { ai_recipients = liege } + ai_frequency_by_tier = { + barony = 0 + county = 60 + duchy = 60 + kingdom = 60 + empire = 0 + hegemony = 0 + } + + ai_potential = { + liege ?= { has_diarchy_active_parameter = diarchy_is_co_rulership } + is_diarch = yes + is_ruler = yes + ai_diarch_would_maim_execute_superior_if_got_chance_trigger = { LIEGE = liege } + } + + ai_will_do = { + # They shouldn't always do this. + base = -100 + + # Obvious factor. + opinion_modifier = { + opinion_target = scope:recipient + multiplier = -1 + } + ai_value_modifier = { ai_honor = -1 } + # Traits. + ## Disloyal. + modifier = { + add = 100 + has_trait = disloyal + } + ## Ambitious. + modifier = { + add = 75 + has_trait = ambitious + } + ## Arrogant. + modifier = { + add = 25 + has_trait = arrogant + } + ## Fickle. + modifier = { + add = 25 + has_trait = fickle + } + ## Callous. + modifier = { + add = 25 + has_trait = callous + } + ## Compassionate. + modifier = { + add = -50 + has_trait = compassionate + } + ## Humble. + modifier = { + add = -50 + has_trait = humble + } + ## Content. + modifier = { + add = -100 + has_trait = content + } + ## Loyal. + modifier = { + add = -300 + has_trait = loyal + } + # Time as a diarch — the longer they've been waiting, the more eager they are. + modifier = { + add = { + value = years_as_diarch + multiply = 2 + } + always = yes + } + } + + auto_accept = yes +} + +end_scheme = { + is_shown = { + #debug_only = yes + } + special_interaction = remove_scheme_interaction + use_diplomatic_range = no + hidden = yes + on_accept = { + scope:scheme = { + end_scheme = yes + } + } + + auto_accept = yes + ignores_pending_interaction_block = yes +} + +befriend_interaction = { + icon = icon_scheme_befriend + category = interaction_category_friendly + + interface_priority = 90 + scheme = befriend + + send_name = START_SCHEME + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = liege + ai_recipients = neighboring_rulers + } + ai_targets = { + ai_recipients = vassals + ai_recipients = peer_vassals + chance = 0.25 + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 24 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:actor = { + can_use_befriend_scheme_trigger = { TARGET = scope:recipient } + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = befriend + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + cost = { + prestige = { + value = 0 + if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + NOR = { + has_perk = befriend_perk + AND = { + exists = dynasty + dynasty = { + has_dynasty_perk = fp1_adventure_legacy_5 + } + target_is_vassal_or_below = scope:recipient + } + culture = { has_cultural_parameter = automatic_befriend_access } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_unlocks_befriend_schemes_for_everyone + } + AND = { + government_has_flag = government_is_clan + is_in_same_clan_as_trigger = { CHARACTER = scope:recipient } + house = { has_house_unity_stage = harmonious } + } + } + } + } + add = scope:actor.minor_prestige_value + if = { + limit = { + scope:recipient = { + is_vassal_of = scope:actor + } + } + add = scope:actor.miniscule_prestige_value + } + if = { + limit = { + scope:actor = { + is_vassal_of = scope:recipient + } + } + add = scope:actor.minor_prestige_value + } + } + } + } + + desc = { + triggered_desc = { + trigger = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + can_start_scheme = { + type = befriend + target_character = scope:recipient + } + } + } + desc = scheme_interaction_tt_befriend_approved + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = befriend_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = befriend + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + } + } + if = { #Stubborness effect + limit = { + scope:recipient = { + has_trait = stubborn + } + } + scope:actor = { + random_scheme = { + type = befriend + limit = { + scheme_target_character = scope:recipient + } + scheme_target_character = { + random_list = { + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -5 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -10 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -15 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -20 + } + } + 20 = { + set_variable = { + name = recipient_stubborness_scheme + value = -25 + } + } + } + } + } + } + } + } + + ai_potential = { + OR = { + has_perk = befriend_perk # Unlocked by the Befriend Perk + dynasty ?= { + has_dynasty_perk = fp1_adventure_legacy_5 + } + culture = { has_cultural_parameter = automatic_befriend_access } + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = struggle_unlocks_befriend_schemes_for_everyone + } + house ?= { has_house_power_parameter = aspect_of_serenity } + } + NOR = { + has_trait = shy + has_trait = callous + any_scheme = { + OR = { + scheme_type = befriend + #scheme_type = sway # We allow the AI to override Sway with Befriend + scheme_type = seduce + scheme_type = courting + scheme_type = elope + scheme_type = learn_language + scheme_type = teach_governor + } + } + AND = { # No one cares about City barons + is_lowborn = yes + primary_title.tier <= tier_barony + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 50 + + modifier = { # Try to befriend those who you might want to vassalize + add = 30 + scope:actor = { + top_liege = this + primary_title.tier >= tier_county + NOT = { + any_targeting_faction = { + exists = yes + OR = { + faction_is_type = liberty_faction + faction_is_type = claimant_faction + faction_is_type = independence_faction + } + } + } + } + scope:recipient = { + top_liege = this + is_playable_character = yes + primary_title.tier < scope:actor.primary_title.tier + OR = { + faith.religion = scope:actor.faith.religion + AND = { + faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + scope:actor.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + } + + modifier = { + factor = 0.1 + scope:actor = { + opinion = { + target = scope:recipient + value < -50 + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + opinion = { + target = scope:actor + value > 50 + } + } + } + + modifier = { + factor = 0.5 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value < 2 + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value < 1 + } + } + } + + # Struggle + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + scope:recipient = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + trait_compatibility = { + target = scope:recipient + value >= low_positive_trait_compatibility + } + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + trait_compatibility = { + target = scope:recipient + value >= low_positive_trait_compatibility + } + } + } + add = 50 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -200 + } + else = { + add = 10 + } + } + } + + modifier = { + factor = 25 + OR = { + has_focus = diplomacy_family_focus + house ?= { has_house_power_parameter = aspect_of_serenity } + } + } + + modifier = { + factor = 2 + scope:recipient.liege = scope:actor + } + + modifier = { + factor = 0.5 + scope:recipient.faith != scope:actor.faith + } + + modifier = { + factor = 0.25 + scope:actor = { + is_ruler = yes + tier_difference = { + target = scope:recipient + value > 2 + } + } + } + modifier = { + factor = 0.35 + scope:actor = { + has_personality_malicious_trigger = yes + } + } + modifier = { + factor = 2 + scope:actor = { + OR = { + has_trait = gregarious + has_trait = diplomat + has_trait = family_first + has_trait = august + } + } + } + modifier = { + factor = 1.5 + scope:actor = { + num_of_relation_friend < 3 + } + } + modifier = { #Better to Court rather than befriend. + factor = 0.25 + scope:actor = { + is_spouse_of = scope:recipient + } + } + modifier = { + factor = 0.75 + scope:recipient = { + is_child_of = scope:actor + } + } + modifier = { + factor = 2 + scope:actor = { + is_child_of = scope:recipient + } + } + modifier = { + factor = 2 + scope:actor = { #Friends of friends + any_relation = { + type = friend + any_relation = { + type = friend + this = scope:recipient + } + } + } + } + modifier = { + factor = 0.25 + scope:recipient = { + any_claim = { + this = scope:actor.primary_title + } + } + } + } +} + +seduce_interaction = { + icon = icon_scheme_seduce + category = interaction_category_friendly + interface_priority = 45 + scheme = seduce + common_interaction = no + + send_name = START_SCHEME + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = family + max = 2 + } + ai_targets = { + ai_recipients = guests + ai_recipients = courtiers + max = 10 + } + ai_targets = { + ai_recipients = neighboring_rulers + max = 5 + } + ai_targets = { + ai_recipients = vassals + max = 5 + } + ai_targets = { + ai_recipients = peer_vassals + max = 5 + } + + # We don't want this to grow ludicrously large in big realms + ai_targets = { + ai_recipients = realm_characters + max = 10 + } + + ai_target_quick_trigger = { + adult = yes + attracted_to_owner = yes + owner_attracted = yes + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 36 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { is_adult = yes } + scope:actor = { is_adult = yes } + + # Avoid seducing lowborn nobodies in foreign courts + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + } + NOT = { + scope:recipient = { + is_lowborn = yes + is_playable_character = no + NOR = { + is_courtier_of = scope:actor + is_foreign_court_or_pool_guest_of = scope:actor + } + } + } + } + scope:actor = { # Some early filtering for the AI to focus it towards fruitful seductions + trigger_if = { + limit = { + is_ai = yes + } + trigger_if = { # Deviants will seduce anyone + limit = { + is_deviant_trigger = yes + } + } + trigger_else_if = { # It's always fine to seduce your spouse + limit = { + scope:recipient = { is_consort_of = scope:actor } + } + } + trigger_else_if = { # If the target is a close family member, only certain AI's will seduce much older members + limit = { + ai_rationality <= -50 + is_close_family_of = scope:recipient + OR = { + has_trait = lustful + has_trait = rakish + is_incestuous_trigger = yes + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + scope:recipient.age <= scope:actor.age_plus_25 + } + trigger_else_if = { # Lustful/seduction-focused characters have a wider range + limit = { + OR = { + has_trait = lustful + has_trait = rakish + has_focus = intrigue_temptation_focus + } + } + OR = { + scope:recipient.age <= scope:actor.age_plus_10 + AND = { # Seducing your vassals/liege/realm priest is good realm management, AND drama! + has_focus = intrigue_temptation_focus + OR = { + scope:recipient = { + is_vassal_of = scope:actor + } + liege ?= scope:recipient + + scope:recipient = { + is_theocratic_lessee = yes + is_courtier_of = scope:actor + } + } + } + } + trigger_if = { # The AI should focus on bastard-producing seductions, it's more dramatic + limit = { + is_male = yes + scope:recipient = { + is_female = yes + } + } + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + } + trigger_else_if = { # Male characters with no children that are seducing women want to produce bastards + limit = { + is_male = yes + scope:recipient = { is_female = yes } + any_child = { + count <= 1 + } + } + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + trigger_else = { # Otherwise, try to not seduce with *too* large an age gap + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age >= scope:actor.age_minus_10 + } + } + trigger_else = { + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + can_start_scheme = { + type = seduce + target_character = scope:recipient + } + } + trigger_if = { + limit = { + scope:recipient = { exists = primary_spouse } + } + scope:recipient = { primary_spouse = { NOT = { has_strong_hook = scope:actor } } } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_seduce_approved + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = seduce_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = seduce + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + + seduce_interaction_stress_effect = yes + } + } + scope:actor = { + if = { + limit = { + NOT = { is_attracted_to_gender_of = scope:recipient } + } + custom_tooltip = scheme_interaction_tt_wrong_gender_no_lover + } + } + } + + ai_potential = { + is_adult = yes + NOR = { + has_trait = celibate + has_trait = chaste + scheme_generic_ai_blocker_trigger = yes + primary_title = { + is_mercenary_company = yes + } + AND = { # No one cares about City barons + is_lowborn = yes + primary_title.tier <= tier_barony + } + } + might_cheat_on_every_partner_trigger = yes + } + + auto_accept = yes + + ai_will_do = { + base = 5 + + modifier = { + add = -50 + scope:actor = { + primary_spouse ?= { has_strong_hook = scope:actor } + } + } + + modifier = { + add = 50 + scope:actor = { + has_focus = intrigue_temptation_focus + } + } + + modifier = { + add = 50 + scope:actor = { + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + + modifier = { + add = 25 + exists = scope:actor.dynasty + scope:actor.dynasty = { + has_dynasty_perk = fp1_adventure_legacy_2 + } + } + + modifier = { # Focus on befriending if that's the path you've chosen + add = -50 + scope:actor = { + has_perk = befriend_perk + } + } + + modifier = { # Non-lustful clergy tend to not seduce + add = -25 + scope:actor = { + is_clergy = yes + faith = { + NOT = { has_doctrine_parameter = clergy_can_marry } + } + NOR = { + has_trait = lustful + has_focus = intrigue_temptation_focus + } + } + } + + modifier = { # Seducing your unmarried courtiers is good for producing bastards, which the AI will want to do if they have few heirs + add = 10 + scope:actor = { + any_child = { + count <= 1 + } + } + scope:recipient = { + is_married = no + fertility > low_fertility + OR = { + is_courtier_of = scope:actor + is_pool_guest_of = scope:actor + } + } + } + + modifier = { + add = 30 + scope:actor = { + has_trait = lustful + } + } + + modifier = { # ( ͡° ͜ʖ ͡°) + add = 50 + scope:actor = { + is_close_or_extended_family_of = scope:recipient + is_deviant_trigger = yes + } + scope:recipient = { + OR = { + is_deviant_trigger = yes + has_trait = lustful + } + } + } + + modifier = { + add = 25 + scope:actor = { + is_close_or_extended_family_of = scope:recipient + is_deviant_trigger = yes + } + scope:recipient = { + NOR = { + is_deviant_trigger = yes + has_trait = lustful + } + } + } + + modifier = { + add = 50 + scope:actor = { + is_close_or_extended_family_of = scope:recipient + faith = { has_doctrine = tenet_divine_marriage } + } + } + + modifier = { # Seducing the spouse of your rival is good drama... + add = 25 + scope:recipient = { + primary_spouse ?= { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + } + } + + modifier = { + add = -20 + scope:actor = { + NOR = { + has_trait = lustful + has_trait = arbitrary + is_deviant_trigger = yes + faith = { has_doctrine = tenet_divine_marriage } + has_perk = subtle_desire_perk + } + } + scope:recipient = { + is_close_family_of = scope:actor + } + } + + modifier = { # Seducing someone's spouse is not a clever prospect for most characters, so lowering the attractiveness a bit + add = -20 + scope:recipient = { + is_married = yes + primary_spouse != scope:actor + } + scope:actor = { + NOR = { + has_trait = lustful + has_focus = intrigue_temptation_focus + } + } + } + + modifier = { # Try to avoid agressive seduction unless you're geared for it + add = -10 + scope:actor = { + NOR = { + has_trait = lustful + has_focus = intrigue_temptation_focus + } + } + scope:recipient = { + is_lowborn = no + NOT = { is_pool_guest_of = scope:actor } + } + } + + # Struggle + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_friend_lover_with_character + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + trait_compatibility = { + target = scope:recipient + value >= low_positive_trait_compatibility + } + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = 50 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -200 + } + else = { + add = 5 + } + } + } + + modifier = { + factor = 1.25 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value >= 1 + } + } + } + + modifier = { + factor = 1.5 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value >= 2 + } + } + } + + modifier = { + factor = 2 + scope:recipient = { + number_of_personality_traits_in_common = { + target = scope:actor + value >= 3 + } + } + } + + modifier = { + factor = 1.5 + scope:recipient = { + is_playable_character = yes + } + } + + modifier = { # Target the player less aggressively + factor = 0.5 + scope:recipient = { + OR = { + is_ai = no + any_consort = { + is_ai = no + } + } + } + } + + modifier = { + factor = 1.25 + scope:recipient = { + OR = { + has_trait = lustful + has_trait = beauty_good + } + } + } + + modifier = { # Try to avoid 0% success chance + factor = { + value = 0.1 + if = { + limit = { + scope:recipient = { + opinion = { + target = scope:actor + value < -15 + } + } + } + value = 0 + } + } + scope:recipient = { + opinion = { + target = scope:actor + value < -5 + } + } + } + + modifier = { # Try to avoid 0% success chance + factor = 0.1 + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value >= 1 + } + } + } + + modifier = { + factor = 0.75 + scope:recipient = { + is_lowborn = yes + } + } + + modifier = { # Barons tend to not seduce anyone landed above them + factor = 0.1 + scope:actor = { + is_playable_character = yes + primary_title = { + tier = tier_barony + } + } + scope:recipient = { + OR = { + AND = { + is_playable_character = yes + primary_title = { + tier > tier_barony + } + } + any_spouse = { + is_playable_character = yes + primary_title = { + tier > tier_barony + } + } + } + } + } + + modifier = { + factor = 0.2 + scope:recipient = { + is_ai = yes + any_targeting_scheme = { + scheme_type = seduce + } + } + } + + modifier = { # + factor = 0.1 + scope:recipient = { + is_ai = yes + has_trait = chaste + } + } + + modifier = { + factor = 0 + scope:recipient = { + is_ai = yes + any_relation = { type = soulmate } + } + } + + modifier = { # Family Feud + add = 50 + scope:actor = { + house_has_feud_relation_with_trigger = { TARGET = scope:recipient } + } + } + } +} + +court_interaction = { + icon = icon_scheme_romance + category = interaction_category_friendly + + send_name = START_SCHEME + + interface_priority = 40 + scheme = courting + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = spouses + ai_recipients = neighboring_rulers + } + + ai_targets = { + ai_recipients = vassals + max = 5 + } + + ai_targets = { + ai_recipients = peer_vassals + max = 5 + } + + ai_targets = { + ai_recipients = family + max = 5 + } + + ai_targets = { + ai_recipients = realm_characters + max = 30 + } + + ai_target_quick_trigger = { + adult = yes + attracted_to_owner = yes + owner_attracted = yes + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 36 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:recipient = { + is_adult = yes + is_attracted_to_gender_of = scope:actor + } + + scope:actor = { + this != scope:recipient + is_adult = yes + #Some asexuality handling + trigger_if = { + limit = { has_sexuality = asexual } + trigger_if = { + limit = { is_ai = yes } + always = no + } + trigger_else = { + scope:recipient = { is_consort_of = scope:actor } + } + } + # Some early filtering for the AI to focus it towards fruitful romance + trigger_if = { + limit = { is_ai = yes } + trigger_if = { # Deviants will romance anyone + limit = { is_deviant_trigger = yes } + } + trigger_else_if = { # It's always fine to romance your spouse + limit = { + scope:recipient = { is_consort_of = scope:actor } + } + } + trigger_else_if = { # If the target is a close family member, only certain AI's will romance much older members + limit = { + ai_rationality <= -50 + is_close_family_of = scope:recipient + OR = { + has_trait = lustful + has_trait = rakish + is_incestuous_trigger = yes + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + scope:recipient.age <= scope:actor.age_plus_25 + } + trigger_else_if = { # Lustful/seduction-focused characters have a wider range + limit = { + OR = { + has_trait = lustful + has_trait = rakish + has_focus = intrigue_temptation_focus + } + } + OR = { + scope:recipient.age <= scope:actor.age_plus_10 + AND = { # Romancing your vassals/liege/realm priest is good realm management, AND drama! + has_focus = intrigue_temptation_focus + OR = { + scope:recipient = { + is_vassal_of = scope:actor + } + liege ?= scope:recipient + + scope:recipient = { + is_theocratic_lessee = yes + is_courtier_of = scope:actor + } + } + } + } + trigger_if = { # The AI should focus on bastard-producing romances, it's more dramatic + limit = { + is_male = yes + scope:recipient = { + is_female = yes + } + } + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + } + trigger_else_if = { # Male characters with no children that are romancing women want to produce children + limit = { + is_male = yes + scope:recipient = { is_female = yes } + any_child = { + count <= 1 + } + } + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age <= scope:recipient.marriage_female_fertility_cutoff_age_value + } + trigger_else = { # Otherwise, try to not seduce with *too* large an age gap + scope:recipient.age <= scope:actor.age_plus_5 + scope:recipient.age >= scope:actor.age_minus_10 + } + } + trigger_else = { + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + can_start_scheme = { + type = courting + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_courtship_approved + + on_accept = { + scope:actor = { + # If you already have a soulmate, they get very mad + every_relation = { + type = soulmate + limit = { soulmate_relation_is_exclusive_trigger = yes } + + add_opinion = { + modifier = betrayed_our_promise + target = scope:actor + } + } + } + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = court_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = courting + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + + show_as_tooltip = { + # If you already have a soulmate, they get very mad + every_relation = { + type = soulmate + limit = { soulmate_relation_is_exclusive_trigger = yes } + + add_opinion = { + modifier = betrayed_our_promise + target = scope:actor + } + } + } + } + } + scope:recipient = { + if = { + limit = { + is_ai = no + } + add_character_flag = { + flag = courting_cooldown + years = 5 + } + } + } + } + + ai_potential = { + is_adult = yes + trigger_if = { + limit = { + NOR = { + culture = { + has_cultural_parameter = ai_romance_scheme_increase + } + AND = { + has_character_flag = agenda_towards_deescalation + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + } + } + ai_honor >= high_positive_ai_value + ai_compassion >= low_positive_ai_value + } + highest_held_title_tier > tier_barony + NOR = { + has_trait = celibate + has_trait = chaste + scheme_generic_ai_blocker_trigger = yes + AND = { # No one cared about City barons + is_lowborn = yes + primary_title.tier <= tier_barony + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 0 + + + + # Struggle + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + scope:recipient = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + scope:recipient = { + has_character_flag = agenda_towards_deescalation + } + } + add = 25 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -200 + } + else = { + add = 5 + } + } + } + + modifier = { # Motivate AI's to use it on catalyst providers exclusively + add = -50 + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + scope:recipient = { + NOT = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + phase_has_catalyst = catalyst_became_best_friend_soulmate_with_very_important_character + } + } + } + } + + opinion_modifier = { + opinion_target = scope:recipient + multiplier = 0.4 + } + + compatibility_modifier = { + compatibility_target = scope:recipient + multiplier = 1 + max = court_scheme_max_compatability_value + } + + modifier = { + factor = 25 + culture = { + has_cultural_parameter = ai_romance_scheme_increase + } + } + + modifier = { + factor = 25 + has_focus = martial_chivalry_focus + } + + modifier = { + add = 50 + scope:actor = { + has_opinion_modifier = { + modifier = childhood_crush + target = scope:recipient + } + } + } + + modifier = { + add = -50 + scope:actor = { + is_close_family_of = scope:recipient + NOR = { + is_deviant_trigger = yes + has_trait = lustful + } + } + } + + modifier = { + factor = 3 + scope:recipient = { + OR = { + is_playable_character = yes + any_spouse = { + is_playable_character = yes + } + } + } + } + + modifier = { + factor = 1.25 + scope:recipient = { + has_trait = beauty_good + } + } + + modifier = { # Try to avoid 0% success chance + factor = { + value = 0.1 + if = { + limit = { + scope:recipient = { + opinion = { + target = scope:actor + value < -20 + } + } + } + value = 0 + } + } + scope:recipient = { + opinion = { + target = scope:actor + value < 0 + } + } + } + + modifier = { + factor = 0.2 + scope:recipient = { + is_ai = yes + any_targeting_scheme = { + scheme_type = courting + } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + any_relation = { type = soulmate } + } + } + + modifier = { + factor = 0.1 + scope:recipient = { + is_lowborn = yes + is_married = no + } + } + } +} + +sway_interaction = { + icon = icon_scheme_sway + category = interaction_category_friendly + common_interaction = yes + + send_name = START_SCHEME + + interface_priority = 75 + + scheme = sway + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = liege + ai_recipients = neighboring_rulers + max = 10 + } + ai_targets = { + ai_recipients = vassals + ai_recipients = peer_vassals + max = 10 + } + ai_targets = { + ai_recipients = councillors + } + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 24 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + is_shown = { + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = sway + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_sway_approved + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = sway_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = sway + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + } + } + } + + ai_potential = { + NOR = { + scheme_generic_ai_blocker_trigger = yes + primary_title = { + is_mercenary_company = yes + } + } + #Don't override Befriend with Sway? + trigger_if = { + limit = { + OR = { + AND = { + has_royal_court = yes + has_dlc_feature = royal_court + has_court_type = court_diplomatic + court_grandeur_current_level >= 10 + } + AND = { + dynasty ?= { has_dynasty_perk = glory_legacy_5 } + has_royal_court = yes + has_dlc_feature = royal_court + has_court_type = court_diplomatic + court_grandeur_current_level >= 10 + } + } + } + always = yes + } + trigger_else = { + NOT = { + any_scheme = { scheme_type = befriend } + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 10 + + modifier = { # Prefer seducing if you've got the focus for it + add = -20 + scope:actor = { + has_focus = intrigue_temptation_focus + } + } + + modifier = { + add = 10 + scope:recipient = { + is_vassal_of = scope:actor + } + } + + modifier = { # Try to sway those who you might want to vassalize + add = 30 + scope:actor = { + top_liege = this + primary_title.tier >= tier_county + NOT = { + any_targeting_faction = { + exists = yes + OR = { + faction_is_type = liberty_faction + faction_is_type = claimant_faction + faction_is_type = independence_faction + } + } + } + } + scope:recipient = { + top_liege = this + is_playable_character = yes + primary_title.tier < scope:actor.primary_title.tier + OR = { + faith.religion = scope:actor.faith.religion + AND = { + faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + scope:actor.faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + } + + modifier = { + add = 10 + scope:recipient = { + joined_faction ?= { + faction_target = scope:actor + faction_is_type = liberty_faction + faction_is_at_war = no + } + } + } + + modifier = { + add = 20 + scope:recipient = { + joined_faction ?= { + faction_target = scope:actor + faction_is_type = claimant_faction + faction_is_at_war = no + } + } + } + + modifier = { + add = 30 + scope:recipient = { + joined_faction ?= { + faction_target = scope:actor + faction_is_type = independence_faction + faction_is_at_war = no + } + } + } + + modifier = { + factor = 2 + scope:recipient = { + is_a_faction_leader = yes + is_vassal_of = scope:actor + } + } + + modifier = { + factor = 3 + scope:recipient = { + is_vassal_of = scope:actor + opinion = { + target = scope:actor + value < 0 + } + } + } + + modifier = { + factor = 4 + scope:recipient = { + is_powerful_vassal_of = scope:actor + opinion = { + target = scope:actor + value < 0 + } + } + } + + modifier = { + factor = 0.5 + scope:recipient.faith != scope:actor.faith + } + + modifier = { + factor = 0.25 + scope:actor = { + is_ruler = yes + tier_difference = { + target = scope:recipient + value > 2 + } + } + scope:recipient = { + is_theocratic_lessee = no + } + } + modifier = { + factor = 0.5 + scope:actor = { + has_personality_malicious_trigger = yes + } + } + modifier = { + factor = 2 + scope:actor = { + OR = { + has_trait = gregarious + has_trait = diplomat + has_trait = family_first + has_trait = august + } + } + } + modifier = { + factor = 0.75 + scope:recipient = { + is_child_of = scope:actor + } + } + modifier = { + factor = 2 + scope:actor = { + is_child_of = scope:recipient + } + } + modifier = { + factor = 0.25 + scope:recipient = { + any_claim = { + this = scope:actor.primary_title + } + } + } + modifier = { # Butter up the realm priest + factor = 10 + scope:recipient = { + is_theocratic_lessee = yes + opinion = { + target = scope:actor + value <= 50 + } + } + } + modifier = { # Try to make your tax collectors like you + factor = 10 + scope:actor = { + government_has_flag = government_is_clan + } + scope:recipient = { + is_tax_collector = yes + opinion = { + target = scope:actor + value <= 50 + } + } + } + + modifier = { # No point in swaying if opinion is already at 100 + factor = 0 + scope:recipient = { + opinion = { + target = scope:actor + value >= 100 + } + } + } + + modifier = { # If they are unlanded, they have to be a realm priest or spymaster, or in the case for clan rulers, a tax collector + factor = 0 + scope:recipient = { + is_ruler = no + NOR = { + is_theocratic_lessee = yes + has_council_position = councillor_spymaster + AND = { + is_tax_collector = yes + scope:actor = { government_has_flag = government_is_clan } + } + } + } + } + + modifier = { # Ignore rivals unless forgiving + factor = 0 + scope:actor = { + has_relation_rival = scope:recipient + NOT = { has_trait = forgiving } + } + } + + modifier = { # Ignore non-councillor barons + factor = 0 + scope:recipient = { + primary_title.tier = tier_barony + is_councillor = no + } + } + + modifier = { # Ignore neighboring Kings+ + factor = 0 + scope:recipient = { + top_liege = this + is_playable_character = yes + primary_title.tier >= tier_kingdom + } + } + + modifier = { # Ignore neighboring Herders + factor = 0 + scope:recipient = { + government_has_flag = government_is_true_herder + } + } + } +} + +learn_language_interaction = { + icon = icon_scheme_learn_language + category = interaction_category_friendly + common_interaction = yes + + send_name = START_SCHEME + + interface_priority = 42 + scheme = learn_language + ignores_pending_interaction_block = yes + + ai_targets = { + ai_recipients = liege + ai_recipients = head_of_faith + ai_recipients = spouses + ai_recipients = scripted_relations + } + ai_targets = { + ai_recipients = vassals + ai_recipients = peer_vassals + max = 10 + } + ai_targets = { + ai_recipients = neighboring_rulers + max = 5 + } + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 48 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + is_shown = { + scope:actor = { + NOT = { + culture = { + has_same_culture_language = scope:recipient.culture + } + } + } + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + can_start_scheme = { + type = learn_language + target_character = scope:recipient + } + } + #limit range for landless adventurers + trigger_if = { + limit = { + scope:actor = { + has_government = landless_adventurer_government + } + } + #Has to be used instead of diplo range checks in laamp to landed interactions + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + desc = scheme_interaction_tt_learn_language_approved + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = learn_language_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + begin_scheme_basic_effect = { + SCHEME_TYPE = learn_language + TARGET_TYPE = target_character + TARGET_SCOPE = scope:recipient + } + } + } + } + + ai_potential = { + primary_title.tier >= tier_county + NOR = { + has_trait = lazy + has_trait = paranoid + scheme_generic_ai_blocker_trigger = yes + primary_title = { + is_mercenary_company = yes + } + } + } + + auto_accept = yes + + ai_will_do = { + base = 0 + + # Struggle + modifier = { + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_learned_new_language_important + } + } + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_learned_new_language_important + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_deescalation + } + } + add = 100 + } + else_if = { + limit = { + scope:actor = { + has_character_flag = agenda_towards_escalation + } + } + add = -50 + } + } + } + + modifier = { # Focus on befriending if that's the path you've chosen + add = -50 + scope:actor = { + has_perk = befriend_perk + } + } + + modifier = { # Prefer seducing if you've got the focus for it + add = -20 + scope:actor = { + has_focus = intrigue_temptation_focus + } + } + + modifier = { + add = 50 + scope:actor = { + has_perk = open_minded_perk + } + } + + modifier = { + add = 50 + scope:actor = { + culture = { + has_cultural_parameter = rulers_want_to_learn_languages_of_coreligionists + } + } + scope:actor.religion = scope:recipient.religion + } + + modifier = { + add = 25 + scope:actor = { + has_trait = curious + } + } + + modifier = { + add = 50 + scope:actor = { + is_adult = no + } + } + + modifier = { + add = 25 + scope:recipient = { + has_relation_friend = scope:actor + } + } + + modifier = { + add = 25 + scope:recipient = { + has_relation_lover = scope:actor + } + } + + modifier = { + add = 10 + scope:recipient = { + has_relation_potential_friend = scope:actor + } + } + + modifier = { + add = 5 + scope:recipient = { + is_close_family_of = scope:actor + is_ruler = yes + } + } + + modifier = { # Muslims want to learn arabic + add = 25 + scope:actor = { + faith.religion = religion:islam_religion + NOT = { + knows_language = language_arabic + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_arabic + } + } + } + + modifier = { # Catholic clergy/pious people want to learn latin + add = 50 + scope:actor = { + faith = faith:catholic + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_latin + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_latin + } + } + } + + modifier = { # Catholic clergy/pious people want to learn Italian + add = 50 + scope:actor = { + faith = faith:catholic + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_italian + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_italian + } + } + } + + modifier = { # Clergy/pious people want to learn their HoF's language + add = 50 + scope:actor = { + exists = faith.religious_head + OR = { + has_trait = zealous + is_clergy = yes + } + NOT = { knows_language_of_culture = scope:actor.faith.religious_head.culture } + } + scope:recipient = { knows_language_of_culture = scope:actor.faith.religious_head.culture } + } + + modifier = { # Coptic/Orthodox clergy/pious people want to learn greek + add = 50 + scope:actor = { + OR = { + faith = faith:orthodox + faith = faith:coptic + } + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_greek + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_greek + } + } + } + + modifier = { # Nestorian clergy/pious people want to learn aramaic + add = 50 + scope:actor = { + faith = faith:nestorian + OR = { + has_trait = zealous + has_trait = humble + is_clergy = yes + } + NOT = { + knows_language = language_aramaic + } + } + scope:recipient = { + culture = { + has_cultural_pillar = language_aramaic + } + } + } + + modifier = { + add = 20 + scope:actor = { + has_focus = diplomacy_foreign_affairs_focus + any_neighboring_realm_same_rank_owner = { + this = scope:recipient + } + } + } + + modifier = { + add = 20 + scope:actor = { + OR = { + has_focus = learning_scholarship_focus + has_focus = stewardship_duty_focus + } + } + scope:recipient = { + is_vassal_of = scope:actor + } + } + + modifier = { + add = 10 + exists = scope:actor.capital_county + scope:recipient.culture = { + has_same_culture_language = scope:actor.capital_county.culture + } + } + + modifier = { + add = 100 + scope:actor.culture = { + has_cultural_tradition = tradition_loyal_soldiers + } + top_liege != this + scope:actor = { + liege = scope:recipient + } + } + + modifier = { + factor = 2 + scope:recipient = { + is_powerful_vassal_of = scope:actor + } + } + + modifier = { + factor = 2 + scope:actor = { + learning >= 12 + } + } + + modifier = { + factor = 0.5 + scope:actor = { + learning <= 6 + } + } + + modifier = { + factor = 0 + + scope:actor.num_of_known_languages >= 5 + scope:actor = { + NOR = { + has_perk = pedagogy_perk + has_trait = intellect_good_2 + has_trait = intellect_good_3 + age < 25 + } + } + } + + modifier = { + factor = 0 + + scope:actor.num_of_known_languages >= language_soft_cap + } + } +} + diff --git a/common/character_interactions/00_tribal_interactions.txt b/common/character_interactions/00_tribal_interactions.txt new file mode 100644 index 00000000..ed8efab9 --- /dev/null +++ b/common/character_interactions/00_tribal_interactions.txt @@ -0,0 +1,948 @@ +feudalize_holding_interaction = { + category = interaction_category_uncategorized + hidden = yes + special_interaction = feudalize_holding + + desc = feudalize_holding_interaction_desc + + target_type = title + target_filter = actor_domain_titles + + auto_accept = yes + + is_shown = { + scope:actor = { + this = scope:recipient + NOR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + government_has_flag = government_is_true_herder + } + } + } + + can_be_picked_title = { + scope:target = { + holder = scope:actor + is_capital_barony = no # we'll use the county in that case + trigger_if = { + limit = { tier <= tier_county } + title_province = { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + trigger_else = { + custom_description = { + text = "feudalize_holding_interaction_title_not_county_or_below" + always = no + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + trigger_if = { + limit = { tier <= tier_county } + title_province = { + barony_controller = scope:actor + has_ongoing_construction = no + } + } + } + } + + cost = { + treasury_or_gold = { + scope:actor = { + if = { + limit = { + scope:target.county = { + has_variable = was_razed + } + } + add = { + value = 50 + desc = BASE + } + } + else_if = { + limit = { + scope:target.county = { + culture = scope:actor.culture + } + } + add = { + value = 200 + desc = BASE + } + } + else = { + add = { + value = feudalize_holding_interaction_cost + desc = BASE + } + } + if = { + limit = { # More expensive for admin to make barbarians civilized... + government_has_flag = government_is_administrative + } + add = { + value = feudalize_holding_interaction_cost + multiply = 0.25 + desc = has_admin_government + } + if = { + limit = { # Admin get a bonus for high bureaucracy levels + OR = { + has_realm_law = imperial_bureaucracy_2 + has_realm_law = imperial_bureaucracy_3 + } + } + subtract = { + value = feudalize_holding_interaction_cost + multiply = { + value = 0.1 + if = { + limit = { + has_realm_law = imperial_bureaucracy_3 + } + add = 0.15 + } + } + desc = imperial_bureaucracy + } + } + } + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = feudalize_holding_interaction_notification + + right_icon = scope:actor + + if = { + limit = { + scope:target.title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + if = { + limit = { + OR = { + scope:target.county.culture = scope:actor.culture + scope:target.county = { has_variable = was_razed } + } + } + } + else_if = { + limit = { + OR = { + government_has_flag = government_is_tribal + scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture } + } + } + scope:target.county = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 5 + } + } + } + else = { + scope:target.county = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 30 + } + } + } + # SILK ROAD + scope:target = { + tgp_silk_road_feudalize_holding_effect = yes + } + } + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = castle_holding + } + } + + if = { + limit = { + scope:target = { + title_province = { + geographical_region = geographical_region:mpo_region_permafrost + } + } + } + if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier } + } + else_if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + } + } + } + } + + # Interaction frequency determined by code, do not change + ai_frequency = 0 + + # Used to determine which holding should be feudalized over another AND how important this AI goal is compared to others, like creating titles and constructing new holdings + ai_will_do = { + base = 1500 + } +} + +tribalize_holding_interaction = { + category = interaction_category_uncategorized + hidden = yes + special_interaction = tribalize_holding + + desc = tribalize_holding_interaction_desc + + target_type = title + target_filter = actor_domain_titles + + auto_accept = yes + + is_shown = { + scope:actor = { + this = scope:recipient + government_has_flag = government_is_tribal + } + } + + can_be_picked_title = { + scope:target = { + holder = scope:actor + is_capital_barony = no # we'll use the county in that case + trigger_if = { + limit = { tier <= tier_county } + title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + trigger_else = { + custom_description = { + text = "feudalize_holding_interaction_title_not_county_or_below" + always = no + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + trigger_if = { + limit = { tier <= tier_county } + title_province = { + barony_controller = scope:actor + has_ongoing_construction = no + } + } + } + } + + cost = { + gold = { + scope:actor = { + if = { + limit = { + scope:target.county = { + has_variable = was_razed + } + } + add = { + value = 15 + desc = BASE + } + } + else = { + add = { + value = 50 + desc = BASE + } + } + } + } + prestige = { + scope:actor = { + if = { + limit = { + scope:target.county = { + has_variable = was_razed + } + } + add = { + value = 25 + desc = BASE + } + } + else_if = { + limit = { + scope:target.county.culture = scope:actor.culture + } + add = { + value = 50 + desc = BASE + } + } + else_if = { + limit = { + scope:target.county.culture = { has_same_culture_heritage = scope:actor.culture } + } + add = { + value = 100 + desc = BASE + } + } + else = { + add = { + value = 300 + desc = BASE + } + } + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = feudalize_holding_interaction_notification + + right_icon = scope:actor + + if = { + limit = { + OR = { + scope:target.county.culture = scope:actor.culture + scope:target.county = { + has_variable = was_razed + } + } + } + } + else = { + scope:target.county = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 5 + } + } + } + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = tribal_holding + } + } + + if = { + limit = { + scope:target = { + title_province = { + geographical_region = geographical_region:mpo_region_permafrost + } + } + } + if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier } + } + else_if = { + limit = { + scope:target = { has_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + scope:target = { remove_county_modifier = mpo_siberian_permafrost_modifier_bad } + } + } + } + } + } + + # Interaction frequency determined by code, do not change + ai_frequency = 0 + + # Used to determine which holding should be feudalized over another AND how important this AI goal is compared to others, like creating titles and constructing new holdings + ai_will_do = { + base = 1500 + } +} + +support_feudalize_tribal_holding_interaction = { + category = interaction_category_vassal + icon = request_funding_interaction + + desc = support_feudalize_tribal_holding_interaction_desc + + target_type = title + target_filter = recipient_domain_titles + + auto_accept = yes + + is_shown = { + scope:actor = { + NOR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + } + } + scope:recipient = { + target_is_liege_or_above = scope:actor + NOR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_nomadic + } + this != scope:actor + any_held_title = { + tier <= tier_county + title_province = { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + } + } + + can_be_picked_title = { + scope:target = { + is_capital_barony = no # we'll use the county in that case + + trigger_if = { + limit = { tier <= tier_county } + title_province = { + barony_controller = scope:recipient + has_ongoing_construction = no + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + trigger_if = { + limit = { tier <= tier_county } + title_province = { + OR = { + has_holding_type = tribal_holding + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + trigger_else = { + custom_description = { + text = "feudalize_holding_interaction_title_not_county_or_below" + always = no + } + } + } + } + + cost = { + gold = { + value = 0 + scope:actor = { + if = { + limit = { + has_treasury = no + } + add = { + value = feudalize_holding_interaction_cost + desc = BASE + } + if = { + limit = { # More expensive for admin to make these barbarians civilized... + government_has_flag = government_is_administrative + } + add = { + value = feudalize_holding_interaction_cost + multiply = 0.25 + desc = has_admin_government + } + if = { + limit = { # Admin get a bonus for high bureaucracy levels + OR = { + has_realm_law = imperial_bureaucracy_2 + has_realm_law = imperial_bureaucracy_3 + } + } + subtract = { + value = feudalize_holding_interaction_cost + multiply = { + value = 0.1 + if = { + limit = { + has_realm_law = imperial_bureaucracy_3 + } + add = 0.15 + } + } + desc = imperial_bureaucracy + } + } + } + } + } + } + treasury = { + value = 0 + scope:actor = { + if = { + limit = { + has_treasury = yes + } + add = { + value = feudalize_holding_interaction_cost + desc = BASE + } + if = { + limit = { # More expensive for admin to make these barbarians civilized... + government_has_flag = government_is_administrative + } + add = { + value = feudalize_holding_interaction_cost + multiply = 0.25 + desc = has_admin_government + } + if = { + limit = { # Admin get a bonus for high bureaucracy levels + OR = { + has_realm_law = imperial_bureaucracy_2 + has_realm_law = imperial_bureaucracy_3 + } + } + subtract = { + value = feudalize_holding_interaction_cost + multiply = { + value = 0.1 + if = { + limit = { + has_realm_law = imperial_bureaucracy_3 + } + add = 0.15 + } + } + desc = imperial_bureaucracy + } + } + } + } + } + } + } + + is_highlighted = { + # Highlight the interaction if we have the gold to spare + scope:actor = { + gold >= { + value = feudalize_holding_interaction_cost + if = { + limit = { # More expensive for admin to convert these... Barbarians... + government_has_flag = government_is_administrative + } + multiply = { + value = 1.25 + desc = has_admin_government + } + } + } + } + } + + on_accept = { + scope:recipient = { + # Add some opinion to make it worthwhile + add_opinion = { + target = scope:actor + modifier = grateful_opinion + opinion = 30 + } + + if = { + limit = { + scope:target.title_province = { + OR = { + has_holding_type = nomad_holding + has_holding_type = herder_holding + } + } + } + if = { + limit = { + OR = { + scope:target.culture = scope:recipient.culture + scope:target = { has_variable = was_razed } + } + } + } + else_if = { + limit = { + OR = { + government_has_flag = government_is_tribal + scope:target.culture = { has_same_culture_heritage = scope:recipient.culture } + } + } + scope:target = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 5 + } + } + } + else = { + scope:target = { + add_county_modifier = { + modifier = mpo_feudalize_nomadic_land_modifier + years = 30 + } + } + } + # SILK ROAD + scope:target = { + tgp_silk_road_feudalize_holding_effect = yes + } + } + + # Notify actor and recipient + scope:actor = { + if = { #Temple Citadel + limit = { government_has_flag = government_is_mandala } + send_interface_toast = { + type = event_toast_effect_good + title = sanctified_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = temple_citadel_holding + } + } + mandala_piety_gain_effect = { PIETY_AMOUNT = massive_piety_gain } + add_legitimacy_effect = { LEGITIMACY = medium_legitimacy_gain } + } + hidden_effect = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = liege_sanctified_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + show_as_tooltip = { + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = temple_citadel_holding + } + } + } + } + } + } + } + else = { #Castle + send_interface_toast = { + type = event_toast_effect_good + title = feudalize_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = castle_holding + } + } + add_legitimacy_effect = { LEGITIMACY = medium_legitimacy_gain } + } + hidden_effect = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_good + title = liege_feudalized_holding_interaction_notification + + left_icon = scope:actor + right_icon = scope:target + + show_as_tooltip = { + if = { + limit = { exists = scope:target.title_province } + scope:target.title_province = { + set_holding_type = castle_holding + } + } + } + } + } + } + } + } + } + scope:actor = { + # If you are admin, you get some influence for your efforts + if = { + limit = { government_has_flag = government_is_administrative } + change_influence = medium_influence_gain + } + } + } + + # The AI doesn't check this very often - So if they have more important expenses, they will put their gold to better use first. + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 72 + kingdom = 72 + empire = 72 + hegemony = 72 + } + + ai_targets = { + ai_recipients = vassals + max = 10 + } + + ai_potential = { + # Some basic triggers + is_at_war = no + is_adult = yes + # The AI only does this if they have plenty of gold to spare + gold >= { value = feudalize_holding_interaction_cost multiply = 4 } + # Warring AI don't do this - They want to spend their gold on war! + ai_has_warlike_personality = no + # Piety and Legitimacy, you say... ? + ai_has_pious_builder_personality = yes + NOT = { has_variable = conqueror } + } + + ai_will_do = { + base = 25 + modifier = { + scope:actor = { ai_has_economical_boom_personality = yes } + add = 50 + } + modifier = { + scope:actor = { ai_has_pious_builder_personality = yes } + add = 100 + } + } +} + +turn_subject_into_mandala_interaction = { + category = interaction_category_vassal + icon = icon_scheme_coerce_tributary + + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + ai_accept_negotiation = yes + popup_on_receive = yes + common_interaction = no + + interface_priority = 4 + + ai_targets = { + ai_recipients = vassals + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + desc = turn_subject_into_mandala_interaction_desc + + is_shown = { + scope:actor = { government_has_flag = government_is_mandala } + scope:recipient = { + NOT = { government_has_flag = government_is_mandala } + is_ai = yes + highest_held_title_tier >= tier_county + is_landed = yes + is_ruler = yes + OR = { + liege = scope:actor + AND = { + overlord = scope:actor + scope:actor = { + has_realm_law_flag = can_convert_all_subjects_to_mandalas + } + } + } + } + } + + cooldown_against_recipient = { years = 10 } + + is_valid_showing_failures_only = { + #Dharmic Mandalas require Dharmic converts + #Reformed Pagan Mandalas require reformed faiths + scope:actor.religion = { + switch = { + trigger = is_in_family + rf_eastern = { + scope:recipient.religion = { + is_in_family = rf_eastern + } + } + rf_pagan = { + scope:recipient.faith = { NOT = { has_doctrine_parameter = unreformed } } + scope:recipient.religion = { + is_in_family = rf_pagan + } + } + } + } + scope:recipient = { + NOT = { has_strong_hook = scope:actor } + is_at_war = no + } + scope:actor = { is_at_war = no } + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + custom_tooltip = { + text = head_of_faith_unable_to_change_government_desc + NOT = { + scope:recipient = { faith.religious_head ?= this } + } + } + } + + #Spend piety + send_option = { + flag = piety + is_valid = { + scope:actor.piety >= piety_bribe_value + } + localization = PAY_PIETY + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= piety_bribe_value } + desc = SCHEME_AGENT_PIETY_VALID + } + } + } + #Use hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + + on_send = { + scope:recipient = { + primary_title = { save_scope_as = demanded_mandala } + trigger_event = { + id = tgp_east_asia_interaction_events.1002 + days = 5 + } + } + } + + on_accept = { + show_as_tooltip = { + change_to_mandala_interaction_effect = yes + } + } + + on_decline = { + scope:recipient = { custom_tooltip = demand_mandala_interaction_vassal_refuses } + } + + ai_potential = { + government_has_flag = government_is_mandala + is_adult = yes + } + + ai_will_do = { + base = 100 + modifier = { + factor = 0 + scope:recipient = { highest_held_title_tier >= tier_county } + gold >= 300 + } + modifier = { + factor = 0 + scope:recipient = { highest_held_title_tier >= tier_duchy } + gold >= 600 + } + modifier = { + factor = 0 + scope:recipient = { highest_held_title_tier >= tier_kingdom } + gold >= 2000 + } + } + + ai_accept = { + base = -50 + turn_subject_into_mandala_acceptance_modifier = yes + } +} + diff --git a/common/character_interactions/00_tributary_interactions.txt b/common/character_interactions/00_tributary_interactions.txt new file mode 100644 index 00000000..d926656f --- /dev/null +++ b/common/character_interactions/00_tributary_interactions.txt @@ -0,0 +1,6068 @@ +#Interactions relating to tributary relationship management + +### Become Tributary - bilateral +# actor = offerer / potential tributary +# recipient = receiver / potential suzerain + +become_tributary_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = become_tributary_interaction + + desc = become_tributary_interaction_desc + + is_shown = { + scope:actor = { + trigger_if = { + limit = { is_ai = yes } + current_military_strength < scope:recipient.one_and_a_half_times_current_military_strength + primary_title.tier < scope:recipient.primary_title.tier + } + } + scope:recipient = { + is_independent_ruler = yes # while it's possible for tributaries to have their own tributaries, it should not be possible to create a tributary relationship with a non-independent ruler + NOR = { + this = scope:actor + this = scope:actor.suzerain + top_suzerain = scope:actor + } + can_have_tributaries_trigger = yes + } + } + + is_valid_showing_failures_only = { + #These triggers need to match the Tribute Mission Decision + trigger_if = { + limit = { + scope:recipient = { primary_title.tier = tier_hegemony } + } + custom_tooltip = { + text = become_tributary_interaction_hegemony_not_neighbor_tt + scope:actor = { + OR = { + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_china } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_roman_empire } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_eastern_roman_empire } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_dar_al_islam } + is_tributary_or_independent_neighbor_of_hegemon_trigger = { HEGEMON = h_india } + } + } + } + } + #Mandalas can into Mandalas and Tributaries + trigger_if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + scope:actor = { + OR = { + government_has_flag = government_is_tribal + government_has_flag = government_is_mandala + } + } + } + always = yes + } + #Rulers who aren't Mandala or Tribal should really only be interested if you're big enough + trigger_else = { + custom_tooltip = { + text = offer_tributarization_interaction_aibehavior_not_higher_rank + scope:recipient.highest_held_title_tier >= scope:actor.highest_held_title_tier + } + } + scope:actor = { + is_physically_able = yes + is_travelling = no + NOT = { exists = involved_activity } + is_confederation_member = no + is_at_war = no + } + trigger_if = { + limit = { scope:recipient = title:h_china.holder } + scope:actor = { + custom_tooltip = { + text = neighbor_is_china + is_tributary = no + is_independent_ruler = yes + OR = { + has_variable = wants_to_become_tributary_of_china + any_neighboring_and_across_water_top_liege_realm_owner = { + primary_title = title:h_china + } + } + } + } + } + } + + needs_confirmation = { + scope:recipient = { highest_held_title_tier < tier_hegemony } # acknowledging a hegemon requires a tribute mission; open the decision UI instead of confirming acceptance + } + + greeting = positive + notification_text = BECOME_TRIBUTARY_INTERACTION_NOTIFICATION + + # Low starting obligations + send_option = { + flag = low_obligations + localization = low_tributary_obligations + } + + # Medium starting obligations + send_option = { + flag = normal_obligations + localization = normal_tributary_obligations + starts_enabled = { always = yes } + } + + # High starting obligations + send_option = { + flag = high_obligations + localization = high_tributary_obligations + } + + send_options_exclusive = yes + + on_send = { + if = { + limit = { scope:recipient = { highest_held_title_tier >= tier_hegemony } } + if = { + limit = { scope:recipient.primary_title = title:h_china } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_china + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_roman_empire + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_eastern_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_eastern_roman_empire + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_dar_al_islam } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_dar_al_islam + player = scope:actor + } + } + else_if = { + limit = { scope:recipient.primary_title = title:h_india } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_india + player = scope:actor + } + } + } + } + + on_accept = { + if = { + limit = { scope:recipient = { highest_held_title_tier < tier_hegemony } } + scope:actor = { + if = { + limit = { is_tributary = yes } + mandala_end_tributary_with_notification_effect = yes + } + } + start_tributary_interaction_effect = { + TRIBUTARY = scope:actor + SUZERAIN = scope:recipient + } + scope:actor = { + trigger_event = char_interaction.0360 + } + scope:recipient = { + if = { + limit = { scope:high_obligations = yes } + add_opinion = { + modifier = tributary_volunteered_opinion + target = scope:actor + opinion = 20 + } + } + else_if = { + limit = { scope:normal_obligations = yes } + add_opinion = { + modifier = tributary_volunteered_opinion + target = scope:actor + } + } + + consume_all_criminal_reasons_effect = { + LIEGE = scope:recipient + CRIMINAL = scope:actor + } + } + } + else = {} # Do nothing if the recipient is hegemony-tier or higher; these require a tribute mission to establish + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0361 + } + } + + is_available = { + NOT = { government_has_flag = cannot_be_vassal_or_liege } + top_liege = this # You have to be independent - This check exists to prevent a lot of edge-cases where you can change liege + is_confederation_member = no + } + + ai_targets = { + ai_recipients = neighboring_rulers_including_tributary_borders + max = 5 + } + + ai_targets = { + ai_recipients = neighboring_top_overlords_connected_by_land + } + + # this might appear fairly frequent but is necessary in order to ensure AI can respond to sudden threats on their borders + ai_frequency_by_tier = { + barony = 0 + county = 6 + duchy = 6 + kingdom = 0 + empire = 0 + hegemony = 0 + } + + force_notification = yes + + ai_will_do = { + base = -50 + #MINOR MODIFIERS + ai_military_threat_modifier_with_cbs = { + SENDER = scope:actor + RECEIVER = scope:recipient + MULTIPLIER = 1 + } + #Obedience + modifier = { + is_obedient_to = scope:recipient + add = 40 + desc = obedient_interaction_reason + } + # Rivalry modifier + modifier = { + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:actor = { + has_relation_rival = scope:recipient + NOT = { has_relation_nemesis = scope:recipient } + } + } + add = -10 + } + # Nemesis modifier + modifier = { + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:actor = { + has_relation_nemesis = scope:recipient + } + } + add = -100 + } + # Different faith, no pluralism + modifier = { + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:actor = { + NOR = { # Of two different faiths AND the potential vassal's faith is not pluralistic. + faith = scope:recipient.faith + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + # Cultural Acceptance + modifier = { + scope:actor = { + NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + NOT = { has_same_culture_as = scope:recipient } + culture = { + cultural_acceptance = { target = scope:recipient.culture value < 50 } + } + } + add = { + add = -10 + if = { + limit = { scope:actor.culture = { has_cultural_pillar = ethos_bellicose } } + add = -10 + } + } + desc = cultural_acceptance_interaction_reason + } + # Same language + modifier = { + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + ### MANDALA ### + #Added threshold for Mandalas who already are Tributaries + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + scope:recipient.suzerain = { primary_title.tier = tier_duchy } + add = -25 + desc = already_tributary_threshold + } + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + scope:recipient.suzerain = { primary_title.tier = tier_kingdom } + add = -50 + desc = already_tributary_threshold + } + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + scope:recipient.suzerain = { primary_title.tier >= tier_empire } + add = -75 + desc = already_tributary_threshold + } + #A devaraja should never willingly _offer_ to become a tributary + modifier = { + scope:actor = { + government_has_flag = government_is_mandala + OR = { + has_unruined_mandala_capital_trigger = yes + has_mandala_aspect_trigger = yes + has_variable = mandala_godking + } + } + add = -1000 + } + #I am a Tribal! ... and you're a Mandala + modifier = { + scope:actor = { government_has_flag = government_is_tribal } + scope:recipient = { government_has_flag = government_is_mandala } + add = 30 + desc = actor_is_a_tribal_government + } + #Mandala Piety Level - this is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:recipient } + #Recipient Radiance - Radiance Value x2 + modifier = { + scope:recipient = { has_unruined_mandala_capital_trigger = yes } + add = { + value = scope:recipient.mandala_radiance_value + multiply = 2 + } + desc = recipient_positive_mandala_radiance + } + #Tributary Realm Size + subject_realm_size_lose_weight_modifier = { + DEVARAJA = scope:actor + SUBJECT = scope:recipient + } + #Devaraja Mandala Capital + mandala_devaraja_capital_add_weight_modifier = { + DEVARAJA = scope:actor + TRIBUTARY = scope:recipient + } + #Are they independent but a neighboring Mandala more Radiant than you? + #We reduce acceptance by the radiance difference x2 + modifier = { + trigger_if = { + limit = { + scope:recipient = { has_unruined_mandala_capital_trigger = yes } + scope:actor = { + is_tributary = no + OR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + } + scope:recipient = { + OR = { + any_neighboring_top_liege_realm_owner = { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:recipient + this = scope:actor + } + save_temporary_scope_as = suzerain_comparison + } + any_neighboring_top_suzerain_realm_owner = { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:recipient + this = scope:actor + } + save_temporary_scope_as = suzerain_comparison + } + } + } + always = yes + } + trigger_else = { always = no } + add = { + #Double it as we would with your own radiance impact above and reduce acceptance by that value + value = { + value = scope:suzerain_comparison.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = other_devaraja_radiance + } + #Prosperity Decree + modifier = { + desc = is_prosperity_mandala_tributary + scope:actor = { + is_tributary = yes + suzerain = { has_realm_law_flag = tributaries_less_likely_to_break_free } + } + add = 15 + } + #SEA legacy + modifier = { + desc = tgp_sea_legacy_2_modifier_desc + scope:recipient = { + dynasty ?= { + has_dynasty_perk = tgp_sea_legacy_2 + } + } + add = tgp_sea_legacy_tributary_acceptance_value + } + # I am higher rank than you + modifier = { + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:actor = { + highest_held_title_tier > scope:recipient.highest_held_title_tier + } + } + add = { + value = scope:actor.highest_held_title_tier + subtract = scope:recipient.highest_held_title_tier + multiply = 50 + multiply = -1 + } + } + # Same Faith and Actor is a god King + modifier = { + desc = embrace_as_tributary_interaction_same_faith + scope:recipient = { + faith = scope:actor.faith + has_unruined_mandala_capital_trigger = yes + } + add = { + value = 10 + } + } + # Different faith, no pluralism. + modifier = { + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:recipient = { + faith = { + NOR = { # Of two different faiths AND the potential tributary's faith is not pluralistic + this = scope:actor.faith + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + # Different religion Family - We prefer god kings to be vaguely within our own world view + modifier = { + desc = embrace_as_tributary_interaction_other_religion_family + scope:actor = { + NOT = { government_has_flag = government_is_wanua } + } + scope:recipient.faith.religion = { + switch = { + trigger = is_in_family + rf_pagan = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_pagan } } + } + rf_sinitic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_sinitic } } + } + rf_eastern = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_eastern } } + } + rf_abrahamic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_abrahamic } } + } + } + } + add = -25 + } + # They are not Mandalas nor Tribes + modifier = { + trigger = { + scope:recipient = { + NOR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + } + add = { + value = -50 + #Would cause a lot of issues + if = { + limit = { + scope:recipient = { + OR = { + government_allows = administrative + government_is_japanese_trigger = yes + government_has_flag = government_is_nomadic + } + } + } + subtract = 950 #Some governments are especially unlikely to agree + } + #Not radiant enough + if = { + limit = { + scope:recipient = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value <= 40 + } + } + subtract = 100 + } + } + } + #Far away + modifier = { + desc = offer_vassalization_interaction_aibehavior_remoterealm_tt + trigger = { + scope:recipient = { + NOT = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:actor + } + } + } + trigger_if = { #Islands we can get farther away + limit = { + scope:actor.capital_county = { is_coastal_county = yes } + any_sub_realm_county = { is_coastal_county = yes } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_huge } } + } + trigger_else = { #Inland is harder + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + } + add = -250 + } + #Legitimacy + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -15 + scope:recipient = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -25 + scope:recipient = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -50 + scope:recipient = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -75 + scope:recipient = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 25 + scope:recipient = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 50 + scope:recipient = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 75 + scope:recipient = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:actor + opinion_target = scope:recipient + multiplier = 1 + } + } + + ai_min_reply_days = 5 + ai_max_reply_days = 10 + + auto_accept = { scope:recipient = { highest_held_title_tier >= tier_hegemony } } # Hegemons always "accepts", but this only opens the Tribute Mission UI + + ai_accept = { + base = 50 + + modifier = { + desc = interaction_is_nomadic + scope:recipient = { + government_has_flag = government_is_nomadic + } + add = 100 + } + + modifier = { # Can't flee the conqueror this way + add = -1000 + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + scope:actor = { has_variable = conqueror } + } + + modifier = { # Wide difference in rank + desc = offer_vassalization_interaction_aibehavior_widetitletier_tt + trigger = { + scope:actor = { + tier_difference = { + target = scope:recipient + value > 1 + } + } + } + add = 20 + } + modifier = { # Distant Realm. + desc = offer_vassalization_interaction_aibehavior_distantrealm_tt + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value < squared_distance_major } } + } + add = -15 + } + modifier = { # Remote Realm. + desc = offer_vassalization_interaction_aibehavior_remoterealm_tt + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + + # MINOR + modifier = { # Rivalry modifier. + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -10 + } + modifier = { # Nemesis modifier. + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = offer_vassalization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + + # PERSONALITY + ai_value_modifier = { + ai_greed = 0.75 + min = 0 + } + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + trigger = { + NOT = { + scope:recipient = { government_has_flag = government_is_mandala } + } + } + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + # CONTRACT OPTIONS + modifier = { + add = -25 + scope:low_obligations = yes + desc = CONTRACT_LOW_TRIBUTARY_TAXES_REASON + } + modifier = { + add = 25 + scope:high_obligations = yes + desc = CONTRACT_HIGH_TRIBUTARY_TAXES_REASON + } + } +} + +### Demand Tributary - bilateral +# actor = offerer / potential suzerain +# recipient = receiver / potential tributary + +demand_tributary_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + icon = demand_tributary_interaction + + desc = demand_tributary_interaction_desc + + is_shown = { + scope:actor = { + NOT = { + this = scope:recipient + top_suzerain = scope:recipient.top_suzerain # ensures the actor and recipient is not already in the same "suzerain bloc" + } + can_get_tributaries_peacefully_trigger = yes + + highest_held_title_tier < tier_hegemony # hegemonies get tributaries from exacting tribute + + #Mandala Embraces; not Demand + trigger_if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + always = no + } + trigger_else = { can_get_tributaries_peacefully_trigger = yes } + #Should be neighboring to increase growth organically + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + trigger_if = { + limit = { + is_ai = yes + } + current_military_strength >= scope:recipient.one_and_a_half_times_current_military_strength + primary_title.tier >= scope:recipient.primary_title.tier + } + } + scope:recipient = { + highest_held_title_tier >= tier_county + is_independent_ruler = yes # target cannot be a vassal + NOR = { + government_has_flag = cannot_be_vassal_or_liege + government_has_flag = government_is_mandala + } + } + # Temujin cannot make Jamukha his subject once he leaves him + NOT = { + scope:actor = { + has_variable = had_mpo_temujin_flavor_0010 + var:had_mpo_temujin_flavor_0010 ?= scope:recipient + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { has_truce = scope:actor } + is_physically_able = yes + is_travelling = no + NOT = { exists = involved_activity } + } + scope:recipient = { + is_tributary = no + is_at_war = no + custom_tooltip = { + text = demand_tributary_interaction_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = tributary_demanded_opinion + target = scope:actor + } + } + } + is_confederation_member = no + } + scope:actor = { + custom_tooltip = { + text = mpo_interaction_not_neighbouring_tt + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + } + } + } + + cost = { + prestige = minor_prestige_value + } + + greeting = positive + notification_text = DEMAND_TRIBUTARY_INTERACTION_NOTIFICATION + + on_accept = { + start_tributary_interaction_effect = { + TRIBUTARY = scope:recipient + SUZERAIN = scope:actor + } + scope:actor = { + trigger_event = char_interaction.0362 + } + scope:recipient = { + add_opinion = { + modifier = tributary_demanded_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + } + } + consume_all_criminal_reasons_effect = { + LIEGE = scope:actor + CRIMINAL = scope:recipient + } + } + + on_decline = { + scope:recipient = { + add_opinion = { + modifier = tributary_demanded_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + } + custom_tooltip = demand_tributary_interaction_cooldown_tt + } + scope:actor = { + trigger_event = char_interaction.0363 + if = { + limit = { highest_held_title_tier >= tier_hegemony } + add_legitimacy = -50 + } + } + } + + ai_maybe = yes + + ai_potential = { + highest_held_title_tier > 1 # at least a count-level ruler + is_independent_ruler = yes + + # Hegemonic Tributary AIs never proactively demand tributaries, they wait for offers instead + NOT = { highest_held_title_tier >= tier_hegemony } + } + + ai_targets = { + ai_recipients = neighboring_rulers_including_tributary_borders + max = 5 + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 4 + kingdom = 4 + empire = 4 + hegemony = 4 + } + + force_notification = yes + + ai_will_do = { # AI will often do this to valid targets that aren't a military threat to them, especially if they're rich + base = 0 + + modifier = { + add = { + add = scope:recipient.gold + divide = 10 + max = 100 + } + desc = accumulated_wealth_reason + } + + ai_military_threat_modifier_with_cbs = { + SENDER = scope:actor + RECEIVER = scope:recipient + MULTIPLIER = -1 + } + + modifier = { + scope:recipient = { is_obedient_to = scope:actor } + add = 40 + desc = obedient_interaction_reason + } + + modifier = { # Generally don't try to tributarize those of higher rank than you + trigger = { + "scope:recipient.tier_difference(scope:actor)" > 1 + } + add = -20 + } + + modifier = { # Generally don't try to tributarize those of higher dominance than you + trigger = { + scope:recipient.dominance_value > scope:actor.dominance_value + } + add = -30 + } + + modifier = { # Remote Realm. + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + + modifier = { + trigger = { + scope:recipient = { government_has_flag = government_is_true_herder } + } + add = 1000 + } + } + + ai_min_reply_days = 5 + ai_max_reply_days = 10 + + auto_accept = { + custom_tooltip = { + text = scheme_agent_aptitude.is_herder + scope:recipient = { government_has_flag = government_is_true_herder } + } + } + + ai_accept = { + base = -60 + + modifier = { # Hegemonic Tributaries are gentler and kinder + trigger = { + scope:actor = { highest_held_title_tier >= tier_hegemony } + } + add = 100 + desc = tributary_interaction_aibehavior_actor_hegemon_tier_tt + } + + modifier = { # Special case for Confucian-style governments towards China + scope:actor = { + primary_title = title:h_china + } + government_has_flag = government_is_meritocratic + add = 25 + desc = tributary_interaction_aibehavior_recipient_confucian_government_tt + } + + modifier = { # Perk boost + desc = offer_vassalization_true_ruler_perk_tt + trigger = { + scope:actor = { has_perk = true_ruler_perk } + } + add = true_ruler_value + } + + #Yurt bonuses + modifier = { + desc = tributary_yurt_02_domicile_building + trigger = { + scope:actor.domicile ?= { has_domicile_parameter = nomad_yurt_increased_tributary_acceptance_lvl_1 } + } + add = 5 + } + + modifier = { + desc = tributary_yurt_02_domicile_building + trigger = { + scope:actor.domicile ?= { has_domicile_parameter = nomad_yurt_increased_tributary_acceptance_lvl_2 } + } + add = 10 + } + + modifier = { + desc = tributary_yurt_02_domicile_building + trigger = { + scope:actor.domicile ?= { has_domicile_parameter = nomad_yurt_increased_tributary_acceptance_lvl_3 } + } + add = 15 + } + + modifier = { # the bolder they are, the less likely they will agree to this and vice versa + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + multiply = -1 + divide = 2 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + + modifier = { # the greedier they are, the less likely they will agree to this + ai_greed > 0 + add = { + value = ai_greed + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + + modifier = { + is_obedient_to = scope:actor + add = 40 + desc = obedient_interaction_reason + } + + modifier = { + scope:actor = { is_gurkhan = yes } + scope:recipient = { government_has_flag = government_is_nomadic } + add = 20 + desc = gurkhan_interaction_reason + } + + # Easier to make Tributaries during the Zud season + modifier = { + any_character_situation = { + any_situation_sub_region = { + has_sub_region_phase_parameter = the_great_steppe_easier_tributaries + any_situation_sub_region_participant_group = { + participant_group_type = nomad_rulers_capital + participant_group_has_character = scope:actor + } + } + } + scope:recipient = { government_has_flag = government_is_nomadic } + add = 25 + desc = zud_season_reason + } + + # if the actor is a major threat to the recipient they're more likely to accept + ai_military_threat_modifier_with_cbs = { + SENDER = scope:recipient + RECEIVER = scope:actor + MULTIPLIER = 1 + } + + modifier = { # They are a King + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:recipient = { highest_held_title_tier = tier_kingdom } + } + add = -100 + } + + modifier = { # They are an Emperor or greater + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:recipient = { highest_held_title_tier >= tier_empire } + } + add = -200 + } + + modifier = { # Recipient has higher Dominance than the actor + desc = demand_tributary_interaction_aibehavior_dominance_tt + trigger = { + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { government_has_flag = government_is_nomadic } + scope:recipient.dominance_value > scope:actor.dominance_value + } + add = -20 + } + + modifier = { # Actor has higher Dominance than the recipient + desc = demand_tributary_interaction_aibehavior_dominance_tt + trigger = { + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { government_has_flag = government_is_nomadic } + scope:actor.dominance_value > scope:recipient.dominance_value + } + add = 20 + } + + modifier = { # Actor is a Meritocratic Khanate trying to tributarize a Nomad + desc = demand_tributary_interaction_steppe_admin + trigger = { + scope:actor = { government_has_flag = government_is_steppe_admin } + scope:recipient = { government_has_flag = government_is_nomadic } + } + add = 60 # This offsets base reluctance + } + + # Non-nomadic + modifier = { + desc = AI_FILTHY_HORSE_LORD_REASON + trigger = { + scope:actor = { government_has_flag = government_is_nomadic } + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient = { government_has_flag = government_is_tribal } + } + multiply = 0.5 + } + } + } + + # MINOR + modifier = { # Rivalry modifier. + desc = offer_vassalization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -100 + } + modifier = { # Nemesis modifier. + desc = offer_vassalization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -200 + } + modifier = { # Same Dynasty modifier. + desc = offer_vassalization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + modifier = { # Different faith, no pluralism. + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:actor = { + NOT = { # faith condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + faith = { + NOR = { # Of two different faiths AND the potential vassal's faith is not pluralistic + this = scope:recipient.faith + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + + modifier = { # Encircled + desc = offer_vassalization_interaction_aibehavior_encircled_tt + trigger = { + scope:recipient = { + NOT = { + any_neighboring_top_suzerain_realm_owner = { + exists = this + NOT = { this = scope:actor } + } + } + NOT = { + any_realm_county = { is_coastal_county = yes } + } + } + } + add = 30 + } + + modifier = { # Cultural Acceptance + scope:actor = { + NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + NOT = { has_same_culture_as = scope:recipient } + culture = { + cultural_acceptance = { target = scope:recipient.culture value < 50 } + } + } + add = { + add = -10 + if = { + limit = { scope:actor.culture = { has_cultural_pillar = ethos_bellicose } } + add = -10 + } + } + desc = cultural_acceptance_interaction_reason + } + + modifier = { # Same language + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + #Legitimacy + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -15 + scope:actor = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -25 + scope:actor = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -50 + scope:actor = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -75 + scope:actor = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 25 + scope:actor = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 50 + scope:actor = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 75 + scope:actor = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + #Severed head acceptance + modifier = { + add = 200 + scope:actor = { + has_variable = severed_head_vassalization + var:severed_head_vassalization = { + this = scope:recipient + } + } + } + } +} + + + +### Cease Paying Tribute - unilateral +### Name referenced in code! Don't change it without notification! +# actor = tributary +# recipient = suzerain + +cease_paying_tribute_interaction = { + category = interaction_category_vassal + common_interaction = yes + use_diplomatic_range = no + icon = cease_paying_tributary_interaction + + desc = cease_paying_tribute_interaction_desc + + is_shown = { + scope:actor = { + this != scope:recipient + suzerain = scope:recipient + is_tributary = yes + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_physically_able = yes + is_travelling = no + NOT = { exists = involved_activity } + trigger_if = { + limit = { + OR = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + scope:recipient = { + is_landed = no + } + } + } + NOT = { has_truce = scope:recipient } + } + trigger_else = { + NOT = { has_truce = scope:recipient } + subject_can_break_tributary = yes + } + } + } + + cost = { + prestige = { + value = 0 + if = { + limit = { + scope:actor = { + OR = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:recipient + } + scope:recipient = { + is_landed = no + } + } + } + } + add = minor_prestige_value + } + } + } + + auto_accept = yes + on_accept = { + scope:actor = { + end_tributary = yes + if = { + limit = { + scope:recipient = { government_has_flag = government_is_mandala } + } + add_opinion = { + modifier = tributary_ceased_payments_opinion + target = scope:recipient + opinion = -100 + } + } + + } + scope:recipient = { + # Losing legitimacy if you are the Chinese Hegemon in the Dynastic Cycle Instability phase + if = { + limit = { + top_participant_group:dynastic_cycle ?= { + has_participant_group_parameter = dynastic_cycle_external_tributaries_vassals_increased_independence_desire + } + } + add_legitimacy_effect = { LEGITIMACY = minor_legitimacy_loss } + } + + #Some cooldown for Mandala rulers + if = { + limit = { government_has_flag = government_is_mandala } + if = { + limit = { is_ai = yes } + set_variable = { + name = tributary_recently_ceased + years = 1 + } + } + else = { + set_variable = { + name = tributary_recently_ceased + months = 6 + } + } + + } + + if = { + limit = { is_ai = yes } + trigger_event = { + id = char_interaction.0370 + days = 14 # we delay the response from the AI for 2 weeks to make it feel more like a "diplomacy response" + } + } + else = { + trigger_event = char_interaction.0370 + } + + add_opinion = { + modifier = tributary_ceased_payments_opinion + target = scope:actor + } + } + } + + ai_potential = { + is_at_war = no + is_migrating = no + trigger_if = { + limit = { + suzerain = { + highest_held_title_tier >= tier_hegemony + } + } + subject_standing < 20 + } + suzerain = { + is_migrating = no + + OR = { + is_landed = no + NOT = { # disconnected tributaries can always do this, even herders + any_land_neighboring_realm_with_tributaries_owner = { + this = root + } + } + AND = { + NOT = { root = { government_has_flag = government_is_true_herder } } + trigger_if = { # Obedience is a hard blocker, but only if suzerain is landed + limit = { + is_landed = yes + } + root = { is_obedient = no } + } + } + } + trigger_if = { + limit = { + any_character_situation = { + situation_type = dynastic_cycle + } + } + OR = { + root.subject_standing <= 0 + any_character_situation = { + situation_type = dynastic_cycle + OR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + } + } + } + } + + ai_targets = { + ai_recipients = suzerain + } + + # this must be 12 (1 year) in order to ensure the integrity of the UI-visualized chance the tributary will break the contract + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + # visualized in the UI as the annual chance the tributary will break the contract, based on a percentage chance per year + ai_will_do = { + base = 0 + #Base + modifier = { + NOT = { + suzerain = { government_has_flag = government_is_mandala } + } + add = -25 + desc = base_with_value + } + + # if the actor is sufficiently scared of the recipient they're way less likely to do this + ai_military_threat_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + MULTIPLIER = -2 + } + + ### Nomad + modifier = { + scope:recipient = { exists = obedience_target } + add = { + add = obedience_value + subtract = obedience_threshold + multiply = -1 + max = obedience_threshold + min = { + value = obedience_threshold + multiply = -1 + } + } + desc = obedience_value_reason + } + + modifier = { + scope:recipient = { + has_variable = temp_tributary_protection + } + add = -150 + desc = temp_tributary_protection_reason + } + + modifier = { + dominance_value > suzerain.dominance_value + add = 30 + desc = cease_tribute_higher_dominance_reason + } + + modifier = { + suzerain = { + any_memory = { + has_memory_type = nomad_showed_weakness_in_war + memory_age_years < 5 + } + } + add = 30 + desc = cease_tribute_showed_weakness_in_war_reason + } + + modifier = { + any_memory = { + has_memory_type = suzerain_defended_me_in_war + has_memory_participant = root.suzerain + memory_age_years < 10 + } + add = -100 + desc = cease_tribute_defended_me_in_war_reason + } + + modifier = { + suzerain = { + any_memory = { + has_memory_type = had_chaotic_kurultai_succession + memory_age_years < 5 + } + } + add = 30 + desc = cease_tribute_had_chaotic_kurultai_succession_reason + } + #General Modifiers + #Is the Tributary Connected? + modifier = { + scope:recipient = { + trigger_if = { #Mandalas, China, Wanua, and Meritocratic realms can keep overseas tributaries, if they are coastal. + limit = { + scope:actor = { + OR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_celestial + government_has_flag = government_is_wanua + government_has_flag = government_is_meritocratic + } + } + } + NOR = { + scope:recipient.capital_county = { is_coastal_county = yes } + any_sub_realm_county = { is_coastal_county = yes } + any_tributary = { + any_sub_realm_county = { is_coastal_county = yes } + } + } + } + NOT = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:actor + } + } + } + add = 1000 + desc = cease_tribute_disconnected_suzerain + } + #Is the suzerain landless? + modifier = { + scope:recipient = { + is_landed = no + is_migrating = no + is_at_war = no + } + add = 10000 + desc = cease_tribute_landless_suzerain + } + #Subject Standing + modifier = { + subject_standing >= 0 # applied only if the subject contract uses Subject Standing + add = { # every point of subject standing reduces the chance by 5 + add = subject_standing + multiply = -5 + } + desc = ai_will_do_debug + } + # TGP Dynastic Cycle in Instability phase + modifier = { + desc = "FACTION_REASON_DYNASTIC_CYCLE_INSTABILITY" + add = 25 + scope:recipient = { + top_participant_group:dynastic_cycle ?= { + has_participant_group_parameter = dynastic_cycle_external_tributaries_vassals_increased_independence_desire + } + } + } + + #Legitimacy + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 75 + scope:recipient = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 50 + scope:recipient = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 25 + scope:recipient = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_LOW_LEGITIMACY_REASON" + add = 15 + scope:recipient = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + # HIGH LEGITIMACY + modifier = { + desc = "RECIPIENT_HIGH_LEGITIMACY_REASON" + add = -25 + scope:recipient = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_HIGH_LEGITIMACY_REASON" + add = -50 + scope:recipient = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "RECIPIENT_HIGH_LEGITIMACY_REASON" + add = -75 + scope:recipient = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + ### MANDALA ### + #I am a Tribal! + modifier = { + scope:recipient = { government_has_flag = government_is_mandala } + scope:actor = { government_has_flag = government_is_tribal } + add = -20 + desc = actor_is_a_tribal_government + } + #Your Radiance + #Radiance Value x2 + modifier = { + scope:recipient = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + } + add = { + value = { + value = scope:recipient.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = recipient_negative_mandala_radiance + } + #You're Prosperity + modifier = { + desc = is_prosperity_mandala_tributary + scope:recipient = { has_realm_law_flag = tributaries_less_likely_to_break_free } + add = -15 + } + #Mandala Piety Level - This is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_remove_weight_modifier = { DEVARAJA = scope:recipient } + #Tributary Realm Size + subject_realm_size_add_weight_modifier = { + DEVARAJA = scope:recipient + SUBJECT = scope:actor + } + + ##Radience of other potential Suzerains is not calculated here since they can directly ask the tributary to switch over to them. + + #Pacing for Mandala Suzerains + modifier = { + scope:recipient = { + government_has_flag = government_is_mandala + has_variable = tributary_recently_ceased + } + factor = 0.1 + } + #You're Disbelieved, son + modifier = { + suzerain = { has_character_modifier = disbelieved_mandala_modifier } + add = 40 + desc = is_disbelieved_mandala + } + #SEA Legacy + modifier = { + desc = tgp_sea_legacy_2_modifier_desc + scope:recipient = { + dynasty ?= { + has_dynasty_perk = tgp_sea_legacy_2 + } + } + add = { + value = { + value = tgp_sea_legacy_tributary_acceptance_value + multiply = -1 + } + } + } + # I am higher rank than you + modifier = { + desc = tributary_interaction_aibehavior_actor_tier_tt + scope:actor = { highest_held_title_tier > scope:recipient.highest_held_title_tier } + add = { + value = scope:actor.highest_held_title_tier + subtract = scope:recipient.highest_held_title_tier + multiply = 50 + } + } + # I have a Capital Temple Complex of my own (I am also a God King) + modifier = { + desc = tributary_interaction_aibehavior_actor_capital_complex + scope:recipient = { government_has_flag = government_is_mandala } + scope:actor = { + government_has_flag = government_is_mandala + capital_province = { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = 50 + } + #AI Godkings should NOT want to be subjects + modifier = { + has_variable = mandala_godking + add = 100 + desc = mandala_ai_godking_modifier + } + # Same Faith and Recipient is a God King + modifier = { + desc = tributary_interaction_aibehavior_recipient_same_faith + scope:recipient = { + government_has_flag = government_is_mandala + faith = scope:actor.faith + capital_province = { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = -10 + } + # Different religion Family - We prefer god kings to be vaguely within our own world view + modifier = { + desc = tributary_interaction_aibehavior_recipient_other_religion_family + scope:actor = { + NOT = { government_has_flag = government_is_wanua } + } + scope:recipient.faith.religion = { + switch = { + trigger = is_in_family + rf_pagan = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_pagan } } + } + rf_sinitic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_sinitic } } + } + rf_eastern = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_eastern } } + } + rf_abrahamic = { + scope:actor.faith.religion = { NOT = { is_in_family = rf_abrahamic } } + } + } + } + add = 25 + } + ### + # Rivalry modifier. + modifier = { + desc = embrace_tributarization_interaction_aibehavior_rival_tt + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + add = 30 + } + # Nemesis modifier. + modifier = { + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + scope:recipient = { has_relation_nemesis = scope:actor } + add = 50 + } + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:actor + opinion_target = scope:recipient + multiplier = -1 + } + } +} + +### Release Tributary - unilateral +# actor = suzerain +# recipient = tributary + +release_tributary_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = release_tributary_interaction + + desc = release_tributary_interaction_desc + + is_shown = { + scope:recipient = { + this != scope:actor + suzerain = scope:actor + OR = { # AI should only ever consider releasing unruly subjects + scope:actor = { is_ai = no } + NOT = { is_obedient_to = scope:actor } + } + } + } + + is_valid_showing_failures_only = { + #scope:recipient = { + # trigger_if = { + # limit = { subject_standing >= 0 } + # subject_standing = 0 + # } + #} + } + + cost = { + prestige = { + value = minor_prestige_value + if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + multiply = 0 + } + } + piety = { + value = medium_piety_value + if = { + limit = { + scope:actor = { + NOT = { government_has_flag = government_is_mandala } + } + } + multiply = 0 + } + } + } + + auto_accept = yes + on_accept = { + scope:recipient = { + end_tributary = yes + save_scope_as = tributary_loc + scope:actor = { save_scope_as = suzerain_loc } + add_truce_both_ways = { + character = scope:actor + years = 5 + name = TRUCE_TRIBUTARY_STOPPED + } + add_opinion = { + target = scope:actor + modifier = tributary_released_opinion + opinion = 25 + } + if = { + limit = { + scope:actor = { government_has_flag = government_is_mandala } + } + set_variable = { + name = recent_mandala_suzerain + value = scope:actor + years = 5 + } + } + trigger_event = char_interaction.0380 + } + } +} + +### Release as Tributary - unilateral +# actor = suzerain +# recipient = tributary + +release_as_tributary_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = release_as_tributary + interface_priority = 4 + + desc = release_as_tributary_interaction_desc + + is_shown = { + scope:actor = { + OR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + government_has_flag = government_is_wanua + } + } + scope:recipient = { + is_vassal_of = scope:actor + highest_held_title_tier >= tier_county + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_independent_ruler = yes + is_at_war = no + } + } + + auto_accept = yes + + on_accept = { + scope:actor = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = release_as_tributary_interaction_toast + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = release_as_tributary_interaction_toast_desc + } + } + } + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = granted_independence_opinion + opinion = 10 + } + create_title_and_vassal_change = { + type = independency + save_scope_as = change + add_claim_on_loss = yes + } + becomes_independent = { + change = scope:change + } + + resolve_title_and_vassal_change = scope:change + } + start_tributary_interaction_effect = { + SUZERAIN = scope:actor + TRIBUTARY = scope:recipient + } + } + + ai_potential = { + OR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_mandala + government_has_flag = government_is_wanua + } + this = top_liege + vassal_count > vassal_limit + } + + ai_targets = { + ai_recipients = vassals + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 36 + kingdom = 4 + empire = 4 + hegemony = 4 + } + + ai_will_do = { + base = 0 + modifier = { + scope:recipient = { # Only on your borders + any_held_title = { + tier = tier_county + is_coastal_county = yes + } + } + add = 10 + } + modifier = { + scope:recipient = { # Only on your borders + any_held_title = { + tier = tier_county + any_neighboring_county = { + holder.top_liege != scope:recipient.top_liege + } + } + } + add = 100 + } + } +} + +exact_tribute_interaction = { + category = interaction_category_vassal + icon = demand_tributary_interaction + + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + popup_on_receive = yes + common_interaction = yes + + interface_priority = 4 + + ai_targets = { + ai_recipients = tributaries + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 9 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + desc = exact_tribute_interaction_desc + + is_shown = { + scope:recipient = { is_ai = yes } + scope:actor = { + OR = { + highest_held_title_tier >= tier_hegemony + AND = { + government_has_flag = government_is_mandala + scope:recipient = { is_tributary_of = scope:actor } + } + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_available_adult = yes + #Has recently gone on a Tribute Mission (to you) + custom_tooltip = { + text = exact_tribute_interaction_recently_tribute_missioned_tt + NOT = { var:tribute_mission_grace ?= scope:actor } + } + + trigger_if = { + limit = { + scope:actor = { + highest_held_title_tier >= tier_hegemony + } + } + scope:recipient = { + trigger_if = { + limit = { is_tributary_of = scope:actor } + subject_standing < exact_tribute_subject_standing_value + } + trigger_else = { + is_independent_ruler = yes + highest_held_title_tier < tier_hegemony + is_tributary = no + custom_tooltip = { + text = exact_tribute_interaction_hegemony_not_neighbor_tt + any_neighboring_and_across_water_top_liege_realm_owner = { + this = scope:actor + } + } + } + } + } + trigger_else = { + scope:actor = { government_has_flag = government_is_mandala } + scope:recipient = { is_tributary_of = scope:actor } + } + + #Has something to offer as Tribute Mission + trigger_if = { + limit = { + NOR = { + var:declined_requested_tribute_recently ?= scope:actor + var:requested_tribute_mission ?= scope:actor + } + } + custom_tooltip = { + text = exact_tribute_interaction_no_tribute_tt + OR = { + has_gold_tribute_trigger = yes + has_herd_tribute_trigger = yes + has_artifact_tribute_trigger = yes + AND = { + any_courtier_or_guest = { + can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor } + } + scope:actor = { + allowed_more_concubines = yes + is_adult = yes + } + } + AND = { + has_eunuch_tribute_trigger = yes + scope:actor = { + culture = { has_cultural_parameter = can_appoint_chief_eunuch } + } + } + } + } + } + #Has recently refused + custom_tooltip = { + text = exact_tribute_interaction_recently_refused_tt + NOT = { var:declined_requested_tribute_recently ?= scope:actor } + } + #Is already engaged + custom_tooltip = { + text = exact_tribute_interaction_already_engaged_tt + NOR = { + var:requested_tribute_mission ?= scope:actor + has_variable = tribute_mission_type + } + } + } + } + + greeting = positive + notification_text = EXACT_TRIBUTE_INTERACTION_NOTIFICATION + + #Request Gold + send_option = { + flag = gold + is_valid = { + scope:recipient ?= { has_gold_tribute_trigger = yes } + } + localization = request_gold_tribute + } + + #Request Herd + send_option = { + flag = herd + is_valid = { + scope:recipient ?= { has_herd_tribute_trigger = yes } + } + localization = request_herd_tribute + } + + #Request Artifact + send_option = { + flag = artifact + is_valid = { + scope:recipient = { + custom_tooltip = { + text = exact_tribute_interaction_no_suitable_artifact_tt + has_artifact_tribute_trigger = yes + } + } + } + localization = request_artifact_tribute + } + + #Request Concubine + send_option = { + flag = concubine + is_valid = { + scope:actor = { + is_adult = yes + can_have_concubines_trigger = { CHAR = scope:actor } + } + scope:recipient = { + custom_tooltip = { + text = exact_tribute_interaction_no_suitable_concubine_tt + any_courtier_or_guest = { + can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor } + } + } + } + } + localization = request_concubine_tribute + } + + #Request Eunuch + send_option = { + flag = eunuch + is_valid = { + trigger_if = { + limit = { + scope:actor = { + can_employ_court_eunuchs_trigger = { CHAR = scope:actor } + } + } + scope:recipient = { + custom_tooltip = { + text = exact_tribute_interaction_no_suitable_eunuchs_tt + has_eunuch_tribute_trigger = yes + } + } + } + trigger_else = { + scope:actor = { + can_employ_court_eunuchs_trigger = { CHAR = scope:actor } + } + } + } + localization = request_eunuch_tribute + } + + send_options_exclusive = yes + + on_accept = { + scope:actor = { + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9010 + } + } + scope:recipient = { + set_variable = { + name = requested_tribute_mission + value = scope:actor + years = requested_tribute_mission_deadline_years + } + trigger_event = { + id = tribute_mission.9500 + years = requested_tribute_mission_deadline_years + } + switch = { + trigger = yes + scope:gold ?= { + set_variable = { + name = requested_tribute_mission_type_gold + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_gold_tt + } + scope:herd ?= { + set_variable = { + name = requested_tribute_mission_type_herd + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_herd_tt + } + scope:artifact ?= { + set_variable = { + name = requested_tribute_mission_type_artifact + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_artifact_tt + random_character_artifact = { + limit = { is_suitable_artifact_tribute_trigger = yes } + scope:recipient = { + set_variable = { + name = predetermined_artifact_tribute + value = prev + } + } + } + } + scope:concubine ?= { + set_variable = { + name = requested_tribute_mission_type_concubine + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_concubine_tt + every_courtier_or_guest = { + limit = { + can_be_offered_as_concubine_to_character_trigger = { + GIVER = scope:recipient + CHARACTER = scope:actor + } + is_adult = yes + has_any_disease_trigger = no + has_easily_mocked_physical_attribute_trigger = no + } + add_to_list = potential_concubine_tribute_list + random_in_list = { + list = potential_concubine_tribute_list + weight = { + #Let's try to make a sane choice here + base = 0 + #No marginally relevant court people + modifier = { + add = 10 + NOR = { + is_councillor = yes + has_any_court_position = yes + } + } + #No knights + modifier = { + add = 5 + is_knight = no + } + #No inspired people? + modifier = { + add = 20 + NOT = { exists = inspiration } + } + #No close family + modifier = { + add = 15 + NOT = { is_close_or_extended_family_of = scope:recipient } + } + #No friends? + modifier = { + add = 20 + NOT = { has_relation_friend = scope:recipient } + } + #No children + modifier = { + add = 25 + NOT = { is_child_of = scope:recipient } + } + } + scope:recipient = { + set_variable = { + name = predetermined_concubine_tribute + value = prev + } + } + } + } + } + scope:eunuch ?= { + set_variable = { + name = requested_tribute_mission_type_eunuch + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_interaction_eunuch_tt + every_courtier = { + limit = { + tribute_mission_is_available_eunuch_trigger = yes + NAND = { + faith = { has_doctrine = doctrine_theocracy_temporal } + this = scope:actor.cp:councillor_court_chaplain + } + has_any_disease_trigger = no + } + add_to_list = potential_eunuch_tribute_list + random_in_list = { + list = potential_eunuch_tribute_list + weight = { + #Let's try to make a sane choice here + base = 0 + #No marginally relevant court people + modifier = { + add = 10 + NOR = { + is_councillor = yes + has_any_court_position = yes + } + } + #No knights + modifier = { + add = 5 + is_knight = no + } + #No inspired people? + modifier = { + add = 20 + NOT = { exists = inspiration } + } + #No close family + modifier = { + add = 15 + NOT = { is_close_or_extended_family_of = scope:recipient } + } + #No friends? + modifier = { + add = 20 + NOT = { has_relation_friend = scope:recipient } + } + #No children + modifier = { + add = 25 + NOT = { is_child_of = scope:recipient } + } + } + scope:recipient = { + set_variable = { + name = predetermined_eunuch_tribute + value = prev + } + } + } + } + } + } + if = { + limit = { scope:actor = { government_has_flag = government_is_mandala } } + execute_decision = tribute_mission_decision_mandala + } + else_if = { + limit = { scope:actor.primary_title = title:h_china } + execute_decision = tribute_mission_decision_china + } + else_if = { + limit = { scope:actor.primary_title = title:h_roman_empire } + execute_decision = tribute_mission_decision_roman_empire + } + else_if = { + limit = { scope:actor.primary_title = title:h_eastern_roman_empire } + execute_decision = tribute_mission_decision_eastern_roman_empire + } + else_if = { + limit = { scope:actor.primary_title = title:h_dar_al_islam } + execute_decision = tribute_mission_decision_dar_al_islam + } + else_if = { + limit = { scope:actor.primary_title = title:h_india } + execute_decision = tribute_mission_decision_india + } + } + } + + on_decline = { + scope:recipient = { + if = { + limit = { has_legitimacy = yes } + add_legitimacy = minor_legitimacy_loss + } + set_variable = { + name = declined_requested_tribute_recently + value = scope:actor + years = requested_tribute_mission_deadline_years + } + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = declined_tribute_mission_opinion + opinion = -30 + target = scope:actor + } + } + } + scope:actor = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = declined_tribute_mission_opinion + opinion = -30 + target = scope:recipient + } + } + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9000 + } + } + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 50 + modifier = { + scope:actor = { has_realm_law = mandala_decree_reverence } + factor = 2 + } + modifier = { + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + divide = 4 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + modifier = { + ai_greed > 0 + add = { + value = ai_greed + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + + } + + ai_accept = { + base = 0 + #Base + modifier = { + government_has_flag = government_is_mandala + add = -25 + desc = base_with_value + } + modifier = { # Special case for Hegemonic Tributaries + scope:actor = { + highest_held_title_tier >= tier_hegemony + } + add = { + add = 25 + if = { + limit = { + OR = { + NOT = { scope:recipient.primary_title = title:h_china } + government_has_flag = government_is_meritocratic + } + } + add = 25 + } + } + desc = tributary_interaction_aibehavior_recipient_hegemon_tier_tt + } + # Unstable Phase + modifier = { + scope:actor = { highest_held_title_tier >= tier_hegemony } + situation:dynastic_cycle ?= { + OR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + add = -50 + desc = tributary_interaction_aibehavior_actor_unstable_cycle_tt + } + # Stable Phase + modifier = { + scope:actor = { + highest_held_title_tier >= tier_hegemony + legitimacy_level < dynastic_cycle_legitimacy_expectation + } + situation:dynastic_cycle ?= { + NOR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + add = -25 + desc = tributary_interaction_aibehavior_actor_low_legitimacy_tt + } + modifier = { + scope:actor = { + highest_held_title_tier >= tier_hegemony + legitimacy_level > dynastic_cycle_legitimacy_expectation + } + situation:dynastic_cycle ?= { + NOR = { + situation_current_phase = situation_dynastic_cycle_phase_instability + situation_current_phase = situation_dynastic_cycle_phase_instability_conquest + } + } + add = 25 + desc = tributary_interaction_aibehavior_actor_high_legitimacy_tt + } + + #MINOR MODIFIERS + modifier = { # the bolder they are, the less likely they will agree to this and the more cowardly the more likely + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + + modifier = { # the greedier they are, the less likely they will agree to this + ai_greed > 0 + add = { + value = ai_greed + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + modifier = { # Rivalry modifier. + desc = embrace_tributarization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -30 + } + modifier = { # Nemesis modifier. + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = embrace_tributarization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + #Prosperity Mandala + modifier = { + desc = is_prosperity_mandala_tributary + scope:recipient = { + is_tributary = yes + suzerain = { has_realm_law = mandala_decree_prosperity } + } + add = 15 + } + #Mandala Piety Level + #This is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:actor } + + #Your Radiance + modifier = { + scope:actor = { has_unruined_mandala_capital_trigger = yes } + add = { + value = scope:actor.mandala_radiance_value + multiply = 2 + } + desc = actor_positive_mandala_radiance + } + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + # if the actor is a major threat to the recipient they're more likely to accept + ai_military_threat_modifier = { + SENDER = scope:recipient + RECEIVER = scope:actor + MULTIPLIER = 1 + } + } +} + +#If the target is a player +exact_tribute_player_interaction = { + category = interaction_category_vassal + icon = demand_tributary_interaction + + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + ai_accept_negotiation = yes + popup_on_receive = yes + common_interaction = yes + + interface_priority = 4 + + ai_targets = { + ai_recipients = tributaries + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 9 + kingdom = 6 + empire = 6 + hegemony = 6 + } + + desc = exact_tribute_player_interaction_desc + + is_shown = { + scope:recipient = { is_ai = no } + trigger_if = { + limit = { + scope:actor = { highest_held_title_tier >= tier_hegemony } + } + scope:recipient = { + trigger_if = { + limit = { is_tributary_of = scope:actor } + subject_standing < exact_tribute_subject_standing_value + } + trigger_else = { + is_tributary = no + is_independent_ruler = yes + any_neighboring_top_liege_realm_owner = { primary_title = title:h_china } + } + } + } + trigger_else = { + scope:actor = { government_has_flag = government_is_mandala } + scope:recipient = { is_tributary_of = scope:actor } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_available_adult = yes + #Has recently gone on a Tribute Mission (to you) + custom_tooltip = { + text = exact_tribute_interaction_recently_tribute_missioned_tt + NOT = { var:tribute_mission_grace ?= scope:actor } + } + #Has something to offer as Tribute Mission + trigger_if = { + limit = { + NOR = { + var:declined_requested_tribute_recently ?= scope:actor + var:requested_tribute_mission ?= scope:actor + } + } + custom_tooltip = { + text = exact_tribute_interaction_no_tribute_tt + OR = { + has_gold_tribute_trigger = yes + has_herd_tribute_trigger = yes + has_artifact_tribute_trigger = yes + AND = { + any_courtier_or_guest = { + can_become_concubine_of_character_valid_trigger = { CHARACTER = scope:actor } + } + scope:actor = { allowed_more_concubines = yes } + } + AND = { + has_eunuch_tribute_trigger = yes + scope:actor = { + culture = { has_cultural_parameter = can_appoint_chief_eunuch } + } + } + } + } + } + #Has recently refused + custom_tooltip = { + text = exact_tribute_interaction_recently_refused_tt + NOT = { var:declined_requested_tribute_recently ?= scope:actor } + } + #Is already engaged + custom_tooltip = { + text = exact_tribute_interaction_already_engaged_tt + NOR = { + var:requested_tribute_mission ?= scope:actor + has_variable = tribute_mission_type + } + } + } + } + + greeting = positive + notification_text = EXACT_TRIBUTE_PLAYER_INTERACTION_NOTIFICATION + + on_accept = { + scope:actor = { + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9010 + } + } + scope:recipient = { + set_variable = { + name = requested_tribute_mission + value = scope:actor + years = requested_tribute_mission_deadline_years + } + trigger_event = { + id = tribute_mission.9500 + years = requested_tribute_mission_deadline_years + } + custom_tooltip = exact_tribute_player_interaction_accept_tt + if = { + limit = { scope:actor = { highest_held_title_tier >= tier_hegemony } } + if = { + limit = { scope:actor.primary_title = title:h_china } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_china + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_roman_empire + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_eastern_roman_empire } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_eastern_roman_empire + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_dar_al_islam } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_dar_al_islam + player = scope:recipient + } + } + else_if = { + limit = { scope:actor.primary_title = title:h_india } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_india + player = scope:recipient + } + } + } + else_if = { + limit = { scope:actor = { government_has_flag = government_is_mandala } } + open_view_data = { + view = decision_detail + data = decision:tribute_mission_decision_mandala + player = scope:recipient + } + } + else = { + error_log = "Exacting tribute as an invalid actor!" + } + } + } + + on_decline = { + scope:recipient = { + add_legitimacy = minor_legitimacy_loss + set_variable = { + name = declined_requested_tribute_recently + value = scope:actor + years = requested_tribute_mission_deadline_years + } + } + scope:actor = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = declined_tribute_mission_opinion + opinion = -30 + target = scope:recipient + } + } + if = { + limit = { is_ai = no } + trigger_event = tribute_mission.9000 + } + } + } + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 50 + modifier = { + scope:actor = { has_realm_law = mandala_decree_reverence } + factor = 2 + } + } +} + +# Offer Courtier +offer_courtier_interaction = { + category = interaction_category_diplomacy + common_interaction = no + icon = courtier_interaction + interface_priority = 40 + + desc = offer_courtier_interaction_desc + + ai_targets = { + ai_recipients = suzerain + ai_recipients = liege + ai_recipients = scripted_relations + max = 5 + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 36 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + greeting = positive + notification_text = OFFER_COURTIER_NOTIFICATION + + needs_recipient_to_open = yes + + populate_actor_list = { + scope:actor = { + every_courtier = { + limit = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:actor + is_heir_of = scope:actor + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + add_to_list = characters + } + } + } + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { + is_ruler = yes + NOT = { government_has_flag = government_is_true_herder } + } + } + + is_valid_showing_failures_only = { + custom_tooltip = { + text = offer_courtier_valid_courtier_tt + scope:actor = { + any_courtier = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:actor + is_heir_of = scope:actor + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + } + } + + trigger_if = { #For adventurers we check range + limit = { + scope:actor = { + is_landless_adventurer = yes + } + } + ep3_laamp_diplo_range_trigger = { + TARGET = scope:recipient + LAAMP = scope:actor + } + } + } + + can_be_picked = { + is_adult = yes + } + + can_send = { + custom_tooltip = { + text = no_heirs_can_be_sent_tt + scope:secondary_actor = { + NOT = { + is_heir_of = scope:actor + } + } + } + custom_tooltip = { + text = no_spouses_can_be_sent_tt + scope:secondary_actor = { + NOT = { + is_consort_of = scope:actor + } + } + } + } + + auto_accept = { + scope:actor = { + has_title = title:e_minister_of_personnel + custom_tooltip = { + text = same_realm_tt + top_liege = scope:recipient.top_liege + } + } + scope:recipient = { + is_ai = yes + } + } + + ai_accept = { + base = -10 + + modifier = { + add = 100 + scope:secondary_actor = { + OR = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + has_relation_lover = scope:recipient # Shhh, don't tell anyone, of course you're 'skilled'! + trigger_if = { + limit = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + OR = { + AND = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_average + scope:recipient = { + any_courtier = { + count < 10 + } + } + } + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + desc = AI_INTERESTING_COURTIER_REASON + } + + modifier = { + add = 100 + scope:secondary_actor.prowess >= decent_skill_rating + scope:recipient.number_of_knights < scope:recipient.max_number_of_knights + desc = AI_KNIGHT_REASON + } + + modifier = { + add = 100 + exists = scope:secondary_actor.inspiration + desc = AI_INSPIRED_REASON + } + + modifier = { + add = 100 + scope:secondary_actor = { + is_close_or_extended_family_of = scope:recipient + } + desc = AI_FAMILY_REASON + } + + modifier = { + add = 100 + scope:secondary_actor = { + is_consort_of = scope:recipient + } + desc = AI_SPOUSE_REASON + } + + modifier = { + add = 100 + scope:secondary_actor = { + has_relation_friend = scope:recipient + } + desc = AI_FRIEND_REASON + } + + modifier = { + add = -200 + scope:secondary_actor = { + has_relation_rival = scope:recipient + } + desc = AI_RIVAL_REASON + } + + modifier = { + add = 100 + scope:recipient = { + any_courtier = { + is_consort_of = scope:secondary_actor + } + } + desc = AI_SPOUSE_OF_COURTIER_REASON + } + + modifier = { + add = 100 + scope:recipient = { + any_courtier = { + count < 5 + } + } + desc = AI_LACK_COURTIERS_REASON + } + } + + ai_potential = { + OR = { + ai_greed <= 25 + is_obedient = yes + } + OR = { + is_tributary = yes + num_of_relation_friend > 0 + num_of_relation_lover > 0 + } + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + + modifier = { + add = 100 + scope:recipient = { + is_tributary_of = scope:actor + OR = { + ai_greed <= -50 + is_obedient_to = scope:actor + opinion = { + target = scope:actor + value >= 50 + } + } + } + } + + modifier = { + factor = 0 + scope:secondary_actor = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + + modifier = { + factor = 0 + scope:actor = { + NOR = { + government_has_flag = government_is_nomadic + government_has_flag = government_is_true_herder + } + } + scope:secondary_actor = { + is_close_or_extended_family_of = scope:actor + } + } + + modifier = { # The AI only offers really good characters + factor = 0 + scope:secondary_actor = { + NOR = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + exists = inspiration + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + trigger_if = { + limit = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + OR = { + AND = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_average + scope:recipient = { + any_courtier = { + count < 10 + } + } + } + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + } + modifier = { + factor = 0 + scope:actor = { + has_title = title:e_minister_of_personnel + } + } + } + + on_send = { + scope:secondary_actor = { # to block the same character from being offered twice + add_character_flag = { + flag = has_been_offered_as_concubine + days = 5 + } + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_personnel + } + scope:recipient = { + top_liege = scope:actor.top_liege + } + } + scope:recipient = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:actor + } + scope:recipient = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + } + scope:actor = { + if = { + limit = { + government_has_flag = government_has_influence + } + change_influence = { + value = scope:secondary_actor.average_of_all_skills_and_prowess + multiply = 5 + if = { + limit = { + scope:secondary_actor = { + is_close_or_extended_family_of = scope:actor + } + } + add = 100 + } + } + } + } + } + else = { + scope:secondary_actor = { + add_opinion = { + target = scope:recipient + modifier = annoyed_opinion + opinion = 10 + } + } + scope:recipient = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:actor + } + scope:recipient = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + add_opinion = { + target = scope:actor + modifier = grateful_opinion + opinion = 10 + } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = msg_courtier_offer_rejected_title + right_icon = scope:recipient + left_icon = scope:secondary_actor + custom_tooltip = msg_courtier_offer_rejected + } + } + } +} + +# Demand Courtier +demand_courtier_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = request_courtier_interaction + interface_priority = 45 + + desc = demand_courtier_interaction_desc + + ai_targets = { + ai_recipients = tributaries + ai_recipients = vassals + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 60 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + cooldown_against_recipient = { years = 3 } + + greeting = positive + notification_text = DEMAND_COURTIER_NOTIFICATION + + highlighted_reason = HIGHLIGHTED_SKILLED_COURTIER + is_highlighted = { + scope:recipient = { + any_courtier = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:recipient + is_heir_of = scope:recipient + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + OR = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + trigger_if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + } + } + OR = { + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + } + } + + needs_recipient_to_open = yes + + populate_actor_list = { + scope:recipient = { + every_courtier = { + limit = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:recipient + is_heir_of = scope:recipient + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + add_to_list = characters + } + } + } + + is_shown = { + scope:actor != scope:recipient + scope:recipient = { + OR = { + trigger_if = { + limit = { + scope:actor = { + government_allows = obedience + } + } + is_vassal_of = scope:actor + } + is_tributary_of = scope:actor + AND = { # Celestial has this available towards vassals + scope:actor = { government_has_flag = government_is_celestial } + liege = scope:actor + } + AND = { # The minister of personnel can use it against every ruler in the realm + scope:actor = { has_title = title:e_minister_of_personnel } + is_ruler = yes + top_liege = scope:actor.top_liege + # Except the top liege + top_liege != this + } + } + } + } + + is_valid_showing_failures_only = { + custom_tooltip = { + text = demand_courtier_valid_courtier_tt + scope:recipient = { + any_courtier = { + is_available_healthy_ai_adult = yes + NOR = { + is_consort_of = scope:recipient + is_heir_of = scope:recipient + AND = { + is_female = yes + patrilinear_marriage = yes + } + AND = { + is_male = yes + matrilinear_marriage = yes + } + is_diarch = yes + is_designated_diarch = yes + has_character_flag = has_been_offered_as_concubine + } + } + } + } + } + + can_be_picked = { + is_adult = yes + } + + can_send = { + } + + auto_accept = { + scope:actor = { + has_title = title:e_minister_of_personnel + custom_tooltip = { + text = same_realm_tt + top_liege = scope:recipient.top_liege + } + } + scope:recipient = { + is_ai = yes + } + } + + send_options_exclusive = no + + # Use hook + send_option = { + is_shown = { # Not available towards tributaries + scope:recipient = { + NOT = { is_tributary_of = scope:actor } + } + } + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { + has_usable_hook = scope:recipient + } + scope:recipient = { + NOT = { is_tributary_of = scope:actor } + } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + ai_accept = { + base = 0 + + modifier = { + add = 1000 + scope:recipient = { + is_obedient_to = scope:actor + } + desc = AI_OBEDIENT_REASON + } + + modifier = { + add = 25 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + + modifier = { + add = 50 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + OR = { + is_councillor = yes + has_any_court_position = yes + } + } + desc = AI_EMPLOYED_COURTIER_REASON + } + + modifier = { + add = -15 + scope:secondary_actor = { + is_knight = yes + } + desc = AI_IS_KNIGHT_REASON + } + + modifier = { + add = -50 + exists = scope:secondary_actor.inspiration + desc = AI_INSPIRED_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + is_close_or_extended_family_of = scope:recipient + } + desc = AI_FAMILY_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + has_relation_friend = scope:recipient + } + desc = AI_FRIEND_REASON + } + + # Used a hook + modifier = { + add = 100 + scope:hook ?= yes + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { + add = 1000 + scope:secondary_actor = { + has_relation_rival = scope:recipient + } + desc = AI_RIVAL_REASON + } + } + + ai_potential = { + ai_greed >= 0 + any_tributary = { } + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:secondary_actor = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + exists = inspiration + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + trigger_if = { + limit = { + scope:actor = { + government_allows = obedience + } + } + OR = { + AND = { + sum_of_all_skills_value >= sum_of_all_skills_threshold_average + scope:actor = { + any_courtier = { + count < 10 + } + } + } + aptitude:master_of_hunt_court_position >= 4 + aptitude:keeper_of_the_horses_court_position >= 4 + aptitude:boyan_court_position >= 4 + aptitude:siege_engineer_court_position >= 4 + aptitude:yurtchi_court_position >= 4 + aptitude:cherbi_court_position >= 4 + aptitude:yeke_jarquchi_court_position >= 4 + aptitude:foreign_emissary_court_position >= 4 + } + } + } + } + } + + modifier = { + factor = 0 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + modifier = { + factor = 0 + scope:actor = { + has_title = title:e_minister_of_personnel + } + } + } + + on_send = { + scope:secondary_actor = { # to block the same character from being offered twice + add_character_flag = { + flag = has_been_offered_as_concubine + days = 5 + } + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_personnel + } + scope:recipient = { + top_liege = scope:actor.top_liege + } + } + scope:actor = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + } + } + else = { + scope:secondary_actor = { + add_opinion = { + target = scope:recipient + modifier = annoyed_opinion + opinion = -10 + } + } + scope:actor = { + add_courtier = scope:secondary_actor + scope:secondary_actor = { + every_consort = { + limit = { + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + every_child = { + limit = { + is_adult = no + is_courtier_of = scope:recipient + } + scope:actor = { + add_courtier = prev + } + } + } + add_opinion = { + target = scope:recipient + modifier = pleased_opinion + opinion = 20 + } + # Use Hook + if = { + limit = { scope:hook = yes } + use_hook = scope:recipient + } + } + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = upset_opinion + opinion = -15 + } + } + } + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = msg_courtier_demand_rejected_title + right_icon = scope:recipient + left_icon = scope:secondary_actor + custom_tooltip = msg_courtier_demand_rejected + } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = upset_opinion + opinion = -15 + } + } + } +} + +# Demand Concubine +demand_concubine_interaction = { + category = interaction_category_vassal + common_interaction = no + icon = request_concubine_interaction + interface_priority = 44 + + desc = demand_concubine_interaction_desc + + ai_targets = { + ai_recipients = tributaries + ai_recipients = vassals + } + ai_target_quick_trigger = { + adult = yes + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + cooldown_against_recipient = { years = 3 } + + greeting = positive + notification_text = DEMAND_CONCUBINE_NOTIFICATION + + needs_recipient_to_open = yes + + populate_actor_list = { + scope:recipient = { + every_courtier = { + limit = { + is_physically_able_adult = yes + is_ruler = no + could_marry_character_trigger = { CHARACTER = scope:actor } + } + add_to_list = characters + } + } + } + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + allowed_concubines = yes + NOR = { # We expect scope:actor to Exact Tribute for this purpose when Merit- or Mandala-based instead + government_has_flag = government_has_merit + government_has_flag = government_is_mandala + } + } + scope:recipient = { + OR = { + trigger_if = { + limit = { + scope:actor = { + government_has_flag = government_is_nomadic + } + } + is_vassal_of = scope:actor + } + is_tributary_of = scope:actor + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + allowed_more_concubines = yes + is_physically_able_adult = yes + } + custom_tooltip = { + text = must_have_valid_concubine_tt + scope:recipient = { + any_courtier = { + is_physically_able_adult = yes + is_ruler = no + could_marry_character_trigger = { CHARACTER = scope:actor } + } + } + } + } + + can_be_picked = { + is_adult = yes + } + + can_send = { + } + + auto_accept = no + + ai_accept = { + base = 0 + + modifier = { + add = 1000 + scope:recipient = { + is_obedient_to = scope:actor + } + desc = AI_OBEDIENT_REASON + } + + modifier = { + add = 25 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + + modifier = { + add = 50 + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + OR = { + is_councillor = yes + has_any_court_position = yes + } + } + desc = AI_EMPLOYED_COURTIER_REASON + } + + modifier = { + add = -15 + scope:secondary_actor = { + is_knight = yes + } + desc = AI_IS_KNIGHT_REASON + } + + modifier = { + add = -50 + exists = scope:secondary_actor.inspiration + desc = AI_INSPIRED_REASON + } + + modifier = { + add = -25 + scope:secondary_actor = { + is_close_or_extended_family_of = scope:recipient + } + desc = AI_FAMILY_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + has_relation_friend = scope:recipient + } + desc = AI_FRIEND_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + is_consort_of = scope:recipient + } + desc = AI_SPOUSE_REASON + } + + modifier = { + add = -50 + scope:secondary_actor = { + is_child_of = scope:recipient + } + desc = AI_CHILD_REASON + } + + modifier = { + add = 1000 + scope:secondary_actor = { + has_relation_rival = scope:recipient + } + desc = AI_RIVAL_REASON + } + } + + ai_potential = { + OR = { + has_trait = lustful + ai_honor <= 0 + } + any_tributary = { } + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:secondary_actor = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + sum_of_all_skills_value >= sum_of_all_skills_threshold_good + martial >= monumentally_high_skill_rating + prowess >= extremely_high_skill_rating + exists = inspiration + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_chancellor ?= { diplomacy < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_steward ?= { stewardship < monumentally_high_skill_rating } + } + AND = { + diplomacy >= monumentally_high_skill_rating + scope:actor.cp:councillor_spymaster ?= { intrigue < monumentally_high_skill_rating } + } + has_conventionally_attractive_trigger = yes + num_of_good_genetic_traits > 1 + } + } + } + + modifier = { + factor = 0 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_lover = scope:actor + } + } + } + + modifier = { + factor = 0 + scope:secondary_actor = { + OR = { + has_conventionally_ugly_trigger = yes + age >= 30 + is_visibly_fertile = no + } + } + } + } + + on_send = { + scope:secondary_actor = { # to block the same character from being offered twice + add_character_flag = { + flag = has_been_offered_as_concubine + days = 5 + } + } + } + + on_accept = { + scope:recipient = { + if = { + limit = { + scope:secondary_actor = { + NOR = { + is_consort_of = scope:recipient + is_close_or_extended_family_of = scope:recipient + } + } + } + add_opinion = { + target = scope:actor + modifier = upset_opinion + opinion = -15 + } + } + else = { + scope:secondary_actor = { save_scope_as = relationship_reason_involved_character } + progress_towards_rival_effect = { + REASON = rival_demanded_concubine + CHARACTER = scope:actor + OPINION = 0 + } + add_opinion = { + target = scope:actor + modifier = upset_opinion + opinion = -50 + } + clear_saved_scope = secondary_actor + } + } + demand_concubine_interaction_on_accept_effect = yes + } + + on_decline = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_bad + title = msg_concubine_demand_rejected_title + right_icon = scope:recipient + left_icon = scope:secondary_actor + custom_tooltip = msg_courtier_demand_rejected + } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = upset_opinion + opinion = -15 + } + } + } +} + +### Offer Tributary Status - bilateral +# actor = suzerain +# recipient = tributary + +offer_tributary_status_interaction = { #Embrace as Tributary + category = interaction_category_vassal + common_interaction = yes + icon = icon_liege + + desc = offer_tributary_status_interaction_desc + + is_shown = { + scope:actor = { + government_allows = ask_for_tribute #Mandala Government + is_landed = yes + NOT = { + this = scope:recipient + top_suzerain = scope:recipient.top_suzerain # ensures the actor and recipient is not already in the same "suzerain bloc" + } + } + scope:recipient = { + this != scope:actor + is_independent_ruler = yes # target cannot be a vassal + is_landed = yes + NOT = { government_has_flag = cannot_be_vassal_or_liege } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { has_truce = scope:actor } + is_physically_able = yes + custom_tooltip = { + text = offer_tributary_status_interaction_cant_use_tributaries_tt + can_have_tributaries_trigger = yes + } + } + scope:recipient = { + trigger_if = { + limit = { is_tributary = yes } + NOT = { scope:actor = scope:recipient.suzerain } + custom_tooltip = { + text = offer_tributary_status_interaction_tributary_was_recently_subjugated + NOT = { has_truce = scope:recipient.suzerain } + } + } + trigger_else = { is_tributary = no } + custom_tooltip = { + text = offer_tributary_status_interaction_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = tributary_request_denied_opinion + target = scope:actor + } + } + } + custom_tooltip = { + text = offer_tributary_status_interaction_warred_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = warred_into_submission_opinion + target = scope:actor + } + } + } + trigger_if = { + limit = { government_has_flag = government_is_celestial } + highest_held_title_tier <= tier_duchy + } + trigger_else = { highest_held_title_tier < tier_hegemony } #Hegemons bow to one + } + } + + cost = { + piety = { + value = { + value = { + value = minor_piety_value + divide = 2 + } + multiply = scope:actor.primary_title.tier + if = { + limit = { + scope:recipient = { + has_opinion_modifier = { + modifier = tributary_ceased_payments_opinion + target = scope:actor + } + } + } + multiply = activity_cost_scale_by_era + } + #Mandala Godking AI + if = { + limit = { + scope:actor = { + has_variable = mandala_godking + is_ai = yes + } + } + multiply = 0.25 + } + } + } + } + + greeting = positive + notification_text = OFFER_TRIBUTARY_STATUS_INTERACTION_NOTIFICATION + + # Low starting obligations + send_option = { + flag = low_obligations + localization = low_tributary_obligations + starts_enabled = { + scope:actor = { is_ai = yes } + } + } + + # Medium starting obligations + send_option = { + flag = normal_obligations + localization = normal_tributary_obligations + starts_enabled = { + scope:actor = { is_ai = no } + } + is_valid = { + scope:actor = { is_ai = no } + } + } + + # High starting obligations + send_option = { + flag = high_obligations + localization = high_tributary_obligations + is_valid = { + scope:actor = { is_ai = no } + } + } + + send_options_exclusive = yes + + on_accept = { + #They have a Suzerain? Uh-oh + if = { + limit = { + scope:recipient = { is_tributary = yes } + } + show_as_tooltip = { + scope:recipient = { + end_tributary = yes + } + random_list = { + 50 = { + show_chance = no + desc = offer_tributary_status_interaction_suzerain_intervene.t + custom_tooltip = offer_tributary_status_interaction_suzerain_starts_war_tt + } + 50 = { + show_chance = no + desc = offer_tributary_status_interaction_suzerain_nothing.t + mandala_embrace_tributary_effect = yes + } + } + } + #Trigger the Suzerain + scope:recipient.suzerain = { trigger_event = tgp_east_asia_interaction_events.0030 } + } + #No Suzerain? No problem! + else = { + mandala_embrace_tributary_effect = yes + } + #Drop the Confederation pls + scope:recipient = { + if = { + limit = { + is_confederation_member = yes + confederation ?= { is_house_based = no } + } + confederation = { remove_confederation_member = scope:recipient } + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0363 + } + scope:recipient = { + add_opinion = { + modifier = tributary_request_denied_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + years = 3 + } + } + } + + ai_maybe = yes + + ai_potential = { + is_independent_ruler = yes + } + + ai_targets = { + ai_recipients = neighboring_rulers_including_tributary_borders + } + + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + force_notification = yes + + ai_will_do = { + base = 0 + + modifier = { + add = { + add = scope:recipient.gold + divide = 10 + max = 100 + } + desc = accumulated_wealth_reason + } + + ai_military_threat_modifier = { SENDER = scope:actor RECEIVER = scope:recipient MULTIPLIER = -1 } + + modifier = { # Generally don't try to tributarize those of higher rank than you + trigger = { + "scope:recipient.tier_difference(scope:actor)" > 1 + } + add = -20 + } + + modifier = { # Generally don't try to tributarize those of higher piety_level than you + trigger = { + scope:recipient.piety_level > scope:actor.piety_level + } + add = -30 + } + + modifier = { # Remote Realm. + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + + modifier = { # Remote Realm. + trigger = { + NOT = { + scope:recipient = { + any_land_neighboring_realm_with_tributaries_owner = { + this = scope:actor + } + } + } + } + add = -25 + } + + #Generally don't try to Tributarize those larger than you + modifier = { + trigger = { + scope:actor.realm_size < scope:recipient.realm_size + } + factor = 0 + } + } + + ai_min_reply_days = 5 + ai_max_reply_days = 10 + + ai_accept = { + base = -50 + #I am a Tribal! + modifier = { + scope:recipient = { government_has_flag = government_is_tribal } + add = 30 + desc = recipient_is_a_tribal_government + } + #... but I am in a confederation + modifier = { + scope:recipient = { is_confederation_member = yes } + add = -50 + desc = recipient_is_in_a_confederation + } + + #Your Radiance + #Radiance Value x2 + modifier = { + scope:actor = { has_unruined_mandala_capital_trigger = yes } + add = { + value = scope:actor.mandala_radiance_value + multiply = 2 + } + desc = actor_positive_mandala_radiance + } + #Are they independent but a neighboring Mandala more Radiant than you? + #We reduce acceptance by the radience difference x2 + modifier = { + trigger_if = { + limit = { + scope:actor = { has_unruined_mandala_capital_trigger = yes } + scope:recipient = { + is_tributary = no + OR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + } + scope:recipient = { + OR = { + any_neighboring_top_liege_realm_owner = { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:actor + this = scope:recipient + } + save_temporary_scope_as = suzerain_comparison + } + any_neighboring_top_suzerain_realm_owner ?= { + has_unruined_mandala_capital_trigger = yes + government_has_flag = government_is_mandala + NOR = { + this = scope:actor + this = scope:recipient + } + save_temporary_scope_as = suzerain_comparison + } + } + } + always = yes + } + trigger_else = { always = no } + add = { + #Double it as we would with your own radiance impact above and reduce acceptance by that value + value = { + value = scope:suzerain_comparison.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = other_devaraja_radiance + } + #Is their current Devaraja Suzerain more Radiant than you? + #We reduce acceptance by the radiance difference x2 + modifier = { + trigger_if = { + limit = { + scope:recipient = { + is_tributary = yes + overlord = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value > 0 + } + } + scope:actor = { + has_unruined_mandala_capital_trigger = yes + } + } + always = yes + } + trigger_else = { always = no } + add = { + #Double it as we would with your own radiance impact above and reduce acceptance by that value + value = { + value = scope:recipient.overlord.mandala_radiance_value + multiply = 2 + } + multiply = -1 + } + desc = devaraja_overlord_radiance + } + + modifier = { + desc = is_prosperity_mandala_tributary + scope:recipient = { + is_tributary = yes + suzerain = { has_realm_law_flag = tributaries_less_likely_to_break_free } + } + add = 15 + } + + # + modifier = { + desc = tgp_sea_legacy_2_modifier_desc + scope:actor = { + dynasty ?= { + has_dynasty_perk = tgp_sea_legacy_2 + } + } + add = tgp_sea_legacy_tributary_acceptance_value + } + + #Mandala Piety Level + #This is only checked if you are not a Devaraja/haven't got a capital temple complex - Otherwise we use Radiance + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:actor } + + #Tributary Realm Size + subject_realm_size_lose_weight_modifier = { + DEVARAJA = scope:actor + SUBJECT = scope:recipient + } + + ai_military_threat_modifier = { SENDER = scope:recipient RECEIVER = scope:actor MULTIPLIER = 1 } # if the actor is a major threat to the recipient they're more likely to accept + + modifier = { # I have a Capital Temple Complex of my own (I am also a God King) + desc = tributary_interaction_aibehavior_recipient_capital_complex + trigger = { + scope:recipient.capital_province ?= { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = -200 + } + + modifier = { # I am higher rank than you + desc = tributary_interaction_aibehavior_recipient_tier_tt + trigger = { + scope:recipient = { + highest_held_title_tier > scope:actor.highest_held_title_tier + } + } + add = { + value = scope:recipient.highest_held_title_tier + subtract = scope:actor.highest_held_title_tier + multiply = 50 + multiply = -1 + } + } + + modifier = { # Same Faith and Actor is a god King + desc = embrace_as_tributary_interaction_same_faith + trigger = { + scope:actor.faith = scope:recipient.faith + scope:actor.capital_province = { + has_building_with_flag = mandala_capital_building + has_ruined_great_building = no + } + } + add = { + value = 10 + } + } + + modifier = { # Different faith, no pluralism. + desc = offer_vassalization_interaction_aibehavior_differentfaith_tt + trigger = { + scope:recipient = { + faith = { + NOR = { # Of two different faiths AND the potential tributary's faith is not pluralistic + this = scope:actor.faith + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + + modifier = { # Different religion Family - We prefer god kings to be vaguely within our own world view + desc = embrace_as_tributary_interaction_other_religion_family + trigger = { + scope:recipient = { + NOT = { government_has_flag = government_is_wanua } + } + scope:actor.faith.religion = { + switch = { + trigger = is_in_family + rf_pagan = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_pagan } } + } + rf_sinitic = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_sinitic } } + } + rf_eastern = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_eastern } } + } + rf_abrahamic = { + scope:recipient.faith.religion = { NOT = { is_in_family = rf_abrahamic } } + } + } + } + } + add = { + value = -25 + if = { + limit = { + government_has_flag = government_is_theocracy + } + subtract = 975 #Bishops, popes, etc, feel more strongly about this. + } + } + } + # They are not Mandalas nor Tribes + modifier = { + desc = embrace_as_tributary_interaction_wrong_government + scope:recipient = { + NOR = { + government_has_flag = government_is_mandala + government_has_flag = government_is_tribal + } + } + add = { + value = -50 + if = { + limit = { + scope:recipient = { + OR = { + government_allows = administrative + government_has_flag = government_is_nomadic + } + } + #If you're radiant enough... + scope:actor = { + trigger_if = { + limit = { has_unruined_mandala_capital_trigger = yes } + mandala_radiance_value < 80 + } + } + } + subtract = 950 #Some governments are especially unlikely to agree + } + #Not radiant enough + if = { + limit = { + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value <= 40 + } + } + subtract = 100 + } + } + } + #We single out Japan specifically + modifier = { + desc = embrace_as_tributary_interaction_wrong_government + scope:recipient = { government_is_japanese_trigger = yes } + add = -1000 + } + #Far away + modifier = { + desc = offer_vassalization_interaction_aibehavior_remoterealm_tt + trigger = { + scope:recipient = { + NOT = { + any_neighboring_top_liege_realm_owner = { + OR = { + this = scope:actor + top_overlord ?= scope:actor + } + } + } + } + trigger_if = { #Islands we can get farther away + limit = { + scope:recipient.capital_county ?= { is_coastal_county = yes } + any_sub_realm_county = { is_coastal_county = yes } + } + scope:recipient.capital_province = { squared_distance = { target = scope:actor.capital_province value >= squared_distance_huge } } + } + trigger_else = { #Inland is harder + scope:recipient.capital_province ?= { squared_distance = { target = scope:actor.capital_province value >= squared_distance_major } } + } + } + add = -250 + } + + #Monotheist targets really shouldn't want to... unless you're Radiant enough + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value < 25 + } + add = -200 + desc = they_are_monotheist + } + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value >= 25 + mandala_radiance_value < 50 + } + add = -175 + desc = they_are_monotheist + } + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value >= 75 + mandala_radiance_value < 100 + } + add = -150 + desc = they_are_monotheist + } + modifier = { + scope:recipient = { + faith = { has_doctrine = doctrine_monotheist } + } + #If you're radiant enough... + scope:actor = { + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value >= 100 + } + add = -100 + desc = they_are_monotheist + } + + ### MANDALA ### + #Added threshold for Mandalas who already are Tributaries + modifier = { + scope:recipient = { is_tributary = yes } + NOT = { scope:recipient.suzerain = scope:actor } + add = { + value = 0 + if = { + limit = { + scope:recipient.suzerain = { has_unruined_mandala_capital_trigger = yes } + } + subtract = { + value = scope:recipient.mandala_radiance_value + multiply = 3 + } + } + else = { add = -15 } + max = -10 + } + desc = already_tributary_threshold_duchy_suzerain + } + + #AI Godkings should NOT want to become subjects + modifier = { + has_variable = mandala_godking + add = -1000 + desc = mandala_ai_godking_modifier + } + + #MINOR MODIFIERS + modifier = { # the bolder they are, the less likely they will agree to this and the more cowardly the more likely + NOT = { ai_boldness = 0 } + add = { + value = ai_boldness + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_BOLDNESS_REASON + } + + modifier = { # the greedier they are, the less likely they will agree to this + ai_greed > 0 + add = { + value = ai_greed + multiply = -1 + divide = 4 + } + desc = TRIBUTARY_GREED_REASON + } + modifier = { # Rivalry modifier. + desc = embrace_tributarization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -30 + } + modifier = { # Nemesis modifier. + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = embrace_tributarization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + + modifier = { # Cultural Acceptance + add = -5 + desc = cultural_acceptance_interaction_reason + trigger = { + scope:actor = { + NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy + has_trait = nomadic_philosophy + scope:recipient = { has_trait = nomadic_philosophy } + } + NOT = { has_same_culture_as = scope:recipient } + culture = { + cultural_acceptance = { target = scope:recipient.culture value < 50 } + } + } + } + } + + modifier = { # Same language + add = 5 + desc = speaks_same_language_interaction_reason + trigger = { + scope:actor = { + knows_language_of_culture = scope:recipient.culture + } + } + } + + modifier = { # Encircled + desc = offer_vassalization_interaction_aibehavior_encircled_tt + trigger = { + scope:recipient = { + NOT = { + any_neighboring_top_liege_realm_owner = { this != scope:actor } + } + NOT = { + any_realm_county = { is_coastal_county = yes } + } + } + } + add = 20 + } + + #Mandala Obligation level matters + modifier = { + trigger_if = { + limit = { exists = scope:low_obligations } + scope:low_obligations = yes + } + trigger_else = { always = no } + add = 15 + desc = proposed_obligation_level_low + } + modifier = { + trigger_if = { + limit = { exists = scope:high_obligations } + scope:high_obligations = yes + } + trigger_else = { always = no } + add = -30 + desc = proposed_obligation_level_high + } + + #Legitimacy + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -15 + scope:actor = { + has_legitimacy_flag = slightly_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -25 + scope:actor = { + has_legitimacy_flag = reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -50 + scope:actor = { + has_legitimacy_flag = very_reduced_tributarization_acceptance + } + } + modifier = { + desc = "LOW_LEGITIMACY_REASON" + add = -75 + scope:actor = { + has_legitimacy_flag = massively_reduced_tributarization_acceptance + } + } + + # HIGH LEGITIMACY + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 25 + scope:actor = { + has_legitimacy_flag = increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 50 + scope:actor = { + has_legitimacy_flag = very_increased_tributarization_acceptance + } + } + modifier = { + desc = "HIGH_LEGITIMACY_REASON" + add = 75 + scope:actor = { + has_legitimacy_flag = extra_increased_tributarization_acceptance + } + } + + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + + } +} + +### Reassert Tributary - unilateral +# actor = suzerain +# recipient = tributary + +reassert_tributary_interaction = { + category = interaction_category_vassal + common_interaction = yes + icon = icon_liege + + desc = reassert_tributary_interaction_desc + + is_shown = { + scope:actor = { + government_has_flag = government_is_mandala + } + scope:recipient = { + is_tributary_of = scope:actor + is_ai = yes + cease_tribute_payments_ai_chance > 0 + } + } + + is_valid_showing_failures_only = { + scope:actor = { + is_physically_able = yes + } + scope:recipient = { + custom_tooltip = { + text = reassert_tributary_interaction_cooldown_active_tt + NOT = { + has_opinion_modifier = { + modifier = reassertion_request_denied_opinion + target = scope:actor + } + } + } + custom_tooltip = { + text = reassert_tributary_interaction_reasserted_recently_tt + NOT = { has_variable = tributary_has_been_reasserted_recently } + } + } + } + + cost = { + piety = { + value = minor_piety_value + multiply = activity_cost_scale_by_era + #Mandala Godking AI + if = { + limit = { + scope:actor = { + has_variable = mandala_godking + is_ai = yes + } + } + multiply = 0.25 + } + } + } + + greeting = positive + notification_text = OFFER_TRIBUTARY_STATUS_INTERACTION_NOTIFICATION + + #Lower Obligations + ##Taxes + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + OR = { + vassal_contract_obligation_level:mandala_government_taxes = 1 + vassal_contract_obligation_level:mandala_government_taxes = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_TAX_OBLIGATION + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 1 + } + } + } + flag = decrease_tax_obligation_1 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 2 + } + } + flag = decrease_tax_obligation_2 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 3 + } + } + flag = decrease_tax_obligation_3 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 4 + } + } + flag = decrease_tax_obligation_4 + localization = DECREASE_TAX_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_taxes = 5 + } + } + flag = decrease_tax_obligation_5 + localization = DECREASE_TAX_OBLIGATIONS + } + + ##Piety + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala + OR = { + vassal_contract_obligation_level:mandala_government_piety = 1 + vassal_contract_obligation_level:mandala_government_piety = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_PIETY_OBLIGATION + scope:recipient = { + has_subject_contract_group = tributary_mandala + vassal_contract_obligation_level:mandala_government_piety = 1 + } + } + } + flag = decrease_piety_obligation_1 + localization = DECREASE_PIETY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala + vassal_contract_obligation_level:mandala_government_piety = 2 + } + } + flag = decrease_piety_obligation_2 + localization = DECREASE_PIETY_OBLIGATIONS + } + + ##Prestige + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala_tribal + OR = { + vassal_contract_obligation_level:mandala_government_prestige = 1 + vassal_contract_obligation_level:mandala_government_prestige = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_PRESTIGE_OBLIGATION + scope:recipient = { + has_subject_contract_group = tributary_mandala + vassal_contract_obligation_level:mandala_government_prestige = 1 + } + } + } + flag = decrease_prestige_obligation_1 + localization = DECREASE_PRESTIGE_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + has_subject_contract_group = tributary_mandala_tribal + vassal_contract_obligation_level:mandala_government_prestige = 2 + } + } + flag = decrease_prestige_obligation_2 + localization = DECREASE_PRESTIGE_OBLIGATIONS + } + + ##Levies + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + OR = { + vassal_contract_obligation_level:mandala_government_levies = 1 + vassal_contract_obligation_level:mandala_government_levies = 0 + } + } + } + is_valid = { + custom_tooltip = { + text = ALREADY_LOWEST_LEVY_OBLIGATION + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 1 + } + } + } + flag = decrease_levy_obligation_1 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 2 + } + } + flag = decrease_levy_obligation_2 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 3 + } + } + flag = decrease_levy_obligation_3 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 4 + } + } + flag = decrease_levy_obligation_4 + localization = DECREASE_LEVY_OBLIGATIONS + } + send_option = { + is_shown = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_mandala + has_subject_contract_group = tributary_mandala_tribal + } + vassal_contract_obligation_level:mandala_government_levies = 5 + } + } + flag = decrease_levy_obligation_5 + localization = DECREASE_LEVY_OBLIGATIONS + } + + #Dread + send_option = { + is_valid = { + scope:actor = { dread >= high_dread } + } + flag = dread + localization = GENERIC_USE_DREAD + } + + #Strong Hook + send_option = { + is_shown = { + NOT = { + scope:actor = { + house = { has_house_head_parameter = unlock_weak_hooks_to_reassert_tributaries } + } + } + } + is_valid = { + scope:actor = { has_strong_usable_hook = scope:recipient } + } + flag = hook + localization = GENERIC_USE_STRONG_HOOK + } + should_use_extra_icon = { + scope:actor = { has_strong_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_strong.dds" + + #Any Hook + send_option = { + is_shown = { + scope:actor = { + house = { has_house_head_parameter = unlock_weak_hooks_to_reassert_tributaries } + } + } + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = any_hook + localization = GENERIC_USE_HOOK + } + + #Pay Piety + send_option = { + is_shown = { + scope:actor = { has_realm_law_flag = can_use_piety_to_reassert_tributary } + } + is_valid = { + scope:actor.piety >= piety_bribe_value + } + flag = pay_piety + localization = PAY_PIETY + current_description = { + # Triggered desc so that we don't get a weird double tooltip. + triggered_desc = { + trigger = { scope:actor.piety >= piety_bribe_value } + desc = SCHEME_AGENT_PIETY_VALID + } + } + } + + send_options_exclusive = no + + on_accept = { + scope:recipient = { + custom_tooltip = { + text = reassert_tributary_interaction_effect_tt + set_variable = { + name = tributary_has_been_reasserted_recently + value = flag:yes + months = reassert_stickiness_months + } + } + } + + #LOWER OBLIGATIONS + ##Taxes + if = { + limit = { + OR = { + scope:decrease_tax_obligation_1 = yes + scope:decrease_tax_obligation_2 = yes + scope:decrease_tax_obligation_3 = yes + scope:decrease_tax_obligation_4 = yes + scope:decrease_tax_obligation_5 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 5 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 4 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 4 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 3 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 3 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 2 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_taxes = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_taxes + level = 0 + } + } + } + } + ##Piety + if = { + limit = { + OR = { + scope:decrease_piety_obligation_1 = yes + scope:decrease_piety_obligation_2 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_piety = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_piety + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_piety + level = 0 + } + } + } + } + ##Prestige + if = { + limit = { + OR = { + scope:decrease_prestige_obligation_1 = yes + scope:decrease_prestige_obligation_2 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_prestige = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_prestige + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_prestige + level = 0 + } + } + } + } + ##Levies + if = { + limit = { + OR = { + scope:decrease_levy_obligation_1 = yes + scope:decrease_levy_obligation_2 = yes + scope:decrease_levy_obligation_3 = yes + scope:decrease_levy_obligation_4 = yes + scope:decrease_levy_obligation_5 = yes + } + } + scope:recipient = { + if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 5 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 4 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 4 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 3 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 3 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 2 + } + } + else_if = { + limit = { vassal_contract_obligation_level:mandala_government_levies = 2 } + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 1 + } + } + else = { + tributary_contract_set_obligation_level = { + type = mandala_government_levies + level = 0 + } + } + } + } + + #Strong hook + if = { + limit = { + scope:hook = yes + scope:actor = { has_strong_usable_hook = scope:recipient } + } + scope:actor = { + use_hook = scope:recipient + } + } + #Weak Hook + if = { + limit = { + scope:any_hook = yes + scope:actor = { has_usable_hook = scope:recipient } + } + scope:actor = { + use_hook = scope:recipient + } + } + #Dread + if = { + limit = { scope:dread = yes } + scope:actor = { + add_piety = minor_piety_loss + } + scope:recipient = { + add_opinion = { + modifier = intimidated_tributary_opinion + target = scope:actor + opinion = -20 + } + } + } + #Piety + if = { + limit = { scope:pay_piety = yes } + scope:actor = { + add_piety = { + value = { + add = piety_bribe_half_value + multiply = -1 + } + } + } + scope:recipient = { add_piety = piety_bribe_half_value } + } + + #Look ma', no hands! + if = { + limit = { + NOR = { + scope:decrease_tax_obligation_1 = yes + scope:decrease_tax_obligation_2 = yes + scope:decrease_tax_obligation_3 = yes + scope:decrease_tax_obligation_4 = yes + scope:decrease_tax_obligation_5 = yes + scope:decrease_piety_obligation_1 = yes + scope:decrease_piety_obligation_2 = yes + scope:decrease_prestige_obligation_1 = yes + scope:decrease_prestige_obligation_2 = yes + scope:decrease_levy_obligation_1 = yes + scope:decrease_levy_obligation_2 = yes + scope:decrease_levy_obligation_3 = yes + scope:decrease_levy_obligation_4 = yes + scope:decrease_levy_obligation_5 = yes + scope:hook = yes + scope:dread = yes + scope:any_hook = yes + scope:pay_piety = yes + } + } + #You're quite the smooth-talker huh + show_as_tooltip = { + scope:actor.dynasty ?= { + add_dynasty_prestige = { + value = miniscule_dynasty_prestige_value + divide = 2 + } + } + } + } + + scope:actor = { + trigger_event = tgp_east_asia_interaction_events.0020 + } + + } + + on_decline = { + scope:actor = { + show_as_tooltip = { add_prestige = medium_prestige_loss } + trigger_event = tgp_east_asia_interaction_events.0025 + } + scope:recipient = { + show_as_tooltip = { + add_opinion = { + modifier = reassertion_request_denied_opinion # this opinion also acts as a built-in cooldown + target = scope:actor + opinion = -20 + } + } + } + } + + auto_accept = { + switch = { + trigger = always + scope:any_hook = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + OR = { + AND = { + scope:hook = yes + scope:actor = { has_strong_usable_hook = scope:recipient } + } + AND = { + scope:any_hook = yes + scope:actor = { has_usable_hook = scope:recipient } + } + } + } + } + scope:dread = { + custom_description = { + text = "leverage_dread_tt" + subject = scope:actor + object = scope:recipient + scope:dread = yes + } + } + scope:pay_piety = { + custom_description = { + text = "pay_piety_tt" + subject = scope:actor + object = scope:recipient + scope:pay_piety = yes + } + } + scope:decrease_tax_obligation_1 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_1 = yes + } + } + scope:decrease_tax_obligation_2 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_2 = yes + } + } + scope:decrease_tax_obligation_3 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_3 = yes + } + } + scope:decrease_tax_obligation_4 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_4 = yes + } + } + scope:decrease_tax_obligation_5 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_tax_obligation_5 = yes + } + } + scope:decrease_piety_obligation_1 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_piety_obligation_1 = yes + } + } + scope:decrease_piety_obligation_2 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_prestige_obligation_2 = yes + } + } + scope:decrease_levy_obligation_1 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_1 = yes + } + } + scope:decrease_levy_obligation_2 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_2 = yes + } + } + scope:decrease_levy_obligation_3 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_3 = yes + } + } + scope:decrease_levy_obligation_4 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_4 = yes + } + } + scope:decrease_levy_obligation_5 = { + custom_description = { + text = "reduce_obligation_tt" + subject = scope:actor + object = scope:recipient + scope:decrease_levy_obligation_5 = yes + } + } + } + } + + ai_maybe = yes + + ai_potential = { + government_has_flag = government_is_mandala + } + + ai_targets = { + ai_recipients = tributaries + } + + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + force_notification = yes + + ai_will_do = { # AI will often do this to valid targets that aren't a military threat to them, especially if they're rich + base = 50 + + modifier = { # Remote Realm. + trigger = { + scope:actor = { + NOT = { + any_neighboring_top_liege_realm_owner = { this = scope:recipient } + } + } + scope:actor.capital_province = { squared_distance = { target = scope:recipient.capital_province value >= squared_distance_major } } + } + add = -25 + } + } + + ai_min_reply_days = 3 + ai_max_reply_days = 7 + + ai_accept = { + base = -100 + + ai_military_threat_modifier = { SENDER = scope:recipient RECEIVER = scope:actor MULTIPLIER = 1 } # if the actor is a major threat to the recipient they're more likely to accept + + # MINOR + modifier = { # Rivalry modifier. + desc = embrace_tributarization_interaction_aibehavior_rival_tt + trigger = { + scope:recipient = { + has_relation_rival = scope:actor + NOT = { has_relation_nemesis = scope:actor } + } + } + add = -10 + } + modifier = { # Nemesis modifier. + desc = embrace_tributarization_interaction_aibehavior_nemesis_tt + trigger = { + scope:recipient = { + has_relation_nemesis = scope:actor + } + } + add = -100 + } + modifier = { # Same Dynasty modifier. + desc = embrace_tributarization_interaction_aibehavior_dynasty_tt + trigger = { + scope:recipient = { + dynasty = scope:actor.dynasty + } + } + add = 10 + } + + modifier = { + suzerain = { + government_has_flag = government_is_mandala + has_unruined_mandala_capital_trigger = yes + mandala_radiance_value > 0 + } + add = { + value = suzerain.mandala_radiance_value + multiply = 2 + } + desc = devaraja_overlord_radiance + } + + #Devaraja Piety Level + mandala_devaraja_piety_level_add_weight_modifier = { DEVARAJA = scope:actor } + + #Tributary Realm Size + subject_realm_size_lose_weight_modifier = { + DEVARAJA = scope:actor + SUBJECT = scope:recipient + } + + #Devaraja Mandala Capital + mandala_devaraja_capital_add_weight_modifier = { + DEVARAJA = scope:actor + TRIBUTARY = scope:recipient + } + + # OPINION INFLUENCE + opinion_modifier = { # Compare Opinion modifier. + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + } + } +} diff --git a/common/character_interactions/00_vassal_interactions.txt b/common/character_interactions/00_vassal_interactions.txt new file mode 100644 index 00000000..468d3fa4 --- /dev/null +++ b/common/character_interactions/00_vassal_interactions.txt @@ -0,0 +1,4033 @@ +#Interactions relating to vassals + +grant_vassal_interaction = { + category = interaction_category_vassal + common_interaction = yes + interface = transfer_vassal + icon = icon_vassal + + special_interaction = grant_vassal_interaction + + populate_actor_list = { + scope:actor = { + every_vassal = { + add_to_list = characters + } + } + } + + desc = grant_vassal_interaction_desc + + prompt = GRANT_VASSAL_SELECT_VASSAL_TO_TRANSFER + + greeting = positive + notification_text = GRANT_VASSAL_PROPOSAL + + pre_answer_yes_key = ACCEPT + pre_answer_no_key = DECLINE + + is_shown = { + scope:recipient != scope:actor + OR = { + AND = { + exists = scope:recipient.liege + scope:recipient.liege = scope:actor + } + AND = { + exists = scope:actor.liege + scope:actor.liege = scope:recipient + } + AND = { + scope:actor.faith.religious_head = scope:recipient + scope:recipient = { + top_liege = this + } + } + } + scope:recipient.highest_held_title_tier > tier_barony + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_landed = yes # Landless rulers should not have Vassals + # Gallivanters won't accept additional responsibilities. + NOT = { has_trait = gallivanter } + } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + trigger_if = { + limit = { exists = scope:secondary_actor } + NOT = { scope:secondary_actor = { is_at_war_with = scope:recipient } } + scope:recipient.primary_title.tier > scope:secondary_actor.primary_title.tier + } + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + exists = scope:secondary_actor + } + trigger_if = { + limit = { + NOT = { + scope:recipient.primary_title = { + any_in_de_jure_hierarchy = { + holder = scope:secondary_actor + } + } + } + } + scope:recipient.vassal_count < scope:recipient.vassal_limit # Avoid creating vassals with unsustainable situations + } + scope:secondary_actor = { + NOT = { has_character_flag = ai_should_not_transfer } + } + } + trigger_if = { + limit = { scope:recipient.highest_held_title_tier <= tier_county } + scope:recipient = { highest_held_title_tier > tier_county } + } + trigger_else = { + scope:actor = { + custom_description = { + text = "basic_valid_vassal_to_tranfer" + object = scope:recipient + any_vassal = { + NOT = { highest_held_title_tier = tier_barony } + scope:recipient.highest_held_title_tier > highest_held_title_tier + } + } + } + } + # Prevent Admin AI transferring admin vassals under non-admin vassals + NAND = { + scope:actor ?= { + is_ai = yes + government_allows = administrative + } + scope:recipient ?= { + NOT = { government_allows = administrative } + } + scope:secondary_actor ?= { government_allows = administrative } + } + # Ritsuryo cannot transfer Soryo to Ritsuryo + custom_tooltip = { + text = ritsuryo_to_soryo_invalid_to_transfer + NAND = { + scope:actor ?= { has_government = japan_administrative_government } + scope:recipient ?= { has_government = japan_administrative_government } + scope:secondary_actor ?= { has_government = japan_feudal_government } + } + } + custom_tooltip = { + text = cannot_transfer_bloc_leader_as_vassal_tt + NOT = { + scope:secondary_actor ?= { + exists = house.house_confederation.leading_house + house.house_confederation.leading_house ?= house + is_house_head = yes + } + } + } + } + + can_be_picked = { + scope:recipient != root + highest_held_title_tier > tier_barony + highest_held_title_tier < scope:recipient.highest_held_title_tier + + trigger_if = { + limit = { scope:actor.liege = scope:recipient } + custom_tooltip = { + text = is_de_jure_liege_of_target + NOT = { + primary_title = { + any_this_title_or_de_jure_above = { + holder = scope:actor + } + } + } + } + } + + # You can't give your diarch away as a vassal. + custom_description = { + text = cannot_grant_own_diarch_as_vassal + subject = scope:actor.diarch + NOT = { root ?= scope:actor.diarch } + } + + # Not at war with the vassal being transferred (blocks explicit transfer of war enemies, which invalidates the war). + custom_description = { + text = "basic_is_at_war_with_vassal" + subject = root + object = scope:actor + NOT = { + root = { + is_at_war_with = scope:actor + } + } + } + + # Not at war with a vassal under the vassal being transferred (blocks implicit transfers of war enemies). + custom_description = { + text = "basic_is_at_war_with_sub_vassal" + subject = root + object = scope:actor + NOT = { + any_vassal_or_below = { + is_at_war_with = root + } + } + } + + # EP3 Admin - You cannot give away noble families + custom_description = { + text = admin_cannot_grant_vassal_noble_family + subject = root + trigger_if = { + limit = { + government_allows = administrative + } + any_held_title = { + is_noble_family_title = no + } + } + } + } + + auto_accept = { + scope:recipient = { + custom_description = { + text = wants_more_vassals + is_ai = yes + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = grant_vassal_interaction_notification + right_icon = scope:recipient + left_icon = scope:secondary_actor + + # If we're granting a vassal to our liege, gain a truce with our former vassal (we can't immediately reconquer them, and they can't attack us either). + if = { + limit = { + scope:actor = { + is_vassal_of = scope:recipient + } + } + add_truce_both_ways = { + character = scope:secondary_actor + days = 3650 + name = TRUCE_GRANT_INDEPENDENCE + } + } + + # Transfer the vassal over to their new liege. + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = no + } + scope:secondary_actor = { + change_liege = { + liege = scope:recipient + change = scope:change + } + } + resolve_title_and_vassal_change = scope:change + + # Gain an opinion bonus with the person we gave a vassal to. + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = granted_vassal + } + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = miniscule_unity_gain + DESC = clan_unity_grant_vassal.desc + REVERSE_NON_HOUSE_TARGET = yes + } + + hidden_effect = { + # Struggle catalyst + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:actor = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_grants_vassal_to_de_jure_liege_supporter_detractor + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:recipient + } + } + } + scope:recipient.primary_title = { + any_this_title_or_de_jure_above = { + holder = scope:secondary_actor + } + } + } + scope:actor = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_grants_vassal_to_de_jure_liege_supporter_detractor + character = scope:actor + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_grants_vassal_to_de_jure_liege_supporter_detractor } + } + } + } + if = { + limit = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + while = { + limit = { + scope:secondary_actor ?= { + any_held_title = { + vassal_grant_de_jure_shift_trigger = yes + } + } + } + scope:secondary_actor ?= { + random_held_title = { + limit = { + vassal_grant_de_jure_shift_trigger = yes + } + set_de_jure_liege_title = scope:recipient.primary_title + } + } + } + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0211 + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:recipient + TARGET = scope:actor + VALUE = miniscule_unity_loss + DESC = clan_unity_grant_vassal_decline.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + # AI handled entirely though code +} + +retract_vassal_interaction = { + category = interaction_category_vassal + special_interaction = retract_vassal_interaction + interface = transfer_vassal + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_liege + + interface_priority = 109 #after revoke title + + desc = retract_vassal_interaction_desc + + on_decline_summary = general_rebellion_decline_summary + + prompt = RETRACT_VASSAL_SELECT_VASSAL_TO_RETRACT + + notification_text = RETRACT_VASSAL_PROPOSAL + + populate_recipient_list = { + scope:recipient = { + every_vassal = { + add_to_list = characters + } + } + } + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + highest_held_title_tier > tier_barony + liege = scope:actor + } + } + + is_valid_showing_failures_only = { + vassal_retraction_standard_valid_showing_failures_only_trigger = yes + # Make sure this exactly matches "can_be_picked" section below + scope:recipient = { + custom_description = { + text = "basic_vassal_to_retract" + any_vassal = { + highest_held_title_tier > tier_barony + } + } + } + # Plus make sure there's a legal right to retract. + scope:actor = { + trigger_if = { + limit = { + government_has_flag = government_is_tribal + } + custom_description = { + text = "has_law_allowing_vassal_retraction_tribal" + has_realm_law_flag = vassal_retraction_allowed + } + } + trigger_else_if = { + limit = { + government_has_flag = government_is_administrative + } + custom_description = { + text = "has_law_allowing_vassal_retraction_admin" + has_realm_law_flag = vassal_retraction_allowed + } + } + trigger_else = { + custom_description = { + text = "has_law_allowing_vassal_retraction_crown" + has_realm_law_flag = vassal_retraction_allowed + } + } + } + scope:recipient = { + NOT = { has_strong_hook = scope:actor } + } + custom_tooltip = { + text = cannot_take_overt_hostile_actions_against_diarch.tt + NOT = { scope:recipient ?= scope:actor.diarch } + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + can_be_picked = { + highest_held_title_tier > tier_barony + } + + cost = { + # Usually, this action is free, but during certain diarchies, we want it to cost. + prestige = liege_diarchy_surcharge_interaction_retract_vassal_interaction_value + } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + hidden_effect = { + scope:secondary_recipient = { + add_character_flag = { + flag = ai_should_not_transfer + years = 3 + } + } + } + } + + on_accept = { + retract_vassal_interaction_effect = yes + + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + + scope:actor = { + trigger_event = char_interaction.0220 + } + } + + on_decline = { + scope:actor = { vassal_revocation_tyranny_effect = yes } + war_for_retraction_effect = yes + scope:recipient = { + add_opinion = { + target = scope:actor + modifier = retracted_vassal + } + } + if = { + limit = { + scope:actor = { has_realm_law_flag = vassal_refusal_is_treason } + } + scope:actor = { + add_opinion = { + target = scope:recipient + modifier = treasonous_retract_refusal + } + } + } + if = { + limit = { + scope:actor = { has_character_flag = flag_hostile_actions_disabled_delay } + } + scope:actor = { remove_character_flag = flag_hostile_actions_disabled_delay } + } + } + + auto_accept = { + OR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { + target = scope:actor + } + } + } + + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + modifier = { + has_game_rule = hard_difficulty + scope:actor = { is_ai = no } + add = -50 + desc = FACTION_REASON_DIFFICULTY_HARD + } + + modifier = { + has_game_rule = very_hard_difficulty + scope:actor = { is_ai = no } + add = -100 + desc = FACTION_REASON_DIFFICULTY_VERY_HARD + } + + modifier = { + has_game_rule = hard_difficulty + scope:actor = { is_ai = yes } + add = 50 + } + + modifier = { + has_game_rule = very_hard_difficulty + scope:actor = { is_ai = yes } + add = 100 + } + + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + modifier = { + add = 25 + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + desc = AI_REFUSAL_IS_TREASON + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = trusting + } + desc = TAKE_THE_VOWS_TRUSTING + } + + modifier = { + add = 20 + scope:recipient = { + has_trait = content + } + desc = INTERACTION_CONTENT + } + + modifier = { + add = 20 + scope:actor.current_military_strength > scope:recipient.current_military_strength + scope:recipient = { + has_trait = craven + } + desc = INTERACTION_CRAVEN + } + + ai_value_modifier = { + who = scope:recipient + ai_greed = { + if = { + limit = { + scope:recipient = { NOT = { ai_greed = 0 } } + } + value = -0.25 + } + } + ai_honor = { + if = { + limit = { + scope:recipient = { #If AI is honorable and the law compels to obey the liege, AI will be more likely to obey. + ai_honor > 0 + } + scope:actor = { + has_realm_law_flag = vassal_refusal_is_treason + } + } + value = 0.75 + } + } + } + modifier = { + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + OR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + } + add = 50 + desc = AI_VASSAL_HOLDS_REALM_CAPITAL + } + + modifier = { + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + NOR = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + primary_title.tier = tier_county + any_sub_realm_county = { + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + add = 30 + desc = AI_VASSAL_IS_IN_CAPITAL_DUCHY + } + + modifier = { #Sub-Vassal is NOT De jure of current Vassal. + add = 25 + NOT = { + scope:recipient = { + any_held_title = { + is_de_jure_liege_or_above_target = scope:secondary_recipient.primary_title + } + } + } + desc = AI_REFUSAL_IS_NOT_DE_JURE_LIEGE + } + modifier = { #Sub-Vassal is De jure of liege title. + add = 15 + scope:actor = { + any_held_title = { + this = scope:secondary_recipient.primary_title.de_jure_liege + } + } + desc = AI_REFUSAL_IS_DE_JURE_LIEGE + } + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #Comparative military strength. + desc = offer_vassalization_interaction_aibehavior_power_tt + add = { + value = 1 + subtract = { + value = scope:recipient.current_military_strength + divide = { value = scope:actor.current_military_strength min = 1 } + } + multiply = 100 + } + } + modifier = { #Different faith, no pluralism. + desc = AI_REFUSAL_SPLITTING_SAME_FAITH_VASSALS + trigger = { + scope:actor.faith = scope:secondary_recipient.faith #Will not care as much if the vassal being retracted is of a different faith. + scope:actor = { + NOR = { #Of two different faiths AND the potential vassal's faith is not pluralistic. + faith = scope:recipient.faith + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + } + add = { + value = -25 + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_hostile_level + } + } + } + add = -10 + } + if = { + limit = { + scope:actor.faith = { + faith_hostility_level = { + target = scope:recipient.faith + value >= faith_evil_level + } + } + } + add = -25 + } + } + } + modifier = { # AI Mongols, tyranny wars just delay the inevitable fun! + scope:actor = { + is_ai = yes + OR = { + has_trait = greatest_of_khans + has_character_modifier = the_great_khan_modifier + } + } + scope:recipient = { + is_ai = yes + } + add = 500 + } + modifier = { + add = -25 + scope:recipient = { + culture = { has_cultural_parameter = vassals_more_likely_to_refuse_demands } + } + desc = VASSALS_REFUSAL_indomitable_azatani + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + can_send_despite_rejection = yes + + # AI + ai_targets = { + ai_recipients = vassals + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + ai_potential = { + has_realm_law_flag = title_revocation_allowed + primary_title.tier > tier_county + } + + ai_will_do = { + base = -1000 + + # We want to avoid tyranny unless we've got a good reason + # And even if we can avoid tyranny we don't want to retract just because we can, so this only gets us to -10 + # Certain characters will retract despite tyranny, if their rationality is sufficiently low + modifier = { + scope:actor = { + OR = { + has_revoke_title_reason = scope:recipient + AND = { + ai_rationality <= very_high_negative_ai_value + OR = { + has_trait = lunatic + has_trait = possessed + has_trait = arbitrary + } + } + } + } + + add = 990 + } + # Always retract preferred capital if you hold the duchy, or the duchy is uncreated + modifier = { + years_from_game_start >= 3 + OR = { + scope:actor = { + is_at_war = no + gold > 0 + } + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:actor = { # The HRE doesn't need endless civil wars + NOT = { + primary_title = title:e_hre + } + } + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor = { + any_held_title = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { + is_title_created = no + } + } + scope:secondary_recipient = { + any_sub_realm_county = { + this = scope:actor.primary_title.title_capital_county + } + } + NAND = { # Don't retract player vassals tyrannically + scope:recipient = { + is_ai = no + } + scope:actor = { + NOT = { has_revoke_title_reason = scope:recipient } + } + } + add = 1100 + } + # If below domain limit, try to revoke counties in your capital duchy despite tyranny, sometimes + modifier = { + years_from_game_start >= 3 + scope:actor = { is_at_war = no } + scope:actor = { # The HRE doesn't need endless civil wars + NOT = { + primary_title = title:e_hre + } + } + scope:actor.domain_size < scope:actor.domain_limit + scope:actor.primary_title.tier >= tier_kingdom + trigger_if = { + limit = { + scope:actor = { + domain_size > 3 + } + } + scope:actor = { + NOR = { + has_trait = generous + has_trait = just + } + } + } + exists = scope:actor.primary_title.title_capital_county + OR = { + scope:actor.primary_title.title_capital_county.holder = scope:actor # You have your de jure capital already + NOT = { + scope:actor.primary_title.title_capital_county.holder.top_liege = scope:actor.top_liege # Or your De Jure capital isn't in your realm + } + } + scope:secondary_recipient = { + primary_title.tier = tier_county + any_sub_realm_county = { + de_jure_liege = scope:actor.primary_title.title_capital_county.de_jure_liege # Under the same Duchy as your capital + } + } + OR = { # And the capital duchy, if it exists at all + AND = { + exists = scope:actor.primary_title.title_capital_county.de_jure_liege.holder + scope:actor.primary_title.title_capital_county.de_jure_liege.holder = scope:actor + } + AND = { + exists = scope:actor.primary_title.title_capital_county.de_jure_liege.holder + scope:actor.primary_title.title_capital_county.de_jure_liege.holder.top_liege != scope:actor.top_liege + } + scope:actor.primary_title.title_capital_county.de_jure_liege = { + is_title_created = no + } + } + + scope:recipient = { # Not from players + is_ai = yes + } + + OR = { # Tyranny tolernance is based on rationality + AND = { + scope:actor.ai_rationality < 0 + scope:actor.tyranny <= 15 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 0 + scope:actor.ai_rationality < 50 + scope:actor.tyranny <= 5 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 50 + scope:actor.tyranny <= 0 # Don't go crazy with tyranny, just a bit is fine + } + AND = { + scope:actor.ai_rationality >= 0 + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:actor = { has_revoke_title_reason = scope:recipient } + } + AND = { + scope:actor.ai_rationality < 0 + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + } + # To do this, the target must be weak or willing in some way + OR = { + scope:actor.current_military_strength > scope:recipient.current_military_strength # Must be stronger + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:recipient = { + OR = { + has_trait = craven + has_trait = content + has_trait = trusting + has_dread_level_towards = { + target = scope:actor + level >= 1 + } + opinion = { target = scope:actor value >= 40 } + is_imprisoned_by = scope:actor + scope:actor = { has_revoke_title_reason = scope:recipient } + } + } + + add = 1100 + } + # Always retract preferred capital duchy + modifier = { + exists = scope:actor.primary_title.title_capital_county + scope:secondary_recipient = { + any_sub_realm_duchy = { + this = scope:actor.primary_title.title_capital_county.de_jure_liege + } + } + NAND = { # Don't retract player vassals tyranically + scope:recipient = { + is_ai = no + } + scope:actor = { + NOT = { has_revoke_title_reason = scope:recipient } + } + } + add = 1000 + } + # Retract vassal we're dejure liege of if below domain limit + modifier = { + scope:actor = { + vassal_limit_available > 0 + } + scope:secondary_recipient.primary_title.de_jure_liege.holder = scope:actor + add = 500 + } + # Retract non-De Jure vassals from Megadukes (only if a revoke reason is present, so we don't end up in massive tyranny war spirals) + modifier = { + scope:actor = { + has_revoke_title_reason = scope:recipient + } + scope:recipient = { + primary_title.tier = tier_duchy + any_sub_realm_county = { + count > 30 + } + } + scope:secondary_recipient.primary_title.de_jure_liege.holder != scope:recipient + add = 500 + } + # Do not revoke titles from certain characters + modifier = { + scope:actor = { + OR = { + has_relation_friend = scope:recipient + has_relation_best_friend = scope:recipient + has_relation_lover = scope:recipient + has_relation_soulmate = scope:recipient + is_heir_of = scope:recipient + } + } + add = -2000 + } + # Do not revoke titles when the chance of success if exceedingly low + modifier = { + NOT = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + } + scope:actor = { + OR = { + gold < minimum_ai_gold_value_for_tyranny_wars + AND = { + scope:actor.current_military_strength < scope:recipient.current_military_strength + gold < comfortable_ai_gold_value_for_tyranny_wars + } + } + } + add = -2000 + } + + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + + modifier = { # The AI shouldn't ruin the player's fun + add = -2000 + scope:recipient = { has_character_flag = is_party_baron } + } + + modifier = { # Avoid triggering Tyranny wars mid-war + factor = 0 + scope:actor = { + is_at_war = yes + } + scope:recipient = { + NOT = { + is_imprisoned_by = scope:actor + } + } + } + + modifier = { # Avoid triggering Tyranny wars mid-grand activity + factor = 0 + scope:actor = { + has_ongoing_grand_activity_trigger = yes + } + NOR = { + scope:recipient = { + is_imprisoned_by = scope:actor + } + scope:recipient = { + highest_held_title_tier = tier_barony + } + } + } + } +} + +start_independence_faction_interaction = { + icon = independence + category = interaction_category_vassal + desc = start_independence_faction_interaction_desc + + is_shown = { + scope:actor != scope:recipient + scope:actor = { + highest_held_title_tier > tier_barony + liege = scope:recipient + is_a_faction_member = no + } + scope:recipient = { + is_landed_or_landless_administrative = no + NOT = { + any_targeting_faction = { + faction_type = independence_faction + } + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + can_create_faction = { + target = scope:recipient + type = independence_faction + } + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = start_independence_faction_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + create_faction = { + type = independence_faction + target = scope:recipient + } + if = { + limit = { + is_de_jure_vassal_of_liege_trigger = yes + } + stress_impact = { + just = medium_stress_impact_gain + } + } + } + } + } + + auto_accept = yes +} + +join_independence_faction_interaction = { + icon = independence + category = interaction_category_vassal + desc = join_independence_faction_interaction_desc + + is_shown = { + scope:actor != scope:recipient + scope:actor.liege = scope:recipient + scope:actor = { + is_landed_or_landless_administrative = no + is_a_faction_member = no + highest_held_title_tier > tier_barony + } + scope:recipient = { + highest_held_title_tier > tier_barony + any_targeting_faction = { + faction_type = independence_faction + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + custom_description = { + text = "basic_independence_faction_at_war" + object = scope:recipient + any_targeting_faction = { + faction_type = independence_faction + faction_is_at_war = no + } + } + } + scope:actor = { + can_join_or_create_faction_against = { + who = scope:recipient + faction = independence_faction + } + } + } + + on_accept = { + scope:recipient = { + random_targeting_faction = { + faction_type = independence_faction + save_scope_as = faction_target + } + } + + scope:actor = { + send_interface_toast = { + type = event_toast_effect_neutral + title = join_independence_faction_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + join_faction = scope:faction_target + if = { + limit = { + is_de_jure_vassal_of_liege_trigger = yes + } + stress_impact = { + just = minor_stress_impact_gain + } + } + } + } + } + + auto_accept = yes +} + +create_claimant_faction_against_interaction = { + icon = vassal_claim_liege_title_interaction + category = interaction_category_vassal + interface_priority = 270 + use_diplomatic_range = no + needs_recipient_to_open = no + + desc = create_claimant_faction_against_interaction_desc + + special_interaction = create_claimant_faction_against_interaction + interface = create_claimant_faction_against + + is_shown = { + scope:actor = { + NOT = { scope:secondary_actor ?= this } + scope:secondary_actor ?= liege + custom_description = { + text = "faction_can_join_create_in_another_faction" + is_a_faction_member = no + } + highest_held_title_tier > tier_barony + } + } + + is_valid_showing_failures_only = { + NOT = { + scope:actor = { has_truce = scope:secondary_actor } + } + scope:secondary_actor = { + trigger_if = { + limit = { + NOT = { + any_held_title = { + any_claimant = {} + } + } + } + custom_description = { + text = "basic_claimant_found" + always = no + } + } + trigger_else = { + custom_description = { + text = "basic_capable_claimant_found" + any_held_title = { + any_claimant = { + NOT = { has_trait = incapable } + } + } + } + } + trigger_if = { + limit = { + exists = scope:landed_title + } + custom_description = { + text = "claimant_faction_already_exists" + subject = scope:landed_title + object = scope:recipient + NOT = { + any_targeting_faction = { + faction_type = claimant_faction + special_character = scope:recipient + special_title = scope:landed_title + } + } + } + } + } + scope:actor = { + can_join_or_create_faction_against = { + who = scope:secondary_actor + faction = claimant_faction + check_in_a_faction = no # already checked in is_shown. Via the faction interface we'd see this twice if it fails (TIT-11380) + } + } + trigger_if = { + limit = { + exists = scope:recipient + } + scope:recipient = { + NOT = { is_at_war_with = scope:actor } + NOT = { has_trait = incapable } + } + } + scope:secondary_actor = { NOT = { has_strong_hook = scope:actor } } + + # Admin vassals can only start and join a claimant faction if the target is independent + trigger_if = { + limit = { + scope:actor = { government_allows = administrative } + } + trigger_if = { + limit = { + scope:secondary_actor = { government_allows = administrative } + } + scope:secondary_actor = { is_independent_ruler = yes } + } + } + + # Under Byzantine law, a ruler must be unblemished + trigger_if = { + limit = { + scope:landed_title.holder.culture ?= { has_cultural_parameter = physical_disfigurement_blocks_inheritance } + } + scope:recipient ?= { + custom_description = { + text = "byzantine_claimant_is_disfigured" + object = scope:recipient + valid_for_byz_succession_trigger = yes + } + } + } + # Ceremonial Liege + trigger_if = { + limit = { + exists = scope:landed_title + scope:actor.top_liege.primary_title.var:administrative_ui_special_title ?= scope:landed_title + } + scope:recipient = { + tgp_is_in_ceremonial_house_trigger = yes + trigger_if = { + limit = { + scope:landed_title = { + holder.faith = { has_doctrine = doctrine_gender_male_dominated } + any_claimant = { is_male = yes } + } + } + is_male = yes + } + trigger_else_if = { + limit = { + scope:landed_title = { + holder.faith = { has_doctrine = doctrine_gender_female_dominated } + any_claimant = { is_female = yes } + } + } + is_female = yes + } + trigger_else = { always = yes } + } + } + # TGP - Use Coup against Kampaku instead + trigger_if = { + limit = { + scope:recipient ?= { tgp_realm_has_ceremonial_liege_trigger = yes } + } + custom_tooltip = { + text = cannot_create_claimant_faction_against_kampaku_tooltip + scope:recipient ?= { + # TGP - Use Coup against Kampaku instead + tgp_is_ceremonial_regent_trigger = no + } + } + } + # Ministers cannot be claimants unless we are targeting h_china + trigger_if = { + limit = { + exists = scope:recipient + exists = scope:landed_title + scope:recipient = { + OR = { + has_title = title:e_minister_chancellor + has_title = title:e_minister_censor + has_title = title:e_minister_grand_marshal + has_title = title:e_minister_of_personnel + has_title = title:e_minister_of_revenue + has_title = title:e_minister_of_rites + has_title = title:e_minister_of_war + has_title = title:e_minister_of_justice + has_title = title:e_minister_of_works + } + } + } + scope:recipient = { + custom_description = { + text = target_is_a_minister_desc + subject = this + scope:landed_title = { this = title:h_china } + } + } + } + } + + can_send = { + NOT = { + scope:recipient ?= { has_title = title:e_japan } + } + } + + on_send = { + scope:actor = { + set_variable = { + name = claiming_title + value = scope:landed_title + } + + if = { + limit = { + can_create_faction = { + type = claimant_faction + target = scope:secondary_actor + } + } + + create_faction = { + type = claimant_faction + target = scope:secondary_actor + } + joined_faction = { + set_special_character = scope:recipient + set_special_title = scope:landed_title + } + scope:recipient = { + add_to_variable_list = { + name = claimant_factions + target = scope:actor.joined_faction + } + } + + if = { + limit = { this != scope:recipient } + save_scope_as = faction_invite_from + joined_faction = { save_scope_as = faction } + scope:secondary_actor = { save_scope_as = faction_target } + scope:recipient = { + trigger_event = faction_invitation.0001 + } + } + } + + remove_variable = claiming_title + } + } + + auto_accept = yes +} + +invite_to_council_position_interaction = { + category = interaction_category_vassal + popup_on_receive = yes + pause_on_receive = yes + + hidden = yes + + special_interaction = invite_to_council_interaction + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + is_councillor_of = scope:actor + } + } + desc = liege_offer_council_position_exchange + } + triggered_desc = { + trigger = { + scope:actor = { + opinion = { + value >= 30 + target = scope:recipient + } + } + } + desc = liege_offer_council_position_liked + } + triggered_desc = { + trigger = { + scope:actor = { + opinion = { + value <= -30 + target = scope:recipient + } + } + } + desc = liege_offer_council_position_disliked + } + triggered_desc = { + trigger = { + scope:recipient = { + is_powerful_vassal_of = scope:actor + } + } + desc = liege_offer_council_position_powerful + } + triggered_desc = { + trigger = { + scope:recipient = { + OR = { + diplomacy > high_skill_rating + martial > high_skill_rating + stewardship > high_skill_rating + intrigue > high_skill_rating + learning > high_skill_rating + } + } + } + desc = liege_offer_council_position_skilled + } + desc = liege_offer_council_position_fallback + } + } + + is_valid_showing_failures_only = { + ALL_FALSE = { + scope:recipient.council_task = scope:target + scope:actor = { is_at_war_with = scope:recipient } + } + trigger_if = { + limit = { + exists = scope:target.councillor + } + scope:target = { can_fire_position = yes } + NOT = { + scope:target.councillor = { + is_blocked_from_being_fired_from_council_trigger = { COURT_OWNER = scope:actor } + } + } + } + } + + on_accept = { + # Assign the councillor to their new responsibilities. + scope:actor = { + assign_council_task = { + target = scope:recipient + council_task = scope:target + } + } + + # If the new councillor is a player, inform their liege that they have accepted the offer. + if = { + limit = { + scope:recipient = { + is_ai = no + } + } + scope:actor = { + trigger_event = { + id = council_interaction.0001 + days = 1 + } + } + } + # If we're a clan this interaction affects unity + #if = { + # limit = { scope:actor = { NOT = { has_character_flag = fp3_consulted_house } } } + # add_clan_unity_interaction_effect = { + # CHARACTER = scope:actor + # TARGET = scope:recipient + # VALUE = miniscule_unity_gain + # DESC = clan_unity_council_position.desc + # REVERSE_NON_HOUSE_TARGET = yes + # } + #} + } + + on_decline = { + # If the requested councillor is a player, inform their liege that they have declined the offer. + if = { + limit = { + scope:recipient = { + is_ai = no + } + } + scope:actor = { + trigger_event = { + id = council_interaction.0002 + days = 1 + } + } + } + } + + auto_accept = { + custom_description = { + text = auto_accept_interaction_ai + object = scope:recipient + scope:recipient = { + is_ai = yes + } + } + } +} + +force_onto_council = { + category = interaction_category_vassal + interface_priority = 120 + icon = council + + desc = force_onto_council_desc + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor = { has_strong_hook = scope:recipient } + } + desc = force_onto_council.notification.strong_hook + } + desc = force_onto_council.notification.fallback + } + } + + special_interaction = force_onto_council_interaction + interface = council_task_interaction + + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + is_shown = { + scope:recipient != scope:actor + scope:actor = { + liege = scope:recipient + NOT = { + is_councillor = yes + } + # Merit based realms cannot force themselves onto the council - they should compete with merit and score instead + NOT = { government_allows = merit } + } + + trigger_if = { + limit = { + exists = scope:target.councillor + } + scope:target = { can_fire_position = yes } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_description = { + text = "has_usable_hook_or_council_rights_through_vassal_contract" + subject = scope:actor + OR = { + has_usable_hook = scope:recipient + vassal_contract_has_flag = can_demand_council_seat + vassal_contract_has_flag = can_demand_kurultai_seat + } + } + is_adult = yes + NOT = { + is_at_war_with = scope:recipient + } + NAND = { + has_council_position = councillor_court_chaplain + faith = { + OR = { + has_doctrine = doctrine_clerical_succession_temporal_fixed_appointment + has_doctrine = doctrine_clerical_succession_spiritual_fixed_appointment + } + } + } + } + } + + has_valid_target_showing_failures_only = { + trigger_if = { + limit = { + exists = scope:target.councillor + } + scope:target.councillor = { + NOT = { + is_blocked_from_being_fired_from_council_trigger = { + COURT_OWNER = scope:recipient + } + } + } + } + } + + on_accept = { + scope:target = { + save_scope_as = council_task + } + scope:actor = { + if = { + limit = { + NOR = { + vassal_contract_has_flag = can_demand_council_seat + vassal_contract_has_flag = can_demand_kurultai_seat + } + } + save_scope_value_as = { + name = used_hook + value = yes + } + } + block_firing_councillor_effect = { COURT_OWNER = scope:recipient } + #And notify exactly which councillor type they've become. + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_good + title = force_onto_council.actor.tt + left_icon = scope:recipient + custom_tooltip = force_onto_council.actor.tt.duration + } + } + stress_impact = { content = minor_stress_impact_gain } + } + scope:recipient = { + assign_council_task = { + target = scope:actor + council_task = scope:council_task + } + custom_tooltip = force_onto_council.desc.tt + #And notify exactly which councillor type they've become. + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = force_onto_council.recipient.tt + left_icon = scope:actor + if = { + limit = { exists = scope:used_hook } + show_as_tooltip = { scope:actor = { use_hook = scope:recipient } } + } + custom_tooltip = force_onto_council.recipient.tt.duration + } + } + } + #Done in the end so that all tooltips will show correct information + scope:actor = { + if = { + limit = { + exists = scope:used_hook + } + use_hook = scope:recipient + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_forced_unto_council.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + ai_set_target = { + scope:actor = { + random_list = { + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_chancellor + can_be_chancellor_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = diplomacy + } + modifier = { + trigger = { highest_skill = diplomacy } + factor = 10 + } + scope:recipient.council_task:councillor_chancellor = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_steward + can_be_steward_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = stewardship + } + modifier = { + trigger = { highest_skill = stewardship } + factor = 10 + } + scope:recipient.council_task:councillor_steward = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_marshal + can_be_marshal_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_marshal = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_spymaster + can_be_spymaster_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = intrigue + } + modifier = { + trigger = { highest_skill = intrigue } + factor = 10 + } + scope:recipient.council_task:councillor_spymaster = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_court_chaplain + can_be_court_chaplain_trigger = { COURT_OWNER = scope:recipient } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_kurultai_seat } + } + } + modifier = { + factor = learning + } + modifier = { + trigger = { highest_skill = learning } + factor = 10 + } + scope:recipient.council_task:councillor_court_chaplain = { + save_scope_as = target + } + } + # Kurultai Demanded + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_1 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_2 + CP2 = councillor_kurultai_3 + CP3 = councillor_kurultai_4 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_1 = { + save_scope_as = target + } + } + # Repeated so they don't always demand the same position + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_2 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_1 + CP2 = councillor_kurultai_3 + CP3 = councillor_kurultai_4 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_2 = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_3 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_1 + CP2 = councillor_kurultai_2 + CP3 = councillor_kurultai_4 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_3 = { + save_scope_as = target + } + } + 10 = { + trigger = { + exists = scope:recipient.council_task:councillor_kurultai_4 + can_be_kurultai_trigger = { + COURT_OWNER = scope:actor.liege_or_court_owner + CP1 = councillor_kurultai_1 + CP2 = councillor_kurultai_2 + CP3 = councillor_kurultai_3 + } + scope:recipient = { + NOT = { vassal_contract_has_flag = can_demand_council_seat } + } + } + modifier = { + factor = martial + } + modifier = { + trigger = { highest_skill = martial } + factor = 10 + } + scope:recipient.council_task:councillor_kurultai_4 = { + save_scope_as = target + } + } + } + } + } + + ai_potential = { + top_liege != this + is_councillor = no + } + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 36 + kingdom = 24 + empire = 24 + hegemony = 0 + } + + auto_accept = yes + force_notification = yes + + ai_will_do = { + base = 100 + + modifier = { + factor = 0 + scope:actor = { + ai_greed <= medium_positive_ai_value + OR = { + has_relation_friend = scope:recipient + has_relation_lover = scope:recipient + has_relation_best_friend = scope:recipient + has_relation_soulmate = scope:recipient + } + } + } + + modifier = { + factor = 0 + is_councillor = yes + } + } +} + +stop_attacker_vassal_war_interaction = { + category = interaction_category_vassal + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + ai_accept_negotiation = yes + popup_on_receive = yes + pause_on_receive = yes + icon = icon_retreat + + send_name = "stop_attacker_vassal_war_interaction" + + ai_maybe = yes + + prompt = STOP_VASSAL_WAR_ATTACKER + + desc = { + desc = stop_vassal_war_negotiation + triggered_desc = { + trigger = { scope:actor = { has_usable_hook = scope:recipient } } + desc = stop_vassal_war_use_hook + } + desc = might_ask_for_something_in_return_warning_double_line_break + } + + on_decline_summary = stop_attacker_vassal_war_decline_summary + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + liege ?= scope:actor + highest_held_title_tier > tier_barony + any_character_war = { + primary_attacker = scope:recipient + save_temporary_scope_as = target_war + } + } + scope:actor = { + NOT = { is_participant_in_war = scope:target_war } + } + } + + is_valid_showing_failures_only = { + custom_description = { + text = cannot_stop_war_when_already_fighting + object = scope:recipient + scope:recipient = { + NOT = { + any_war_enemy = { + this = scope:actor + } + } + } + } + custom_description = { + text = cannot_stop_war_timer + object = scope:recipient + NOT = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = attempt_to_force_end_war_opinion + } + } + } + } + NOT = { + scope:recipient = { + has_strong_hook = scope:actor + } + } + } + + can_be_picked = { + scope:target.primary_attacker = scope:recipient + } + + on_accept = { + scope:recipient = { + add_opinion = { + modifier = attempt_to_force_end_war_opinion + target = scope:actor + } + } + hidden_effect = { + scope:recipient = { + trigger_event = vassal_interaction.0001 #Starts "negotiations" + } + } + show_as_tooltip = { + scope:target ?= { end_war = white_peace } + } + + # If we're a clan this interaction affects unity - But we only show it in the tooltip, actual effect is applied in the respective follow-up events + show_as_tooltip = { + if = { + limit = { # If we are asking a non-house member to stop attacking a house member, gain unity + exists = scope:recipient.house + exists = scope:actor.house + scope:recipient.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:target.primary_defender + VALUE = medium_unity_gain + DESC = clan_unity_aided_in_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { + limit = { # If we are asking a house member to stop attacking a non-house member, lose unity + exists = scope:actor.house + exists = scope:target.primary_defender.house + scope:target.primary_defender.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_stopped_vassal_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + } + + on_decline = { + show_as_tooltip = { + scope:recipient = { + add_opinion = { + modifier = attempt_to_force_end_war_opinion + target = scope:actor + } + } + scope:actor = { add_prestige = minor_prestige_loss } + } + } + + auto_accept = yes +} + +stop_defender_vassal_war_interaction = { + category = interaction_category_vassal + interface = interfere_in_war + special_interaction = interfere_in_war_interaction + ai_accept_negotiation = yes + popup_on_receive = yes + pause_on_receive = yes + send_name = "SEND_DEMAND" + icon = icon_retreat + + ai_maybe = yes + + prompt = STOP_VASSAL_WAR_DEFENDER + + desc = { + desc = stop_vassal_war_negotiation + triggered_desc = { + trigger = { scope:actor = { has_usable_hook = scope:recipient } } + desc = stop_vassal_war_use_hook + } + desc = might_ask_for_something_in_return_warning_double_line_break + } + + on_decline_summary = stop_attacker_vassal_war_decline_summary + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + liege ?= scope:actor + highest_held_title_tier > tier_barony + any_character_war = { + primary_defender = scope:recipient + save_temporary_scope_as = target_war + } + } + scope:actor = { + NOT = { is_participant_in_war = scope:target_war } + } + } + + is_valid_showing_failures_only = { + custom_description = { + text = cannot_stop_war_when_already_fighting + object = scope:recipient + NOT = { + scope:recipient = { + any_war_enemy = { + this = scope:actor + } + } + } + } + custom_description = { + text = cannot_stop_war_timer + object = scope:recipient + NOT = { + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = attempt_to_force_surrender_opinion + } + } + } + } + NOT = { + scope:recipient = { + has_strong_hook = scope:actor + } + } + } + + can_be_picked = { + scope:target.primary_defender = scope:recipient + } + + on_accept = { + scope:recipient = { + add_opinion = { + modifier = attempt_to_force_surrender_opinion + target = scope:actor + } + } + hidden_effect = { + scope:recipient = { + trigger_event = vassal_interaction.0011 #Starts "negotiations" + } + } + + # If we're a clan this interaction affects unity - But we only show it in the tooltip, actual effect is applied in the respective follow-up events + show_as_tooltip = { + if = { + limit = { # If recipient is a house member and the attacker is not, lose unity + exists = scope:actor.house + exists = scope:target.primary_attacker.house + scope:target.primary_attacker.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_stop_defender_vassal_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + else_if = { + limit = { # If recipient is a non-house member and the attacker is, gain unity + exists = scope:actor.house + exists = scope:recipient.house + scope:recipient.house != scope:actor.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:target.primary_attacker + VALUE = medium_unity_gain + DESC = clan_unity_aided_in_war.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + } + + auto_accept = yes +} + +ask_for_pardon_interaction = { + category = interaction_category_vassal + icon = scroll_scales + + filter_tags = { celestial_ministry } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor != scope:recipient.liege + } + desc = ask_for_pardon_interaction_minister_desc + } + desc = ask_for_pardon_interaction_desc + } + } + notification_text = ASK_FOR_PARDON_NOTIFICATION + + is_shown = { + ask_for_pardon_available_trigger = { ACTOR = scope:actor } + OR = { + scope:actor.top_liege = scope:recipient + scope:recipient = { + top_liege = scope:actor.top_liege + has_title = title:e_minister_of_justice + } + } + } + + + is_valid_showing_failures_only = { + scope:actor = { + NOT = { is_at_war_with = scope:recipient } + NOT = { is_imprisoned_by = scope:recipient }#Then you use the regular ransom interactions + } + } + + highlighted_reason = { + triggered_desc = { + trigger = { + scope:recipient = { + has_title = title:e_minister_of_justice + } + } + desc = HIGHLIGHTED_MINISTER_WILLING_TO_PARDON + } + } + + is_highlighted = { + OR = { + has_usable_hook = scope:recipient + AND = { + scope:recipient = { + has_title = title:e_minister_of_justice + } + scope:recipient = { + is_character_interaction_potentially_accepted = { + recipient = scope:recipient + interaction = ask_for_pardon_interaction + } + } + } + } + } + + ai_accept = { + base = -50 + + #How bad is it, really? + modifier = { + scope:recipient = { + has_banish_reason = scope:actor + NOR = { #These are worse + has_execute_reason = scope:actor + has_revoke_title_reason = scope:actor + } + } + desc = AI_BANISHMENT_REASON_MODIFIER + add = -20 + } + modifier = { + scope:recipient = { + has_revoke_title_reason = scope:actor + NOT = { #This is worse are worse + has_execute_reason = scope:actor + } + } + desc = AI_REVOKE_TITLE_REASON_MODIFIER + add = -30 + } + modifier = { + scope:recipient = { + has_execute_reason = scope:actor + } + desc = AI_EXECUTE_REASON_MODIFIER + add = -40 + } + + #Willing to forgive + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 1 + desc = AI_OPINION_REASON + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook = yes + } + } + + ai_min_reply_days = 1 + ai_max_reply_days = 5 + + on_accept = { + ask_for_pardon_interaction_effect = yes + scope:actor = { + trigger_event = vassal_interaction.0030 + } + + scope:recipient = { + if = { + limit = { + culture = { + has_cultural_parameter = pardoning_gives_prestige + } + } + add_prestige = minor_prestige_gain + } + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_pardon_granted.desc + REVERSE_NON_HOUSE_TARGET = no + } + + hidden_effect = { + # Struggle catalysts + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_grants_pardon_supporter_detractor + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:actor + } + } + } + } + scope:recipient = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_grants_pardon_supporter_detractor + character = scope:recipient + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_grants_pardon_supporter_detractor } + } + } + } + } + } + + on_auto_accept = { + scope:recipient = { + trigger_event = char_interaction.0240 + } + } + + on_decline = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_bad + title = ask_for_pardon_interaction_decline_toast + left_icon = scope:actor + + custom_tooltip = ask_for_pardon_interaction_accept_decline + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:recipient + TARGET = scope:actor + VALUE = minor_unity_loss + DESC = clan_unity_refused_pardon.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 24 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 0 + } + + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:actor = { + has_usable_hook = scope:recipient + } + } + + modifier = { + add = 100 + scope:hook = yes + } + } +} + +pardon_interaction = { + category = interaction_category_friendly + icon = scroll_scales + + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor != scope:recipient.liege + } + desc = pardon_interaction_minister_desc + } + desc = pardon_interaction_desc + } + triggered_desc = { + trigger = { + scope:actor = { + culture = { + has_cultural_parameter = pardoning_gives_prestige + } + } + } + desc = pardon_interaction_has_jirga_desc + } + } + is_shown = { + scope:actor = { + OR = { + has_imprisonment_reason = scope:recipient + AND = { + has_title = title:e_minister_of_justice + scope:recipient = { + any_liege_or_above = { + has_imprisonment_reason = scope:recipient + } + } + } + } + } + scope:recipient = { + OR = { + scope:actor = { + has_title = title:e_minister_of_justice + top_liege = scope:recipient.top_liege + } + target_is_liege_or_above = scope:actor + } + } + } + cost = { + influence = { + value = 0 + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + NOT = { has_imprisonment_reason = scope:recipient } + } + } + add = { + value = 25 + if = { + limit = { + scope:actor.top_liege = { + has_realm_law = celestial_bureaucracy_0 + } + } + add = 75 + } + else_if = { + limit = { + scope:actor.top_liege = { + has_realm_law = celestial_bureaucracy_1 + } + } + add = 50 + } + else_if = { + limit = { + scope:actor.top_liege = { + has_realm_law = celestial_bureaucracy_2 + } + } + add = 25 + } + } + } + } + treasury = { + value = 0 + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + has_treasury = yes + NOT = { has_imprisonment_reason = scope:recipient } + } + } + add = scope:actor.minor_treasury_value + } + } + } + + auto_accept = yes + + is_highlighted = { + scope:recipient = { + is_imprisoned = no + } + scope:actor = { + has_title = title:e_minister_of_justice + } + } + + on_accept = { + if = { + limit = { + scope:actor = { + has_title = title:e_minister_of_justice + } + } + scope:actor = { + add_merit_if_relevant_effect = { + MERIT = minor_merit_value + } + if = { + limit = { + government_has_flag = government_has_influence + } + change_influence = { + value = minor_influence_gain + multiply = scope:recipient.highest_held_title_tier + } + } + } + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_neutral + title = pardon_interaction_toast_title + desc = pardon_interaction_toast_minister + right_icon = scope:actor + if = { + limit = { + OR = { + scope:recipient.liege = { + has_extra_criminal_reason_against_trigger = { + CRIMINAL = scope:recipient + } + } + is_close_or_extended_family_of = scope:actor + } + } + scope:actor = { + change_strife_opinion = massive_strife_gain + situation:dynastic_cycle = { + trigger_situation_catalyst = { + catalyst = catalyst_minister_pardoned_dangerous_criminal + character = scope:actor + } + } + } + } + consume_all_criminal_reasons_effect = { + LIEGE = scope:recipient.liege + CRIMINAL = scope:recipient + } + } + } + hidden_effect = { + scope:recipient.liege = { + send_interface_toast = { + type = event_toast_effect_neutral + title = pardon_interaction_toast_title + desc = pardon_interaction_toast_minister_liege + right_icon = scope:actor + left_icon = scope:recipient + show_as_tooltip = { + if = { + limit = { + OR = { + has_extra_criminal_reason_against_trigger = { + CRIMINAL = scope:recipient + } + scope:recipient = { + is_close_or_extended_family_of = scope:actor + } + } + } + scope:actor = { + change_strife_opinion = massive_strife_gain + situation:dynastic_cycle = { + trigger_situation_catalyst = { + catalyst = catalyst_minister_pardoned_dangerous_criminal + character = scope:actor + } + } + } + } + consume_all_criminal_reasons_effect = { + LIEGE = scope:recipient.liege + CRIMINAL = scope:recipient + } + } + } + } + } + } + else = { + scope:recipient = { + send_interface_toast = { + type = event_toast_effect_neutral + title = pardon_interaction_toast_title + desc = pardon_interaction_toast + right_icon = scope:actor + consume_all_criminal_reasons_effect = { + LIEGE = scope:actor + CRIMINAL = scope:recipient + } + } + } + } + + scope:actor = { + stress_impact = { + forgiving = medium_stress_loss + } + } + + scope:actor = { + if = { + limit = { + culture = { + has_cultural_parameter = pardoning_gives_prestige + } + } + add_prestige = minor_prestige_gain + } + + hidden_effect = { + # Struggle catalysts + if = { + limit = { + fp3_struggle_involves_one_supporter_and_one_detractor = { + FIRST = scope:actor + SECOND = scope:recipient + } + scope:recipient = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_grants_pardon_supporter_detractor + is_secondary_character_involvement_involved_trigger = { + CHAR = scope:actor + } + } + } + } + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_grants_pardon_supporter_detractor + character = scope:recipient + } + log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_grants_pardon_supporter_detractor } + } + } + } + } + + scope:recipient = { + if = { + limit = { + scope:actor = { + culture = { + has_cultural_parameter = pardoning_gives_loyalty + } + } + } + add_opinion = { + modifier = loyal_servant + target = scope:actor + } + scope:actor = { + if = { + limit = { + can_add_hook = { + target = scope:recipient + type = loyalty_hook + } + } + add_hook = { + type = loyalty_hook + target = scope:recipient + } + } + } + } + else = { + add_opinion = { + target = scope:actor + modifier = grateful_opinion + opinion = 15 + } + } + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_forgiveness.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + ai_potential = { + OR = { + ai_vengefulness <= 0 + culture = { + has_cultural_parameter = pardoning_gives_loyalty + } + } + } + ai_targets = { + ai_recipients = vassals + } + ai_targets = { + ai_recipients = courtiers + chance = 0.25 + } + ai_frequency_by_tier = { + barony = 0 + county = 144 + duchy = 72 + kingdom = 36 + empire = 36 + hegemony = 36 + } + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + has_relation_lover = scope:actor + has_relation_soulmate = scope:actor + is_primary_heir_of = scope:actor + } + } + } + + modifier = { + add = 25 + scope:actor = { + scope:actor.ai_vengefulness <= 0 + culture = { + has_cultural_parameter = pardoning_gives_loyalty + } + } + } + + modifier = { + add = { + value = ai_vengefulness + multiply = -1 + } + scope:actor.ai_vengefulness <= -25 + } + } +} + +vassal_claim_liege_title_interaction = { + category = interaction_category_vassal + interface_priority = 269 # after Start Claimant Faction + desc = vassal_claim_liege_title_interaction_desc + target_type = title + target_filter = recipient_domain_titles + ignores_pending_interaction_block = yes + icon = vassal_claim_liege_title_interaction + + cost = { + prestige = { + value = { + add = monumental_prestige_value + if = { + limit = { + scope:actor.prestige_level > scope:recipient.prestige_level + } + subtract = { + value = major_prestige_value + multiply = { + value = scope:actor.prestige_level + subtract = scope:recipient.prestige_level + } + desc = higher_prestige_level_than_liege + } + } + else_if = { + limit = { + scope:actor.prestige_level < scope:recipient.prestige_level + } + add = { + value = major_prestige_value + multiply = { + value = scope:recipient.prestige_level + subtract = scope:actor.prestige_level + } + desc = lower_prestige_level_than_liege + } + } + min = 0 + } + } + } + + is_shown = { + scope:recipient != scope:actor + + scope:actor = { + is_physically_able_adult = yes + } + + scope:recipient = scope:actor.liege + + scope:recipient = { + is_playable_character = yes + any_held_title = { + title_tier >= duchy + NOR = { + has_title_law = noble_family_succession_law + has_title_law = landless_adventurer_succession_law + has_title_law = mandala_succession_law + } + scope:actor = { + NOT = { + has_claim_on = prev + } + } + } + } + } + + is_highlighted = { + scope:actor.prestige >= vassal_claim_liege_title_interaction_highlight_value + } + + can_be_picked = { + trigger_if = { + limit = { + scope:actor = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = powerful_vassal_can_claim_liege_titles + } + } + } + scope:actor = { is_powerful_vassal_of = scope:recipient } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 5 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_15_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.15 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 4 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_21_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.21 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 3 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_31_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.31 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { legitimacy_level = 2 } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_41_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.41 + } + } + } + } + trigger_if = { + limit = { + scope:actor = { + OR = { + legitimacy_level = 1 + legitimacy_level = 0 + has_legitimacy = no #if you don't have legitimacy at all we fall back to the default + } + } + } + scope:target = { + tier >= tier_duchy + custom_description = { + text = has_51_percent_of_a_dejure_title + any_in_de_jure_hierarchy = { + filter = { + tier = tier_county + } + continue = { + tier > tier_county + } + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + percent >= 0.51 + } + } + } + } + + custom_description = { + NOT = { + scope:actor = { + has_claim_on = scope:target + } + } + text = "already_have_a_claim_on_this_title" + } + trigger_if = { + limit = { + scope:target = { + tier = tier_duchy + } + } + custom_description = { + text = not_family_or_adventurer_title + scope:target = { + NOR = { + has_title_law = noble_family_succession_law + has_title_law = landless_adventurer_succession_law + has_title_law = mandala_succession_law + } + } + } + } + } + + has_valid_target_showing_failures_only = { + scope:target = { + tier >= tier_duchy + } + } + + is_valid_showing_failures_only = { + custom_description = { + scope:recipient = { + any_held_title = { + title_tier >= county + NOT = { any_claimant = { this = scope:actor } } + } + } + + object = scope:recipient + text = "already_have_claims_on_all_titles" + } + scope:recipient = { NOT = { has_strong_hook = scope:actor } } + NOT = { + scope:actor = { + is_allied_to = scope:recipient + } + } + } + + on_auto_accept = { + scope:target = { + random_in_de_jure_hierarchy = { + limit = { + tier = tier_county + OR = { + holder = scope:actor + holder = { + target_is_liege_or_above = scope:actor + } + } + } + title_province = { + save_scope_as = county_in_title + } + } + } + scope:recipient = { + trigger_event = vassal_interaction.0040 + } + } + + on_accept = { + scope:actor = { + send_interface_toast = { + type = event_toast_effect_good + title = buy_claim_interaction.message + left_icon = scope:actor + right_icon = scope:recipient + vassal_claim_liege_title_interaction_effect = yes + } + claim_title_achievement_effect = yes + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = major_unity_loss + DESC = clan_unity_title_claim.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = yes + + ai_targets = { + ai_recipients = liege + } + ai_frequency_by_tier = { + barony = 0 + county = 48 + duchy = 24 + kingdom = 24 + empire = 24 + hegemony = 0 + } + + ai_potential = { + domain_size > 1 + NOR = { + has_trait = content + has_trait = craven + } + } + + ai_will_do = { + base = 25 + + ai_value_modifier = { + who = scope:actor + ai_greed = 1 + ai_boldness = 0.5 + ai_honor = -0.5 + } + + modifier = { + add = scope:actor.ai_zeal + scope:actor = { + ai_zeal > 0 + } + scope:actor.faith != scope:recipient.faith + } + + modifier = { + add = 25 + scope:actor = { + is_powerful_vassal_of = scope:recipient + } + } + + modifier = { + add = 50 + scope:actor = { + opinion = { + target = scope:recipient + value <= 0 + } + } + } + + modifier = { + add = 25 + scope:recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + } + + modifier = { + add = -15 + scope:recipient = { + has_relation_lover = scope:actor + } + } + + # Agenda impact + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp2 + } + has_character_flag = agenda_towards_escalation + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp2 + } + } + } + add = -100 + } + } + } + + modifier = { + scope:actor = { + any_character_struggle = { + involvement = involved + is_struggle_type = persian_struggle + } + } + add = { + value = 0 + if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp3 + } + has_trait = fp3_struggle_detractor + } + } + add = 200 + } + else_if = { + limit = { + scope:actor = { + any_character_struggle = { + phase_has_catalyst = catalyst_gain_claim_on_title_fp3 + } + } + } + add = -100 + } + } + } + + modifier = { + factor = 0.25 + scope:actor = { + ai_greed < 100 + opinion = { + target = scope:recipient + value >= 50 + } + } + } + + modifier = { + factor = 0 + scope:actor = { + ai_greed < 100 + opinion = { + target = scope:recipient + value >= 75 + } + } + } + + modifier = { + add = -25 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 1 + } + } + } + + modifier = { + factor = 0 + scope:actor = { + has_dread_level_towards = { + target = scope:recipient + level = 2 + } + } + } + + modifier = { + factor = 0 + scope:recipient = { + OR = { + has_relation_friend = scope:actor + has_relation_best_friend = scope:actor + has_relation_soulmate = scope:actor + } + } + } + } +} + +give_vassal_directive_interaction = { + category = interaction_category_vassal + icon = icon_scheme_challenge_status + interface_priority = 60 + desc = give_vassal_directive_interaction_desc + + auto_accept = yes + + is_shown = { + scope:recipient = { + trigger_if = { + limit = { + scope:actor = { government_allows = administrative } + } + is_vassal_or_below_of = scope:actor + } + trigger_else = { + is_vassal_of = scope:actor + } + is_landed = yes + NOT = { government_has_flag = government_is_true_herder } + highest_held_title_tier >= tier_county + is_ai = yes + } + } + + is_valid = { + vassal_follows_directive_trigger = { VASSAL = scope:recipient LIEGE = scope:actor } + } + + is_valid_showing_failures_only = { + vassal_follows_directive_valid_trigger = { VASSAL = scope:recipient LIEGE = scope:actor } + scope:recipient = { is_physically_able = yes } + } + + send_option = { + flag = improve_development + is_shown = { + scope:recipient = { + government_allows = administrative + } + } + is_valid = { + scope:recipient = { + highest_held_title_tier >= tier_duchy + } + } + } + + send_option = { + flag = train_commanders + is_shown = { + scope:recipient = { + government_allows = administrative + } + } + is_valid = { + } + } + + send_option = { + flag = build_maa + is_shown = { + scope:recipient = { + government_allows = administrative + } + } + is_valid = { + } + } + + send_option = { + flag = convert_faith + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + scope:recipient = { + custom_tooltip = { + text = subrealm_has_county_of_other_faith + any_sub_realm_county = { + faith != scope:recipient.faith + } + } + } + } + } + + send_option = { + flag = convert_culture + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + scope:recipient = { + custom_tooltip = { + text = subrealm_has_county_of_other_culture + any_sub_realm_county = { + culture != scope:recipient.culture + } + } + } + } + } + + send_option = { + flag = improve_cultural_acceptance + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + scope:recipient = { + highest_held_title_tier >= tier_duchy + custom_tooltip = { + text = subrealm_has_county_of_other_culture + any_sub_realm_county = { + culture != scope:recipient.culture + } + } + } + } + } + + send_option = { + flag = building_focus_fortification + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + } + } + + send_option = { + flag = building_focus_military + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + } + } + + send_option = { + flag = building_focus_economy + is_shown = { + scope:recipient = { + NOT = { government_has_flag = government_is_nomadic } + } + } + is_valid = { + } + } + + send_option = { + flag = manage_fertility + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + } + } + send_option = { + flag = explore_cultures + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + scope:recipient = { + custom_tooltip = { + text = subrealm_has_county_of_other_culture + any_sub_realm_county = { + NOT = { culture = scope:recipient.culture } + } + } + } + } + } + send_option = { + flag = raid_innovation_intent + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + custom_tooltip = { + text = has_any_directive + scope:recipient = { + NOT = { + has_character_flag = vassal_directive_raid_innovation_intent + } + } + } + } + } + send_option = { + flag = raid_herd_intent + is_shown = { + scope:recipient = { + government_has_flag = government_is_nomadic + } + } + is_valid = { + } + } + + send_option = { + flag = remove_directive + is_shown = { + } + is_valid = { + custom_tooltip = { + text = has_any_directive + scope:recipient = { + OR = { + has_character_flag = vassal_directive_improve_development + has_character_flag = vassal_directive_train_commanders + has_character_flag = vassal_directive_build_maa + has_character_flag = vassal_directive_convert_faith + has_character_flag = vassal_directive_convert_culture + has_character_flag = vassal_directive_improve_cultural_acceptance + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_manage_fertility + has_character_flag = vassal_directive_explore_cultures + has_character_flag = vassal_directive_raid_innovation_intent + has_character_flag = vassal_directive_raid_herd_intent + } + } + } + } + } + + on_accept = { + scope:recipient = { + if = { + limit = { + OR = { + has_character_flag = vassal_directive_improve_development + has_character_flag = vassal_directive_train_commanders + has_character_flag = vassal_directive_build_maa + has_character_flag = vassal_directive_convert_faith + has_character_flag = vassal_directive_convert_culture + has_character_flag = vassal_directive_improve_cultural_acceptance + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_manage_fertility + has_character_flag = vassal_directive_explore_cultures + has_character_flag = vassal_directive_raid_innovation_intent + has_character_flag = vassal_directive_raid_herd_intent + } + } + custom_tooltip = { + text = vassal_directive_remove_directive + remove_vassal_directives = yes + } + } + switch = { + trigger = yes + + scope:improve_development ?= { + custom_tooltip = { + text = vassal_directive_improve_development + remove_vassal_directives = yes + add_character_flag = vassal_directive_improve_development + } + } + + scope:train_commanders ?= { + custom_tooltip = { + text = vassal_directive_train_commanders + remove_vassal_directives = yes + add_character_flag = vassal_directive_train_commanders + } + } + + scope:build_maa ?= { + custom_tooltip = { + text = vassal_directive_build_maa + remove_vassal_directives = yes + add_character_flag = vassal_directive_build_maa + } + } + + scope:convert_faith ?= { + custom_tooltip = { + text = vassal_directive_convert_faith + remove_vassal_directives = yes + add_character_flag = vassal_directive_convert_faith + } + } + + scope:convert_culture ?= { + custom_tooltip = { + text = vassal_directive_convert_culture + remove_vassal_directives = yes + add_character_flag = vassal_directive_convert_culture + } + } + + scope:improve_cultural_acceptance ?= { + custom_tooltip = { + text = vassal_directive_improve_cultural_acceptance + remove_vassal_directives = yes + add_character_flag = vassal_directive_improve_cultural_acceptance + } + } + + scope:building_focus_fortification ?= { + custom_tooltip = { + text = vassal_directive_building_focus_fortification + remove_vassal_directives = yes + add_character_flag = vassal_directive_building_focus_fortification + } + } + + scope:building_focus_military ?= { + custom_tooltip = { + text = vassal_directive_building_focus_military + remove_vassal_directives = yes + add_character_flag = vassal_directive_building_focus_military + } + } + + scope:building_focus_economy ?= { + custom_tooltip = { + text = vassal_directive_building_focus_economy + remove_vassal_directives = yes + add_character_flag = vassal_directive_building_focus_economy + } + } + + scope:manage_fertility ?= { + custom_tooltip = { + text = vassal_directive_manage_fertility + remove_vassal_directives = yes + add_character_flag = vassal_directive_manage_fertility + } + } + scope:explore_cultures ?= { + custom_tooltip = { + text = vassal_directive_explore_cultures + remove_vassal_directives = yes + add_character_flag = vassal_directive_explore_cultures + } + } + scope:raid_innovation_intent ?= { + custom_tooltip = { + text = vassal_directive_raid_innovation_intent + remove_vassal_directives = yes + add_character_flag = vassal_directive_raid_innovation_intent + } + } + scope:raid_herd_intent ?= { + custom_tooltip = { + text = vassal_directive_raid_herd_intent + remove_vassal_directives = yes + add_character_flag = vassal_directive_raid_herd_intent + } + } + + scope:remove_directive ?= { + custom_tooltip = { + text = vassal_directive_remove_directive + remove_vassal_directives = yes + } + } + } + } + } + + ai_potential = { + government_allows = administrative + } + ai_targets = { + ai_recipients = vassals + } + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 12 + empire = 1 + hegemony = 1 + } + ai_will_do = { + base = 0 + + modifier = { + add = 100 + scope:improve_development ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_improve_development + } + OR = { + vassal_contract_has_flag = admin_theme_civilian + vassal_contract_has_flag = admin_theme_balanced + } + } + } + + modifier = { + add = 100 + scope:building_focus_economy ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_economy + has_character_flag = vassal_directive_improve_development + } + OR = { + vassal_contract_has_flag = admin_theme_civilian + vassal_contract_has_flag = admin_theme_balanced + } + } + } + + modifier = { + add = 100 + scope:building_focus_fortification ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_build_maa + } + vassal_contract_has_flag = admin_theme_frontier + } + } + + modifier = { + add = 100 + scope:build_maa ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_fortification + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_build_maa + } + OR = { + vassal_contract_has_flag = admin_theme_military + vassal_contract_has_flag = admin_theme_frontier + } + } + } + + modifier = { + add = 100 + scope:building_focus_military ?= yes + scope:recipient = { + NOR = { + has_character_flag = vassal_directive_building_focus_military + has_character_flag = vassal_directive_build_maa + } + OR = { + vassal_contract_has_flag = admin_theme_military + vassal_contract_has_flag = admin_theme_naval + } + } + } + } +} + + + +request_court_position = { + category = interaction_category_vassal + interface_priority = 120 + icon = seneschal_court_position + + desc = request_court_position_desc + + special_interaction = request_court_position + interface = court_task_interaction + target_type = court_position_type + + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + is_shown = { + NOT = { scope:recipient = scope:actor } + scope:actor.liege ?= scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { + tgp_is_ceremonial_liege_trigger = no + } + } + + on_accept = { + scope:recipient = { + appoint_court_position = { + recipient = scope:actor + court_position = scope:target + } + } + scope:actor = { + if = { + limit = { always = scope:claim_hook } + use_hook = scope:recipient + } + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:claim_hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + send_option = { + is_shown = { + NOT = { scope:actor = scope:recipient } + } + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = claim_hook + localization = GENERIC_SPEND_A_HOOK + } + + send_options_exclusive = no + + ai_accept = { + base = -75 + + modifier = { + scope:claim_hook ?= yes + add = 100 + desc = SCHEME_WEAK_HOOK_USED + } + + opinion_modifier = { # More likely if Recipient likes Actor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + } + + force_notification = yes +} + +grant_court_position = { + category = interaction_category_vassal + interface_priority = 120 + icon = seneschal_court_position + + desc = grant_court_position_desc + + special_interaction = grant_court_position + interface = court_task_interaction + target_type = court_position_type + + is_shown = { + NOT = { scope:recipient = scope:actor } + scope:recipient = { + liege ?= scope:actor + tgp_is_ceremonial_liege_trigger = no + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + NOT = { + is_imprisoned_by = scope:actor + } + is_adult = yes + } + } + + on_accept = { + scope:actor = { + appoint_court_position = { + recipient = scope:recipient + court_position = scope:target + } + } + } + + auto_accept = yes +} diff --git a/common/character_interactions/00_war.txt b/common/character_interactions/00_war.txt new file mode 100644 index 00000000..2867e253 --- /dev/null +++ b/common/character_interactions/00_war.txt @@ -0,0 +1,2372 @@ +declare_war_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + special_interaction = declare_war_interaction + interface = declare_war + interface_priority = 70 + popup_on_receive = yes + pause_on_receive = no # this is handled by the interface instead + + desc = declare_war_desc + + is_shown = { + scope:recipient != scope:actor + scope:recipient = { + is_playable_character = yes + } + scope:actor = { + NOT = { + is_at_war_with = scope:recipient + } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + custom_tooltip = { + text = sworn_peace_tt + NOT = { has_character_flag = sworn_peace } + } + NOT = { has_trait = incapable } + can_attack_in_hierarchy = scope:recipient + trigger_if = { + limit = { + NOT = { + government_has_flag = can_start_war_with_raised_troops + } + } + NOT = { + has_raised_armies = yes + } + } + trigger_else = { + custom_description = { + text = army_blocks_defender_army + NOT = { + any_army = { + location.county.holder ?= scope:recipient + } + } + } + } + has_any_display_cb_on = scope:recipient + NOT = { + is_allied_in_war = scope:recipient + } + custom_description = { + text = "is_not_bankrupt" + is_in_debt = no + } + NOT = { + custom_description = { + text = "is_in_an_activity" + exists = involved_activity + } + } + trigger_if = { + limit = { + culture = { has_cultural_parameter = cannot_attack_allies } + } + NOT = { + is_allied_to = scope:recipient + } + } + trigger_if = { + limit = { + culture = { has_cultural_parameter = cannot_attack_truces } + } + NOT = { + has_truce = scope:recipient + } + } + is_imprisoned = no + trigger_if = { + limit = { + has_variable_list = subjugation_offer_under_consideration + } + custom_description = { + text = is_not_considering_offer_of_subjugation + NOT = { + is_target_in_variable_list = { + name = subjugation_offer_under_consideration + target = scope:recipient + } + } + } + } + trigger_if = { + limit = { + has_realm_law = japanese_bureaucracy_3 + this != top_liege + } + custom_tooltip = { + text = non_admin_vassal_japanese_bureaucracy_3 + government_allows = administrative + } + } + } + scope:recipient = { + custom_tooltip = { + text = is_a_herder_recipient_tt + NOT = { government_has_flag = government_is_true_herder } # herders can't fight + } + NOT = { is_tributary_of_suzerain_or_above = scope:actor } # can't fight your tributaries or your tributaries' tributaries + NOT = { has_strong_hook = scope:actor } + trigger_if = { + limit = { is_imprisoned = yes } + imprisoner != scope:actor + } + } + scope:actor = { + trigger_if = { + limit = { + NOT = { government_allows = administrative } + liege ?= { + has_realm_law_flag = vassal_all_wars_banned_permanent + this != scope:actor + } + } + custom_tooltip = { + text = admin_all_vassal_wars_banned + always = no + } + } + trigger_if = { + limit = { + government_allows = administrative + top_liege = scope:recipient.top_liege + scope:recipient = { government_allows = administrative } + top_liege != scope:recipient + NOT = { + top_participant_group:dynastic_cycle ?= { + has_participant_group_parameter = dynastic_cycle_vassal_internal_wars_allowed + } + } + } + custom_tooltip = { + text = admin_cannot_declare_internal_wars + always = no + } + } + trigger_if = { # Admin - Laws only allow frontier and naval themes to declare war + limit = { + government_allows = administrative + top_liege != this + top_liege = { + this != scope:recipient.top_liege + has_realm_law_flag = admin_vassal_wars_restricted + } + } + custom_tooltip = { + text = admin_all_vassal_wars_banned + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_naval + } + } + } + trigger_if = { # Admin - Laws only allow frontier and naval themes to declare war IF they have permission + limit = { + government_allows = administrative + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_naval + } + top_liege = { + this != scope:recipient.top_liege + has_realm_law_flag = admin_vassal_wars_permission_only + NOT = { has_realm_law_flag = admin_vassal_wars_banned } + } + } + custom_tooltip = { + text = admin_vassal_wars_permission_only_desc + has_variable = admin_permission_to_declare_war + } + } + trigger_if = { # Admin - Laws prevent all vassals from declaring war + limit = { + government_allows = administrative + OR = { + vassal_contract_has_flag = admin_theme_frontier + vassal_contract_has_flag = admin_theme_naval + } + top_liege = { + this != scope:recipient.top_liege + has_realm_law_flag = admin_vassal_wars_banned + } + } + custom_tooltip = { + text = admin_all_vassal_wars_banned + always = no + } + } + trigger_if = { + limit = { + scope:recipient = { + OR = { + has_subject_contract_group = tributary_celestial + has_subject_contract_group = tributary_hegemonic + } + } + is_independent_ruler = no # to avoid duplicating tooltips already applying to the top_liege + } + NOT = { + scope:recipient = { + is_tributary_of = scope:actor.top_liege + } + } + } + } + scope:actor = { + trigger_if = { + limit = { has_government = landless_adventurer_government } + custom_tooltip = { + text = camp_located_in_defender_realm.tt + domicile.domicile_location.county.holder = { + NOR = { + this = scope:recipient + any_liege_or_above = { this = scope:recipient } + } + } + } + } + } + trigger_if = { + limit = { + scope:actor = { + is_confederation_member = yes + } + } + NOT = { + scope:recipient = { + is_member_of_confederation = scope:actor.confederation + } + } + } + } + + has_valid_target_showing_failures_only = { + custom_description = { + text = "declare_war_hook_on_liege" + OR = { + war_declarer_needs_hook_on_liege = no + always = scope:hook + } + } + scope:actor = { + NOR = { + is_at_war_with = scope:recipient + custom_description = { #A vassal cannot go to war against someone their Liege is already at war with + text = liege_is_at_war_with_recipient + object = scope:recipient + liege = { + is_at_war_with = scope:recipient + } + } + } + } + } + + send_options_exclusive = no + send_option = { + is_shown = { + war_declarer_needs_hook_on_liege = yes + } + is_valid = { + scope:actor = { + has_usable_hook = liege + } + } + flag = hook + localization = WAR_LIEGE_HOOK + can_invalidate_interaction = yes + } + should_use_extra_icon = { + war_declarer_needs_hook_on_liege = yes + scope:actor = { has_usable_hook = liege } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + on_accept = { + scope:actor = { + #Feedback! + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = declare_war_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = declare_war_interaction_notification_tooltip + + show_as_tooltip = { + if = { + limit = { always = scope:hook } + use_hook = liege + } + } + } + } + + #Has the instigator promised a vassal a war (vassal.2601)? + if = { + limit = { + exists = var:promised_war + var:promised_war = { + is_alive = yes + this != scope:recipient + } + } + trigger_event = { + id = vassal.2610 + days = { 7 10 } + } + } + + if = { + limit = { always = scope:hook } + use_hook = liege + } + + #Send break up event if they are your lover + if = { + limit = { + has_relation_lover = scope:recipient + NOT = { has_relation_rival = scope:recipient } #To enable really strange love stories + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + primary_defender = scope:recipient + any_target_title = { } + } + } + } + scope:recipient = { + trigger_event = { + id = lover.0103 + days = { 14 30 } + } + } + } + + #Invalidate any wars your vassals have going against recipient atm + scope:recipient = { + if = { + limit = { + any_character_war = { + primary_attacker = { + is_vassal_or_below_of = scope:actor + trigger_if = { #Ai should never invalidate a player's war! + limit = { + this = { is_ai = no } + } + scope:actor = { + is_ai = no + } + } + } + } + } + every_character_war = { + limit = { + primary_attacker = { + is_vassal_or_below_of = scope:actor + trigger_if = { #Ai should never invalidate a player's war! + limit = { + this = { is_ai = no } + } + scope:actor = { + is_ai = no + } + } + } + } + show_as_tooltip = { end_war = invalidated } #Actually ended in the event + primary_attacker = { trigger_event = war_event.1001 } + } + } + } + #Notify defender's vassals if the war is targeting one or more of their titles + scope:recipient = { + if = { + limit = { + any_vassal = { + save_temporary_scope_as = attacked_vassal + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + primary_defender = scope:recipient + any_target_title = { + holder = { + OR = { + this = scope:attacked_vassal + is_vassal_or_below_of = scope:attacked_vassal + } + } + } + } + } + } + } + every_vassal = { + save_temporary_scope_as = attacked_vassal + limit = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + primary_defender = scope:recipient + any_target_title = { + holder = { + OR = { + this = scope:attacked_vassal + is_vassal_or_below_of = scope:attacked_vassal + } + } + } + } + } + } + send_interface_toast = { + type = msg_war_declared_on_liege + title = declare_war_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + + custom_tooltip = declare_war_interaction_notification_tooltip + } + } + } + } + + # If you are admin and had permission to start war, spend said permission + if = { + limit = { + has_variable = admin_permission_to_declare_war + } + remove_variable = admin_permission_to_declare_war + } + } + } + + auto_accept = yes +} + +end_war_attacker_victory_interaction = { + special_interaction = end_war_attacker_victory_interaction + hidden = yes + use_diplomatic_range = no + secondary_scopes_optional = yes + + ai_targets = { + ai_recipients = primary_war_enemies + } + + ai_frequency_by_tier = { + barony = 0 + county = 1 + duchy = 1 + kingdom = 1 + empire = 1 + hegemony = 1 + } + + # Depending on who was the attacker, we need to send a different notification message to the recipient. + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + } + } + } + } + desc = end_war_attacker_victory_attacker_desc + } + desc = end_war_attacker_victory_defender_desc + } + } + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + can_be_picked = { + scope:war ?= { + custom_tooltip = { + text = hostage_exchange_invalid_for_crusade_tt + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + custom_tooltip = { + text = hostage_exchange_invalid_for_cb_tt + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + } + + redirect = { + # secondary recipient is always set, so we need to clear it + # if can_send condition depends on the scope being empty + clear_saved_scope = secondary_recipient + } + + on_accept = { + casus_belli = { + primary_attacker = { + save_scope_as = attacker_winner + } + primary_defender = { + save_scope_as = defender_loser + } + } + + if = { + limit = { + scope:war ?= { + using_cb = fp3_free_house_member_cb + } + } + } + else = { + release_prisoners_of_war_effect = yes + } + + # Hostages + # Save scopes for clarity + if = { + limit = { + scope:war ?= { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + if = { + limit = { + exists = scope:secondary_actor + scope:recipient = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_actor + WARDEN = scope:recipient + HOME_COURT = scope:actor + } + } + if = { + limit = { + exists = scope:secondary_recipient + scope:actor = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_recipient + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + } + } + + #Send notification to vassals + hidden_effect = { + scope:attacker_winner = { + if = { + limit = { + any_vassal = { + this != scope:defender_loser + } + } + every_vassal = { + limit = { this != scope:defender_loser } + send_interface_toast = { + type = msg_liege_war_ended_attacker_win + title = war_event.notification_liege_win.t + left_icon = scope:attacker_winner + right_icon = scope:defender_loser + custom_tooltip = war_event.1901 + } + } + } + } + scope:defender_loser = { + if = { + limit = { + any_vassal = { this != scope:attacker_winner } + } + every_vassal = { + limit = { + this != scope:attacker_winner + } + send_interface_toast = { + type = msg_liege_war_ended_attacker_win + title = war_event.notification_liege_loss.t + left_icon = scope:defender_loser + right_icon = scope:attacker_winner + custom_tooltip = war_event.1902 + } + } + } + } + } + + #Special bookmark event for Aella of Northumbria + bookmark_867_northmen_aellas_capture_war_imprisonment_effect = yes + + end_war = attacker + } + + on_decline = { + } + + ai_potential = { + is_at_war = yes + any_character_war = { + is_war_leader = root + OR = { + attacker_war_score >= 100 + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + root = { + has_perk = peacemaker_perk + } + primary_defender = { + is_ai = yes + } + } + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + has_perk = peacemaker_perk + } + } + } + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_defender = { + is_ai = yes + } + } + #SENT A SCARY SEVERED HEAD AAAAHHH + AND = { + attacker_war_score >= 70 + primary_defender = { + is_ai = yes + save_temporary_scope_as = defender + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + } + primary_defender = { + is_ai = yes + has_variable = conqueror + } + } + } + } + + ai_will_do = { + base = 0 + + modifier = { + scope:war = { + primary_attacker = scope:actor + OR = { + attacker_war_score >= 100 + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + root = { + has_perk = peacemaker_perk + } + primary_defender = { + is_ai = yes + } + } + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + has_perk = peacemaker_perk + } + } + } + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_defender = { + is_ai = yes + } + } + #SENT A SCARY SEVERED HEAD AAAAHHH + AND = { + attacker_war_score >= 70 + primary_defender = { + is_ai = yes + save_temporary_scope_as = defender + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + } + AND = { + NOR = { + using_cb = undirected_great_holy_war + using_cb = mongol_invasion_war + using_cb = mongol_realm_invasion_war + using_cb = mpo_gok_onslaught_cb + } + primary_defender = { + is_ai = yes + has_variable = conqueror + } + } + } + } + add = 100 + } + modifier = { + scope:war = { + primary_defender = scope:actor + attacker_war_score >= 100 + days_since_max_war_score >= 180 + } + add = 100 + } + } + + ai_accept = { + base = -99 + + compare_modifier = { + target = scope:war + value = attacker_war_score + desc = "WARSCORE_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_attacker = { + has_perk = peacemaker_perk + this != scope:recipient + } + } + + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_attacker = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + NOT = { this = scope:recipient } + } + } + + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + save_temporary_scope_as = defender + } + primary_attacker = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + primary_defender = { + is_ai = yes + } + } + add = 30 + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + + # Hostages + modifier = { + exists = scope:secondary_actor + add = war_actor_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_OFFER_VALUE + } + modifier = { + exists = scope:secondary_recipient + add = war_recipient_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_DEMAND_VALUE + } + # The AI cannot accept the outcome, if they will lose all their land and you try to take a hostage from them + modifier = { + scope:war = { + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + NOT = { + scope:recipient = { + any_held_title = { + tier = tier_county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + } + add = -10000 + desc = WAR_OVERVIEW_HOSTAGE_DEMAND_BLOCKED + } + # This is a bit of a hidden modifier, only used to make sure we get the right icon when you force it through at 100 war score, and the opponent has more realm left + modifier = { + scope:war = { + attacker_war_score >= 100 + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + scope:recipient = { + any_held_title = { + tier = tier_county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + add = 1000 + desc = "WARSCORE_MODIFIER" + } + } + + auto_accept = { + trigger_if = { + limit = { + OR = { + scope:war = { + attacker_war_score >= 100 + } + AND = { + scope:recipient = { is_ai = yes } + primary_attacker = scope:recipient + } + scope:war.casus_belli = { # Conquerors know when to fold + primary_attacker = { + is_ai = yes + current_military_strength >= scope:recipient.fifty_percent_more_of_current_military_strength + } + primary_defender = { + is_ai = yes + has_variable = conqueror + this = scope:recipient + } + } + } + } + always = yes + } + trigger_else = { + always = no + } + # The auto accept kind of messes up the hostage interaction a bit, so we block the auto accept if they try to grab a hostage and all the opponent's land at the same time + scope:war = { + trigger_if = { + limit = { + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + NOT = { + scope:recipient = { + any_held_title = { + tier = tier_county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + } + always = no + } + } + } + + is_valid_showing_failures_only = { + scope:war = { + has_valid_casus_belli = yes + trigger_if = { # Cannot exchange hostages with soon to be landless + limit = { + OR = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + } + casus_belli = { + any_target_title = { + count >= 1 + add_to_temporary_list = target_titles + } + } + } + custom_tooltip = { + text = hostage_no_land_after_war_tt + scope:recipient = { + any_held_title = { + title_tier = county + NOT = { + any_this_title_or_de_jure_above = { is_in_list = target_titles } + } + } + } + } + } + } + } +} + +end_war_attacker_white_peace_interaction = { + + special_interaction = end_war_white_peace_interaction + hidden = yes + use_diplomatic_range = no + secondary_scopes_optional = yes + send_name = "WHITE_PEACE_INTERACTION" + + ai_targets = { + ai_recipients = primary_war_enemies + } + + ai_frequency_by_tier = { + barony = 0 + county = 12 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + + # Depending on who was the attacker, we need to send a different notification message to the recipient. + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + } + } + } + } + desc = end_war_attacker_white_peace_attacker_desc + } + desc = end_war_attacker_white_peace_defender_desc + } + } + + redirect = { + # secondary recipient is always set, so we need to clear it + # if can_send condition depends on the scope being empty + clear_saved_scope = secondary_recipient + } + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + can_be_picked = { + scope:war ?= { + custom_tooltip = { + text = hostage_exchange_invalid_for_crusade_tt + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + custom_tooltip = { + text = hostage_exchange_invalid_for_cb_tt + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + } + + on_accept = { + casus_belli = { + primary_attacker = { + save_scope_as = attacker_white_peace + } + primary_defender = { + save_scope_as = defender_white_peace + } + } + + if = { + limit = { + scope:war ?= { + using_cb = fp3_free_house_member_cb + } + } + } + else = { + release_prisoners_of_war_effect = yes + } + + # Hostages + # Save scopes for clarity + if = { + limit = { + scope:war ?= { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + if = { + limit = { + exists = scope:secondary_actor + scope:recipient = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_actor + WARDEN = scope:recipient + HOME_COURT = scope:actor + } + } + if = { + limit = { + exists = scope:secondary_recipient + scope:actor = { is_landed_or_landless_administrative = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_recipient + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + } + } + + #Send notification to vassals + hidden_effect = { + scope:attacker_white_peace = { + if = { + limit = { + any_vassal = { this != scope:defender_white_peace } + } + every_vassal = { + limit = { + this != scope:defender_white_peace + } + send_interface_toast = { + type = msg_liege_war_ended_white_peace + title = WAR_RESULTS_WHITE_PEACE + left_icon = scope:attacker_white_peace + right_icon = scope:defender_white_peace + custom_tooltip = war_event.1903 + } + } + } + } + scope:defender_white_peace = { + if = { + limit = { + any_vassal = { this != scope:attacker_white_peace } + } + every_vassal = { + limit = { + this != scope:attacker_white_peace + } + send_interface_toast = { + type = msg_liege_war_ended_white_peace + title = WAR_RESULTS_WHITE_PEACE + left_icon = scope:defender_white_peace + right_icon = scope:attacker_white_peace + custom_tooltip = war_event.1904 + } + } + } + } + } + + end_war = white_peace + } + + on_decline = { + } + + ai_potential = { + any_character_war = { + count >= 1 + casus_belli = { + OR = { + primary_attacker = root + primary_defender = root + } + } + } + + trigger_if = { + limit = { + exists = scope:war + } + NOR = { # Don't send inane white peace offers to the player + scope:war = { + casus_belli = { + primary_defender = root + primary_attacker = { + is_ai = no + } + } + attacker_war_score >= 10 + } + scope:war = { + casus_belli = { + primary_attacker = root + primary_defender = { + is_ai = no + } + } + defender_war_score >= 70 + } + } + } + } + + ai_will_do = { + base = 0 + + # Attacker concerned about defending in other wars + modifier = { + scope:war.casus_belli = { + primary_attacker = root + } + scope:war = { + war_days >= 365 + attacker_war_score <= 0 + } + any_character_war = { + this != scope:war + casus_belli = { + primary_defender = root + } + } + add = { + value = 10 + if = { + limit = { + scope:war = { + attacker_war_score <= -50 + } + } + add = 40 + } + } + } + + # Attacker Greed + ai_value_modifier = { + ai_greed = { + if = { + limit = { + scope:war.casus_belli = { + primary_attacker = root + } + scope:war = { + war_days >= 365 + attacker_war_score <= 10 + } + ai_greed > -20 + } + value = -0.25 + } + } + ai_vengefulness = { + if = { + limit = { ai_vengefulness > 0 } + value = -1 + } + } + } + + # Defender prefers White Peace to loss + modifier = { + scope:war.casus_belli = { + primary_defender = root + } + scope:war = { + war_days >= 182 + defender_war_score <= 15 + } + add = { + value = 10 + if = { + limit = { + scope:war = { + defender_war_score <= -40 + } + } + add = 50 + } + } + } + + # Defenders want to end wars that's taking too long to win + modifier = { + scope:war.casus_belli = { + primary_defender = root + } + scope:war = { + war_days >= 365 + } + add = { + value = scope:war.war_days + divide = 30 + if = { + limit = { + scope:war = { + defender_war_score > 0 + } + } + subtract = scope:war.defender_war_score + } + if = { # If you're this close, perhaps it's worth waiting a few more months for ticking warscore? + limit = { + scope:war = { + defender_war_score >= 70 + } + } + subtract = scope:war.defender_war_score + } + min = 0 + } + } + + # I'm in debt, how about a white peace? Defender + modifier = { + scope:war = { + war_days >= 182 + } + scope:war.casus_belli = { + primary_defender = root + } + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + + add = { + value = debt_level + multiply = 20 + + if = { + limit = { scope:war = { defender_war_score > 0 }} + subtract = scope:war.defender_war_score + } + if = { # Push through to the end, it's worth it at this point... + limit = { scope:war = { defender_war_score >= 80 }} + subtract = scope:war.defender_war_score + } + min = 0 + } + } + + + # I'm in debt, how about a white peace? Attacker + modifier = { + scope:war = { + war_days >= 182 + } + scope:war.casus_belli = { + primary_attacker = root + } + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + + + add = { + value = debt_level + multiply = 20 + + if = { + limit = { scope:war = { attacker_war_score > 0 }} + subtract = scope:war.attacker_war_score + } + min = 0 + } + } + + # Do not attempt white peace vs. players if you're losing + modifier = { + OR = { + AND = { + scope:war.casus_belli = { + primary_attacker = root + primary_defender = { is_ai = no } + } + scope:war = { + defender_war_score >= 30 + } + } + AND = { + scope:war.casus_belli = { + primary_defender = root + primary_attacker = { is_ai = no } + } + scope:war = { + attacker_war_score >= 30 + } + } + } + factor = 0 + } + # Can end with hostages of equalish value + modifier = { + exists = scope:secondary_recipient + exists = scope:secondary_actor + scope:war = { + war_days >= 365 + NOR = { + defender_war_score >= 30 + attacker_war_score >= 30 + } + } + trigger_if = { + limit = { scope:war.primary_attacker = scope:actor } + interaction_relative_hostage_value > -10 + } + trigger_else = { interaction_relative_hostage_value > -20 } + add = { + value = 0 + if = { + limit = { interaction_relative_hostage_value < 0 } + add = { + value = interaction_relative_hostage_value + multiply = -1 + } + } + else = { add = interaction_relative_hostage_value } + if = { + limit = { scope:actor.ai_boldness < 0 } + add = { + value = scope:actor.ai_boldness + multiply = -0.25 + } + } + if = { + limit = { scope:actor.ai_honor < 0 } + add = { + value = scope:actor.ai_honor + multiply = 0.1 + } + } + else = { + add = { + value = scope:actor.ai_honor + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_rationality < 0 } + add = { + value = scope:actor.ai_rationality + multiply = 0.1 + } + } + else = { + add = { + value = scope:actor.ai_rationality + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_greed > 0 } + add = { + value = scope:actor.ai_greed + multiply = -0.1 + } + } + else = { + add = { + value = scope:actor.ai_greed + multiply = -0.25 + } + } + } + } + # Can end with hostage demand + modifier = { + exists = scope:secondary_recipient + NOT = { exists = scope:secondary_actor } + scope:war = { + war_days >= 365 + NOR = { + defender_war_score >= 30 + attacker_war_score >= 30 + } + } + add = { + value = 0 + add = { + value = interaction_recipient_hostage_value + multiply = 0.1 + } + if = { + limit = { scope:actor.ai_boldness < 0 } + add = { + value = scope:actor.ai_boldness + multiply = -0.25 + } + } + if = { + limit = { scope:actor.ai_honor < 0 } + add = { + value = scope:actor.ai_honor + multiply = -0.25 + } + } + else = { + add = { + value = scope:actor.ai_honor + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_rationality < 0 } + add = { + value = scope:actor.ai_rationality + multiply = 0.25 + } + } + else = { + add = { + value = scope:actor.ai_rationality + multiply = 0.25 + } + } + if = { + limit = { scope:actor.ai_greed > 0 } + add = { + value = scope:actor.ai_greed + multiply = 0.25 + } + } + else = { + add = { + value = scope:actor.ai_greed + multiply = -0.1 + } + } + } + } + + # I don't have time for this, I need to conquer + modifier = { + scope:war.casus_belli = { + primary_defender = { + this = scope:actor + has_variable = conqueror + } + primary_attacker = { is_ai = yes } + } + + add = 100 + } + } + + ai_accept = { + base = -30 + compare_modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + } + } + target = scope:war + value = attacker_war_score + desc = "WARSCORE_MODIFIER" + } + compare_modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + } + } + target = scope:war + value = defender_war_score + desc = "WARSCORE_MODIFIER" + } + + # Length of War + compare_modifier = { + target = scope:war + trigger = { + scope:war = { + war_days >= 365 + } + } + value = { + value = war_days + divide = 91 # 40 in 10 years + } + desc = "WAR_LENGTH" + } + + # I'm in debt, how about a white peace? + modifier = { + scope:war = { + war_days >= 182 + } + scope:war.casus_belli = { + primary_defender = root + } + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + + + add = { + value = debt_level + multiply = 20 + } + desc = COMPLETELY_BANKRUPT + } + + # Attacker concerned about other wars + modifier = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + } + scope:recipient = { + any_character_war = { + this != scope:war + primary_defender = scope:recipient + } + } + add = 10 + + desc = CONCERN_ABOUT_OTHER_WARS + } + + # Vengefulness + ai_value_modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + } + } + ai_vengefulness = { + if = { + limit = { + scope:war.casus_belli = { + primary_defender = scope:recipient + } + } + value = -0.25 + } + } + ai_greed = { + if = { + limit = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + } + } + value = -0.25 + } + } + ai_zeal = { + value = -0.2 + if = { + limit = { + faith = { + faith_hostility_level = { + target = scope:actor.faith + value = 2 + } + } + } + multiply = 2 + } + if = { + limit = { + faith = { + faith_hostility_level = { + target = scope:actor.faith + value = 3 + } + } + } + multiply = 3 + } + if = { + limit = { + OR = { + ai_zeal <= 0 + faith = { + faith_hostility_level = { + target = scope:actor.faith + value <= 0 + } + } + } + } + value = 0 + } + } + } + + # Peacemaker Perk + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_attacker = { has_perk = peacemaker_perk } + } + } + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_defender = { has_perk = peacemaker_perk } + } + } + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_attacker = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_defender = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + primary_defender = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + } + add = 30 + + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_defender = { + is_ai = yes + save_temporary_scope_as = defender + } + primary_attacker = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:defender + } + } + } + } + add = 30 + + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + + # Cultural Traditions + modifier = { + trigger = { + scope:war.casus_belli = { + primary_defender = scope:recipient + primary_attacker = { culture = { has_cultural_parameter = facilitate_white_peace } } + } + } + add = 10 + + desc = "TRADITION_BONUS_WHITE_PEACE" + } + modifier = { + trigger = { + scope:war.casus_belli = { + primary_attacker = scope:recipient + primary_defender = { culture = { has_cultural_parameter = facilitate_white_peace } } + } + } + add = 10 + + desc = "TRADITION_BONUS_WHITE_PEACE" + } + + # Struggles + modifier = { + trigger = { + scope:actor = { + OR = { + any_character_struggle = { + involvement = involved + is_struggle_parameter_active_secondary_character_involvement_either_trigger = { + PARAMETER = white_peace_acceptance_between_involved_or_interloper_with_region_easier + CHAR = scope:recipient + } + } + any_character_struggle = { + involvement = interloper + is_struggle_parameter_active_secondary_character_involvement_either_trigger = { + PARAMETER = white_peace_acceptance_between_involved_or_interloper_with_region_easier + CHAR = scope:recipient + } + } + } + } + } + add = 10 + + desc = "STRUGGLE_INVOLVED_OR_INTERLOPER_PHASE_BONUS" + } + + # GoK war + modifier = { + desc = WAR_OVERVIEW_WHITE_PEACE_GOK + add = -70 + scope:war = { + using_cb = mpo_gok_onslaught_cb + primary_defender = scope:actor + } + } + # GoK war but have counties occupied + modifier = { + desc = WAR_OVERVIEW_WHITE_PEACE_GOK_OCCUPATION + add = { + value = 0 + scope:war.primary_defender = { + every_sub_realm_county = { + limit = { + county_controller = scope:war.primary_attacker + } + add = 2 + } + } + max = 200 + } + scope:war = { + using_cb = mpo_gok_onslaught_cb + attacker_war_score <= 25 + primary_defender = { + any_sub_realm_county = { + county_controller = scope:war.primary_attacker + } + } + primary_defender = scope:actor + } + } + + # Hostages + modifier = { + exists = scope:secondary_actor + add = { + value = war_actor_hostage_value + multiply = 0.5 + } + desc = WAR_OVERVIEW_WHITE_PEACE_HOSTAGE_OFFER_VALUE + } + modifier = { + exists = scope:secondary_recipient + add = { + value = war_recipient_hostage_value + multiply = 0.5 + } + desc = WAR_OVERVIEW_WHITE_PEACE_HOSTAGE_DEMAND_VALUE + } + } + + is_valid_showing_failures_only = { + exists = scope:war + scope:war = { + has_valid_casus_belli = yes + } + is_white_peace_possible = yes + } +} + +end_war_attacker_defeat_interaction = { + special_interaction = end_war_attacker_defeat_interaction + hidden = yes + use_diplomatic_range = no + secondary_scopes_optional = yes + + ai_targets = { + ai_recipients = primary_war_enemies + } + + ai_frequency_by_tier = { + barony = 0 + county = 1 + duchy = 1 + kingdom = 1 + empire = 1 + hegemony = 1 + } + + # Depending on who was the attacker, we need to send a different notification message to the recipient. + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:recipient = { + any_character_war = { + casus_belli = { + primary_attacker = scope:actor + } + } + } + } + desc = end_war_attacker_defeat_attacker_desc + } + desc = end_war_attacker_defeat_defender_desc + } + } + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + can_be_picked = { + scope:war ?= { + custom_tooltip = { + text = hostage_exchange_invalid_for_crusade_tt + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + } + custom_tooltip = { + text = hostage_exchange_invalid_for_cb_tt + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + } + + redirect = { + # secondary recipient is always set, so we need to clear it + # if can_send condition depends on the scope being empty + clear_saved_scope = secondary_recipient + } + + on_accept = { + casus_belli = { + primary_attacker = { + save_scope_as = attacker_loser + } + primary_defender = { + save_scope_as = defender_winner + set_signature_weapon_effect = yes + } + } + + if = { + limit = { + scope:war ?= { + using_cb = fp3_free_house_member_cb + } + } + } + else = { + release_prisoners_of_war_effect = yes + } + + # Hostages + # Save scopes for clarity + if = { + limit = { + scope:war ?= { + NOR = { + using_cb = undirected_great_holy_war + using_cb = directed_great_holy_war + } + bp2_hostage_exchange_invalid_cb_trigger = no + } + } + if = { + limit = { + exists = scope:secondary_actor + scope:recipient = { is_landed = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_actor + WARDEN = scope:recipient + HOME_COURT = scope:actor + } + } + if = { + limit = { + exists = scope:secondary_recipient + scope:actor = { is_landed = yes } + } + hostage_depart_effect = { + HOSTAGE = scope:secondary_recipient + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + } + } + + #Send notification to vassals + hidden_effect = { + scope:attacker_loser = { + if = { + limit = { + any_vassal = { + this != scope:defender_winner + } + } + every_vassal = { + limit = { + this != scope:defender_winner + } + send_interface_toast = { + type = msg_liege_war_ended_defender_win + title = war_event.notification_liege_loss.t + left_icon = scope:attacker_loser + right_icon = scope:defender_winner + custom_tooltip = war_event.1905 + } + } + } + } + scope:defender_winner = { + if = { + limit = { + any_vassal = { this != scope:attacker_loser } + } + every_vassal = { + limit = { + this != scope:attacker_loser + } + send_interface_toast = { + type = msg_liege_war_ended_defender_win + title = war_event.notification_liege_win.t + left_icon = scope:defender_winner + right_icon = scope:attacker_loser + custom_tooltip = war_event.1906 + } + } + } + } + } + + end_war = defender + } + + on_decline = { + + } + + ai_potential = { + is_at_war = yes + any_character_war = { + is_war_leader = root + OR = { + defender_war_score >= 100 + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + } + } + root = { + has_perk = peacemaker_perk + } + primary_defender = { + is_ai = yes + } + } + AND = { + OR = { + attacker_war_score >= 90 + AND = { + attacker_war_score >= 80 + root = { + has_perk = peacemaker_perk + } + } + } + root = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_defender = { + is_ai = yes + } + } + AND = { + defender_war_score >= 70 + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + } + } + } + + ai_will_do = { + base = 0 + + modifier = { + scope:war = { + primary_defender = scope:actor + OR = { + defender_war_score >= 100 + AND = { + defender_war_score >= 90 + scope:actor = { + OR = { + has_perk = peacemaker_perk + culture = { + has_cultural_parameter = can_end_defensive_wars_earlier + } + } + } + primary_attacker = { + is_ai = yes + } + } + AND = { + defender_war_score >= 90 + scope:actor = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + } + primary_attacker = { + is_ai = yes + } + } + AND = { + defender_war_score >= 70 + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + root = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + } + } + add = 100 + } + modifier = { + scope:war = { + primary_attacker = scope:actor + defender_war_score >= 100 + days_since_max_war_score >= 180 + } + add = 100 + } + } + + ai_accept = { + base = -99 + + compare_modifier = { + target = scope:war + value = defender_war_score + desc = "WARSCORE_MODIFIER" + } + modifier = { + add = 1000 + scope:war.casus_belli = { + primary_defender = scope:recipient + } + desc = "WOULD_WIN_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + has_perk = peacemaker_perk + this != scope:recipient + } + } + + add = peacemaker_value + + desc = "PEACEMAKER_PERK_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + dynasty ?= { has_dynasty_perk = mpo_nomad_legacy_3 } + NOT = { this = scope:recipient } + } + } + + add = 10 + + desc = "NOMAD_LEGACY_PERK_MODIFIER" + } + + modifier = { + scope:war.casus_belli = { + primary_attacker = { + is_ai = yes + save_temporary_scope_as = attacker + } + primary_defender = { + has_variable = peace_acceptance_head_scare + var:peace_acceptance_head_scare = { + this = scope:attacker + } + } + } + add = 30 + desc = "COWED_BY_SEVERED_HEAD_MODIFIER" + } + modifier = { + scope:war.casus_belli = { + primary_defender = { + culture = { + has_cultural_parameter = can_end_defensive_wars_earlier + } + this != scope:recipient + } + } + + add = 10 + + desc = "TRADITION_BONUS_DEFENSIVE_WARS" + } + # Hostages + modifier = { + exists = scope:secondary_actor + add = war_actor_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_OFFER_VALUE + } + modifier = { + exists = scope:secondary_recipient + add = war_recipient_hostage_value + desc = WAR_OVERVIEW_HOSTAGE_DEMAND_VALUE + } + } + + auto_accept = { + OR = { + scope:war = { + defender_war_score >= 100 + } + AND = { + scope:recipient = { is_ai = yes } + primary_defender = scope:recipient + } + } + } + + is_valid_showing_failures_only = { + scope:war = { + has_valid_casus_belli = yes + } + } +} + +view_war_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + + special_interaction = offer_peace_interaction + interface = offer_peace + use_diplomatic_range = no + ignores_pending_interaction_block = yes + + is_shown = { + scope:actor = { + is_at_war_with = scope:recipient + NOT = { + any_character_war = { + is_war_leader = scope:actor + is_participant = scope:recipient + } + } + } + } + auto_accept = yes +} + +offer_peace_interaction = { + category = interaction_category_diplomacy + common_interaction = yes + icon = war_won_icon + + special_interaction = offer_peace_interaction + interface = offer_peace + use_diplomatic_range = no + + is_shown = { + scope:actor = { + is_at_war_with = scope:recipient + any_character_war = { + is_war_leader = scope:actor + is_participant = scope:recipient + } + } + } + auto_accept = yes +} diff --git a/common/character_interactions/03_fp2_interactions.txt b/common/character_interactions/03_fp2_interactions.txt index 625f5d38..e3fe3533 100644 --- a/common/character_interactions/03_fp2_interactions.txt +++ b/common/character_interactions/03_fp2_interactions.txt @@ -3189,7 +3189,7 @@ contract_assistance_interaction = { is_shown = { # Actor is Involved in Struggle scope:actor = { - NOT = { government_has_flag = government_is_herder } + NOT = { government_has_flag = government_is_true_herder } OR = { any_character_struggle = { involvement = involved diff --git a/common/character_interactions/05_bp2_interactions.txt b/common/character_interactions/05_bp2_interactions.txt new file mode 100644 index 00000000..2cc2af32 --- /dev/null +++ b/common/character_interactions/05_bp2_interactions.txt @@ -0,0 +1,4988 @@ +#Interactions relating to hostages + +### Offer hostage - unilateral +# actor = offerer +# recipient = receiver +# secondary_actor = hostage +offer_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + interface_priority = 11 + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + desc = offer_hostage_interaction_desc + + prompt = OFFER_HOSTAGE_SELECT_HOSTAGE_TO_TRANSFER + + notification_text = OFFER_HOSTAGE_PROPOSAL + + cooldown_against_recipient = { years = 3 } + + is_shown = { + scope:recipient != scope:actor + # Cannot exchange hostages with a herder + # Only significant rulers use hostages + scope:recipient.highest_held_title_tier > tier_barony + # Laamps can't do anything with hostages but return/recall them. + scope:recipient = { + NOR = { + government_has_flag = government_is_landless_adventurer + government_has_flag = government_is_true_herder + } + } + #Inside a merit realm vassals won't offer hostages except to your top liege. + trigger_if = { + limit = { + scope:actor.top_liege = { government_has_flag = government_has_merit } + scope:actor.top_liege != scope:actor + scope:recipient != scope:actor.top_liege + } + NAND = { + scope:actor = { government_has_flag = government_has_merit } + scope:recipient = { government_has_flag = government_has_merit } + } + } + } + + is_valid_showing_failures_only = { + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Allies don't need hostages + scope:recipient = { is_allied_to = scope:actor } + # Only family oriented governments use hostages + scope:actor = { + government_has_flag = government_is_theocracy + } + scope:recipient = { + government_has_flag = government_is_theocracy + } + # 1 hostage per home court + custom_tooltip = { + text = "already_has_your_hostage_tt" + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + custom_description = { + text = hostage_already_travelling_tt + subject = scope:actor + object = scope:recipient + scope:actor = { + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:recipient + } + } + } + } + scope:actor = { + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + } + scope:recipient = { + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + scope:actor = { is_ai = yes } + exists = scope:secondary_actor + } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_offer_hostage } + } + } + # Tooltip for players in case of no valid hostages to offer + trigger_else = { + scope:actor = { + custom_description = { + text = "basic_valid_hostage_to_offer" + object = scope:recipient + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + } + } + # Hostages still valid + trigger_if = { + limit = { + exists = scope:secondary_actor + exists = scope:actor + } + scope:secondary_actor = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + } + + can_be_picked = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + # Under offer + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { exists = var:hostage_travelling_to_warden } + } + } + + can_send = { + scope:actor = { # AI only offer to more powerful neighbors + trigger_if = { + limit = { is_ai = yes } + bp2_valid_to_offer_hostage_ai_trigger = yes + # AI should not offer close family of players without their consent + NOR = { + scope:secondary_actor = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_actor + is_grandparent_of = scope:secondary_actor + } + this != scope:actor + } + } + # A hostage died on their watch + var:hostage_died ?= scope:recipient + } + } + } + scope:recipient = { + trigger_if = { + limit = { is_ai = no } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_offer_hostage } + } + } + } + # Adult hostages must be loyal enough to go along with it + scope:secondary_actor = { + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:actor + value >= -25 + } + } + NOT = { has_trait = disloyal } + } + has_trait = loyal + } + } + # Under offer + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + } + } + + cost = {} + + on_send = { + scope:secondary_actor = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + if = { + limit = { + scope:recipient = { is_ai = no } + } + hidden_effect = { + scope:secondary_actor = { + add_character_flag = { + flag = ai_should_not_offer_hostage + years = 3 + } + } + } + } + } + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = hostage_sender } + scope:secondary_actor = { save_scope_as = hostage } + scope:recipient = { save_scope_as = hostage_taker } + custom_description_no_bullet = { text = hostage_pacts_on_arrival_tt } + custom_description_no_bullet = { text = hostage_execution_warning_tt } + custom_description_no_bullet = { text = hostage_attack_warning_tt } + hostage_depart_effect = { + HOSTAGE = scope:hostage + WARDEN = scope:hostage_taker + HOME_COURT = scope:hostage_sender + } + scope:actor = { trigger_event = char_interaction.0330 } + # If we're of the same clan this interaction affects unity + if = { + limit = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor.house = scope:recipient.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_hostage.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0300 + } + scope:secondary_actor = { remove_character_flag = under_offer_as_hostage_flag } + } + + auto_accept = { + trigger_if = { + limit = { + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + trigger_else = { always = no } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { target = scope:actor } + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + # AI + ai_accept = { + base = 0 # Try to make it 0 for most interactions + + ######### PERSONALITY + + bp2_hostage_offer_personality_modifier = yes + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + ######### DREAD + + bp2_hostage_dread_modifier = yes + + ######### HOSTAGE IMPORTANCE + + # Hostages + modifier = { + exists = scope:secondary_actor + add = interaction_actor_hostage_value + desc = HOSTAGE_VALUE_ACTOR_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Already have a truce + scope:recipient ?= { has_truce = scope:actor } + desc = HOSTAGE_RECIPIENT_EXISTING_TRUCE_REASON + add = -20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = 15 + } + modifier = { # Already have their hostage + scope:actor = { + any_warden_hostage = { home_court ?= scope:recipient } + } + desc = HOSTAGE_ALREADY_DEMANDED_REASON + add = 50 + } + modifier = { + add = -50 + scope:actor = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # Conqueror + scope:recipient ?= { + has_variable = conqueror + } + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + add = -1000 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + max = 10 + } + + ai_targets = { + ai_recipients = liege + } + + ai_frequency_by_tier = { + barony = 0 + county = 120 + duchy = 120 + kingdom = 360 + empire = 0 + hegemony = 0 + } + + is_available = { + trigger_if = { + limit = { + is_ai = yes + } + NOT = { has_variable = conqueror } + } + NOT = { + government_has_flag = government_is_landless_adventurer + } + } + + ai_will_do = { + base = 0 + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:actor + opinion_target = scope:secondary_actor + multiplier = -0.1 + desc = AI_OPINION_REASON + } + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:recipient = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Not neighboring + NOR = { + scope:recipient = { + character_is_land_realm_neighbor = scope:actor + top_liege = scope:actor.top_liege + } + } + add = -50 + } + modifier = { + scope:recipient = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + } +} + +### Demand hostage - unilateral +# actor = receiver +# recipient = offerer +# secondary_recipient = hostage +demand_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + interface_priority = 13 + + desc = demand_hostage_interaction_desc + + prompt = DEMAND_HOSTAGE_SELECT_HOSTAGE_TO_OFFER + + notification_text = DEMAND_HOSTAGE_PROPOSAL + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + cooldown_against_recipient = { years = 3 } + + is_shown = { + # Cannot exchange hostages with self + scope:recipient != scope:actor + # Cannot exchange hostages with a herder + NOT = { scope:recipient = { government_has_flag = government_is_true_herder } } + # Only significant rulers use hostages + scope:actor.highest_held_title_tier > tier_barony + OR = { + scope:recipient.highest_held_title_tier > tier_barony + scope:recipient.liege ?= { + highest_held_title_tier > tier_barony + any_close_family_member = { + this = scope:recipient + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient.liege } + } + } + } + # Laamps can't do anything with hostages but return/recall them. + NOR = { + scope:actor = { government_has_flag = government_is_landless_adventurer } + scope:recipient = { government_has_flag = government_is_landless_adventurer } + } + #Inside a merit realm vassals won't demand hostages. + trigger_if = { + limit = { + scope:actor.top_liege = { government_has_flag = government_has_merit } + scope:actor.top_liege != scope:actor + } + NAND = { + scope:actor = { government_has_flag = government_has_merit } + scope:recipient = { government_has_flag = government_has_merit } + } + NOT = { scope:recipient = scope:actor.top_liege } + } + } + + redirect = { + if = { + limit = { + scope:recipient ?= { + is_playable_character = no + is_landless_ruler = no + } + } + scope:recipient ?= { save_scope_as = secondary_recipient } + scope:secondary_recipient.liege ?= { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + # Must be approachable + scope:recipient = { + NOT = { has_strong_hook = scope:actor } + } + scope:actor = { + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + } + scope:recipient = { + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + } + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Allies don't need hostages + scope:recipient = { is_allied_to = scope:actor } + # Only family oriented governments use hostages + scope:actor = { + government_has_flag = government_is_theocracy + } + scope:recipient = { + government_has_flag = government_is_theocracy + } + # 1 hostage per court + custom_tooltip = { + text = "already_have_their_hostage_tt" + scope:actor = { + any_warden_hostage = { home_court ?= scope:recipient } + } + } + custom_description = { + text = "hostage_already_travelling_tt" + subject = scope:actor + object = scope:recipient + scope:actor = { + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:recipient + } + } + } + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + scope:recipient = { is_ai = yes } + exists = scope:secondary_recipient + } + NOT = { + scope:secondary_recipient = { has_character_flag = ai_should_not_demand_hostage } + } + } + # Tooltip for players in case of no valid hostages to demand + # Make sure this exactly matches "can_be_picked" section below + trigger_else = { + scope:recipient = { + custom_description = { + text = "basic_valid_hostage_to_demand" + subject = scope:actor + object = scope:recipient + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + } + } + # Hostages still valid + trigger_if = { + limit = { + exists = scope:secondary_recipient + exists = scope:recipient + } + scope:secondary_recipient = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + trigger_if = { # AI only demand from less powerful neighbors + limit = { is_ai = yes } + bp2_valid_to_demand_hostage_ai_trigger = yes + NOR = { + scope:secondary_recipient ?= { has_character_flag = ai_should_not_demand_hostage } + # AI should not demand close family of players without their consent + scope:secondary_recipient = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_recipient + is_grandparent_of = scope:secondary_recipient + } + this != scope:recipient + } + } + # A hostage died on their watch + var:hostage_died ?= scope:recipient + } + } + } + # Adult hostages must be loyal enough to go along with it + scope:secondary_recipient = { + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:recipient + value >= -25 + } + NOT = { has_trait = disloyal } + } + } + has_trait = loyal + } + } + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + } + } + + can_be_picked = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { exists = var:hostage_travelling_to_warden } + } + } + + cost = {} + + on_send = { + scope:secondary_recipient = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + if = { + limit = { + scope:recipient = { is_ai = no } + } + scope:secondary_recipient = { + add_character_flag = { + flag = ai_should_not_demand_hostage + years = 3 + } + } + } + } + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = hostage_taker } + scope:recipient = { save_scope_as = hostage_sender } + scope:secondary_recipient = { save_scope_as = hostage } + custom_description_no_bullet = { text = hostage_pacts_on_arrival_tt } + custom_description_no_bullet = { text = hostage_execution_warning_tt } + custom_description_no_bullet = { text = hostage_attack_warning_tt } + hostage_depart_effect = { + HOSTAGE = scope:hostage + WARDEN = scope:hostage_taker + HOME_COURT = scope:hostage_sender + } + show_as_tooltip = { + if = { + limit = { + scope:recipient = { is_vassal_of = scope:actor } + } + scope:recipient = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = liege_demanded_hostage_opinion + target = scope:actor + } + } + } + scope:actor = { + # Tyranny for demanding from vassals + add_tyranny = minor_tyranny_gain + } + } + } + scope:actor = { trigger_event = char_interaction.0331 } + # If we're of the same clan this interaction affects unity + if = { + limit = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor.house = scope:recipient.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_loss + DESC = clan_unity_hostage.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + } + + on_decline = { + show_as_tooltip = { + if = { # Effects for refusing demand from liege + limit = { + scope:recipient = { is_vassal_of = scope:actor } + } + scope:recipient = { + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = liege_demanded_hostage_opinion + target = scope:actor + } + } + } + scope:actor = { + # Tyranny for demanding from vassals + add_tyranny = minor_tyranny_gain + if = { + limit = { is_ai = yes } + add_opinion = { + modifier = vassal_refused_hostage_demand_opinion + target = scope:recipient + } + } + } + } + } + scope:actor = { + trigger_event = char_interaction.0301 + } + scope:secondary_recipient = { remove_character_flag = under_offer_as_hostage_flag } + } + + auto_accept = { + trigger_if = { + limit = { + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + trigger_else = { always = no } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { target = scope:actor } + } + } + + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + # AI + ai_accept = { + base = 0 + + ######### PERSONALITY + + bp2_hostage_demand_personality_modifier = yes + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = -0.1 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + ######### DREAD + + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + ######### HOSTAGE IMPORTANCE + + modifier = { + exists = scope:secondary_recipient + add = interaction_recipient_hostage_value + desc = HOSTAGE_VALUE_RECIPIENT_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_tier_neighbor_modifier = { # Realm relative position + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { # Desire for land/war + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { + desc = HOSTAGE_IMMINENT_THREAT_REASON + scope:actor = { has_any_cb_on = scope:recipient } + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + add = 25 + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Already have a truce + scope:actor ?= { has_truce = scope:recipient } + desc = HOSTAGE_ACTOR_EXISTING_TRUCE_REASON + add = -20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = 15 + } + modifier = { # Already have your hostage + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + desc = HOSTAGE_ALREADY_OFFERED_REASON + add = 50 + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:actor = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { + scope:secondary_recipient ?= { is_adult = no } + scope:actor = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + modifier = { # Conqueror + scope:recipient ?= { + has_variable = conqueror + } + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + add = -1000 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + max = 10 + } + + ai_targets = { + ai_recipients = liege + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 0 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_potential = { + highest_held_title_tier >= tier_county + NOT = { has_variable = conqueror } + } + + ai_will_do = { + base = 0 + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { + add = -50 + scope:recipient = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + modifier = { # Not neighboring + NOR = { + scope:recipient = { + character_is_land_realm_neighbor = scope:actor + top_liege = scope:actor.top_liege + } + } + add = -50 + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + } +} + +### Exchange hostages - bilateral +# actor = receiver +# recipient = offerer +# secondary_actor = hostage +# secondary_recipient = hostage +exchange_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + ai_min_reply_days = 4 + ai_max_reply_days = 9 + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + interface_priority = 12 + + desc = exchange_hostage_interaction_desc + + prompt = EXCHANGE_HOSTAGE_SELECT_HOSTAGE_TO_OFFER + + notification_text = EXCHANGE_HOSTAGE_PROPOSAL + + populate_actor_list = { + scope:actor = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + every_close_family_member = { + limit = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + add_to_list = characters + } + } + } + + cost = {} + + cooldown_against_recipient = { years = 3 } + + is_shown = { + # Cannot exchange hostages with self + scope:recipient != scope:actor + # Cannot exchange hostages with a herder + NOT = { scope:recipient = { government_has_flag = government_is_true_herder } } + # Only significant rulers use hostages + scope:actor.highest_held_title_tier > tier_barony + OR = { + scope:recipient.highest_held_title_tier > tier_barony + scope:recipient.liege ?= { + highest_held_title_tier > tier_barony + any_close_family_member = { + this = scope:recipient + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient.liege } + } + } + } + # Laamps can't do anything with hostages but return/recall them. + NOR = { + scope:actor = { government_has_flag = government_is_landless_adventurer } + scope:recipient = { government_has_flag = government_is_landless_adventurer } + } + #Inside a merit realm vassals won't exchange hostages. + trigger_if = { + limit = { + scope:actor.top_liege = { government_has_flag = government_has_merit } + scope:actor.top_liege != scope:actor + } + NAND = { + scope:actor = { government_has_flag = government_has_merit } + scope:recipient = { government_has_flag = government_has_merit } + } + NOT = { scope:recipient = scope:actor.top_liege } + } + } + + redirect = { + if = { + limit = { + scope:recipient ?= { + is_playable_character = no + is_landless_ruler = no + } + } + scope:recipient ?= { save_scope_as = secondary_recipient } + scope:secondary_recipient.liege ?= { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + scope:actor = { + NOR = { + # Must be at peace + is_at_war_with = scope:recipient + # Allies don't need hostages + is_allied_to = scope:recipient + # Only family oriented governments use hostages + government_has_flag = government_is_theocracy + scope:recipient = { + government_has_flag = government_is_theocracy + } + # 1 hostage per court + custom_tooltip = { + text = "already_has_your_hostage_tt" + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + } + custom_tooltip = { + text = "already_have_their_hostage_tt" + any_warden_hostage = { home_court ?= scope:recipient } + } + custom_description = { + text = "hostage_already_travelling_tt" + subject = scope:recipient + object = scope:actor + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:recipient + } + } + custom_description = { + text = "hostage_already_travelling_tt" + subject = scope:actor + object = scope:recipient + scope:recipient = { + any_close_family_member = { + exists = var:hostage_travelling_to_warden + var:hostage_travelling_to_warden = scope:actor + } + } + } + } + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + is_ai = yes + exists = scope:secondary_actor + } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_demand_hostage } + } + } + # Tooltip for players in case of no valid hostages to demand + # Make sure this exactly matches "can_be_picked" section below + trigger_else = { + scope:recipient = { + custom_description = { + text = "basic_valid_hostage_to_demand" + subject = scope:actor + object = scope:recipient + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + } + } + # Stop AI spamming hostage offers + trigger_if = { + limit = { + is_ai = yes + exists = scope:secondary_actor + } + NOT = { + scope:secondary_actor = { has_character_flag = ai_should_not_offer_hostage } + } + } + # Tooltip for players in case of no valid hostages to offer + trigger_else = { + custom_description = { + text = "basic_valid_hostage_to_offer" + object = scope:recipient + subject = scope:actor + any_close_family_member = { + # Unlanded, at sender's court, child/sibling/nibling/grandchild + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + } + } + scope:recipient = { + OR = { + is_landless_ruler = no + is_landless_administrative = yes + } + } + # Hostages still valid + trigger_if = { + limit = { + exists = scope:secondary_recipient + exists = scope:recipient + } + scope:secondary_recipient = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:recipient } + } + } + trigger_if = { + limit = { + exists = scope:secondary_actor + exists = scope:actor + } + scope:secondary_actor = { + bp2_valid_to_offer_as_hostage_trigger = { SENDER = scope:actor } + } + } + tgp_blocked_action_against_tenno_trigger = { + ACTOR = scope:actor + TARGET = scope:recipient + } + } + + on_send = { + scope:secondary_actor = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + scope:secondary_recipient = { + add_character_flag = { + flag = under_offer_as_hostage_flag + months = 1 + } + } + } + + can_send = { + scope:actor = { + trigger_if = { + limit = { is_ai = yes } + bp2_valid_to_exchange_hostage_ai_trigger = yes + # AI should not demand close family of players without their consent + NOR = { + scope:secondary_actor = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_actor + is_grandparent_of = scope:secondary_actor + } + this != scope:actor + } + } + scope:secondary_recipient = { + any_close_family_member = { + is_ai = no + OR = { + is_parent_of = scope:secondary_recipient + is_grandparent_of = scope:secondary_recipient + } + this != scope:recipient + } + } + # A hostage died on their watch + var:hostage_died ?= scope:recipient + } + } + } + scope:secondary_actor = { + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Adult hostages must be loyal enough to go along with it + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:actor + value >= -25 + } + NOT = { has_trait = disloyal } + } + } + has_trait = loyal + } + } + } + scope:secondary_recipient = { + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Adult hostages must be loyal enough to go along with it + trigger_if = { + limit = { is_adult = yes } + OR = { + AND = { + custom_tooltip = { + text = hostage_opinion_too_low_tt + opinion = { + target = scope:recipient + value >= -25 + } + NOT = { has_trait = disloyal } + } + } + has_trait = loyal + } + } + } + } + + # whether a character can be picked for the interaction, interface only (e.g. picking the first character in the marriage interaction) + # in character scope, actor and recipient event targets can be used, but not the secondary characters (because none exist yet) + can_be_picked = { + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { has_character_flag = under_offer_as_hostage_flag } + } + # Already offered + custom_tooltip = { + text = hostage_already_offered_awaiting_response_tt + NOT = { exists = var:hostage_travelling_to_warden } + } + } + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = hostage_sender_1 } + scope:secondary_actor = { save_scope_as = hostage_1 } + scope:recipient = { save_scope_as = hostage_sender_2 } + scope:secondary_recipient = { save_scope_as = hostage_2 } + custom_description_no_bullet = { text = hostage_pacts_on_arrival_tt } + custom_description_no_bullet = { text = hostage_execution_warning_tt } + custom_description_no_bullet = { text = hostage_attack_warning_tt } + hostage_depart_effect = { + HOSTAGE = scope:hostage_1 + WARDEN = scope:hostage_sender_2 + HOME_COURT = scope:hostage_sender_1 + } + hostage_depart_effect = { + HOSTAGE = scope:hostage_2 + WARDEN = scope:hostage_sender_1 + HOME_COURT = scope:hostage_sender_2 + } + scope:actor = { trigger_event = char_interaction.0332 } + # If we're of the same clan this interaction affects unity + if = { + limit = { + scope:actor = { government_has_flag = government_is_clan } + scope:actor.house = scope:recipient.house + } + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = medium_unity_loss + DESC = clan_unity_hostage.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + scope:actor.house = { + change_house_relation_effect = { + HOUSE = scope:recipient.house + VALUE = house_relation_improve_medium_value + REASON = hostage_exchange + CHAR = scope:actor + TARGET_CHAR = scope:recipient + TITLE = scope:dummy_gender + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0311 + } + scope:secondary_actor = { remove_character_flag = under_offer_as_hostage_flag } + scope:secondary_recipient = { remove_character_flag = under_offer_as_hostage_flag } + } + + # AI + ai_accept = { + base = -25 + + ######## PERSONALITY + + bp2_hostage_exchange_personality_modifier = yes + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = -0.1 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + + ######### DREAD + + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + ######### HOSTAGE IMPORTANCE + + + modifier = { + exists = scope:secondary_actor + NOT = { exists = scope:secondary_recipient } + add = interaction_actor_hostage_value + desc = HOSTAGE_VALUE_ACTOR_REASON + } + modifier = { + NOT = { exists = scope:secondary_actor } + exists = scope:secondary_recipient + add = interaction_recipient_hostage_value # already negative + desc = HOSTAGE_VALUE_RECIPIENT_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_tier_neighbor_modifier = { # Realm relative position + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { # Desire for land/war + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { + desc = HOSTAGE_IMMINENT_THREAT_REASON + scope:actor = { has_any_cb_on = scope:recipient } + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + add = 25 + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Already have a truce + scope:actor ?= { has_truce = scope:recipient } + desc = HOSTAGE_ACTOR_EXISTING_TRUCE_REASON + add = -20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = 15 + } + modifier = { # Already have your hostage + scope:recipient = { + any_warden_hostage = { home_court ?= scope:actor } + } + desc = HOSTAGE_ALREADY_OFFERED_REASON + add = 50 + } + modifier = { + add = -50 + scope:actor = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:actor = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { + scope:secondary_recipient ?= { is_adult = no } + scope:actor = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + modifier = { # Conqueror + scope:recipient ?= { + has_variable = conqueror + } + desc = NO_FRIVOLOUS_ACTIVITIES_REASON + add = -1000 + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + max = 10 + } + + ai_targets = { + ai_recipients = liege + } + + ai_target_quick_trigger = { + adult = yes + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 360 + kingdom = 120 + empire = 36 + hegemony = 36 + } + + ai_potential = { + is_adult = yes + highest_held_title_tier >= tier_county + NOT = { has_variable = conqueror } + } + + ai_will_do = { + base = 0 + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:actor + opinion_target = scope:secondary_actor + multiplier = -0.1 + desc = AI_OPINION_REASON + } + bp2_hostage_tier_neighbor_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_vassals_lieges_modifier = { # Political situation + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + modifier = { # The AI will only use a Hook if they couldn't otherwise do this + scope:hook = yes + add = -1 + } + modifier = { # Attacked a hostage's warden + add = -50 + scope:recipient = { has_character_modifier = attacked_warden } + desc = attacked_warden + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:recipient = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Not neighboring + NOR = { + scope:recipient = { + character_is_land_realm_neighbor = scope:actor + top_liege = scope:actor.top_liege + } + } + add = -50 + } + modifier = { + scope:recipient = { has_character_flag = halved_hostage_prestige_income } + desc = HOSTAGE_RETAINED_ADULTHOOD_REASON + add = -25 + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + } + + #Use hook + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + send_options_exclusive = no + greeting = positive +} + +### Return hostage - unilateral +# actor = warden +# recipient = home_court +# secondary_actor = hostage +return_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + + desc = return_hostage_interaction_desc + + populate_recipient_list = { + scope:actor = { + every_warden_hostage = { + limit = { home_court ?= scope:recipient } + add_to_list = characters + } + } + } + + cost = {} + + is_shown = { + # Cannot return hostages to self + scope:recipient != scope:actor + # Must have a hostage + OR = { + scope:actor = { + any_warden_hostage = { home_court ?= scope:recipient } + } + scope:recipient.warden ?= scope:actor + } + } + + redirect = { + if = { + limit = { + scope:recipient.warden ?= scope:actor + } + scope:recipient = { save_scope_as = secondary_recipient } + scope:recipient.home_court = { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Only family oriented governments use hostages + scope:actor = { + OR = { + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } + } + scope:recipient = { + OR = { + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } + } + } + } + + # whether a character can be picked for the interaction, interface only (e.g. picking the first character in the marriage interaction) + # in character scope, actor and recipient event targets can be used, but not the secondary characters (because none exist yet) + can_be_picked = {} + + can_send = { + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + on_send = {} + + auto_accept = yes + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = warden } + scope:recipient = { save_scope_as = home_court } + scope:secondary_recipient = { save_scope_as = hostage } + # Send toast informing sender of acceptance + scope:home_court = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_good + title = return_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:warden + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + } + } + scope:warden = { + send_interface_toast = { + type = event_toast_effect_neutral + title = return_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:home_court + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + if = { + limit = { has_character_flag = flag_hostile_actions_disabled_delay } + remove_character_flag = flag_hostile_actions_disabled_delay + } + } + # Notify home court with letter event + scope:home_court = { + trigger_event = { id = char_interaction.0320 } + } + } + + ai_targets = { + ai_recipients = neighboring_rulers + ai_recipients = peer_vassals + ai_recipients = vassals + ai_recipients = liege + ai_recipients = family # Redirects + } + + ai_frequency_by_tier = { + barony = 0 + county = 60 + duchy = 36 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_will_do = { + base = 0 + modifier = { + NOR = { + # Alliances + is_allied_to = scope:recipient + is_spouse_of = scope:recipient + # Protected by liege + AND = { + OR = { + top_liege != this + scope:recipient = { top_liege != this } + } + top_liege != scope:recipient.top_liege + } + # Adult hostage been here awhile and we are not in immiment danger + AND = { + any_warden_hostage = { + age >= 20 + hostage_duration = { years >= 5 } + } + NOT = { + scope:recipient = { + has_any_cb_on = scope:actor + scope:recipient.current_strength_with_allies_fifty_percent_value > scope:actor.current_strength_with_allies_value + } + } + } + } + factor = 0 + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + modifier = { + add = 25 + scope:actor = { + has_any_cb_on = scope:recipient + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + } + } + modifier = { + scope:recipient = { + OR = { + is_allied_to = scope:actor + is_spouse_of = scope:recipient + } + } + add = 50 + } + modifier = { + scope:recipient = { + has_any_cb_on = scope:actor + scope:recipient.current_strength_with_allies_fifty_percent_value > scope:actor.current_strength_with_allies_value + } + add = -50 + } + bp2_hostage_return_personality_modifier = { + WARDEN = scope:actor + HOME_COURT = scope:recipient + } + # Cultural traditions + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_equitable } + add = 25 + } + modifier = { + scope:actor.culture = { has_cultural_tradition = tradition_esteemed_hospitality } + add = 25 + } + modifier = { + scope:actor = { + is_vassal_of = scope:recipient + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + add = 25 + desc = HOSTAGE_CULTURAL_TRADITION_REASON + } + #DO NOT SEND BACK FRANKOKRATIA CLAIMANT + modifier = { + scope:hostage ?= { + has_character_flag = byz_claimant_flag + } + exists = global_var:byz_claimant_champion + factor = 0 + } + } + + send_options_exclusive = no + + show_effects_in_notification = no + greeting = positive + + notification_text = { + } +} + +### Recall hostage - bilateral +# actor = home_court +# recipient = warden +# secondary_recipient = hostage +recall_hostage_interaction = { + category = interaction_category_diplomacy + common_interaction = no + popup_on_receive = yes + pause_on_receive = yes + icon = icon_hostage + + desc = recall_hostage_interaction_desc + + populate_recipient_list = { + scope:actor = { + every_home_court_hostage = { + limit = { warden ?= scope:recipient } + add_to_list = characters + } + } + } + + cost = {} + + is_shown = { + # AI don't use this interaction at all + scope:actor = { is_ai = no } + # Cannot recall hostages from self + scope:recipient != scope:actor + # Must have a hostage + OR = { + scope:actor = { + any_home_court_hostage = { warden ?= scope:recipient } + } + scope:recipient.home_court ?= scope:actor + } + } + + redirect = { + if = { + limit = { + scope:recipient.home_court ?= scope:actor + } + scope:recipient = { save_scope_as = secondary_recipient } + scope:recipient.warden = { save_scope_as = recipient } + } + } + + is_valid_showing_failures_only = { + NOR = { + # Must be at peace + scope:recipient = { is_at_war_with = scope:actor } + # Only family oriented governments use hostages + scope:actor = { government_has_flag = government_is_theocracy } + scope:recipient = { government_has_flag = government_is_theocracy } + } + } + + # whether a character can be picked for the interaction, interface only (e.g. picking the first character in the marriage interaction) + # in character scope, actor and recipient event targets can be used, but not the secondary characters (because none exist yet) + can_be_picked = {} + + can_send = { + NOT = { + scope:actor = { is_at_war_with = scope:recipient } + } + } + + on_send = {} + + on_accept = { + # Save scopes for clarity + scope:actor = { save_scope_as = home_court } + scope:recipient = { save_scope_as = warden } + scope:secondary_recipient = { save_scope_as = hostage } + # Send toast informing sender of acceptance + scope:warden = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = recall_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:home_court + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + } + } + scope:home_court = { + send_interface_toast = { + type = event_toast_effect_good + title = recall_hostage_interaction_notification + left_icon = scope:hostage + right_icon = scope:warden + show_as_tooltip = { + bp2_return_hostage_effect = { HOSTAGE = scope:hostage } + } + } + if = { + limit = { has_character_flag = flag_hostile_actions_disabled_delay } + remove_character_flag = flag_hostile_actions_disabled_delay + } + } + # Notify home court with letter event + scope:home_court = { trigger_event = char_interaction.0340 } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0341 + } + } + + ai_accept = { + base = 0 + + ######### PERSONALITY + + bp2_hostage_return_personality_modifier = { + HOME_COURT = scope:actor + WARDEN = scope:recipient + } + + ######### OPINION + + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = -0.1 + desc = AI_OPINION_REASON + } + + ######### RELATIONS + + bp2_hostage_relation_modifier = yes + + ######### DREAD + + modifier = { + add = intimidated_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = cowed_halved_reason_value + scope:recipient = { + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + ######### HOSTAGE IMPORTANCE + + modifier = { + exists = scope:secondary_recipient + add = interaction_recipient_hostage_value + desc = HOSTAGE_VALUE_RECIPIENT_REASON + } + + ######### HOSTAGE TIME + + modifier = { # Hostage is grown up + add = 25 + scope:secondary_recipient = { is_adult = yes } + desc = HOSTAGE_ADULT_REASON + } + modifier = { # Time as a hostage + add = -25 + scope:secondary_recipient = { + hostage_duration = { years < 1 } + } + desc = HOSTAGE_MINIMUM_STAY_REASON + } + modifier = { # Time as a hostage + add = { + value = 10 + scope:secondary_recipient = { + if = { + limit = { + hostage_duration = { years >= 3 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 4 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 5 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 6 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 7 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 8 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 9 } + } + add = 10 + } + if = { + limit = { + hostage_duration = { years >= 10 } + } + add = 10 + } + } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + desc = HOSTAGE_DURATION_REASON + } + + ######### RELATIVE POWER + + bp2_hostage_recall_tier_neighbor_modifier = { # Realm relative position + RECALLER = scope:actor + WARDEN = scope:recipient + } + bp2_hostage_claims_casus_bellis_modifier = { # Desire for land/war + SENDER = scope:actor + RECEIVER = scope:recipient + } + bp2_hostage_recall_vassals_lieges_modifier = { # Political situation + RECALLER = scope:actor + WARDEN = scope:recipient + } + bp2_hostage_relative_strength_modifier = { # Relative military strength + SENDER = scope:recipient + RECEIVER = scope:actor + } + modifier = { + desc = HOSTAGE_IMMINENT_THREAT_REASON + scope:actor = { has_any_cb_on = scope:recipient } + scope:actor.current_strength_with_allies_fifty_percent_value > scope:recipient.current_strength_with_allies_value + add = -25 + } + + ######### CULTURAL DIFFERENCES + + bp2_hostage_culture_faith_modifier = { + SENDER = scope:actor + RECEIVER = scope:recipient + } + + ######### CULTURAL TRADITIONS + + modifier = { + scope:recipient = { + culture = { has_cultural_tradition = tradition_equitable } + NOT = { + any_home_court_hostage = { warden = scope:actor } + } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + add = 25 + desc = HOSTAGE_EQUITABLE_TRADITION_REASON + } + modifier = { + scope:recipient = { + culture = { has_cultural_tradition = tradition_esteemed_hospitality } + NOT = { + any_home_court_hostage = { warden = scope:actor } + } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + add = 25 + desc = HOSTAGE_ESTEEMED_HOSPITALITY_TRADITION_REASON + } + modifier = { + scope:recipient = { + is_vassal_of = scope:actor + culture = { has_cultural_tradition = tradition_loyal_soldiers } + } + scope:secondary_recipient = { + hostage_duration = { years >= 2 } + } + add = 25 + desc = HOSTAGE_LOYAL_SUBJECTS_TRADITION_REASON + } + + ######### OTHER + + modifier = { # Hostage died on their watch + exists = scope:actor.var:hostage_died + scope:recipient = { + NOR = { + var:let_my_hostage_die ?= scope:actor + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_REASON + add = -25 + } + modifier = { # MY Hostage died on their watch + scope:recipient = { + var:let_my_hostage_die ?= scope:actor + NOT = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + } + desc = HOSTAGE_PREVIOUSLY_DIED_HOME_COURT_REASON + add = -100 + } + modifier = { # Killed my hostage!!! + scope:recipient = { + has_opinion_modifier = { + target = scope:actor + modifier = killed_hostage_opinion + } + } + desc = HOSTAGE_KILLED_REASON + add = -200 + } + modifier = { # Already have a truce + scope:actor ?= { has_truce = scope:recipient } + desc = HOSTAGE_ACTOR_EXISTING_TRUCE_REASON + add = 20 + } + modifier = { # Already fighting a war + scope:recipient ?= { is_at_war = yes } + desc = HOSTAGE_AT_WAR_REASON + add = -25 + } + modifier = { # Attacked a hostage's home court + add = -50 + scope:actor = { has_character_modifier = attacked_home_court } + desc = attacked_home_court + } + modifier = { + scope:hook = yes + add = 40 + desc = SCHEME_WEAK_HOOK_USED + } + modifier = { # Has my hostage + add = -50 + scope:recipient = { + any_home_court_hostage = { warden = scope:actor } + } + desc = HOSTAGE_HAS_MINE_REASON + } + #DO NOT SEND BACK FRANKOKRATIA CLAIMANT + modifier = { + desc = crusading_claim_cb_reason + scope:hostage = { + has_character_flag = byz_claimant_flag + } + exists = global_var:byz_claimant_champion + add = -5000 + } + } + + auto_accept = { + trigger_if = { + limit = { + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:hook ?= yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + trigger_else = { always = no } + } + + can_be_blocked = { + custom_description = { #Hook from Recipient can counteract, but only if Actor is not forcing the action via Strong Hook. + text = "spending_hook" + subject = scope:recipient + object = scope:actor + scope:recipient = { has_hook = scope:actor } + NAND = { + scope:hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + } + + on_blocked_effect = { + scope:recipient = { + remove_hook = { target = scope:actor } + } + } + + send_option = { + is_valid = { + scope:actor = { has_usable_hook = scope:recipient } + } + flag = hook + localization = SCHEME_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + show_effects_in_notification = yes + greeting = positive + + notification_text = RECALL_HOSTAGE_PROPOSAL +} + +### Trait interaction for guardians +# actor = guardian +# recipient = ward/hostage +# This has to be update every time a new trait is added to the game, otherwise you won't be able to pass it down +influence_child_personality_interaction = { + category = interaction_category_friendly + common_interaction = yes + interface_priority = 60 + icon = child + ai_maybe = yes + ai_min_reply_days = 4 + ai_max_reply_days = 9 + can_send_despite_rejection = yes + popup_on_receive = yes + pause_on_receive = yes + + pre_answer_maybe_key = ANSWER_MIGHT_SUCCEED + pre_answer_no_key = ANSWER_CANT_SUCCEED + pre_answer_yes_key = ANSWER_WILL_SUCCEED + pre_answer_maybe_breakdown_key = ANSWER_SUM_CHANCE + + desc = influence_child_personality_interaction_desc + + is_shown = { #any ai ward/hostage + has_bp2_dlc_trigger = yes + scope:recipient = { + is_ai = yes + is_adult = no + OR = { + scope:actor = { has_relation_ward = scope:recipient } + is_hostage_of = scope:actor + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { #be old enough to talk and have some room for new personlaity traits + age >= 4 + custom_description = { + text = influence_child_personality_interaction_trait_limit + number_of_personality_traits < 4 + } + #checking all trait individually through the set scope in order to catch if all of your traits are either the same or opposite + custom_description = { + text = influence_child_personality_interaction_all_same_traits + switch = { + trigger = yes + scope:lustful = { + scope:recipient = { NOT = { has_trait = lustful } } + } + scope:chaste = { + scope:recipient = { NOT = { has_trait = chaste } } + } + scope:gluttonous = { + scope:recipient = { NOT = { has_trait = gluttonous } } + } + scope:temperate = { + scope:recipient = { NOT = { has_trait = temperate } } + } + scope:greedy = { + scope:recipient = { NOT = { has_trait = greedy } } + } + scope:generous = { + scope:recipient = { NOT = { has_trait = generous } } + } + scope:lazy = { + scope:recipient = { NOT = { has_trait = lazy } } + } + scope:diligent = { + scope:recipient = { NOT = { has_trait = diligent } } + } + scope:wrathful = { + scope:recipient = { NOT = { has_trait = wrathful } } + } + scope:calm = { + scope:recipient = { NOT = { has_trait = calm } } + } + scope:patient = { + scope:recipient = { NOT = { has_trait = patient } } + } + scope:impatient = { + scope:recipient = { NOT = { has_trait = impatient } } + } + scope:arrogant = { + scope:recipient = { NOT = { has_trait = arrogant } } + } + scope:humble = { + scope:recipient = { NOT = { has_trait = humble } } + } + scope:deceitful = { + scope:recipient = { NOT = { has_trait = deceitful } } + } + scope:honest = { + scope:recipient = { NOT = { has_trait = honest } } + } + scope:craven = { + scope:recipient = { NOT = { has_trait = craven } } + } + scope:brave = { + scope:recipient = { NOT = { has_trait = brave } } + } + scope:shy = { + scope:recipient = { NOT = { has_trait = shy } } + } + scope:gregarious = { + scope:recipient = { NOT = { has_trait = gregarious } } + } + scope:ambitious = { + scope:recipient = { NOT = { has_trait = ambitious } } + } + scope:content = { + scope:recipient = { NOT = { has_trait = content } } + } + scope:arbitrary = { + scope:recipient = { NOT = { has_trait = arbitrary } } + } + scope:just = { + scope:recipient = { NOT = { has_trait = just } } + } + scope:cynical = { + scope:recipient = { NOT = { has_trait = cynical } } + } + scope:zealous = { + scope:recipient = { NOT = { has_trait = zealous } } + } + scope:paranoid = { + scope:recipient = { NOT = { has_trait = paranoid } } + } + scope:trusting = { + scope:recipient = { NOT = { has_trait = trusting } } + } + scope:compassionate = { + scope:recipient = { NOT = { has_trait = compassionate } } + } + scope:callous = { + scope:recipient = { NOT = { has_trait = callous } } + } + scope:sadistic = { + scope:recipient = { NOT = { has_trait = sadistic } } + } + scope:stubborn = { + scope:recipient = { NOT = { has_trait = stubborn } } + } + scope:fickle = { + scope:recipient = { NOT = { has_trait = fickle } } + } + scope:eccentric = { + scope:recipient = { NOT = { has_trait = eccentric } } + } + scope:vengeful = { + scope:recipient = { NOT = { has_trait = vengeful } } + } + scope:forgiving = { + scope:recipient = { NOT = { has_trait = forgiving } } + } + } + } + } + scope:actor = { + is_adult = yes + number_of_personality_traits >= 1 #just in case you have to have at least some personality + } + } + + cooldown_against_recipient = { years = 3 } + + can_send = { + } + #each option is shown if the actor has the corresponding trait and valid if recipient don't have it yet or don't have an opposite trait + send_option = { + is_shown = { + scope:actor = { has_trait = lustful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = lustful + trait:lustful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + has_sexuality = none + has_sexuality = asexual + } + } + } + flag = lustful + localization = trait_lustful + } + send_option = { + is_shown = { + scope:actor = { has_trait = chaste } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = chaste + trait:chaste = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + has_sexuality = none + has_sexuality = asexual + } + } + } + flag = chaste + localization = trait_chaste + } + send_option = { + is_shown = { + scope:actor = { has_trait = gluttonous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = gluttonous + trait:gluttonous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = gluttonous + localization = trait_gluttonous + } + send_option = { + is_shown = { + scope:actor = { has_trait = temperate } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = temperate + trait:temperate = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = temperate + localization = trait_temperate + } + send_option = { + is_shown = { + scope:actor = { has_trait = greedy } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = greedy + trait:greedy = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = greedy + localization = trait_greedy + } + send_option = { + is_shown = { + scope:actor = { has_trait = generous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = generous + trait:generous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = generous + localization = trait_generous + } + send_option = { + is_shown = { + scope:actor = { has_trait = lazy } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = lazy + trait:lazy = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = lazy + localization = trait_lazy + } + send_option = { + is_shown = { + scope:actor = { has_trait = diligent } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = diligent + trait:diligent = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = diligent + localization = trait_diligent + } + send_option = { + is_shown = { + scope:actor = { has_trait = wrathful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = wrathful + trait:wrathful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = wrathful + localization = trait_wrathful + } + send_option = { + is_shown = { + scope:actor = { has_trait = calm } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = calm + trait:calm = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = calm + localization = trait_calm + } + send_option = { + is_shown = { + scope:actor = { has_trait = patient } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = patient + trait:patient = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = patient + localization = trait_patient + } + send_option = { + is_shown = { + scope:actor = { has_trait = impatient } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = impatient + trait:impatient = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = impatient + localization = trait_impatient + } + send_option = { + is_shown = { + scope:actor = { has_trait = arrogant } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = arrogant + trait:arrogant = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = arrogant + localization = trait_arrogant + } + send_option = { + is_shown = { + scope:actor = { has_trait = humble } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = humble + trait:humble = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = humble + localization = trait_humble + } + send_option = { + is_shown = { + scope:actor = { has_trait = deceitful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = deceitful + trait:deceitful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = deceitful + localization = trait_deceitful + } + send_option = { + is_shown = { + scope:actor = { has_trait = honest } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = honest + trait:honest = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = honest + localization = trait_honest + } + send_option = { + is_shown = { + scope:actor = { has_trait = craven } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = craven + trait:craven = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = craven + localization = trait_craven + } + send_option = { + is_shown = { + scope:actor = { has_trait = brave } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = brave + trait:brave = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = brave + localization = trait_brave + } + send_option = { + is_shown = { + scope:actor = { has_trait = shy } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = shy + trait:shy = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = shy + localization = trait_shy + } + send_option = { + is_shown = { + scope:actor = { has_trait = gregarious } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = gregarious + trait:gregarious = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = gregarious + localization = trait_gregarious + } + send_option = { + is_shown = { + scope:actor = { has_trait = ambitious } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = ambitious + trait:ambitious = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = ambitious + localization = trait_ambitious + } + send_option = { + is_shown = { + scope:actor = { has_trait = content } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = content + trait:content = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = content + localization = trait_content + } + send_option = { + is_shown = { + scope:actor = { has_trait = arbitrary } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = arbitrary + trait:arbitrary = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = arbitrary + localization = trait_arbitrary + } + send_option = { + is_shown = { + scope:actor = { has_trait = just } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = just + trait:just = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = just + localization = trait_just + } + send_option = { + is_shown = { + scope:actor = { has_trait = cynical } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = cynical + trait:cynical = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = cynical + localization = trait_cynical + } + send_option = { + is_shown = { + scope:actor = { has_trait = zealous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = zealous + trait:zealous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = zealous + localization = trait_zealous + } + send_option = { + is_shown = { + scope:actor = { has_trait = paranoid } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = paranoid + trait:paranoid = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = paranoid + localization = trait_paranoid + } + send_option = { + is_shown = { + scope:actor = { has_trait = trusting } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = trusting + trait:trusting = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = trusting + localization = trait_trusting + } + send_option = { + is_shown = { + scope:actor = { has_trait = compassionate } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = compassionate + trait:compassionate = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = compassionate + localization = trait_compassionate + } + send_option = { + is_shown = { + scope:actor = { has_trait = callous } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = callous + trait:callous = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = callous + localization = trait_callous + } + send_option = { + is_shown = { + scope:actor = { has_trait = sadistic } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = sadistic + trait:sadistic = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = sadistic + localization = trait_sadistic + } + send_option = { + is_shown = { + scope:actor = { has_trait = stubborn } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = stubborn + trait:stubborn = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = stubborn + localization = trait_stubborn + } + send_option = { + is_shown = { + scope:actor = { has_trait = fickle } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = fickle + trait:fickle = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = fickle + localization = trait_fickle + } + send_option = { + is_shown = { + scope:actor = { has_trait = eccentric } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = eccentric + trait:eccentric = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = eccentric + localization = trait_eccentric + } + send_option = { + is_shown = { + scope:actor = { has_trait = vengeful } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = vengeful + trait:vengeful = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = vengeful + localization = trait_vengeful + } + send_option = { + is_shown = { + scope:actor = { has_trait = forgiving } + } + is_valid = { + scope:recipient = { + NOR = { + has_trait = forgiving + trait:forgiving = { + any_opposite_trait = { + scope:recipient = { has_trait = prev } + } + } + } + } + } + flag = forgiving + localization = trait_forgiving + } + + send_options_exclusive = yes + + on_send = { + switch = {#save which trait was chosen as scope:target_trait + trigger = yes + scope:lustful = { + trait:lustful = { save_scope_as = target_trait } + } + scope:chaste = { + trait:chaste = { save_scope_as = target_trait } + } + scope:gluttonous = { + trait:gluttonous = { save_scope_as = target_trait } + } + scope:temperate = { + trait:temperate = { save_scope_as = target_trait } + } + scope:greedy = { + trait:greedy = { save_scope_as = target_trait } + } + scope:generous = { + trait:generous = { save_scope_as = target_trait } + } + scope:lazy = { + trait:lazy = { save_scope_as = target_trait } + } + scope:diligent = { + trait:diligent = { save_scope_as = target_trait } + } + scope:wrathful = { + trait:wrathful = { save_scope_as = target_trait } + } + scope:calm = { + trait:calm = { save_scope_as = target_trait } + } + scope:patient = { + trait:patient = { save_scope_as = target_trait } + } + scope:impatient = { + trait:impatient = { save_scope_as = target_trait } + } + scope:arrogant = { + trait:arrogant = { save_scope_as = target_trait } + } + scope:humble = { + trait:humble = { save_scope_as = target_trait } + } + scope:deceitful = { + trait:deceitful = { save_scope_as = target_trait } + } + scope:honest = { + trait:honest = { save_scope_as = target_trait } + } + scope:craven = { + trait:craven = { save_scope_as = target_trait } + } + scope:brave = { + trait:brave = { save_scope_as = target_trait } + } + scope:shy = { + trait:shy = { save_scope_as = target_trait } + } + scope:gregarious = { + trait:gregarious = { save_scope_as = target_trait } + } + scope:ambitious = { + trait:ambitious = { save_scope_as = target_trait } + } + scope:content = { + trait:content = { save_scope_as = target_trait } + } + scope:arbitrary = { + trait:arbitrary = { save_scope_as = target_trait } + } + scope:just = { + trait:just = { save_scope_as = target_trait } + } + scope:cynical = { + trait:cynical = { save_scope_as = target_trait } + } + scope:zealous = { + trait:zealous = { save_scope_as = target_trait } + } + scope:paranoid = { + trait:paranoid = { save_scope_as = target_trait } + } + scope:trusting = { + trait:trusting = { save_scope_as = target_trait } + } + scope:compassionate = { + trait:compassionate = { save_scope_as = target_trait } + } + scope:callous = { + trait:callous = { save_scope_as = target_trait } + } + scope:sadistic = { + trait:sadistic = { save_scope_as = target_trait } + } + scope:stubborn = { + trait:stubborn = { save_scope_as = target_trait } + } + scope:fickle = { + trait:fickle = { save_scope_as = target_trait } + } + scope:eccentric = { + trait:eccentric = { save_scope_as = target_trait } + } + scope:vengeful = { + trait:vengeful = { save_scope_as = target_trait } + } + scope:forgiving = { + trait:forgiving = { save_scope_as = target_trait } + } + fallback = { + scope:actor = { + random_character_trait = { + limit = { has_trait_category = personality } + save_scope_as = target_trait + } + } + } + } + } + + on_accept = { + scope:actor = { + # Trait you're trying to make your ward gained is saved as scope:target_trait + trigger_event = bp2_character_interaction.1001 + show_as_tooltip = { + add_prestige = minor_prestige_loss + add_stress = minor_stress_gain + add_opinion = { + target = scope:recipient + modifier = pleased_opinion + opinion = 20 + } + } + } + scope:recipient = { + show_as_tooltip = { + switch = {#save which trait was chosen as scope:target_trait + trigger = yes + scope:lustful = { + trait:lustful = { save_scope_as = target_trait } + } + scope:chaste = { + trait:chaste = { save_scope_as = target_trait } + } + scope:gluttonous = { + trait:gluttonous = { save_scope_as = target_trait } + } + scope:temperate = { + trait:temperate = { save_scope_as = target_trait } + } + scope:greedy = { + trait:greedy = { save_scope_as = target_trait } + } + scope:generous = { + trait:generous = { save_scope_as = target_trait } + } + scope:lazy = { + trait:lazy = { save_scope_as = target_trait } + } + scope:diligent = { + trait:diligent = { save_scope_as = target_trait } + } + scope:wrathful = { + trait:wrathful = { save_scope_as = target_trait } + } + scope:calm = { + trait:calm = { save_scope_as = target_trait } + } + scope:patient = { + trait:patient = { save_scope_as = target_trait } + } + scope:impatient = { + trait:impatient = { save_scope_as = target_trait } + } + scope:arrogant = { + trait:arrogant = { save_scope_as = target_trait } + } + scope:humble = { + trait:humble = { save_scope_as = target_trait } + } + scope:deceitful = { + trait:deceitful = { save_scope_as = target_trait } + } + scope:honest = { + trait:honest = { save_scope_as = target_trait } + } + scope:craven = { + trait:craven = { save_scope_as = target_trait } + } + scope:brave = { + trait:brave = { save_scope_as = target_trait } + } + scope:shy = { + trait:shy = { save_scope_as = target_trait } + } + scope:gregarious = { + trait:gregarious = { save_scope_as = target_trait } + } + scope:ambitious = { + trait:ambitious = { save_scope_as = target_trait } + } + scope:content = { + trait:content = { save_scope_as = target_trait } + } + scope:arbitrary = { + trait:arbitrary = { save_scope_as = target_trait } + } + scope:just = { + trait:just = { save_scope_as = target_trait } + } + scope:cynical = { + trait:cynical = { save_scope_as = target_trait } + } + scope:zealous = { + trait:zealous = { save_scope_as = target_trait } + } + scope:paranoid = { + trait:paranoid = { save_scope_as = target_trait } + } + scope:trusting = { + trait:trusting = { save_scope_as = target_trait } + } + scope:compassionate = { + trait:compassionate = { save_scope_as = target_trait } + } + scope:callous = { + trait:callous = { save_scope_as = target_trait } + } + scope:sadistic = { + trait:sadistic = { save_scope_as = target_trait } + } + scope:stubborn = { + trait:stubborn = { save_scope_as = target_trait } + } + scope:fickle = { + trait:fickle = { save_scope_as = target_trait } + } + scope:eccentric = { + trait:eccentric = { save_scope_as = target_trait } + } + scope:vengeful = { + trait:vengeful = { save_scope_as = target_trait } + } + scope:forgiving = { + trait:forgiving = { save_scope_as = target_trait } + } + } + if = { + limit = { exists = scope:target_trait } + add_trait = scope:target_trait + } + add_opinion = { + target = scope:actor + modifier = admiration_opinion + opinion = 20 + } + } + } + } + + on_decline = { + scope:actor = { + # Trait you're trying to make your ward gained is saved as scope:target_trait + trigger_event = bp2_character_interaction.1002 + show_as_tooltip = { + add_prestige = minor_prestige_loss + add_stress = medium_stress_gain + add_opinion = { + target = scope:recipient + modifier = disappointed_opinion + opinion = -20 + } + } + } + scope:recipient = { + show_as_tooltip = { + add_opinion = { + target = scope:actor + modifier = confused_opinion + opinion = -20 + } + } + } + } + + auto_accept = no + + ai_accept = { + base = 0 # Try to make it 0 for most interactions + opinion_modifier = { # Opinion Factor + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + + modifier = { # Perk boost + desc = influence_children_groomed_to_rule_perk_tt + trigger = { + scope:actor = { has_perk = groomed_to_rule_perk } + } + add = groomed_to_rule_value + } + + modifier = { #more likely if you already have something in common + add = { + value = 5 + if = { + limit = { + number_of_personality_traits_in_common = { + target = scope:recipient + value = 2 + } + } + multiply = 2 + } + else_if = { + limit = { + number_of_personality_traits_in_common = { + target = scope:recipient + value = 3 + } + } + multiply = 3 + } + } + number_of_personality_traits_in_common = { + target = scope:recipient + value >= 1 + } + desc = we_are_alike_tt + } + + modifier = { #less likely if you already have opposite traits + add = { + value = -5 + if = { + limit = { + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value = 2 + } + } + } + multiply = 2 + } + else_if = { + limit = { + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value = 3 + } + } + } + multiply = 3 + } + } + scope:recipient = { + number_of_opposing_personality_traits = { + target = scope:actor + value >= 1 + } + } + desc = we_are_NOT_alike_tt + } + + modifier = { #adding your knowledge + add = { + value = scope:actor.learning + multiply = 0.5 + } + desc = HAS_LEARNING_SKILL_REASON + } + + modifier = { #adding your oratory skills + add = { + value = scope:actor.diplomacy + multiply = 0.5 + } + desc = HAS_DIPLOMACY_SKILL_REASON + } + + modifier = { #more likely with a Wet Nurse employed + exists = scope:actor.court_position:wet_nurse_court_position + add = 10 + desc = HAS_WET_NURSE_REASON + } + + modifier = { #more likely if chosen trait is a virtue in recipients faith + add = 10 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient.faith = { + trait_is_virtue = trait:sadistic + } + } + scope:lustful = { + scope:recipient.faith = { + trait_is_virtue = trait:lustful + } + } + scope:chaste = { + scope:recipient.faith = { + trait_is_virtue = trait:chaste + } + } + scope:gluttonous = { + scope:recipient.faith = { + trait_is_virtue = trait:gluttonous + } + } + scope:temperate = { + scope:recipient.faith = { + trait_is_virtue = trait:temperate + } + } + scope:greedy = { + scope:recipient.faith = { + trait_is_virtue = trait:greedy + } + } + scope:generous = { + scope:recipient.faith = { + trait_is_virtue = trait:generous + } + } + scope:lazy = { + scope:recipient.faith = { + trait_is_virtue = trait:lazy + } + } + scope:diligent = { + scope:recipient.faith = { + trait_is_virtue = trait:diligent + } + } + scope:wrathful = { + scope:recipient.faith = { + trait_is_virtue = trait:wrathful + } + } + scope:calm = { + scope:recipient.faith = { + trait_is_virtue = trait:calm + } + } + scope:patient = { + scope:recipient.faith = { + trait_is_virtue = trait:patient + } + } + scope:impatient = { + scope:recipient.faith = { + trait_is_virtue = trait:impatient + } + } + scope:arrogant = { + scope:recipient.faith = { + trait_is_virtue = trait:arrogant + } + } + scope:humble = { + scope:recipient.faith = { + trait_is_virtue = trait:humble + } + } + scope:deceitful = { + scope:recipient.faith = { + trait_is_virtue = trait:deceitful + } + } + scope:honest = { + scope:recipient.faith = { + trait_is_virtue = trait:honest + } + } + scope:craven = { + scope:recipient.faith = { + trait_is_virtue = trait:craven + } + } + scope:brave = { + scope:recipient.faith = { + trait_is_virtue = trait:brave + } + } + scope:shy = { + scope:recipient.faith = { + trait_is_virtue = trait:shy + } + } + scope:gregarious = { + scope:recipient.faith = { + trait_is_virtue = trait:gregarious + } + } + scope:ambitious = { + scope:recipient.faith = { + trait_is_virtue = trait:ambitious + } + } + scope:content = { + scope:recipient.faith = { + trait_is_virtue = trait:content + } + } + scope:arbitrary = { + scope:recipient.faith = { + trait_is_virtue = trait:arbitrary + } + } + scope:just = { + scope:recipient.faith = { + trait_is_virtue = trait:just + } + } + scope:cynical = { + scope:recipient.faith = { + trait_is_virtue = trait:cynical + } + } + scope:zealous = { + scope:recipient.faith = { + trait_is_virtue = trait:zealous + } + } + scope:paranoid = { + scope:recipient.faith = { + trait_is_virtue = trait:paranoid + } + } + scope:trusting = { + scope:recipient.faith = { + trait_is_virtue = trait:trusting + } + } + scope:compassionate = { + scope:recipient.faith = { + trait_is_virtue = trait:compassionate + } + } + scope:callous = { + scope:recipient.faith = { + trait_is_virtue = trait:callous + } + } + scope:stubborn = { + scope:recipient.faith = { + trait_is_virtue = trait:stubborn + } + } + scope:fickle = { + scope:recipient.faith = { + trait_is_virtue = trait:fickle + } + } + scope:eccentric = { + scope:recipient.faith = { + trait_is_virtue = trait:eccentric + } + } + scope:vengeful = { + scope:recipient.faith = { + trait_is_virtue = trait:vengeful + } + } + scope:forgiving = { + scope:recipient.faith = { + trait_is_virtue = trait:forgiving + } + } + } + desc = selected_virtuous_trait_tt + } + + modifier = { #more likely if chosen trait is compatible with recipients childhood personality + add = 15 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:lustful = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:chaste = { + scope:recipient = { + has_trait = pensive + } + } + scope:gluttonous = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:temperate = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:greedy = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:generous = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:lazy = { + scope:recipient = { + has_trait = rowdy + } + } + scope:diligent = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = curious + } + } + } + scope:wrathful = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:calm = { + scope:recipient = { + has_trait = pensive + } + } + scope:patient = { + scope:recipient = { + has_trait = pensive + } + } + scope:impatient = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:arrogant = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:humble = { + scope:recipient = { + has_trait = pensive + } + } + scope:deceitful = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = charming + } + } + } + scope:honest = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:craven = { + scope:recipient = { + has_trait = pensive + } + } + scope:brave = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:shy = { + scope:recipient = { + has_trait = pensive + } + } + scope:gregarious = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:ambitious = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:content = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:arbitrary = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:just = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:cynical = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = pensive + } + } + } + scope:zealous = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:paranoid = { + scope:recipient = { + OR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:trusting = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + scope:compassionate = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = pensive + } + } + } + scope:callous = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:stubborn = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:fickle = { + scope:recipient = { + OR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:eccentric = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = charming + has_trait = curious + } + } + } + scope:vengeful = { + scope:recipient = { + OR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:forgiving = { + scope:recipient = { + OR = { + has_trait = charming + has_trait = curious + } + } + } + } + desc = has_compatible_personality_tt + } + + modifier = { #less likely if chosen trait is incompatible with recipients childhood personality + add = -15 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:lustful = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:chaste = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:gluttonous = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:temperate = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:greedy = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:generous = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:lazy = { + scope:recipient = { + NOT = { has_trait = rowdy } + } + } + scope:diligent = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = curious + } + } + } + scope:wrathful = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:calm = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:patient = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:impatient = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:arrogant = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:humble = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:deceitful = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = charming + } + } + } + scope:honest = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:craven = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:brave = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:shy = { + scope:recipient = { + NOT = { has_trait = pensive } + } + } + scope:gregarious = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:ambitious = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:content = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:arbitrary = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:just = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = charming + } + } + } + scope:cynical = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = pensive + } + } + } + scope:zealous = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:paranoid = { + scope:recipient = { + NOR = { + has_trait = pensive + has_trait = rowdy + } + } + } + scope:trusting = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + scope:compassionate = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = pensive + } + } + } + scope:callous = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:stubborn = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = curious + } + } + } + scope:fickle = { + scope:recipient = { + NOR = { + has_trait = curious + has_trait = rowdy + } + } + } + scope:eccentric = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = charming + has_trait = curious + } + } + } + scope:vengeful = { + scope:recipient = { + NOR = { + has_trait = bossy + has_trait = rowdy + } + } + } + scope:forgiving = { + scope:recipient = { + NOR = { + has_trait = charming + has_trait = curious + } + } + } + } + desc = has_incompatible_personality_tt + } + + modifier = { #less likely if chosen trait is a sin in recipients faith + add = -10 + switch = { + trigger = yes + scope:sadistic = { + scope:recipient.faith = { + trait_is_sin = trait:sadistic + } + } + scope:lustful = { + scope:recipient.faith = { + trait_is_sin = trait:lustful + } + } + scope:chaste = { + scope:recipient.faith = { + trait_is_sin = trait:chaste + } + } + scope:gluttonous = { + scope:recipient.faith = { + trait_is_sin = trait:gluttonous + } + } + scope:temperate = { + scope:recipient.faith = { + trait_is_sin = trait:temperate + } + } + scope:greedy = { + scope:recipient.faith = { + trait_is_sin = trait:greedy + } + } + scope:generous = { + scope:recipient.faith = { + trait_is_sin = trait:generous + } + } + scope:lazy = { + scope:recipient.faith = { + trait_is_sin = trait:lazy + } + } + scope:diligent = { + scope:recipient.faith = { + trait_is_sin = trait:diligent + } + } + scope:wrathful = { + scope:recipient.faith = { + trait_is_sin = trait:wrathful + } + } + scope:calm = { + scope:recipient.faith = { + trait_is_sin = trait:calm + } + } + scope:patient = { + scope:recipient.faith = { + trait_is_sin = trait:patient + } + } + scope:impatient = { + scope:recipient.faith = { + trait_is_sin = trait:impatient + } + } + scope:arrogant = { + scope:recipient.faith = { + trait_is_sin = trait:arrogant + } + } + scope:humble = { + scope:recipient.faith = { + trait_is_sin = trait:humble + } + } + scope:deceitful = { + scope:recipient.faith = { + trait_is_sin = trait:deceitful + } + } + scope:honest = { + scope:recipient.faith = { + trait_is_sin = trait:honest + } + } + scope:craven = { + scope:recipient.faith = { + trait_is_sin = trait:craven + } + } + scope:brave = { + scope:recipient.faith = { + trait_is_sin = trait:brave + } + } + scope:shy = { + scope:recipient.faith = { + trait_is_sin = trait:shy + } + } + scope:gregarious = { + scope:recipient.faith = { + trait_is_sin = trait:gregarious + } + } + scope:ambitious = { + scope:recipient.faith = { + trait_is_sin = trait:ambitious + } + } + scope:content = { + scope:recipient.faith = { + trait_is_sin = trait:content + } + } + scope:arbitrary = { + scope:recipient.faith = { + trait_is_sin = trait:arbitrary + } + } + scope:just = { + scope:recipient.faith = { + trait_is_sin = trait:just + } + } + scope:cynical = { + scope:recipient.faith = { + trait_is_sin = trait:cynical + } + } + scope:zealous = { + scope:recipient.faith = { + trait_is_sin = trait:zealous + } + } + scope:paranoid = { + scope:recipient.faith = { + trait_is_sin = trait:paranoid + } + } + scope:trusting = { + scope:recipient.faith = { + trait_is_sin = trait:trusting + } + } + scope:compassionate = { + scope:recipient.faith = { + trait_is_sin = trait:compassionate + } + } + scope:callous = { + scope:recipient.faith = { + trait_is_sin = trait:callous + } + } + scope:stubborn = { + scope:recipient.faith = { + trait_is_sin = trait:stubborn + } + } + scope:fickle = { + scope:recipient.faith = { + trait_is_sin = trait:fickle + } + } + scope:eccentric = { + scope:recipient.faith = { + trait_is_sin = trait:eccentric + } + } + scope:vengeful = { + scope:recipient.faith = { + trait_is_sin = trait:vengeful + } + } + scope:forgiving = { + scope:recipient.faith = { + trait_is_sin = trait:forgiving + } + } + } + desc = selected_sinful_trait_tt + } + + modifier = { #more likely if actor is afraid of you + add = intimidated_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { #more likely if actor is afraid of you + add = cowed_halved_reason_value + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + modifier = { #less likely if actor already has 3 personality traits + add = -50 + scope:recipient = { + number_of_personality_traits = 3 + } + desc = has_three_traits_already + } + } + + # AI + ai_potential = { + any_relation = { type = ward } + } + ai_frequency_by_tier = { + barony = 0 + county = 36 + duchy = 12 + kingdom = 12 + empire = 12 + hegemony = 12 + } + ai_targets = { + ai_recipients = courtiers + } + ai_will_do = { + base = -100 + modifier = { # If the recipient is a player, do not bother sending + factor = 0 + scope:recipient = { + is_ai = no + } + } + modifier = { #we don't want characters running around with 4 traits + add = -100 + scope:recipient = { + number_of_personality_traits = 3 + } + } + modifier = { + add = 50 + ai_honor > 0 + } + modifier = { + add = 50 + ai_compassion > 0 + } + modifier = { + add = 50 + ai_sociability > 0 + } + modifier = { + add = 50 + ai_boldness > 0 + } + modifier = { + add = 50 + scope:paranoid = yes + } + } +} + diff --git a/common/character_interactions/09_mpo_interactions.txt b/common/character_interactions/09_mpo_interactions.txt index 0dfc0f4d..ae55136e 100644 --- a/common/character_interactions/09_mpo_interactions.txt +++ b/common/character_interactions/09_mpo_interactions.txt @@ -179,7 +179,7 @@ faith = scope:actor.faith faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -218,7 +218,7 @@ faith = scope:actor.faith scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } faith = { has_doctrine = doctrine_pluralism_pluralistic } } @@ -257,7 +257,7 @@ NOR = { faith = scope:actor.faith government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } faith = { has_doctrine = doctrine_pluralism_pluralistic } @@ -1199,7 +1199,7 @@ desc = CONFEDERATION_HERDER_REASON trigger = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -1778,7 +1778,7 @@ promote_divergent_or_hybrid_culture_interaction = { scope:recipient = { OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -1886,7 +1886,7 @@ promote_divergent_or_hybrid_culture_interaction = { desc = CONFEDERATION_HERDER_REASON trigger = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2161,7 +2161,7 @@ inspire_conversion_interaction = { scope:recipient = { OR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2270,7 +2270,7 @@ inspire_conversion_interaction = { desc = CONFEDERATION_HERDER_REASON trigger = { scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2828,7 +2828,7 @@ migration_interaction = { scope:recipient = { NOR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -2847,7 +2847,7 @@ migration_interaction = { } modifier = { # Herders move away immediately trigger = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } } add = 150 desc = MIGRATION_INTERACTION_HERDER @@ -3109,7 +3109,7 @@ migration_interaction = { desc = JUST_SETTLED_REASON scope:recipient = { is_tributary = yes - NOT = { government_has_flag = government_is_herder } + NOT = { government_has_flag = government_is_true_herder } capital_county = { title_held_years < 3 } @@ -3214,7 +3214,7 @@ migration_interaction = { # The recipient is a Herder modifier = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } add = 10 } @@ -4859,7 +4859,7 @@ mpo_ask_for_herd_interaction = { } scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -5033,7 +5033,7 @@ mpo_ask_for_herd_interaction = { if = { limit = { #herders cannot give you more herd scope:recipient = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } scope:actor = { @@ -7033,7 +7033,7 @@ feudalize_nomadic_holding_interaction = { this = scope:recipient NOR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -7289,7 +7289,7 @@ feudalize_herder_holding_interaction = { this = scope:recipient NOR = { government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -8339,7 +8339,7 @@ mpo_offer_submission_or_ruin = { #HERDER modifier = { - scope:recipient = { government_has_flag = government_is_herder } + scope:recipient = { government_has_flag = government_is_true_herder } add = 10000 desc = HERDER_REASON } @@ -9261,7 +9261,7 @@ mpo_offer_submission_or_ruin = { add = -50 scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } scope:send_tribute = yes @@ -9497,7 +9497,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -9511,7 +9511,7 @@ mpo_offer_submission_or_ruin = { scope:recipient = { OR = { highest_held_title_tier < tier_duchy - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -9524,7 +9524,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } highest_held_title_tier >= tier_duchy } @@ -9543,7 +9543,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOR = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder government_has_flag = government_is_tribal government_has_flag = government_is_nomadic } @@ -9565,7 +9565,7 @@ mpo_offer_submission_or_ruin = { is_shown = { scope:recipient = { NOT = { - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -10264,7 +10264,7 @@ join_confederation_interaction = { faith = scope:actor.faith faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } } @@ -10303,7 +10303,7 @@ join_confederation_interaction = { faith = scope:actor.faith scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } faith = { has_doctrine = doctrine_pluralism_pluralistic } } @@ -10342,7 +10342,7 @@ join_confederation_interaction = { NOR = { faith = scope:actor.faith government_has_flag = government_is_nomadic - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } scope:actor.faith = { has_doctrine = doctrine_pluralism_pluralistic } faith = { has_doctrine = doctrine_pluralism_pluralistic } diff --git a/common/character_interactions/tgp_tribute_mission_interactions.txt b/common/character_interactions/tgp_tribute_mission_interactions.txt new file mode 100644 index 00000000..b41ebcd5 --- /dev/null +++ b/common/character_interactions/tgp_tribute_mission_interactions.txt @@ -0,0 +1,911 @@ + +#Tribute Missions - a set of hidden Character Interactions, triggered by the Pay Tribute decision - what do you send? + +tribute_mission_gold_interaction = { + hidden = yes + + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + #Small Tribute + send_option = { + flag = small_gold_tribute + is_valid = { + scope:actor = { + gold >= { + value = small_gold_tribute_value + if = { + limit = { has_variable = offered_gold_value } + add = var:offered_gold_value + } + } + } + } + } + #Adequate Tribute + send_option = { + flag = adequate_gold_tribute + is_valid = { + scope:actor = { + gold >= { + value = adequate_gold_tribute_value + if = { + limit = { has_variable = offered_gold_value } + add = var:offered_gold_value + } + } + } + } + } + #Excessive Tribute + send_option = { + flag = excessive_gold_tribute + is_valid = { + scope:actor = { + gold >= { + value = excessive_gold_tribute_value + if = { + limit = { has_variable = offered_gold_value } + add = var:offered_gold_value + } + } + } + } + } + + on_accept = { + scope:actor = { + #Gold + switch = { + trigger = yes + scope:small_gold_tribute ?= { + #Define how much gold it is + set_variable = { + name = tribute_mission_type + value = flag:small_gold_tribute + } + set_or_change_offered_tribute_value_effect = { + TYPE = gold + VALUE = small_gold_tribute_value + } + + custom_tooltip = tribute_mission_gold_interaction.small_reserved_gold + } + scope:adequate_gold_tribute ?= { + #Define how much gold it is + set_variable = { + name = tribute_mission_type + value = flag:adequate_gold_tribute + } + set_or_change_offered_tribute_value_effect = { + TYPE = gold + VALUE = adequate_gold_tribute_value + } + + custom_tooltip = tribute_mission_gold_interaction.adequate_reserved_gold + } + scope:excessive_gold_tribute ?= { + #Define how much gold it is + set_variable = { + name = tribute_mission_type + value = flag:excessive_gold_tribute + } + set_or_change_offered_tribute_value_effect = { + TYPE = gold + VALUE = excessive_gold_tribute_value + } + + custom_tooltip = tribute_mission_gold_interaction.excessive_reserved_gold + } + } + + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = yes + + ai_will_do = { + base = 50 + } +} + +tribute_mission_herd_interaction = { + hidden = yes + + popup_on_receive = yes + pause_on_receive = yes + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + #Small Tribute + send_option = { + flag = small_herd_tribute + + is_valid = { + scope:actor = { + domicile ?= { + herd >= { + value = { + add = small_herd_tribute_value + if = { + limit = { has_variable = offered_herd_value } + add = var:offered_herd_value + } + } + } + } + } + } + } + + #Adequate Tribute + send_option = { + flag = adequate_herd_tribute + + is_valid = { + scope:actor = { + domicile ?= { + herd >= { + value = { + add = adequate_herd_tribute_value + if = { + limit = { has_variable = offered_herd_value } + add = var:offered_herd_value + } + } + } + } + } + } + } + #Excessive Tribute + send_option = { + flag = excessive_herd_tribute + + is_valid = { + scope:actor = { + domicile ?= { + herd >= { + value = { + add = excessive_herd_tribute_value + if = { + limit = { has_variable = offered_herd_value } + add = var:offered_herd_value + } + } + } + } + } + } + } + + on_accept = { + scope:actor = { + #Herd + switch = { + trigger = yes + scope:small_herd_tribute ?= { + #Define how much herd it is + set_variable = { + name = tribute_mission_type + value = flag:small_herd_tribute + } + #set_or_change_offered_tribute_value_effect = { #Herd value scale by era shenanigans here + # TYPE = herd + # VALUE = small_herd_tribute_value + #} + set_variable = { + name = offered_herd_value + value = domicile.small_herd_tribute_value + } + + custom_tooltip = tribute_mission_herd_interaction.small_reserved_herd + } + scope:adequate_herd_tribute ?= { + #Define how much herd it is + set_variable = { + name = tribute_mission_type + value = flag:adequate_herd_tribute + } + #set_or_change_offered_tribute_value_effect = { + # TYPE = herd + # VALUE = adequate_herd_tribute_value + #} + set_variable = { + name = offered_herd_value + value = domicile.adequate_herd_tribute_value + } + + custom_tooltip = tribute_mission_herd_interaction.adequate_reserved_herd + } + scope:excessive_herd_tribute ?= { + #Define how much herd it is + set_variable = { + name = tribute_mission_type + value = flag:excessive_herd_tribute + } + #set_or_change_offered_tribute_value_effect = { + # TYPE = herd + # VALUE = excessive_herd_tribute_value + #} + set_variable = { + name = offered_herd_value + value = domicile.excessive_herd_tribute_value + } + + custom_tooltip = tribute_mission_herd_interaction.excessive_reserved_herd + } + } + + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = yes + + ai_will_do = { + base = 50 + } +} + +tribute_mission_artifact_interaction = { + hidden = yes + + target_type = artifact + target_filter = actor_artifacts + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked_artifact = { + scope:target = { + is_suitable_artifact_tribute_trigger = yes + } + } + + on_accept = { + scope:target = { + set_variable = is_tribute_mission_artifact + } + scope:actor = { + #Save the Artifact + set_variable = { + name = tribute_mission_type + value = flag:artifact_tribute + } + set_variable = { + name = offered_artifact + value = scope:target + } + custom_tooltip = tribute_mission_artifact_interaction.tooltip + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = { + OR = { + scope:actor = { subject_standing >= 0 } + scope:recipient = { is_ai = no } + } + } + + ai_accept = { + base = 0 + modifier = { + add = 100 + desc = ARTIFACT_REASON + } + modifier = { + add = -80 + NOT = { + can_equip_artifact = scope:target + } + desc = ARTIFACT_NOT_EQUIPPABLE_REASON + } + modifier = { + add = -40 + NOT = { + can_benefit_from_artifact = scope:target + } + desc = ARTIFACT_NOT_BENEFIT_REASON + } + modifier = { + add = -500 + scope:target = { + has_variable = unwanted_artifact + } + #No harm in reusing the wording + desc = ARTIFACT_CURSED_REASON + } + modifier = { + add = -1000 + scope:target = { + has_variable = cursed_artifact + } + desc = ARTIFACT_CURSED_REASON + } + modifier = { + add = 100 + exists = scope:target.var:banner_dynasty + exists = scope:recipient.dynasty + scope:recipient = scope:target.var:banner_dynasty.dynast + desc = ARTIFACT_DYNASTY_BANNER_REASON + } + modifier = { + add = -200 + OR = { + exists = scope:target.var:banner_dynasty + exists = scope:target.var:banner_house + } + exists = scope:recipient.house + trigger_if = { + limit = { exists = scope:target.var:banner_dynasty } + scope:target.var:banner_dynasty != scope:recipient.dynasty + } + trigger_else = { + scope:target.var:banner_house != scope:recipient.house + } + desc = ARTIFACT_USELESS_BANNER_REASON + } + } + + ai_will_do = { + base = 50 + } +} + +tribute_mission_concubine_interaction = { + hidden = yes + + populate_recipient_list = { + scope:actor = { + every_courtier_or_guest = { + limit = { + can_be_offered_as_concubine_to_character_trigger = { + GIVER = scope:actor + CHARACTER = scope:actor.overlord + } + has_any_disease_trigger = no + has_easily_mocked_physical_attribute_trigger = no + } + add_to_list = characters + } + } + } + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked = { + is_adult = yes + } + + auto_accept = { + OR = { + scope:actor = { subject_standing >= 0 } + scope:recipient = { is_ai = no } + } + } + + on_accept = { + scope:actor = { + #Save the concubine + set_variable = { + name = tribute_mission_type + value = flag:concubine_tribute + } + set_variable = { + name = offered_concubine + value = scope:secondary_recipient + } + scope:secondary_recipient = { + add_character_flag = { + flag = cannot_be_diarch # just enough to make sure they don't succeed to the diarchy while en route + years = 2 + } + } + custom_tooltip = tribute_mission_concubine_interaction.tooltip + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + ai_accept = { + base = 50 + + modifier = { + add = { + value = 50 + multiply = scope:secondary_recipient.num_of_good_genetic_traits + } + scope:secondary_recipient = { + num_of_good_genetic_traits > 0 + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_POSITIVE_TRAIT_REASON + } + + modifier = { + add = { + value = 50 + } + scope:secondary_recipient = { + is_lowborn = no + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_DYNASTY_PRESTIGE_REASON_NOBLE + } + + modifier = { + add = { + value = -50 + multiply = scope:secondary_recipient.num_of_bad_genetic_traits + } + scope:secondary_recipient = { + OR = { + num_of_bad_genetic_traits > 0 + } + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_NEGATIVE_TRAIT_REASON + } + + modifier = { + add = { + value = -50 + } + scope:secondary_recipient = { + is_lowborn = yes + num_of_good_genetic_traits = 0 + trigger_if = { + limit = { + is_female = yes + } + is_aging_character = no + } + } + desc = AI_DYNASTY_PRESTIGE_REASON_LOWBORN_NO_POSITIVE_TRAIT + } + + opinion_modifier = { # Opinion of you + who = scope:recipient + opinion_target = scope:actor + multiplier = 1.0 + desc = AI_OPINION_REASON + } + + opinion_modifier = { # Opinion of concubine + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = 0.25 + desc = AI_OPINION_REASON + } + + compare_modifier = { # Recipient is reluctant to marry old women (procreation is a key factor) + trigger = { + scope:secondary_recipient = { + is_young_character = no + is_female = yes + } + } + target = scope:secondary_recipient + value = age + multiplier = -5.0 + step = 1 + offset = -29 + desc = MARRY_AGE + } + + modifier = { # A Recipient is unwilling to take a same-sex concubine if their faith doesn't support it + add = -1000 + + scope:recipient = { + allowed_to_marry_same_sex_trigger = no + sex_same_as = scope:secondary_recipient + } + desc = SAME_SEX_MARRIAGE_FAITH_REASON_RECIPIENT + } + + modifier = { # Unwilling if they don't have a batch of kids and opposite sex consorts to handle that situation + add = -200 + scope:recipient = { + allowed_to_marry_same_sex_trigger = yes + sex_same_as = scope:secondary_recipient + trigger_if = { + limit = { + NOT = { + any_consort = { + can_have_children_with = { CHARACTER = scope:recipient } + fertility > 0.1 + } + } + } + any_child = { is_player_heir_of = root } + } + trigger_else = { + always = no + } + } + desc = AI_NO_FERTILITY_REASON + } + + modifier = { + add = 50 + scope:recipient = { + is_attracted_to_gender_of = scope:secondary_recipient + } + desc = AI_ATTRACTION_REASON + } + + #More/Less likely based on difference in rank between actor and recipient + modifier = { + add = 20 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -20 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -250 + scope:secondary_recipient = { + has_std_trigger = yes + } + desc = AI_STD_REASON + } + modifier = { + add = -250 + scope:secondary_recipient = { + has_epidemic_disease_trigger = yes + } + desc = AI_CONTAGIOUS_REASON + } + modifier = { + add = -5000 + scope:secondary_recipient = { + fertility <= 0 + } + desc = AI_FERTILITY_REASON + } + + # Unity modifiers + evaluate_action_increasing_house_unity = { + VALUE = 100 + } + } + + ai_will_do = { + base = 50 + } +} + +tribute_mission_eunuch_interaction = { + hidden = yes + + populate_recipient_list = { + scope:actor = { + every_courtier = { + limit = { + tribute_mission_is_available_eunuch_trigger = yes + NAND = { + faith = { has_doctrine = doctrine_theocracy_temporal } + this = scope:actor.cp:councillor_court_chaplain + } + } + add_to_list = characters + } + } + } + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked = { + has_any_disease_trigger = no + } + + auto_accept = { + OR = { + scope:actor = { subject_standing >= 0 } + scope:recipient = { is_ai = no } + } + } + + on_accept = { + scope:actor = { + #Save the eunuch + set_variable = { + name = tribute_mission_type + value = flag:eunuch_tribute + } + set_variable = { + name = offered_eunuch + value = scope:secondary_recipient + } + custom_tooltip = tribute_mission_eunuch_interaction.tooltip + stress_impact = { + compassionate = medium_stress_impact_gain + sadistic = minor_stress_impact_loss + } + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + scope:secondary_recipient = { + if = { + limit = { is_eunuch_trigger = no } + add_opinion = { + modifier = slated_for_castration_opinion + target = scope:actor + opinion = -50 + } + custom_tooltip = tribute_mission_eunuch_interaction.slated_for_castration + #Escape or no escape? + hidden_effect = { + random_list = { + 30 = { + modifier = { + has_trait = brave + add = 10 + } + modifier = { + has_trait = wrathful + add = 10 + } + modifier = { + add = prowess + } + #I'm outta here! + add_character_flag = tribute_mission_attempt_escape + scope:actor = { + trigger_event = { + id = tribute_mission.9760 + days = { 10 20 } + } + } + } + 70 = { + modifier = { + has_trait = craven + add = 10 + } + modifier = { + has_trait = lazy + add = 10 + } + #No escape + } + } + } + } + } + } + + ai_accept = { + base = -50 + ######### OPINION OF TRIBUTARY + opinion_modifier = { + who = scope:recipient + opinion_target = scope:actor + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ######### OPINION OF EUNUCH + opinion_modifier = { + who = scope:recipient + opinion_target = scope:secondary_recipient + multiplier = 0.5 + desc = AI_OPINION_REASON + } + ######## EUNUCH AGE + modifier = { + add = { + value = 50 + subtract = scope:secondary_recipient.age + } + desc = AI_REASON_EUNUCH_AGE + } + ######## EUNUCH SKILLS + modifier = { + add = { + add = scope:secondary_recipient.diplomacy + add = scope:secondary_recipient.intrigue + add = scope:secondary_recipient.stewardship + add = scope:secondary_recipient.martial + add = scope:secondary_recipient.learning + } + desc = AI_REASON_EUNUCH_SKILLS + } + ######## EUNUCH SKILLS + modifier = { + scope:secondary_recipient = { + has_trait = beardless_eunuch + } + add = 25 + desc = AI_REASON_BEARDLESS_EUNUCH + } + } + + ai_will_do = { + base = 50 + } +} + +#Player only +tribute_mission_bunga_mas_interaction = { + hidden = yes + + target_type = artifact + target_filter = actor_artifacts + + ai_min_reply_days = 0 + ai_max_reply_days = 0 + + can_be_picked_artifact = { + scope:target = { var:bunga_mas_created_by ?= scope:actor } + } + + on_accept = { + scope:target = { + set_variable = is_tribute_mission_artifact + } + scope:actor = { + #Save the Artifact + set_variable = { + name = tribute_mission_type + value = flag:bunga_mas_tribute + } + set_variable = { + name = offered_bunga_mas + value = scope:target + } + custom_tooltip = tribute_mission_bunga_mas_interaction.tooltip + #Some Mandala piety + show_as_tooltip = { tribute_mission_mandala_piety_effect = yes } + + #Travel + tribute_mission_set_up_tribute_travel_effect = yes + } + } + + auto_accept = { + always = yes + } + + ai_accept = { + base = 100 + } + + ai_will_do = { + base = 50 + } +} diff --git a/common/scripted_triggers/00_marriage_triggers.txt b/common/scripted_triggers/00_marriage_triggers.txt index e715eeda..16451d34 100644 --- a/common/scripted_triggers/00_marriage_triggers.txt +++ b/common/scripted_triggers/00_marriage_triggers.txt @@ -30,7 +30,7 @@ can_marry_common_trigger = { } is_leading_faction_type = peasant_faction is_leading_faction_type = populist_faction - government_has_flag = government_is_herder + government_has_flag = government_is_true_herder } } From 0c3f18238293bbc664d3570998ca99d8848ac547 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sat, 14 Mar 2026 22:13:51 +0000 Subject: [PATCH 13/52] Update surround_mask.dds --- gfx/map/surround_map/surround_mask.dds | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gfx/map/surround_map/surround_mask.dds b/gfx/map/surround_map/surround_mask.dds index e6fccc2d..ff477c1e 100644 --- a/gfx/map/surround_map/surround_mask.dds +++ b/gfx/map/surround_map/surround_mask.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:946be666973a60b22ab14e6adc5b764363e1c21111b5c5267f610a23e7307f23 -size 266 +oid sha256:b57d1c7fec0b8f5939a7b927573d4b8f6d064659d2ed2ceef28b935f0efc5f68 +size 11184976 From 8d683ace6de94e60f9ec9509a7bf10159139045f Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 15 Mar 2026 04:37:44 +0000 Subject: [PATCH 14/52] many fixes and also mural crowns --- .../NEOW_minority_community_buildings.txt | 66 +- common/governments/00_government_types.txt | 15 +- common/legitimacy/00_legitimacy.txt | 9 +- common/on_action/title_on_actions.txt | 158 ++ .../succession_election/04_saxon_elective.txt | 24 + .../mpo_the_great_steppe_events.txt | 425 +++ .../coat_of_arms/Mural_crown_kingdom_115.dds | 3 - .../coat_of_arms/Mural_crown_kingdom_28.dds | 3 - .../coat_of_arms/Mural_crown_kingdom_44.dds | 3 - .../coat_of_arms/Mural_crown_kingdom_62.dds | 3 - .../coat_of_arms/Mural_crown_kingdom_86.dds | 3 - .../coat_of_arms/rep_crown_strip_115.dds | 3 + .../coat_of_arms/rep_crown_strip_28.dds | 3 + .../coat_of_arms/rep_crown_strip_44.dds | 3 + .../coat_of_arms/rep_crown_strip_62.dds | 3 + .../coat_of_arms/rep_crown_strip_86.dds | 3 + gfx/map/terrain/plains_01_diffuse.dds | 3 + gfx/map/terrain/plains_01_noisy_diffuse.dds | 3 + gfx/map/terrain/plains_01_rough_diffuse.dds | 3 + gui/debug/window_component_library.gui | 2435 +++++++++++++++++ gui/shared/coat_of_arms.gui | 509 +++- 21 files changed, 3594 insertions(+), 86 deletions(-) create mode 100644 events/situation_events/mpo_the_great_steppe_events.txt delete mode 100644 gfx/interface/coat_of_arms/Mural_crown_kingdom_115.dds delete mode 100644 gfx/interface/coat_of_arms/Mural_crown_kingdom_28.dds delete mode 100644 gfx/interface/coat_of_arms/Mural_crown_kingdom_44.dds delete mode 100644 gfx/interface/coat_of_arms/Mural_crown_kingdom_62.dds delete mode 100644 gfx/interface/coat_of_arms/Mural_crown_kingdom_86.dds create mode 100644 gfx/interface/coat_of_arms/rep_crown_strip_115.dds create mode 100644 gfx/interface/coat_of_arms/rep_crown_strip_28.dds create mode 100644 gfx/interface/coat_of_arms/rep_crown_strip_44.dds create mode 100644 gfx/interface/coat_of_arms/rep_crown_strip_62.dds create mode 100644 gfx/interface/coat_of_arms/rep_crown_strip_86.dds create mode 100644 gfx/map/terrain/plains_01_diffuse.dds create mode 100644 gfx/map/terrain/plains_01_noisy_diffuse.dds create mode 100644 gfx/map/terrain/plains_01_rough_diffuse.dds create mode 100644 gui/debug/window_component_library.gui diff --git a/common/domiciles/buildings/NEOW_minority_community_buildings.txt b/common/domiciles/buildings/NEOW_minority_community_buildings.txt index e0d0b1b9..8fd4fff6 100644 --- a/common/domiciles/buildings/NEOW_minority_community_buildings.txt +++ b/common/domiciles/buildings/NEOW_minority_community_buildings.txt @@ -4175,9 +4175,6 @@ communal_gardens_leisure_04 = { allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_03 - can_construct = { - estate_can_construct_communal_gardens_leisure_04_trigger = yes - } cost = { gold = { @@ -4305,10 +4302,6 @@ communal_gardens_leisure_05 = { allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_leisure_04 - can_construct = { - estate_can_construct_communal_gardens_leisure_05_trigger = yes - } - cost = { gold = { value = estate_external_building_normal_cost_tier_5_value @@ -4435,9 +4428,6 @@ communal_gardens_leisure_06 = { allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_leisure_05 - can_construct = { - estate_can_construct_communal_gardens_leisure_06_trigger = yes - } cost = { gold = { @@ -4567,9 +4557,6 @@ communal_gardens_fruit_04 = { allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_03 - can_construct = { - estate_can_construct_communal_gardens_fruit_04_trigger = yes - } cost = { gold = { @@ -4697,9 +4684,6 @@ communal_gardens_fruit_05 = { allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_fruit_04 - can_construct = { - estate_can_construct_communal_gardens_fruit_05_trigger = yes - } cost = { gold = { @@ -4827,9 +4811,6 @@ communal_gardens_fruit_06 = { allowed_domicile_types = { minority_community farmstead } previous_building = communal_gardens_fruit_05 - can_construct = { - estate_can_construct_communal_gardens_fruit_06_trigger = yes - } cost = { gold = { @@ -7127,7 +7108,10 @@ village_storage_warehouse_03 = { previous_building = village_storage_02 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_02 } + } } cost = { @@ -7213,7 +7197,10 @@ village_storage_warehouse_04 = { previous_building = village_storage_warehouse_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -7301,7 +7288,10 @@ village_storage_granary_03 = { previous_building = village_storage_02 can_construct = { - domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + OR = { + domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -7390,7 +7380,10 @@ village_storage_granary_04 = { previous_building = village_storage_granary_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -8342,7 +8335,10 @@ village_grazing_land_04 = { previous_building = village_grazing_land_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -8456,7 +8452,10 @@ grazing_land_05 = { previous_building = village_grazing_land_04 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_04 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_04 } + } } cost = { @@ -8570,7 +8569,10 @@ grazing_land_06 = { previous_building = grazing_land_05 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_05 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_05 } + } } cost = { @@ -8952,7 +8954,10 @@ village_grain_fields_03 = { previous_building = village_grain_fields_02 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_02 } + } } cost = { @@ -9085,7 +9090,10 @@ village_grain_fields_04 = { previous_building = village_grain_fields_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -9218,7 +9226,10 @@ village_grain_fields_05 = { previous_building = village_grain_fields_04 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_04 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_04 } + } } cost = { @@ -9351,7 +9362,10 @@ village_grain_fields_06 = { previous_building = village_grain_fields_05 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_05 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_05 } + } } cost = { @@ -9640,7 +9654,10 @@ village_rice_field_03 = { previous_building = village_rice_field_02 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_02 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_02 } + } } cost = { @@ -9722,7 +9739,10 @@ village_rice_field_04 = { previous_building = village_rice_field_03 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_03 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_03 } + } } cost = { @@ -9804,7 +9824,10 @@ village_rice_field_05 = { previous_building = village_rice_field_04 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_04 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_04 } + } } cost = { @@ -9886,7 +9909,10 @@ village_rice_field_06 = { previous_building = village_rice_field_05 can_construct = { + OR = { domicile ?= { has_domicile_building_or_higher = minority_community_main_05 } + domicile ?= { has_domicile_building_or_higher = farmstead_main_05 } + } } cost = { diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index b4a5d7e8..3d37e196 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -61,7 +61,7 @@ republic_government = { faith = { has_doctrine = tenet_egalite } - liege = { + any_liege_or_above = { has_government = peasantrepublic_government } } @@ -72,7 +72,7 @@ republic_government = { faith = { has_doctrine = tenet_egalite } - liege = { + any_liege_or_above = { has_government = urbanrepublic_government } } @@ -92,6 +92,8 @@ republic_government = { government_is_republic government_is_settled government_uses_domain_limit + gov_uses_non_crown_coa + government_locked_to_elective } color = hsv{ 0.00 1.00 0.98 } @@ -371,6 +373,7 @@ mercenary_government = { government_uses_crown_authority cannot_be_vassal_or_liege government_is_mercenary + gov_uses_non_crown_coa } mechanic_type = mercenary @@ -570,6 +573,7 @@ landless_adventurer_government = { cannot_be_vassal_or_liege government_is_landless_adventurer has_unique_government_perks + gov_uses_non_crown_coa } mechanic_type = landless_adventurer @@ -636,6 +640,7 @@ landless_minority_government = { landless_can_be_vassalised government_is_landless_minority government_devassalises + gov_uses_non_crown_coa } mechanic_type = landless_adventurer @@ -689,7 +694,7 @@ peasantrepublic_government = { faith = { has_doctrine = tenet_egalite } - liege = { + any_liege_or_above = { has_government = urbanrepublic_government } } @@ -728,6 +733,7 @@ peasantrepublic_government = { government_is_prepublic government_locked_to_elective government_allows_nomad_domicile_titles + gov_uses_non_crown_coa } mechanic_type = feudal @@ -768,7 +774,7 @@ urbanrepublic_government = { faith = { has_doctrine = tenet_egalite } - liege = { + any_liege_or_above = { has_government = urbanrepublic_government } } @@ -811,6 +817,7 @@ urbanrepublic_government = { government_is_urepublic government_locked_to_elective government_allows_nomad_domicile_titles + gov_uses_non_crown_coa } mechanic_type = feudal diff --git a/common/legitimacy/00_legitimacy.txt b/common/legitimacy/00_legitimacy.txt index 10582669..e1c70e61 100644 --- a/common/legitimacy/00_legitimacy.txt +++ b/common/legitimacy/00_legitimacy.txt @@ -530,8 +530,9 @@ hegemon_legitimacy = { mandate_legitimacy = { is_valid = { highest_held_title_tier = tier_hegemony - NOT = { + NOR = { government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic } has_tgp_dlc_trigger = yes has_title = title:h_china @@ -669,8 +670,9 @@ mandate_legitimacy = { nomadic_legitimacy = { is_valid = { has_mpo_dlc_trigger = yes - NOT = { + NOR = { government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic } government_has_flag = government_is_nomadic } @@ -773,8 +775,9 @@ nomadic_legitimacy = { mandala_legitimacy = { is_valid = { has_tgp_dlc_trigger = yes - NOT = { + NOR = { government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic } government_has_flag = government_is_mandala } diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index a6a88054..7c80d530 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -197,6 +197,45 @@ on_title_gain = { # COUNTY-TIER TITLES # ###################### + if = { + limit = { + OR = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + OR = { + primary_title = { + title_tier = barony + } + AND = { + + primary_title = { + is_nomad_title = yes + } + NOT = { + any_liege_or_above = { + exists = yes + primary_title = { + title_tier >= duchy + } + } + } + } + } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + } + scope:title = { + is_nomad_title = yes + } + } + root = { + destroy_title = scope:title + } + } if = { limit = { government_has_flag = government_is_prepublic @@ -2865,6 +2904,45 @@ on_title_gain_inheritance = { diarchy.0113 } effect = { + if = { + limit = { + OR = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + OR = { + primary_title = { + title_tier = barony + } + AND = { + + primary_title = { + is_nomad_title = yes + } + NOT = { + any_liege_or_above = { + exists = yes + primary_title = { + title_tier >= duchy + } + } + } + } + } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + } + scope:title = { + is_nomad_title = yes + } + } + root = { + destroy_title = scope:title + } + } if = { limit = { government_has_flag = government_is_prepublic @@ -2983,6 +3061,45 @@ on_title_gain_usurpation = { events = { } effect = { + if = { + limit = { + OR = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + OR = { + primary_title = { + title_tier = barony + } + AND = { + + primary_title = { + is_nomad_title = yes + } + NOT = { + any_liege_or_above = { + exists = yes + primary_title = { + title_tier >= duchy + } + } + } + } + } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + } + scope:title = { + is_nomad_title = yes + } + } + root = { + destroy_title = scope:title + } + } if = { limit = { government_has_flag = government_is_prepublic @@ -3145,6 +3262,47 @@ on_title_lost = { } effect = { + if = { + limit = { + scope:new_holder = { + OR = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + OR = { + primary_title = { + title_tier = barony + } + AND = { + + primary_title = { + is_nomad_title = yes + } + NOT = { + any_liege_or_above = { + exists = yes + primary_title = { + title_tier => duchy + } + } + } + } + } + NOR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + } + } + scope:title = { + is_nomad_title = yes + } + } + scope:new_holder = { + destroy_title = scope:title + } + } if = { limit = { government = landless_minority_government diff --git a/common/succession_election/04_saxon_elective.txt b/common/succession_election/04_saxon_elective.txt index 4f0332a9..1938e6dc 100644 --- a/common/succession_election/04_saxon_elective.txt +++ b/common/succession_election/04_saxon_elective.txt @@ -125,6 +125,9 @@ saxon_elective = { #Farmer Elective faith = { has_doctrine = tenet_communal_possessions } + any_liege_or_above = { + government_has_flag = government_is_prepublic + } } } } @@ -139,6 +142,9 @@ saxon_elective = { #Farmer Elective faith = { has_doctrine = tenet_communal_possessions } + any_liege_or_above = { + government_has_flag = government_is_prepublic + } } } } @@ -154,6 +160,9 @@ saxon_elective = { #Farmer Elective faith = { has_doctrine = tenet_communal_possessions } + any_liege_or_above = { + government_has_flag = government_is_prepublic + } } } } @@ -171,6 +180,9 @@ saxon_elective = { #Farmer Elective faith = { has_doctrine = tenet_communal_possessions } + any_liege_or_above = { + government_has_flag = government_is_prepublic + } } } } @@ -304,6 +316,9 @@ urban_elective = { #Urban Elective faith = { has_doctrine = tenet_egalite } + any_liege_or_above = { + government_has_flag = government_is_urepublic + } } } } @@ -318,6 +333,9 @@ urban_elective = { #Urban Elective faith = { has_doctrine = tenet_egalite } + any_liege_or_above = { + government_has_flag = government_is_urepublic + } } } } @@ -333,6 +351,9 @@ urban_elective = { #Urban Elective faith = { has_doctrine = tenet_egalite } + any_liege_or_above = { + government_has_flag = government_is_urepublic + } } } } @@ -350,6 +371,9 @@ urban_elective = { #Urban Elective faith = { has_doctrine = tenet_egalite } + any_liege_or_above = { + government_has_flag = government_is_urepublic + } } } } diff --git a/events/situation_events/mpo_the_great_steppe_events.txt b/events/situation_events/mpo_the_great_steppe_events.txt new file mode 100644 index 00000000..c863a427 --- /dev/null +++ b/events/situation_events/mpo_the_great_steppe_events.txt @@ -0,0 +1,425 @@ +namespace = mpo_the_great_steppe + +################################### +# The Great Steppe Intro Event +# 0001 +################################### +mpo_the_great_steppe.0001 = { # Fullscreen Intro Event + type = character_event + window = fullscreen_event + title = mpo_the_great_steppe.0001.t + desc = mpo_the_great_steppe.0001.desc + theme = realm + trigger = { # we need to prevent this from firing for all players when a new player joins in MP + is_ai = no + NOT = { has_variable = mpo_the_great_steppe_events_0001_var } + } + hidden = yes + override_background = { reference = mpo_fullscreen_the_great_steppe } + override_sound = { reference = "event:/DLC/FP2/SFX/UI/fp2_struggle_ui_intro_animate" } + + cooldown = { years = 100 } + + widgets = { + widget = { + gui = "event_window_widget_situation_info_the_great_steppe" + container = "dynamic_content_widget" + controller = situation_info + setup_scope = { situation:the_great_steppe = { save_scope_as = situation } } + } + } + immediate = { + play_music_cue = mx_cue_conquest_of_the_golden_horde + set_variable = mpo_the_great_steppe_events_0001_var + save_scope_value_as = { + name = start + value = yes + } + } + option = { + name = mpo_the_great_steppe.0001.a + clicksound = "event:/DLC/FP2/SFX/UI/fp2_struggle_start_select" + } +} + +# Start Phase +mpo_the_great_steppe.0002 = { + type = character_event + title = mpo_the_great_steppe.0002.t + hidden = yes + desc = { + first_valid = { + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_cold_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.cold_zud + } + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_severe_drought_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.drought + } + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_white_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.white_zud + } + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_warm_nights_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.warm_nights + } + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_abundant_grazing_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.abundant_grazing + } + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_havsarsan_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.havsarsan_zud + } + triggered_desc = { + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_sky_blessing_season + situation_sub_region_has_county = root.capital_county + } + } + } + desc = mpo_the_great_steppe.0002.desc.sky_blessing + } + } + first_valid = { + triggered_desc = { + trigger = { + OR = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_cold_zud_season + situation_sub_region_has_county = root.capital_county + } + } + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_white_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + } + desc = mpo_the_great_steppe.0002.desc.obedience + } + } + } + theme = nomads + override_background = { + trigger = { + has_zud_season_nomadic_capital_root_trigger = yes + } + reference = bp3_steppe_winter + } + override_background = { + trigger = { + has_zud_season_nomadic_capital_root_trigger = no + } + reference = wilderness + } + left_portrait = { + character = root + triggered_animation = { + trigger = { + has_bad_season_nomadic_capital_root_trigger = yes + } + animation = horse_exhausted + } + animation = horse_surveying + camera = camera_event_horse_left + } + lower_right_portrait = { + trigger = { exists = scope:person } + character = scope:person + } + + widgets = { + widget = { + is_shown = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_cold_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + gui = "event_window_widget_vfx_snow" + container = "foreground_shader_vfx_container" + } + + widget = { + is_shown = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_havsarsan_zud_season + situation_sub_region_has_county = root.location.county + } + } + } + gui = "event_window_widget_vfx_snowstorm" + container = "foreground_shader_vfx_container" + } + } + + override_effect_2d = { + reference = fog + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_havsarsan_zud_season + situation_sub_region_has_county = root.location.county + } + } + } + } + override_effect_2d = { + reference = rain + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_havsarsan_zud_season + situation_sub_region_has_county = root.location.county + } + } + } + } + override_effect_2d = { + reference = legend_glow + trigger = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_sky_blessing_season + situation_sub_region_has_county = root.location.county + } + } + } + } + + trigger = { + NOT = { has_variable = steppe_game_start_var } + } + + immediate = { + custom_tooltip = mpo_the_great_steppe.0002.tt + play_music_cue = mx_cue_conquest_of_the_golden_horde + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_warm_nights_season + situation_sub_region_has_county = root.location.county + } + } + } + if = { + limit = { + any_spouse = { + } + } + random_spouse = { + save_scope_as = person + } + } + else_if = { + limit = { + any_courtier_or_guest = { + } + } + random_courtier_or_guest = { + save_scope_as = person + } + } + else = { + hidden_effect = { + create_character = { + template = pool_repopulate_local_flavor + dynasty = none + location = root.location + save_scope_as = person + } + } + } + } + } + + option = { + name = mpo_the_great_steppe.0002.a + if = { + limit = { has_perk = souvenirs_aplenty_perk } + add_internal_flag = special + custom_tooltip = mpo_the_great_steppe_0002_souvenirs_aplenty_tt + every_held_county = { + limit = { + uses_county_fertility = yes + is_landless_type_title = no + } + add_county_modifier = { + modifier = souvenirs_aplenty_perk_county_modifier + years = 10 + } + } + } + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_havsarsan_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + every_held_county = { + limit = { is_landless_type_title = no } + change_county_control = -25 + } + domicile = { + change_herd = { + value = root.domicile.herd + multiply = -0.2 + } + } + } + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_white_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + every_held_county = { + limit = { is_landless_type_title = no } + change_county_control = -25 + } + domicile = { + change_herd = { + value = root.domicile.herd + multiply = -0.1 + } + } + } + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_cold_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + every_held_county = { + limit = { is_landless_type_title = no } + change_county_control = -10 + } + } + + ai_chance = { + base = 100 + } + } +} + +mpo_the_great_steppe.0003 = { + type = character_event + hidden = yes + + immediate = { + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_white_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + every_held_county = { + limit = { + is_landless_type_title = no + uses_county_fertility = yes + } + change_county_fertility = -50 + } + } + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_cold_zud_season + situation_sub_region_has_county = root.capital_county + } + } + } + every_held_county = { + limit = { + is_landless_type_title = no + uses_county_fertility = yes + } + change_county_fertility = -25 + } + } + if = { + limit = { + any_character_situation = { + any_situation_sub_region = { + sub_region_current_phase = situation_steppe_severe_drought_season + situation_sub_region_has_county = root.capital_county + } + } + } + every_held_county = { + limit = { + is_landless_type_title = no + uses_county_fertility = yes + } + change_county_fertility = -10 + } + } + } +} \ No newline at end of file diff --git a/gfx/interface/coat_of_arms/Mural_crown_kingdom_115.dds b/gfx/interface/coat_of_arms/Mural_crown_kingdom_115.dds deleted file mode 100644 index 00e8f6f4..00000000 --- a/gfx/interface/coat_of_arms/Mural_crown_kingdom_115.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa0cbac3fb325057cf3e65f179c004f3ba387951a1c7d70eab914d66e9e9114a -size 5248 diff --git a/gfx/interface/coat_of_arms/Mural_crown_kingdom_28.dds b/gfx/interface/coat_of_arms/Mural_crown_kingdom_28.dds deleted file mode 100644 index 2073b6f1..00000000 --- a/gfx/interface/coat_of_arms/Mural_crown_kingdom_28.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fe096468b7de636949c451602525eff1f1783619a1ba2e528e4a5642c7d01a29 -size 448 diff --git a/gfx/interface/coat_of_arms/Mural_crown_kingdom_44.dds b/gfx/interface/coat_of_arms/Mural_crown_kingdom_44.dds deleted file mode 100644 index 75bc5f5c..00000000 --- a/gfx/interface/coat_of_arms/Mural_crown_kingdom_44.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0355960883474b06d8edfd0402f3d1ca01edf60c77608b97e3230856e9dd3168 -size 1064 diff --git a/gfx/interface/coat_of_arms/Mural_crown_kingdom_62.dds b/gfx/interface/coat_of_arms/Mural_crown_kingdom_62.dds deleted file mode 100644 index 68697cc1..00000000 --- a/gfx/interface/coat_of_arms/Mural_crown_kingdom_62.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57d7912e5a3af99fa82a141326eb720ceb42e698466d279051bdb160300fccd7 -size 1408 diff --git a/gfx/interface/coat_of_arms/Mural_crown_kingdom_86.dds b/gfx/interface/coat_of_arms/Mural_crown_kingdom_86.dds deleted file mode 100644 index e748ed0e..00000000 --- a/gfx/interface/coat_of_arms/Mural_crown_kingdom_86.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ccdcd11602fb17693c74a5c704392ed9c3e8f95ac5f3254978d1f515caa59e7 -size 3008 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_115.dds b/gfx/interface/coat_of_arms/rep_crown_strip_115.dds new file mode 100644 index 00000000..1eeb6622 --- /dev/null +++ b/gfx/interface/coat_of_arms/rep_crown_strip_115.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c873b2a46e1982c53092e0751401da7172140c3f7817ebc1ce737fd178bfd4d +size 96240 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_28.dds b/gfx/interface/coat_of_arms/rep_crown_strip_28.dds new file mode 100644 index 00000000..cd635127 --- /dev/null +++ b/gfx/interface/coat_of_arms/rep_crown_strip_28.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc33570a93b54891a5edbbe482117f9f6fa77d663a516d16c6d9ca1efe177842 +size 7536 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_44.dds b/gfx/interface/coat_of_arms/rep_crown_strip_44.dds new file mode 100644 index 00000000..bc40ea57 --- /dev/null +++ b/gfx/interface/coat_of_arms/rep_crown_strip_44.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0144365b17ad8457fe29a35dfe3407fb01e6daff079376043ab5a706deb8339a +size 15856 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_62.dds b/gfx/interface/coat_of_arms/rep_crown_strip_62.dds new file mode 100644 index 00000000..60be11d3 --- /dev/null +++ b/gfx/interface/coat_of_arms/rep_crown_strip_62.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eea9cce81c3bfa2ed8402124228c22a836c9d29369dde469aea42817b0646c +size 24560 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_86.dds b/gfx/interface/coat_of_arms/rep_crown_strip_86.dds new file mode 100644 index 00000000..51b362e9 --- /dev/null +++ b/gfx/interface/coat_of_arms/rep_crown_strip_86.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a746fa25400f75ca333dbb1f27fa745703e17013a3921d2fe4504d353d2c6b1a +size 54944 diff --git a/gfx/map/terrain/plains_01_diffuse.dds b/gfx/map/terrain/plains_01_diffuse.dds new file mode 100644 index 00000000..32c77477 --- /dev/null +++ b/gfx/map/terrain/plains_01_diffuse.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5166cf0d49f17f8a19e39a4c7b33fda2b4b2b7da53b7208d54397a79f99d7ec5 +size 1398256 diff --git a/gfx/map/terrain/plains_01_noisy_diffuse.dds b/gfx/map/terrain/plains_01_noisy_diffuse.dds new file mode 100644 index 00000000..9d1bf597 --- /dev/null +++ b/gfx/map/terrain/plains_01_noisy_diffuse.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8e8232c6e6e0a78ae6a61c35192cc064485de7cf05eb3dbdf517b4799d37526 +size 1398256 diff --git a/gfx/map/terrain/plains_01_rough_diffuse.dds b/gfx/map/terrain/plains_01_rough_diffuse.dds new file mode 100644 index 00000000..ffa1dbf5 --- /dev/null +++ b/gfx/map/terrain/plains_01_rough_diffuse.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80233e58aa4209d1afab216660c7aa1a61e7bf4777263d89c2cc928caf1bf895 +size 1398256 diff --git a/gui/debug/window_component_library.gui b/gui/debug/window_component_library.gui new file mode 100644 index 00000000..b2e86644 --- /dev/null +++ b/gui/debug/window_component_library.gui @@ -0,0 +1,2435 @@ +window = { + name = "component_library_window" + parentanchor = center + size = { 1400 950 } + layer = windows_layer + + using = Window_Background + using = Window_Decoration + + state = { + name = _show + using = Animation_FadeIn_Quick + + on_start = "[GetVariableSystem.Set( 'ui_library_tabs', 'action_buttons' )]" + } + + vbox = { + using = Window_Margins + + header_pattern = { + layoutpolicy_horizontal = expanding + + blockoverride "header_text" + { + raw_text = "UI Components" + } + + blockoverride "button_close" + { + onclick = "[ExecuteConsoleCommand('gui.clearwidgets')]" + } + + button_checkbox_label = { + parentanchor = vcenter + position = { 10 0 } + + onclick = "[GetVariableSystem.Toggle( 'ui_library_down_state')]" + blockoverride "checkbox" + { + + checked = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + blockoverride "text" + { + raw_text = "Down State" + } + } + + button_tertiary = { + parentanchor = vcenter + position = { 1050 0 } + size = { 200 40 } + layoutpolicy_horizontal = expanding + raw_text = "Spawn a Test Window" + raw_tooltip = "Window for GUI testing (test_gui.gui)" + + onclick = "[ExecuteConsoleCommand('gui.CreateWidget gui/debug/test_gui.gui test_window')]" + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Action Buttons" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'action_buttons' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'action_buttons' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Other Input" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'other_inputs' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'other_inputs' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "View Controls" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'view_controls' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'view_controls' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Selectors" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'selectors' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'selectors' )]" + } + button_tab = { + layoutpolicy_horizontal = expanding + + raw_text = "Separators" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'separators' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'separators' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + + raw_text = "Indicators" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'indicators' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'indicators' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + + raw_text = "Text Formats" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'text_formats' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'text_formats' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Portraits" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'portraits' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'portraits' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Coat of Arms" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'coas' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'coas' )]" + } + + #button_tab = { + # layoutpolicy_horizontal = expanding + # + # raw_text = "Tooltips" + # + # onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'tooltips' )]" + # down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'tooltips' )]" + #} + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Animations" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'animations' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'animations' )]" + } + + button_tab = { + layoutpolicy_horizontal = expanding + raw_text = "Placeholders" + + onclick = "[GetVariableSystem.Set( 'ui_library_tabs', 'placeholders' )]" + down = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'placeholders' )]" + } + } + + scrollbox = { + name = "characters_scroll_area" + layoutpolicy_vertical = expanding + layoutpolicy_horizontal = expanding + + blockoverride "scrollbox_content" { + vbox = { + name = "action_buttons" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'action_buttons' )]" + + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Action buttons represent an action you can DO, that change the game state or applies changes." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Primary Button" + } + + blockoverride "vce_area" + { + button_primary = { + raw_text = "Verb Noun" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + button_primary_big = { + raw_text = "Verb Noun" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "The Primary Action of a View. There should only be at most one of these per view, though not all views need one. It represents the most important action you can take in the view. It should not have an icon, simply a text. The label should contain a verb, and ideally also a noun." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Secondary Button" + } + + blockoverride "vce_area" + { + button_round = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + + button_prison_ransom = { + parentanchor = center + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + button_standard = { + + raw_text = "Verb Noun" + + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + button_standard_big = { + raw_text = "Verb Noun" + + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + } + + blockoverride "vce_desc" + { + raw_text = "Secondary Actions of a View. There can be many of these in a view. To save space, we sometimes use an icon-only version. The label should contain a verb, and ideally also a noun. Currently we use button_standard for this type, but possibly some of the button_standard should really be button_primary or button_tertiary" + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Back Button" + } + + blockoverride "vce_area" + { + button_standard_back = { + raw_text = "Verb Noun" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "This back button type should be used everytime there is a need for a back button, always including the icon to the left." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Tertiary Button" + } + + blockoverride "vce_area" + { + button_me = { + name = "button_me" + block "button_me" { + visible = yes + } + + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + button_tertiary = { + raw_text = "Verb Noun" + + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "Rare and non-recommended Actions. Does not currently have an icon-only version. Could possibly have its own unique look instead of being the same as the frontend button" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Frontend Button" + } + + blockoverride "vce_area" + { + button_frontend = { + raw_text = "Verb Noun" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "Action button for the Main Menu and Ingame Menu parts of the game. The same visual importance as a Secondary Button, but one that looks a bit more flavorful." + } + } + } + + vbox = { + name = "other_inputs" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'other_inputs' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Other forms of input" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "editbox_standard" + } + + blockoverride "vce_area" + { + editbox_standard = {} + } + + blockoverride "vce_desc" + { + raw_text = "Regular editbox, allows entry of text on one or more lines" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "editbox_standard_with_label" + } + + blockoverride "vce_area" + { + editbox_standard_with_label = { + blockoverride "editbox_label" + { + raw_text = "Label:" + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Regular editbox, with a label. This is preferrable if there is space. The label is above to make sure there is maximum room for the text itself" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "editbox_search_field" + } + + blockoverride "vce_area" + { + editbox_search_field = { + } + } + + blockoverride "vce_desc" + { + raw_text = "Editbox for searching/filtering" + } + } + } + + vbox = { + name = "view_controls" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'view_controls' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "View Controls hide or show parts of a UI, but they have no direct effect on the game itself." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Tab" + } + + blockoverride "vce_area" + { + button_tab = { + raw_text = "Noun" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + } + + blockoverride "vce_desc" + { + raw_text = "A tab, gives a mutually exclusive choice of what subview to show. The text on them should simply be a Noun." + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Vertical Tab" + } + + blockoverride "vce_area" + { + button_tab_vertical = { + raw_text = "Noun" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + } + + blockoverride "vce_desc" + { + raw_text = "Works the same as a tab, but the tabs are arranged vertically instead. Currently, the only way to toggle it 'selected' is to change the upframe property, instead of using the down property as you would expect." + } + + } + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Sidepanel Open" + } + + blockoverride "vce_area" + { + button_sidepanel_right = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + + blockoverride "button_text" + { + raw_text = "View Blablablas" + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Opens a sidepanel in a window. Has two versions, one opens a panel to the right, another to the left." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Expand/Collapse Heading" + } + + blockoverride "vce_area" + { + + + } + + blockoverride "vce_desc" + { + raw_text = "A heading you can click to expand/collapse what is under it." + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Window Controls" + } + + blockoverride "vce_area" + { + buttons_window_control = { + blockoverride "button_go_to" { + visible = yes + } + + blockoverride "button_pin" + { + visible = yes + } + + blockoverride "button_me" { + visible = yes + } + + blockoverride "button_back" { + visible = yes + } + + blockoverride "button_minimize" { + visible = yes + } + } + + } + + blockoverride "vce_desc" + { + raw_text = "Controls in top right that acts on the UI itself, such as closing, minimizing, or pinning the UI for opening at a later time." + } + + } + } + + vbox = { + name = "selectors" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'selectors' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Selectors allow the player to choose among a few options. Currently we make no distinction between if this selection affects the gamestate or just what is shown/hidden, or if it is applied immediately or requires some confirmation." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Checkbox" + } + + blockoverride "vce_area" + { + button_checkbox_label = {} + } + + blockoverride "vce_desc" + { + raw_text = "Used to choose between two states. Ideally a checkbox should always have a label, though we sometimes use button_checkbox if there is no room. Some Jomini interfaces do not use button_checkbox_label, mostly because it is too much work to change it." + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Segmented Control" + } + + blockoverride "vce_area" + { + + + } + + blockoverride "vce_desc" + { + text = "" + } + + } + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Radiobutton" + } + + blockoverride "vce_area" + { + button_radio_label = {} + + } + + blockoverride "vce_desc" + { + raw_text = "Used to pick one of many options. We don't use this gui type currently because all our radiobuttons are in jomini" + } + + } + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "dropdown_menu_standard" + } + + blockoverride "vce_area" + { + dropdown_menu_standard = { + + + blockoverride "dropdown_properties" + { + datamodel = "[GetPlayer.GetCourt]" + } + + blockoverride "dropdown_size" + { + size = { 300 32 } + } + + blockoverride "dropdown_list_maxsize" + { + maximumsize = { 291 250 } + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Used to pick one from many options. Use this if space is limited. Note that you NEED a datamodel otherwise it will not even appear" + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "widget_game_rule_option" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "this type spawns errors..." + } + # widget_game_rule_option = { + # } + } + + blockoverride "vce_desc" + { + raw_text = "Stepper only used in game rules, can be used in more places if needed" + } + } + } + + vbox = { + name = "portraits" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'portraits' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Portraits are essentially Object Buttons for Characters, but we use a few different size so it nice to see them all in one place." + } + } + + hbox_text_entry = { + visible = "[Not(IsInGame)]" + blockoverride "hte_text" + { + raw_text = "You have to be in-game to see portraits and coat of arms" + } + } + + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "portrait_head_small" + } + + blockoverride "vce_area" + { + + portrait_head_small = { + datacontext = "[GetPlayer]" + } + } + + blockoverride "vce_desc" + { + raw_text = "Smallest size, for compact list entries" + } + } + + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "portrait_head" + } + + blockoverride "vce_area" + { + portrait_head = { + datacontext = "[GetPlayer.GetPlayerHeir]" + } + + } + + blockoverride "vce_desc" + { + text = "" + } + + } + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "portrait_shoulders" + } + + blockoverride "vce_area" + { + portrait_shoulders = { + datacontext = "[GetPlayer]" + } + + } + + blockoverride "vce_desc" + { + text = "" + } + + } + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "portrait_torso" + } + + blockoverride "vce_area" + { + portrait_torso = { + datacontext = "[GetPlayer.GetPlayerHeir]" + } + + } + + blockoverride "vce_desc" + { + text = "" + } + + } + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "portrait_body" + } + + blockoverride "vce_area" + { + portrait_body = { + datacontext = "[GetPlayer]" + } + + } + + blockoverride "vce_desc" + { + raw_text = "For full flavor where we have the room" + } + + } + + } + + vbox = { + name = "coas" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'coas' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Coat of Arms are essentially Object Buttons for Titles, Realms, Houses and Dynasties, but we use a few different size so it nice to see them all in one place." + } + } + + hbox_text_entry = { + visible = "[Not(IsInGame)]" + blockoverride "hte_text" + { + raw_text = "You have to be in-game to see portraits and coat of arms" + } + } + + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "Realm Coat of Arms" + } + + blockoverride "vce_area" + { + hbox = { + vbox = { + coa_realm_tiny_crown = { + datacontext = "[GetPlayer]" + } + text_single = { + raw_text = "tiny" + } + } + + vbox = { + coa_realm_small_crown = { + datacontext = "[GetPlayer]" + } + text_single = { + raw_text = "small" + } + } + + vbox = { + coa_realm_medium_crown = { + datacontext = "[GetPlayer]" + } + text_single = { + raw_text = "medium" + } + } + + vbox = { + coa_realm_big_crown = { + datacontext = "[GetPlayer]" + } + text_single = { + raw_text = "big" + } + } + + vbox = { + coa_realm_huge_crown = { + datacontext = "[GetPlayer]" + } + text_single = { + raw_text = "huge" + } + } + } + + } + + blockoverride "vce_desc" + { + raw_text = "Represents a Realm. Has an suffix for '_crown' if a crown should be added so that the Rank of the Realm is clearer." + } + + } + + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "Title Coat of Arms" + } + + blockoverride "vce_area" + { + hbox = { + vbox = { + coa_title_tiny_crown = { + datacontext = "[GetPlayer.GetPrimaryTitle]" + } + text_single = { + raw_text = "tiny" + } + } + + vbox = { + coa_title_small_crown = { + datacontext = "[GetPlayer.GetPrimaryTitle]" + } + text_single = { + raw_text = "small" + } + } + + vbox = { + coa_title_medium_crown = { + datacontext = "[GetPlayer.GetPrimaryTitle]" + } + text_single = { + raw_text = "medium" + } + } + + vbox = { + coa_title_big_crown = { + datacontext = "[GetPlayer.GetPrimaryTitle]" + } + text_single = { + raw_text = "big" + } + } + } + + } + + blockoverride "vce_desc" + { + raw_text = "Represents a Title. Has an suffix for '_crown' if a crown should be added so that the Rank of the Title is clearer." + } + + } + + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "House Coat of Arms" + } + + blockoverride "vce_area" + { + hbox = { + vbox = { + coa_house_tiny = { + datacontext = "[GetPlayer.GetHouse]" + } + text_single = { + raw_text = "tiny" + } + } + + vbox = { + coa_house_small = { + datacontext = "[GetPlayer.GetHouse]" + } + text_single = { + raw_text = "small" + } + } + + vbox = { + coa_house_medium = { + datacontext = "[GetPlayer.GetHouse]" + } + text_single = { + raw_text = "medium" + } + } + + vbox = { + coa_house_big = { + datacontext = "[GetPlayer.GetHouse]" + } + text_single = { + raw_text = "big" + } + } + + vbox = { + coa_house_huge = { + datacontext = "[GetPlayer.GetHouse]" + } + text_single = { + raw_text = "huge" + } + } + } + + } + + blockoverride "vce_desc" + { + raw_text = "Represents a House." + } + + } + + vbox_component_entry = { + visible = "[IsInGame]" + blockoverride "vce_name" + { + raw_text = "Dynasty Coat of Arms" + } + + blockoverride "vce_area" + { + hbox = { + + vbox = { + coa_dynasty_tiny = { + datacontext = "[GetPlayer.GetHouse.GetDynasty]" + } + text_single = { + raw_text = "tiny" + } + } + + vbox = { + coa_dynasty_small = { + datacontext = "[GetPlayer.GetHouse.GetDynasty]" + } + text_single = { + raw_text = "small" + } + } + + vbox = { + coa_dynasty_medium = { + datacontext = "[GetPlayer.GetHouse.GetDynasty]" + } + text_single = { + raw_text = "medium" + } + } + + vbox = { + coa_dynasty_big = { + datacontext = "[GetPlayer.GetHouse.GetDynasty]" + } + text_single = { + raw_text = "big" + } + } + + vbox = { + coa_dynasty_huge = { + datacontext = "[GetPlayer.GetHouse.GetDynasty]" + } + text_single = { + raw_text = "huge" + } + } + } + + } + + blockoverride "vce_desc" + { + raw_text = "Represents a Dynasty." + } + + } + + + + + } + + vbox = { + name = "separators" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'separators' )]" + layoutpolicy_horizontal = expanding + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "text_label_center/left/right" + } + + blockoverride "vce_area" + { + text_label_left = { + layoutpolicy_horizontal = expanding + raw_text = "left" + } + text_label_center = { + layoutpolicy_horizontal = expanding + raw_text = "center" + } + text_label_right = { + layoutpolicy_horizontal = expanding + raw_text = "right" + } + } + + blockoverride "vce_desc" + { + raw_text = "Text Labels (left, right center)" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "divider and divider_light" + } + + blockoverride "vce_area" + { + divider_light = { + layoutpolicy_horizontal = expanding + } + divider = { + layoutpolicy_horizontal = expanding + } + } + + blockoverride "vce_desc" + { + raw_text = "Dividers, can be used both vertically and horizontally" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Area" + } + + blockoverride "vce_area" + { + widget = { + size = { 150 150 } + + background = { + using = Background_Area + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Area_Dark" + } + + blockoverride "vce_area" + { + widget = { + size = { 150 150 } + + background = { + using = Background_Area_Dark + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Area_Light" + } + + blockoverride "vce_area" + { + widget = { + size = { 150 150 } + + background = { + using = Background_Area_Light + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Frame" + } + + blockoverride "vce_area" + { + widget = { + size = { 150 150 } + + background = { + using = Background_Frame + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Area_With_Header" + } + + blockoverride "vce_area" + { + widget = { + size = { 250 150 } + + background = { + using = Background_Area_With_Header + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Area_With_Header_Dark" + } + + blockoverride "vce_area" + { + widget = { + size = { 250 150 } + + background = { + using = Background_Area_With_Header_Dark + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Tab_Area" + } + + blockoverride "vce_area" + { + widget = { + size = { 250 150 } + + background = { + using = Background_Tab_Area + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Background for area under tabs." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Letter" + } + + blockoverride "vce_area" + { + widget = { + size = { 250 150 } + + using = Background_Letter + } + } + + blockoverride "vce_desc" + { + raw_text = "Background" + } + } + } + + vbox = { + name = "indicators" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'indicators' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Indicators are visual elements that show a certain value or percentage. They usually do not have a way for the player to perform an action." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Progressbar" + } + + blockoverride "vce_area" + { + progressbar_standard = { + layoutpolicy_horizontal = expanding + value = 40 + } + + progressbar_standard_transparent = { + layoutpolicy_horizontal = expanding + value = 40 + } + + progressbar_red = { + layoutpolicy_horizontal = expanding + value = 40 + } + + progressbar_green = { + layoutpolicy_horizontal = expanding + value = 40 + } + + progressbar_frozen = { + layoutpolicy_horizontal = expanding + value = 40 + } + + progressbar_frozen_transparent = { + layoutpolicy_horizontal = expanding + value = 40 + } + + } + + blockoverride "vce_desc" + { + raw_text = "Various standard progressbars" + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Relative Bar" + } + + blockoverride "vce_area" + { + + + } + + blockoverride "vce_desc" + { + raw_text = "Like a Progressbar, but instead of indication progress towards some end, instead it shows the relative relation between two things, like the two sides in a Battle." + } + + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Indicator backgrounds" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "Status_Good" + + using = Status_Good + } + + text_single = { + raw_text = "Status_Mixed" + + using = Status_Mixed + } + + text_single = { + raw_text = "Status_Bad" + + using = Status_Bad + } + + text_single = { + raw_text = "Status_Highlight" + + using = Status_Highlight + } + } + + blockoverride "vce_desc" + { + raw_text = "Backgrounds that highlights whether a value is positive, negative, or if we just need to highlight something." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Indicator icons" + } + + blockoverride "vce_area" + { + + hbox = { + spacing = 20 + + hbox = { + icon = { + size = { 40 40 } + texture = "gfx/interface/icons/symbols/icon_alert.dds" + } + + warning_icon = { + size = { 40 40 } + } + } + + hbox = { + icon = { + size = { 40 40 } + texture = "gfx/interface/icons/symbols/icon_check.dds" + } + + icon = { + size = { 40 40 } + texture = "gfx/interface/icons/symbols/icon_cross.dds" + } + } + + hbox = { + icon = { + size = { 40 40 } + texture = "gfx/interface/icons/symbols/icon_arrow_green_down.dds" + mirror = vertical + } + + icon = { + size = { 40 40 } + texture = "gfx/interface/icons/symbols/icon_arrow_red_up.dds" + mirror = vertical + } + + icon = { + size = { 40 40 } + texture = "gfx/interface/icons/symbols/icon_arrow_up.dds" + mirror = vertical + } + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Symbols" + } + } + } + + vbox = { + name = "text_formats" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'text_formats' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Text formats are defined in 'gui/textformatting.gui'. They are named based on their use rather than their look, so we can tweak them easily." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "High Contrast (##high)" + } + + blockoverride "vce_area" + { + + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#high" + } + } + + blockoverride "vce_desc" + { + raw_text = "For text that needs to stand out" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Medium Contrast (##medium)" + } + + blockoverride "vce_area" + { + + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#medium" + } + } + + blockoverride "vce_desc" + { + raw_text = "For most regular text" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Low Contrast (##low)" + } + + blockoverride "vce_area" + { + + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#low" + } + } + + blockoverride "vce_desc" + { + raw_text = "For lowest contrast, mostly for short text and UI elements" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Weak (##weak)" + } + + blockoverride "vce_area" + { + + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#weak" + } + } + + blockoverride "vce_desc" + { + raw_text = "Low contrast longer text that explains something that is not very important. For example, filling out an empty state, or instructing how a mechanic works." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Flavor (##flavor, ##F)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#flavor" + } + } + + blockoverride "vce_desc" + { + raw_text = "For Flavor texts for entities such as Faiths, Men-at-Arms types, etc." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Light background (##light_background)" + } + + blockoverride "vce_area" + { + using = Background_Letter + + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#light_background" + } + } + + blockoverride "vce_desc" + { + raw_text = "For light backgrounds like letter events" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Help (##help)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + default_format = "#help" + } + } + + blockoverride "vce_desc" + { + raw_text = "For hints and tips in Alert/Suggestion/Current Situation Tooltips" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Instruction (##instruction, ##I)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "Shift-click to add to selection" + default_format = "#I" + } + } + + blockoverride "vce_desc" + { + raw_text = "For instructions to the Player (not their Character), either referring to the input controls or asking them to make a choice." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Warning (##warning, ##X)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "@warning_icon!You are a Child" + default_format = "#X" + } + } + + blockoverride "vce_desc" + { + raw_text = "For when things are wrong or buttons are disabled. Should always be paired with the Warning Text Icon" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Alert Trial (##alert_trial)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "@alert_icon!Something might happen..." + default_format = "#alert_trial" + } + } + + blockoverride "vce_desc" + { + raw_text = "Trying this out, to show bad things that will happen in future? Or less severe stuff?" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Value (##value, ##V)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "42" + default_format = "#V" + } + } + + blockoverride "vce_desc" + { + raw_text = "For important values that should stand out. Usually it means the value changes. Supports skimming a page for values." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Negative Value (##negative_value, ##N)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "+42" + default_format = "#N" + } + } + + blockoverride "vce_desc" + { + raw_text = "For 'bad' values, for example if a Character gains Stress. Used by code to color the '+/-' number formatting" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Positive Value (##positive_value, ##P)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "42" + default_format = "#P" + } + } + + blockoverride "vce_desc" + { + raw_text = "For 'good' values, for example if a Character gains Gold. Used by code to color the '+/-' number formatting" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Zero Value (##zero_value, ##Z)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "0" + default_format = "#Z" + } + } + + blockoverride "vce_desc" + { + raw_text = "For values that are neither good nor bad. Used by code to color the '+/-' number formatting" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Clickable (##clickable)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "Start Game" + default_format = "#clickable" + } + } + + blockoverride "vce_desc" + { + raw_text = "For interactible elements such as buttons" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Game Object Link (##game_link, ##L)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "House Canossa" + default_format = "#L" + } + } + + blockoverride "vce_desc" + { + raw_text = "For Game Objects (Characters, Titles, Traits, etc). Hover over the text to get a (dynamic) tooltip of this specific instance" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Game Concept Link (##explanation_link, ##E)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "Vassal" + default_format = "#E" + } + } + + blockoverride "vce_desc" + { + raw_text = "Used for Game Concepts, hover over this text to get a (static) explanation of something in the game." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Game Concept Link, Light background (##explanation_link_light_background, B)" + } + + blockoverride "vce_area" + { + using = Background_Letter + + text_single = { + raw_text = "Vassal" + default_format = "#B" + } + } + + blockoverride "vce_desc" + { + raw_text = "Game Concept Link for light backgrounds such as letter events" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Tooltip Heading (##tooltip_heading, ##T)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "North Sea" + default_format = "#T" + } + } + + blockoverride "vce_desc" + { + raw_text = "Used in text tooltips for the heading that tells the player what they have put their mouse on" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Tooltip Subheading (##tooltip_subheading, ##S)" + } + + blockoverride "vce_area" + { + + + text_single = { + raw_text = "Effects" + default_format = "#S" + } + } + + blockoverride "vce_desc" + { + raw_text = "Some text tooltips are split into multiple segments, each headed by a subheading" + } + } + + + } + + vbox = { + name = "animations" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'animations' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "Animations used for window show and hide transitions." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Animation_FadeIn/Out_Standard" + } + + blockoverride "vce_area" + { + + debug_square = { + size = { 100 100 } + + state = { + name = a + next = b + trigger_on_create = yes + + using = Animation_FadeIn_Standard + delay = 1 + } + + state = { + name = b + next = a + + using = Animation_FadeOut_Standard + delay = 1 + } + } + } + + blockoverride "vce_desc" + { + raw_text = "0.25 second duration" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Animation_FadeIn/Out_Quick" + } + + blockoverride "vce_area" + { + + debug_square = { + size = { 100 100 } + + state = { + name = a + next = b + trigger_on_create = yes + + using = Animation_FadeIn_Quick + delay = 1 + } + + state = { + name = b + next = a + + using = Animation_FadeOut_Quick + delay = 1 + } + } + } + + blockoverride "vce_desc" + { + raw_text = "0.15 second duration" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Animation_Tab_Switch" + } + + blockoverride "vce_area" + { + + widget = { + size = { 100 100 } + + debug_square = { + visible = "[GetVariableSystem.Exists( 'ui_library_tab_switch_example' )]" + size = { 100 100 } + + using = Animation_Tab_Switch + } + + debug_square = { + visible = "[Not(GetVariableSystem.Exists( 'ui_library_tab_switch_example' ))]" + size = { 100 100 } + + using = Animation_Tab_Switch + + texture = "gfx/interface/colors/blue.dds" + } + } + + button_tertiary = { + onclick = "[GetVariableSystem.Toggle( 'ui_library_tab_switch_example' )]" + raw_text = "Test" + } + } + + blockoverride "vce_desc" + { + raw_text = "For switching between tabs or other view modes. Has 0 hide duration to prevent overlap." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Animation_Refresh" + } + + blockoverride "vce_area" + { + + widget = { + size = { 100 100 } + + debug_square = { + size = { 100 100 } + + using = Animation_Tab_Switch + + state = { + name = "ui_library_refresh_animation_test" + using = Animation_Refresh_FadeOut + } + + state = { + using = Animation_Refresh_FadeIn + } + } + } + + button_tertiary = { + onclick = "[PdxGuiTriggerAllAnimations('ui_library_refresh_animation_test')]" + raw_text = "Test" + } + } + + blockoverride "vce_desc" + { + raw_text = "For refreshing window content, ie. selecting between different faiths while the Faith Window is open." + } + } + } + + vbox = { + name = "placeholders" + visible = "[GetVariableSystem.HasValue( 'ui_library_tabs', 'placeholders' )]" + layoutpolicy_horizontal = expanding + + hbox_text_entry = { + blockoverride "hte_text" + { + raw_text = "This tab contains our debug and placeholder assets. You can use these whenever there is art missing or in early development to simply wireframe a UI." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "debug_square" + } + + blockoverride "vce_area" + { + debug_square = {} + } + + blockoverride "vce_desc" + { + raw_text = "Our classic vintage debug_square. This shouldn't have to be used as much anymore but it's there if you need it." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "icon_placeholder" + } + + blockoverride "vce_area" + { + icon_placeholder = { + size = { 30 30 } + } + } + + blockoverride "vce_desc" + { + raw_text = "A placeholder version of an icon which can be used when art isn't made yet. When hooking in icons which have not yet been made by art, simply copy the texture in the gfx/interface/_debug-folder and paste it in the correct game folder. Then change the name to the name specified in the related Jira." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "flat_icon_standard_placeholder" + } + + blockoverride "vce_area" + { + icon_flat_standard_placeholder = { + size = { 30 30 } + } + } + + blockoverride "vce_desc" + { + raw_text = "A placeholder version of an icon_flat_standard which can be used when art isn't made yet. This is just a black icon shape with a texture applied on top of it through script. When hooking in icons which have not yet been made by art, simply copy the texture in the gfx/interface/_debug-folder and paste it in the correct game folder. Then change the name to the name specified in the related Jira." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "button_icon_placeholder" + } + + blockoverride "vce_area" + { + button_icon_placeholder = { + size = { 30 30 } + } + } + + blockoverride "vce_desc" + { + raw_text = "A placeholder version of an icon_flat_standard which can be used when art isn't made yet. To find out when to use this button type go to the Action Buttons tab in this window for more information." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "button_round_placeholder" + } + + blockoverride "vce_area" + { + button_round_placeholder = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + + button_icon_placeholder = { + parentanchor = center + size = { 25 25 } + texture = "gfx/interface/_debug/icon_placeholder_01.dds" + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + } + + blockoverride "vce_desc" + { + raw_text = "A placeholder round button icon which can be used when icon isn't made by art yet. This is very similar to the button_icon type but with the addition of a round frame. To find out when to use this button type go to the Action Buttons tab in this window for more information." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "button_primary_placeholder & button_primary_big_placeholder" + } + + blockoverride "vce_area" + { + button_primary_placeholder = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + button_primary_big_placeholder = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "Placeholder version of our primary button. To find out when to use this button type go to the Action Buttons tab in this window for more information." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "button_standard_placeholder & button_standard_big_placeholder" + } + + blockoverride "vce_area" + { + button_standard_placeholder = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + + button_standard_big_placeholder = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "Placeholder version of our standard button. To find out when to use this button type go to the Action Buttons tab in this window for more information." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "button_tertiary_placeholder" + } + + blockoverride "vce_area" + { + button_tertiary_placeholder = { + down = "[GetVariableSystem.Exists('ui_library_down_state')]" + } + } + + blockoverride "vce_desc" + { + raw_text = "Placeholder version of our tertiary button. To find out when to use this button type go to the Action Buttons tab in this window for more information." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Text_Placeholder & Debug Text Format (##D)" + } + + blockoverride "vce_area" + { + text_single = { + raw_text = "Flygande bäckasiner söka hwila på mjuka tuvor" + using = Text_Placeholder + } + } + + blockoverride "vce_desc" + { + raw_text = "Text template format that can be used on texts to make it pink and communicate it's not final. This can be applied to text inside our types: text_single, text_multi etc. To apply this template to text write: using = Text_Placeholder or use ( default_format = ##D )" + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Background_Frame_Placeholder" + } + + blockoverride "vce_area" + { + widget = { + size = { 100 100 } + + hbox = { + background = { + using = Background_Frame_Placeholder + } + } + } + + icon = { + size = { 200 100 } + + background = { + texture = "gfx/interface/illustrations/dlc/dlc_004.dds" + fittype = centercrop + using = Mask_Rough_Edges + } + + background = { + using = Background_Frame_Placeholder + } + } + } + + blockoverride "vce_desc" + { + raw_text = "A placeholder frame in our debug color. This can be put around a widget of most types to communicate it's a placeholder." + } + } + + vbox_component_entry = { + blockoverride "vce_name" + { + raw_text = "Texture_Placeholder" + } + + blockoverride "vce_area" + { + icon = { + size = { 200 100 } + + background = { + texture = "gfx/interface/illustrations/dlc/dlc_004.dds" + fittype = centercrop + using = Mask_Rough_Edges + using = Texture_Placeholder + } + } + } + + blockoverride "vce_desc" + { + raw_text = "Use the template to turn the whole texture pink if the frame isn't enough to communicate an illustration is just a placeholder." + } + } + } + } + } + } +} + +types ComponentLibrary +{ + type vbox_component_entry = vbox { + layoutpolicy_horizontal = expanding + margin_bottom = 10 + + text_single = { + name = "heading" + layoutpolicy_horizontal = expanding + margin = { 10 5 } + + using = Background_Area_Dark + + using = Font_Size_Medium + align = nobaseline + + block "vce_name" + { + raw_text = "vce_name" + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + vbox = { + min_width = 500 + margin ={ 20 20 } + spacing = 10 + + block "vce_area" + { + + } + } + + hbox = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + margin = { 15 15 } + + background = { + using = Background_Area + } + + vbox = { + layoutpolicy_vertical = expanding + + text_multi = { + name = "desc" + + autoresize = yes + max_width = 700 + + block "vce_desc" + { + raw_text = "vce_desc" + } + } + + expand = {} + } + + expand = {} + } + } + } + + + type hbox_text_entry = hbox { + layoutpolicy_horizontal = expanding + + margin = { 15 15 } + margin_bottom = 25 + + text_multi = { + block "hte_text" + { + raw_text = "hte_text" + } + align = center + autoresize = yes + default_format = "#I" + max_width = 700 + } + } +} diff --git a/gui/shared/coat_of_arms.gui b/gui/shared/coat_of_arms.gui index b48d8904..4b143d13 100644 --- a/gui/shared/coat_of_arms.gui +++ b/gui/shared/coat_of_arms.gui @@ -33,7 +33,22 @@ types CoATypes ## Tiny Realm CoA type coa_realm_tiny_crown = coa_realm_tiny { blockoverride "crown" { - visible = "[And(And(Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder)), Not(Character.GetGovernment.IsType('landless_adventurer_government')))]" + visible = "[Not(Character.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" } } @@ -50,31 +65,37 @@ types CoATypes position = { 0 -24 } icon = { name = "adventurer_top_decor" - visible = "[GovernmentType.IsType('landless_adventurer_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_28.dds" + block "adventurer" { + visible = no + } } icon = { name = "minority_top_decor" - visible = "[GovernmentType.IsType('landless_minority_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_28.dds" + block "minority" { + visible = no + } } icon = { name = "mercenary" - visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/mercenary_topframe_28.dds" + block "mercenary" { + visible = no + } } icon = { name = "holy_order" - visible = "[Character.GetPrimaryTitle.IsHolyOrder]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/holyorder_topframe_28.dds" + block "mercenary" { + visible = no + } } } @@ -93,6 +114,16 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + texture = "gfx/interface/coat_of_arms/rep_crown_strip_28.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 32 22 } + + block "rep_crown" { + visible = no + } + } widget = { visible = "[Character.HasLandedTitles]" @@ -144,7 +175,22 @@ types CoATypes ## Small Realm CoA type coa_realm_small_crown = coa_realm_small { blockoverride "crown" { - visible = "[And(And(Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder)), Not(Or(Character.GetGovernment.IsType('landless_adventurer_government')Character.GetGovernment.IsType('landless_minority_government'))))]" + visible = "[Not(Character.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" } } @@ -157,31 +203,37 @@ types CoATypes icon = { name = "adventurer_top_decor" - visible = "[Character.GetGovernment.IsType('landless_adventurer_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_44.dds" + block "adventurer" { + visible = no + } } icon = { name = "minority_top_decor" - visible = "[Character.GetGovernment.IsType('landless_minority_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_44.dds" + block "minority" { + visible = no + } } icon = { name = "mercenary" - visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/mercenary_topframe_44.dds" + block "mercenary" { + visible = no + } } icon = { name = "holy_order" - visible = "[Character.GetPrimaryTitle.IsHolyOrder]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/holyorder_topframe_44.dds" + block "holy_order" { + visible = no + } } } @@ -206,6 +258,17 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + framesize = { 52 32 } + texture = "gfx/interface/coat_of_arms/rep_crown_strip_44.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + + block "rep_crown" { + visible = no + } + } widget = { size = { 52 52 } @@ -257,7 +320,22 @@ types CoATypes ## Medium Realm CoA type coa_realm_medium_crown = coa_realm_medium { blockoverride "crown" { - visible = "[And(And(Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder)), Not(Or(Character.GetGovernment.IsType('landless_adventurer_government')Character.GetGovernment.IsType('landless_minority_government'))))]" + visible = "[Not(Character.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" } } @@ -286,34 +364,51 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_62.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 64 40 } + + block "rep_crown" { + visible = no + } + } icon = { name = "adventurer_top_decor" - visible = "[GovernmentType.IsType('landless_adventurer_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_62.dds" + block "adventurer" { + visible = no + } } icon = { name = "minority_top_decor" - visible = "[GovernmentType.IsType('landless_minority_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_62.dds" + block "minority" { + visible = no + } } icon = { name = "mercenary" - visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/mercenary_topframe_62.dds" + block "mercenary" { + visible = no + } } icon = { name = "holy_order" - visible = "[Character.GetPrimaryTitle.IsHolyOrder]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/holyorder_topframe_62.dds" + block "holy_order" { + visible = no + } } widget = { @@ -369,10 +464,24 @@ types CoATypes ## Big Realm CoA type coa_realm_big_crown = coa_realm_big { blockoverride "crown" { - visible = "[And(And(Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder)), Not(Or(Character.GetGovernment.IsType('landless_adventurer_government')Character.GetGovernment.IsType('landless_minority_government'))))]" + visible = "[Not(Character.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" } } - type coa_realm_big = button_group { using = CoA_Realm_Defaults @@ -397,34 +506,51 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_86.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 96 60 } + + block "rep_crown" { + visible = no + } + } icon = { name = "adventurer_top_decor" - visible = "[GovernmentType.IsType('landless_adventurer_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_86.dds" + block "adventurer" { + visible = no + } } icon = { name = "minority_top_decor" - visible = "[GovernmentType.IsType('landless_minority_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_86.dds" + block "minority" { + visible = no + } } icon = { name = "mercenary" - visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/mercenary_topframe_86.dds" + block "mercenary" { + visible = no + } } icon = { name = "holy_order" - visible = "[Character.GetPrimaryTitle.IsHolyOrder]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/holyorder_topframe_86.dds" + block "holy_order" { + visible = no + } } widget = { @@ -480,10 +606,24 @@ types CoATypes ## Huge Realm CoA type coa_realm_huge_crown = coa_realm_huge { blockoverride "crown" { - visible = "[And(And(Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder)), Not(Or(Character.GetGovernment.IsType('landless_adventurer_government')Character.GetGovernment.IsType('landless_minority_government'))))]" + visible = "[Not(Character.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Character.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" } } - type coa_realm_huge = button_group { using = CoA_Realm_Defaults @@ -508,33 +648,51 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_115.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 128 80 } + + block "rep_crown" { + visible = no + } + } icon = { name = "adventurer_top_decor" - visible = "[GovernmentType.IsType('landless_adventurer_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_115.dds" + block "adventurer" { + visible = no + } } icon = { name = "minority_top_decor" - visible = "[GovernmentType.IsType('landless_minority_government')]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_115.dds" + block "minority" { + visible = no + } } icon = { name = "mercenary" - visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" parentanchor = hcenter texture = "gfx/interface/coat_of_arms/mercenary_topframe_115.dds" + block "mercenary" { + visible = no + } } icon = { name = "holy_order" - visible = "[Character.GetPrimaryTitle.IsHolyOrder]" - visible_at_creation = no parentanchor = hcenter texture = "gfx/interface/coat_of_arms/holyorder_topframe_115.dds" + block "holy_order" { + visible = no + } } widget = { @@ -619,9 +777,25 @@ types CoATypes ## Tiny Title CoA type coa_title_tiny_crown = coa_title_tiny { - blockoverride "crown" {} + blockoverride "crown" { + visible = "[Not(Title.GetHolder.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" + } } - type coa_title_tiny = button_group { using = CoA_Title_Defaults @@ -632,6 +806,11 @@ types CoATypes position = { 0 -10 } } + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + spacing = -4 ignoreinvisible = yes @@ -646,7 +825,52 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_28.dds" + frame = "[Title.GetTierFrame]" + framesize = { 32 22 } + block "rep_crown" { + visible = no + } + } + + icon = { + name = "adventurer_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_28.dds" + block "adventurer" { + visible = no + } + } + + icon = { + name = "minority_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_28.dds" + block "minority" { + visible = no + } + } + icon = { + name = "mercenary" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/mercenary_topframe_28.dds" + block "mercenary" { + visible = no + } + } + + icon = { + name = "holy_order" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/holyorder_topframe_28.dds" + block "holy_order" { + visible = no + } + } widget = { parentanchor = hcenter size = { 36 36 } @@ -682,11 +906,25 @@ types CoATypes ## Small Title CoA type coa_title_small_crown = coa_title_small { - blockoverride "crown" {} + blockoverride "crown" { + visible = "[Not(Title.GetHolder.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" + } } - - # type coa_title_small = coa_title_tiny {} - type coa_title_small = button_group { using = CoA_Title_Defaults @@ -695,6 +933,11 @@ types CoATypes spacing = -3 ignoreinvisible = yes + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + icon = { name = "crown" parentanchor = hcenter @@ -706,7 +949,51 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_44.dds" + frame = "[Title.GetTierFrame]" + framesize = { 52 32 } + block "rep_crown" { + visible = no + } + } + icon = { + name = "adventurer_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_44.dds" + block "adventurer" { + visible = no + } + } + + icon = { + name = "minority_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_44.dds" + block "minority" { + visible = no + } + } + icon = { + name = "mercenary" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/mercenary_topframe_44.dds" + block "mercenary" { + visible = no + } + } + + icon = { + name = "holy_order" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/holyorder_topframe_44.dds" + block "holy_order" { + visible = no + } + } widget = { parentanchor = hcenter size = { 52 52 } @@ -740,7 +1027,24 @@ types CoATypes ## Medium Title CoA type coa_title_medium_crown = coa_title_medium { - blockoverride "crown" {} + blockoverride "crown" { + visible = "[Not(Title.GetHolder.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" + } } type coa_title_medium = button_group { @@ -751,6 +1055,11 @@ types CoATypes spacing = -3 ignoreinvisible = yes + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + icon = { name = "crown" parentanchor = hcenter @@ -762,6 +1071,51 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_62.dds" + frame = "[Title.GetTierFrame]" + framesize = { 64 40 } + + block "rep_crown" { + visible = no + } + } + icon = { + name = "adventurer_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_62.dds" + block "adventurer" { + visible = no + } + } + + icon = { + name = "minority_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_62.dds" + block "minority" { + visible = no + } + } + icon = { + name = "mercenary" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/mercenary_topframe_62.dds" + block "mercenary" { + visible = no + } + } + + icon = { + name = "holy_order" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/holyorder_topframe_62.dds" + block "holy_order" { + visible = no + } + } widget = { parentanchor = hcenter @@ -796,7 +1150,24 @@ types CoATypes ## Big Title CoA type coa_title_big_crown = coa_title_big { - blockoverride "crown" {} + blockoverride "crown" { + visible = "[Not(Title.GetHolder.GetGovernment.HasGovernmentFlag( 'gov_uses_non_crown_coa'))]" + } + blockoverride "rep_crown" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_locked_to_elective')]" + } + blockoverride "holy_order" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_holy_order')]" + } + blockoverride "mercenary" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_mercenary')]" + } + blockoverride "adventurer" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_adventurer')]" + } + blockoverride "minority" { + visible = "[Title.GetHolder.GetGovernment.HasGovernmentFlag( 'government_is_landless_minority')]" + } } type coa_title_big = button_group { @@ -807,6 +1178,11 @@ types CoATypes spacing = -3 ignoreinvisible = yes + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + icon = { name = "crown" parentanchor = hcenter @@ -818,6 +1194,51 @@ types CoATypes visible = no } } + icon = { + name = "rep_crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/rep_crown_strip_115.dds" + frame = "[Title.GetTierFrame]" + framesize = { 128 80 } + + block "rep_crown" { + visible = no + } + } + icon = { + name = "adventurer_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_115.dds" + block "adventurer" { + visible = no + } + } + + icon = { + name = "minority_top_decor" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_minority_government_topframe_115.dds" + block "minority" { + visible = no + } + } + icon = { + name = "mercenary" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/mercenary_topframe_115.dds" + block "mercenary" { + visible = no + } + } + + icon = { + name = "holy_order" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/holyorder_topframe_115.dds" + block "holy_order" { + visible = no + } + } widget = { parentanchor = hcenter From e0ea339999267a6d0fd8113cce3640a8fb549224 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 15 Mar 2026 05:07:49 +0000 Subject: [PATCH 15/52] fixes to application of republic electives --- common/on_action/title_on_actions.txt | 43 ++++++++++++++++++++++---- common/on_action/yearly_on_actions.txt | 28 ++++++++++++++--- 2 files changed, 61 insertions(+), 10 deletions(-) diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index 7c80d530..db9b8823 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -257,7 +257,11 @@ on_title_gain = { if = { limit = { government_has_flag = government_is_prepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = saxon_elective_succession_law } @@ -266,6 +270,7 @@ on_title_gain = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = saxon_elective_succession_law } @@ -288,10 +293,15 @@ on_title_gain = { add_title_law = noble_family_succession_law } } + if = { limit = { government_has_flag = government_is_urepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = urban_elective_succession_law } @@ -300,6 +310,7 @@ on_title_gain = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = urban_elective_succession_law } @@ -2964,7 +2975,11 @@ on_title_gain_inheritance = { if = { limit = { government_has_flag = government_is_prepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = saxon_elective_succession_law } @@ -2973,6 +2988,7 @@ on_title_gain_inheritance = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = saxon_elective_succession_law } @@ -2998,7 +3014,11 @@ on_title_gain_inheritance = { if = { limit = { government_has_flag = government_is_urepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = urban_elective_succession_law } @@ -3007,6 +3027,7 @@ on_title_gain_inheritance = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = urban_elective_succession_law } @@ -3121,7 +3142,11 @@ on_title_gain_usurpation = { if = { limit = { government_has_flag = government_is_prepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = saxon_elective_succession_law } @@ -3130,6 +3155,7 @@ on_title_gain_usurpation = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = saxon_elective_succession_law } @@ -3155,7 +3181,11 @@ on_title_gain_usurpation = { if = { limit = { government_has_flag = government_is_urepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = urban_elective_succession_law } @@ -3164,6 +3194,7 @@ on_title_gain_usurpation = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = urban_elective_succession_law } diff --git a/common/on_action/yearly_on_actions.txt b/common/on_action/yearly_on_actions.txt index 792c566b..c554ae26 100644 --- a/common/on_action/yearly_on_actions.txt +++ b/common/on_action/yearly_on_actions.txt @@ -776,7 +776,11 @@ yearly_playable_pulse = { if = { limit = { government_has_flag = government_is_prepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = saxon_elective_succession_law } @@ -785,6 +789,7 @@ yearly_playable_pulse = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = saxon_elective_succession_law } @@ -810,7 +815,11 @@ yearly_playable_pulse = { if = { limit = { government_has_flag = government_is_urepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = urban_elective_succession_law } @@ -819,6 +828,7 @@ yearly_playable_pulse = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = urban_elective_succession_law } @@ -2763,7 +2773,11 @@ quarterly_playable_pulse = { if = { limit = { government_has_flag = government_is_prepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = saxon_elective_succession_law } @@ -2772,6 +2786,7 @@ quarterly_playable_pulse = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = saxon_elective_succession_law } @@ -2797,7 +2812,11 @@ quarterly_playable_pulse = { if = { limit = { government_has_flag = government_is_urepublic - primary_title = { + any_held_title = { + filter = { + title_tier > barony + is_nomad_title = no + } NOT = { has_title_law = urban_elective_succession_law } @@ -2806,6 +2825,7 @@ quarterly_playable_pulse = { every_held_title = { limit = { title_tier > barony + is_nomad_title = no } add_title_law = urban_elective_succession_law } From 2ff2a580187bf3cfa86ac292d94a56ef1636aa85 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Sun, 15 Mar 2026 18:06:54 +0100 Subject: [PATCH 16/52] More locational dynasty names for the Britannics including a few Japanese minority ones Signed-off-by: The_Ramdom_Cheese --- common/culture/name_lists/NEOW_brittannic.txt | 171 +++++++++++++++++- 1 file changed, 163 insertions(+), 8 deletions(-) diff --git a/common/culture/name_lists/NEOW_brittannic.txt b/common/culture/name_lists/NEOW_brittannic.txt index 683fc1c6..7460c840 100644 --- a/common/culture/name_lists/NEOW_brittannic.txt +++ b/common/culture/name_lists/NEOW_brittannic.txt @@ -31,17 +31,95 @@ { "dynn_Lymyllyygh" } { "dynn_Korhnoallyngton" } { "dynn_Pythgomyrhy" } + { "dynn_Ddovyr" } + { "dynn_Kantyrbury" } + { "dynn_Roshystyr" } + { "dynn_Hastyngs" } + { "dynn_Lywys" } + { "dynn_Takahashy" } + { "dynn_Tacahashy" } + { "dynn_Suzwky" } + { "dynn_Suzwcy" } + { "dynn_Watanaby" } + { "dynn_Brombyksddon" } + { "dynn_Londdon" } + { "dynn_Soufwark" } + { "dynn_Wystmynstyr } + { "dynn_Ealyng } + { "dynn_Hyllyngddon } + { "dynn_Arun } + { "dynn_Shyshystyr } + { "dynn_Guylddffordd } + { "dynn_Wokyng } + { "dynn_Soufyndd_on_Sya } + { "dynn_Kolshystyr } + { "dynn_Saffron_Walddyn } + { "dynn_Hyrtffordd } + { "dynn_Styfynagy } + { "dynn_Watffordd } + { "dynn_Lwton } + { "dynn_Byddffordd } + { "dynn_Ampthyll } + { "dynn_Norfampton } + { "dynn_Braklyy } + { "dynn_Kyttyryng } + { "dynn_Covyntrhy } + { "dynn_Warhwyc } + { "dynn_Byrhmyngham } + { "dynn_Brhomsgrhofy } + { "dynn_Worhcystyrh } + { "dynn_Cyddyrhmynstyrh } + { "dynn_Strhowdd } + { "dynn_Gloucystyrh } + { "dynn_Lyddburhy } + { "dynn_Hyrhyfforhdd } + { "dynn_Lyomynstyrh } + { "dynn_Nywporht } + { "dynn_Abyrhgafynny } + { "dynn_Luddlow } + { "dynn_Wystburhy } + { "dynn_Tylfforhdd } + { "dynn_Shrhywsburhy } + { "dynn_Wrycsham } + { "dynn_Ddynbygh } + { "dynn_Conwy } + { "dynn_Swaddlynkoty } + { "dynn_Dyrby } + { "dynn_Glossop" } + { "dynn_Stafforhdd" } + { "dynn_Gnosall" } + { "dynn_Stocy_on_Trhynt" } + { "dynn_Maccllysffyylldd" } + { "dynn_Chystyr" } + { "dynn_Llyfyrpwll" } + { "dynn_Llancastyrh" } + { "dynn_Kenddail" } + { "dynn_Whitehaiven" } + { "dynn_Wigton" } + { "dynn_Cairlisle" } + { "dynn_Ainnain" } + { "dynn_Ddumfries" } + { "dynn_Bigair" } + { "dynn_Lainairk" } + { "dynn_Sainquhair" } + { "dynn_Girvain" } + { "dynn_Maibole" } + { "dynn_Air" } + { "dynn_Irvine" } + { "dynn_Ddumbairton" } + { "dynn_Glaisgow" } + } dynasty_names = { - { "dynn_Grhysllyy" } - { "dynn_Kharhdd" } - { "dynn_Ddurhnforhdd" } - { "dynn_Shyps" } - { "dynn_Byrhgamot" } - { "dynn_Toynyng" } - { "dynn_Iddlly" } - { "dynn_Pallyn" } + { "dynn_Grhysllyy" } + { "dynn_Kharhdd" } + { "dynn_Ddurhnforhdd" } + { "dynn_Shypston" } + { "dynn_Byrhgamot" } + { "dynn_Toynyng" } + { "dynn_Iddlly" } + { "dynn_Pallyn" } { "dynn_Jonsyrhrhy" } { "dynn_Watyrhhousy" } { "dynn_Shaftoy" } @@ -64,6 +142,83 @@ { "dynn_Lymyllyygh" } { "dynn_Korhnoallyngton" } { "dynn_Pythgomyrhy" } + { "dynn_Ddovyr" } + { "dynn_Kantyrbury" } + { "dynn_Roshystyr" } + { "dynn_Hastyngs" } + { "dynn_Lywys" } + { "dynn_Takahashy" } + { "dynn_Tacahashy" } + { "dynn_Suzwky" } + { "dynn_Suzwcy" } + { "dynn_Watanaby" } + { "dynn_Brombyksddon" } + { "dynn_Londdon" } + { "dynn_Soufwark" } + { "dynn_Wystmynstyr } + { "dynn_Ealyng } + { "dynn_Hyllyngddon } + { "dynn_Arun } + { "dynn_Shyshystyr } + { "dynn_Guylddffordd } + { "dynn_Wokyng } + { "dynn_Soufyndd_on_Sya } + { "dynn_Kolshystyr } + { "dynn_Saffron_Walddyn } + { "dynn_Hyrtffordd } + { "dynn_Styfynagy } + { "dynn_Watffordd } + { "dynn_Lwton } + { "dynn_Byddffordd } + { "dynn_Ampthyll } + { "dynn_Norfampton } + { "dynn_Braklyy } + { "dynn_Kyttyryng } + { "dynn_Covyntrhy } + { "dynn_Warhwyc } + { "dynn_Byrhmyngham } + { "dynn_Brhomsgrhofy } + { "dynn_Worhcystyrh } + { "dynn_Cyddyrhmynstyrh } + { "dynn_Strhowdd } + { "dynn_Gloucystyrh } + { "dynn_Lyddburhy } + { "dynn_Hyrhyfforhdd } + { "dynn_Lyomynstyrh } + { "dynn_Nywporht } + { "dynn_Abyrhgafynny } + { "dynn_Luddlow } + { "dynn_Wystburhy } + { "dynn_Tylfforhdd } + { "dynn_Shrhywsburhy } + { "dynn_Wrycsham } + { "dynn_Ddynbygh } + { "dynn_Conwy } + { "dynn_Swaddlynkoty } + { "dynn_Dyrby } + { "dynn_Glossop" } + { "dynn_Stafforhdd" } + { "dynn_Gnosall" } + { "dynn_Stocy_on_Trhynt" } + { "dynn_Maccllysffyylldd" } + { "dynn_Chystyr" } + { "dynn_Llyfyrpwll" } + { "dynn_Llancastyrh" } + { "dynn_Kenddail" } + { "dynn_Whitehaiven" } + { "dynn_Wigton" } + { "dynn_Cairlisle" } + { "dynn_Ainnain" } + { "dynn_Ddumfries" } + { "dynn_Bigair" } + { "dynn_Lainairk" } + { "dynn_Sainquhair" } + { "dynn_Girvain" } + { "dynn_Maibole" } + { "dynn_Air" } + { "dynn_Irvine" } + { "dynn_Ddumbairton" } + { "dynn_Glaisgow" } } male_names = { From 97133b8b1dfceb39052ab1b219496075a7666f0b Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Sun, 15 Mar 2026 18:18:42 +0100 Subject: [PATCH 17/52] Update common/culture/name_lists/NEOW_brittannic.txt --- common/culture/name_lists/NEOW_brittannic.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/common/culture/name_lists/NEOW_brittannic.txt b/common/culture/name_lists/NEOW_brittannic.txt index 7460c840..ee1523a6 100644 --- a/common/culture/name_lists/NEOW_brittannic.txt +++ b/common/culture/name_lists/NEOW_brittannic.txt @@ -37,9 +37,7 @@ { "dynn_Hastyngs" } { "dynn_Lywys" } { "dynn_Takahashy" } - { "dynn_Tacahashy" } { "dynn_Suzwky" } - { "dynn_Suzwcy" } { "dynn_Watanaby" } { "dynn_Brombyksddon" } { "dynn_Londdon" } @@ -148,9 +146,7 @@ { "dynn_Hastyngs" } { "dynn_Lywys" } { "dynn_Takahashy" } - { "dynn_Tacahashy" } { "dynn_Suzwky" } - { "dynn_Suzwcy" } { "dynn_Watanaby" } { "dynn_Brombyksddon" } { "dynn_Londdon" } From 513216057568d6c60db799d5eeac9d1f1fa663f1 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Sun, 15 Mar 2026 19:15:29 +0100 Subject: [PATCH 18/52] Locs for Britannic locational dynasty names --- .../NEOW_dynasty_names_l_english.yml | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml index 83eff261..223a5ed7 100644 --- a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml +++ b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml @@ -149,6 +149,11 @@ dynn_Aziza:0 "Aziza" dynn_Azizou:0 "Azizou" dynn_Azurmendi:0 "Azurmendi" + dynn_Arun:0 "Arun" + dynn_Ampthyll:0 "Ampthyll" + dynn_Abyrhgafynny:0 "Abyrhgafynny" + dynn_Ainnain:0 "Ainnain" + dynn_Air:0 "Air" dynn_B_a_uml_r:0 "Bär" dynn_B_a_uml_sge:0 "Bäsge" dynn_B_e_act_nard:0 "Bénard" @@ -362,6 +367,12 @@ dynn_Byrhgamot:0 "Byrhgamot" dynn_Byrne:0 "Byrne" dynn_Bywater:0 "Bywater" + dynn_Brombyksddon:0 "Brombyksddon" + dynn_Byddffordd:0 "Byddffordd" + dynn_Braklyy:0 "Braklyy" + dynn_Byrhmyngham:0 "Byrhmyngham" + dynn_Brhomsgrhofy:0 "Brhomsgrhofy" + dynn_Bigair:0 "Bigair" dynn_C_a_grv_rri:0 "Càrri" dynn_Caba_n_tld_as:0 "Cabañas" dynn_Cabrau:0 "Cabrau" @@ -461,6 +472,11 @@ dynn_Cunha:0 "Cunha" dynn_Cunningham:0 "Cunningham" dynn_Cusano:0 "Cusano" + dynn_Covyntrhy:0 "Covyntrhy" + dynn_Cyddyrhmynstyrh:0 "Cyddyrhmynstyrh" + dynn_Conwy:0 "Conwy" + dynn_Chystyr:0 "Chystyr" + dynn_Cairlisle:0 "Cairlisle" dynn_D_pst_Agostino:0 "D'Agostino" dynn_D_pst_Angelis:0 "D'Angelis" dynn_D_pst_Angelo:0 "D'Angelo" @@ -578,6 +594,11 @@ dynn_Dussmann:0 "Dussmann" dynn_Duval:0 "Duval" dynn_Dworschak:0 "Dworschak" + dynn_Ddovyr:0 "Ddovyr" + dynn_Ddynbygh:0 "Ddynbygh" + dynn_Dyrby:0 "Dyrby" + dynn_Ddumfries:0 "Ddumfries" + dynn_Ddumbairton:0 "Ddumbairton" dynn_Eastoyndd:0 "Eastoyndd" dynn_Eastynddyng:0 "Eastynddyng" dynn_Eberle:0 "Eberle" @@ -646,6 +667,7 @@ dynn_Evenshaug:0 "Evenshaug" dynn_Ewen:0 "Ewen" dynn_Exle:0 "Exle" + dynn_Ealyng:0 "Ealyng" dynn_F_a_uml_hndrich:0 "Fähndrich" dynn_F_u_uml_gel:0 "Fügel" dynn_F_u_uml_nfgeld:0 "Fünfgeld" @@ -841,6 +863,12 @@ dynn_Gwilhmod:0 "Gwilhmod" dynn_Gwilho_u_grv_:0 "Gwilhoù" dynn_Gwivarc_pst_h:0 "Gwivarc'h" + dynn_Guylddffordd:0 "Guylddffordd" + dynn_Gloucystyrh:0 "Gloucystyrh" + dynn_Glossop:0 "Glossop" + dynn_Gnosall:0 "Gnosall" + dynn_Girvain:0 "Girvain" + dynn_Glaisgow:0 "Glaisgow" dynn_H_a_rng_kansson:0 "Håkansson" dynn_H_a_rng_llander:0 "Hållander" dynn_H_a_uml_rle:0 "Härle" @@ -963,6 +991,10 @@ dynn_Hussain:0 "Hussain" dynn_Huynh:0 "Huynh" dynn_Hyfing:0 "Hyfing" + dynn_Hastyngs:0 "Hastyngs" + dynn_Hyllyngddon:0 "Hyllyngddon" + dynn_Hyrtffordd:0 "Hyrtffordd" + dynn_Hyrhyfforhdd:0 "Hyrhyfforhdd" dynn_Iacono:0 "Iacono" dynn_Iammarino:0 "Iammarino" dynn_Iannaccone:0 "Iannaccone" @@ -992,6 +1024,7 @@ dynn_Izagirre:0 "Izagirre" dynn_Izeta:0 "Izeta" dynn_Izzo:0 "Izzo" + dynn_Irvine:0 "Irvine" dynn_J_a_uml_ger:0 "Jäger" dynn_J_o_stk_rgensen:0 "Jørgensen" dynn_J_o_uml_nsson:0 "Jönsson" @@ -1152,6 +1185,10 @@ dynn_Kurz:0 "Kurz" dynn_Kvalem:0 "Kvalem" dynn_Kyburg:0 "Kyburg" + dynn_Kantyrbury:0 "Kantyrbury" + dynn_Kolshystyr:0 "Kolshystyr" + dynn_Kyttyryng:0 "Kyttyryng" + dynn_Kenddail:0 "Kenddail" dynn_L_a_uml_mmerhirt:0 "Lämmerhirt" dynn_L_a_uml_mmle:0 "Lämmle" dynn_L_e_act_cuyer:0 "Lécuyer" @@ -1295,6 +1332,15 @@ dynn_Lymyllyygh:0 "Lymyllyygh" dynn_Lynch:0 "Lynch" dynn_Lyng:0 "Lyng" + dynn_Lywys:0 "Lywys" + dynn_Londdon:0 "Londdon" + dynn_Lwton:0 "Lwton" + dynn_Lyddburhy:0 "Lyddburhy" + dynn_Lyomynstyrh:0 "Lyomynstyrh" + dynn_Luddlow:0 "Luddlow" + dynn_Llyfyrpwll:0 "Llyfyrpwll" + dynn_Llancastyrh:0 "Llancastyrh" + dynn_Lainairk:0 "Lainairk" dynn_M_o_stk_ller:0 "Møller" dynn_M_o_stk_llgaard:0 "Møllgaard" dynn_M_o_uml_ller:0 "Möller" @@ -1438,6 +1484,8 @@ dynn_Murua:0 "Murua" dynn_Muxika:0 "Muxika" dynn_Myles:0 "Myles" + dynn_Maccllysffyylldd:0 "Maccllysffyylldd" + dynn_Maibole:0 "Maibole" dynn_N_e_act_el:0 "Néel" dynn_N_pst_Diaye:0 "N'Diaye" dynn_N_u_uml_bling:0 "Nübling" @@ -1477,6 +1525,8 @@ dynn_Nyg_a_rng_rd:0 "Nygård" dynn_Nylander:0 "Nylander" dynn_Nystr_o_uml_m:0 "Nyström" + dynn_Norfampton:0 "Norfampton" + dynn_Nywporht:0 "Nywporht" dynn_Odriozola:0 "Odriozola" dynn_Oettinger:0 "Oettinger" dynn_Offenloch:0 "Offenloch" @@ -1729,6 +1779,7 @@ dynn_Rutgers:0 "Rutgers" dynn_Ruthven:0 "Ruthven" dynn_Ryan:0 "Ryan" + dynn_Roshystyr:0 "Roshystyr" dynn_S_e_grv_govesso:0 "Sègovesso" dynn_S_e_grv_rvi:0 "Sèrvi" dynn_S_o_stk_r_o_stk_:0 "Sørø" @@ -1915,6 +1966,18 @@ dynn_Svensson:0 "Svensson" dynn_Swinton:0 "Swinton" dynn_Sy:0 "Sy" + dynn_Suzwky:0 "Suzwky" + dynn_Soufwark:0 "Soufwark" + dynn_Shyshystyr:0 "Shyshystyr" + dynn_Soufyndd_on_Sya:0 "Soufyndd-on-Sya" + dynn_Saffron_Walddyn:0 "Saffron Walddyn" + dynn_Styfynagy:0 "Styfynagy" + dynn_Strhowdd:0 "Strhowdd" + dynn_Shrhywsburhy:0 "Shrhywsburhy" + dynn_Swaddlynkoty:0 "Swaddlynkoty" + dynn_Stafforhdd:0 "Stafforhdd" + dynn_Stocy_on_Trhynt:0 "Stocy-on-Trhynt" + dynn_Sainquhair:0 "Sainquhair" dynn_T_u_uml_nnermann:0 "Tünnermann" dynn_Tafeit:0 "Tafeit" dynn_Taiado:0 "Taiado" @@ -1974,6 +2037,8 @@ dynn_Turquetil:0 "Turquetil" dynn_Turquier:0 "Turquier" dynn_Tyakh:0 "Tyakh" + dynn_Takahashy:0 "Takahashy" + dynn_Tylfforhdd:0 "Tylfforhdd" dynn_Ugarte:0 "Ugarte" dynn_Uhland:0 "Uhland" dynn_Ulmer:0 "Ulmer" @@ -2128,6 +2193,16 @@ dynn_Wright:0 "Wright" dynn_wrihtssen:0 "Wrihtssen" dynn_Wurm:0 "Wurm" + dynn_Watanaby:0 "Watanaby" + dynn_Wystmynstyr:0 "Wystmynstyr" + dynn_Watffordd:0 "Watffordd" + dynn_Wokyng:0 "Wokyng" + dynn_Warhwyc:0 "Warhwyc" + dynn_Worhcystyrh:0 "Worhcystyrh" + dynn_Wystburhy:0 "Wystburhy" + dynn_Wrycsham:0 "Wrycsham" + dynn_Whitehaiven:0 "Whitehaiven" + dynn_Wigton:0 "Wigton" dynn_Yachir:0 "Yachir" dynn_Yacoubi:0 "Yacoubi" dynn_Yahiaoui:0 "Yahiaoui" From 854a803fd9cacb5257256cb9440cef6fcf7db48f Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 15 Mar 2026 18:31:35 +0000 Subject: [PATCH 19/52] fix --- .../character_interactions/00_modifiy_vassal_contract.txt | 6 +++--- common/governments/00_government_types.txt | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/common/character_interactions/00_modifiy_vassal_contract.txt b/common/character_interactions/00_modifiy_vassal_contract.txt index b22ce9bc..74386696 100644 --- a/common/character_interactions/00_modifiy_vassal_contract.txt +++ b/common/character_interactions/00_modifiy_vassal_contract.txt @@ -807,7 +807,7 @@ ai_only_vassal_modify_vassal_contract_interaction = { } # Separate interactions are set up for Administrative - This is to help with localisation and some of the effects -admin_liege rep_liege_modify_vassal_contract_interaction = { +admin_liege_modify_vassal_contract_interaction = { special_interaction = liege_modify_vassal_contract interface = modify_vassal_contract category = interaction_category_vassal @@ -815,8 +815,8 @@ admin_liege rep_liege_modify_vassal_contract_interaction = { interface_priority = 1000 icon = icon_contract_modification_single - send_name = admin_liege rep_liege_modify_vassal_contract_interaction - desc = admin_liege rep_liege_modify_vassal_contract_interaction_desc + send_name = admin_liege_modify_vassal_contract_interaction + desc = admin_liege_modify_vassal_contract_interaction_desc force_notification = yes notification_text = MODIFY_VASSAL_CONTRACT_NOTIFICATION_TO_VASSAL diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index 3d37e196..46f586a2 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -725,7 +725,6 @@ peasantrepublic_government = { may_elevate_co_monarch government_uses_legitimacy government_uses_domain_limit - government_is_herder government_has_herd government_uses_domicile_but_not_adventurer government_has_powerful_families From 1f4a98d4795ecd64ba3e7b74025ad248200fe3e5 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Sun, 15 Mar 2026 18:06:54 +0100 Subject: [PATCH 20/52] More locational dynasty names for the Britannics including a few Japanese minority ones Signed-off-by: The_Ramdom_Cheese --- common/culture/name_lists/NEOW_brittannic.txt | 171 +++++++++++++++++- 1 file changed, 163 insertions(+), 8 deletions(-) diff --git a/common/culture/name_lists/NEOW_brittannic.txt b/common/culture/name_lists/NEOW_brittannic.txt index 683fc1c6..7460c840 100644 --- a/common/culture/name_lists/NEOW_brittannic.txt +++ b/common/culture/name_lists/NEOW_brittannic.txt @@ -31,17 +31,95 @@ { "dynn_Lymyllyygh" } { "dynn_Korhnoallyngton" } { "dynn_Pythgomyrhy" } + { "dynn_Ddovyr" } + { "dynn_Kantyrbury" } + { "dynn_Roshystyr" } + { "dynn_Hastyngs" } + { "dynn_Lywys" } + { "dynn_Takahashy" } + { "dynn_Tacahashy" } + { "dynn_Suzwky" } + { "dynn_Suzwcy" } + { "dynn_Watanaby" } + { "dynn_Brombyksddon" } + { "dynn_Londdon" } + { "dynn_Soufwark" } + { "dynn_Wystmynstyr } + { "dynn_Ealyng } + { "dynn_Hyllyngddon } + { "dynn_Arun } + { "dynn_Shyshystyr } + { "dynn_Guylddffordd } + { "dynn_Wokyng } + { "dynn_Soufyndd_on_Sya } + { "dynn_Kolshystyr } + { "dynn_Saffron_Walddyn } + { "dynn_Hyrtffordd } + { "dynn_Styfynagy } + { "dynn_Watffordd } + { "dynn_Lwton } + { "dynn_Byddffordd } + { "dynn_Ampthyll } + { "dynn_Norfampton } + { "dynn_Braklyy } + { "dynn_Kyttyryng } + { "dynn_Covyntrhy } + { "dynn_Warhwyc } + { "dynn_Byrhmyngham } + { "dynn_Brhomsgrhofy } + { "dynn_Worhcystyrh } + { "dynn_Cyddyrhmynstyrh } + { "dynn_Strhowdd } + { "dynn_Gloucystyrh } + { "dynn_Lyddburhy } + { "dynn_Hyrhyfforhdd } + { "dynn_Lyomynstyrh } + { "dynn_Nywporht } + { "dynn_Abyrhgafynny } + { "dynn_Luddlow } + { "dynn_Wystburhy } + { "dynn_Tylfforhdd } + { "dynn_Shrhywsburhy } + { "dynn_Wrycsham } + { "dynn_Ddynbygh } + { "dynn_Conwy } + { "dynn_Swaddlynkoty } + { "dynn_Dyrby } + { "dynn_Glossop" } + { "dynn_Stafforhdd" } + { "dynn_Gnosall" } + { "dynn_Stocy_on_Trhynt" } + { "dynn_Maccllysffyylldd" } + { "dynn_Chystyr" } + { "dynn_Llyfyrpwll" } + { "dynn_Llancastyrh" } + { "dynn_Kenddail" } + { "dynn_Whitehaiven" } + { "dynn_Wigton" } + { "dynn_Cairlisle" } + { "dynn_Ainnain" } + { "dynn_Ddumfries" } + { "dynn_Bigair" } + { "dynn_Lainairk" } + { "dynn_Sainquhair" } + { "dynn_Girvain" } + { "dynn_Maibole" } + { "dynn_Air" } + { "dynn_Irvine" } + { "dynn_Ddumbairton" } + { "dynn_Glaisgow" } + } dynasty_names = { - { "dynn_Grhysllyy" } - { "dynn_Kharhdd" } - { "dynn_Ddurhnforhdd" } - { "dynn_Shyps" } - { "dynn_Byrhgamot" } - { "dynn_Toynyng" } - { "dynn_Iddlly" } - { "dynn_Pallyn" } + { "dynn_Grhysllyy" } + { "dynn_Kharhdd" } + { "dynn_Ddurhnforhdd" } + { "dynn_Shypston" } + { "dynn_Byrhgamot" } + { "dynn_Toynyng" } + { "dynn_Iddlly" } + { "dynn_Pallyn" } { "dynn_Jonsyrhrhy" } { "dynn_Watyrhhousy" } { "dynn_Shaftoy" } @@ -64,6 +142,83 @@ { "dynn_Lymyllyygh" } { "dynn_Korhnoallyngton" } { "dynn_Pythgomyrhy" } + { "dynn_Ddovyr" } + { "dynn_Kantyrbury" } + { "dynn_Roshystyr" } + { "dynn_Hastyngs" } + { "dynn_Lywys" } + { "dynn_Takahashy" } + { "dynn_Tacahashy" } + { "dynn_Suzwky" } + { "dynn_Suzwcy" } + { "dynn_Watanaby" } + { "dynn_Brombyksddon" } + { "dynn_Londdon" } + { "dynn_Soufwark" } + { "dynn_Wystmynstyr } + { "dynn_Ealyng } + { "dynn_Hyllyngddon } + { "dynn_Arun } + { "dynn_Shyshystyr } + { "dynn_Guylddffordd } + { "dynn_Wokyng } + { "dynn_Soufyndd_on_Sya } + { "dynn_Kolshystyr } + { "dynn_Saffron_Walddyn } + { "dynn_Hyrtffordd } + { "dynn_Styfynagy } + { "dynn_Watffordd } + { "dynn_Lwton } + { "dynn_Byddffordd } + { "dynn_Ampthyll } + { "dynn_Norfampton } + { "dynn_Braklyy } + { "dynn_Kyttyryng } + { "dynn_Covyntrhy } + { "dynn_Warhwyc } + { "dynn_Byrhmyngham } + { "dynn_Brhomsgrhofy } + { "dynn_Worhcystyrh } + { "dynn_Cyddyrhmynstyrh } + { "dynn_Strhowdd } + { "dynn_Gloucystyrh } + { "dynn_Lyddburhy } + { "dynn_Hyrhyfforhdd } + { "dynn_Lyomynstyrh } + { "dynn_Nywporht } + { "dynn_Abyrhgafynny } + { "dynn_Luddlow } + { "dynn_Wystburhy } + { "dynn_Tylfforhdd } + { "dynn_Shrhywsburhy } + { "dynn_Wrycsham } + { "dynn_Ddynbygh } + { "dynn_Conwy } + { "dynn_Swaddlynkoty } + { "dynn_Dyrby } + { "dynn_Glossop" } + { "dynn_Stafforhdd" } + { "dynn_Gnosall" } + { "dynn_Stocy_on_Trhynt" } + { "dynn_Maccllysffyylldd" } + { "dynn_Chystyr" } + { "dynn_Llyfyrpwll" } + { "dynn_Llancastyrh" } + { "dynn_Kenddail" } + { "dynn_Whitehaiven" } + { "dynn_Wigton" } + { "dynn_Cairlisle" } + { "dynn_Ainnain" } + { "dynn_Ddumfries" } + { "dynn_Bigair" } + { "dynn_Lainairk" } + { "dynn_Sainquhair" } + { "dynn_Girvain" } + { "dynn_Maibole" } + { "dynn_Air" } + { "dynn_Irvine" } + { "dynn_Ddumbairton" } + { "dynn_Glaisgow" } } male_names = { From 2ff4d07cb86b13ef6048287a786d15d23aa9986c Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Sun, 15 Mar 2026 18:18:42 +0100 Subject: [PATCH 21/52] Update common/culture/name_lists/NEOW_brittannic.txt --- common/culture/name_lists/NEOW_brittannic.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/common/culture/name_lists/NEOW_brittannic.txt b/common/culture/name_lists/NEOW_brittannic.txt index 7460c840..ee1523a6 100644 --- a/common/culture/name_lists/NEOW_brittannic.txt +++ b/common/culture/name_lists/NEOW_brittannic.txt @@ -37,9 +37,7 @@ { "dynn_Hastyngs" } { "dynn_Lywys" } { "dynn_Takahashy" } - { "dynn_Tacahashy" } { "dynn_Suzwky" } - { "dynn_Suzwcy" } { "dynn_Watanaby" } { "dynn_Brombyksddon" } { "dynn_Londdon" } @@ -148,9 +146,7 @@ { "dynn_Hastyngs" } { "dynn_Lywys" } { "dynn_Takahashy" } - { "dynn_Tacahashy" } { "dynn_Suzwky" } - { "dynn_Suzwcy" } { "dynn_Watanaby" } { "dynn_Brombyksddon" } { "dynn_Londdon" } From 8801d2c86f54c5edc5a9d98e1208ef0a1606c303 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Sun, 15 Mar 2026 19:15:29 +0100 Subject: [PATCH 22/52] Locs for Britannic locational dynasty names --- .../NEOW_dynasty_names_l_english.yml | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml index 83eff261..223a5ed7 100644 --- a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml +++ b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml @@ -149,6 +149,11 @@ dynn_Aziza:0 "Aziza" dynn_Azizou:0 "Azizou" dynn_Azurmendi:0 "Azurmendi" + dynn_Arun:0 "Arun" + dynn_Ampthyll:0 "Ampthyll" + dynn_Abyrhgafynny:0 "Abyrhgafynny" + dynn_Ainnain:0 "Ainnain" + dynn_Air:0 "Air" dynn_B_a_uml_r:0 "Bär" dynn_B_a_uml_sge:0 "Bäsge" dynn_B_e_act_nard:0 "Bénard" @@ -362,6 +367,12 @@ dynn_Byrhgamot:0 "Byrhgamot" dynn_Byrne:0 "Byrne" dynn_Bywater:0 "Bywater" + dynn_Brombyksddon:0 "Brombyksddon" + dynn_Byddffordd:0 "Byddffordd" + dynn_Braklyy:0 "Braklyy" + dynn_Byrhmyngham:0 "Byrhmyngham" + dynn_Brhomsgrhofy:0 "Brhomsgrhofy" + dynn_Bigair:0 "Bigair" dynn_C_a_grv_rri:0 "Càrri" dynn_Caba_n_tld_as:0 "Cabañas" dynn_Cabrau:0 "Cabrau" @@ -461,6 +472,11 @@ dynn_Cunha:0 "Cunha" dynn_Cunningham:0 "Cunningham" dynn_Cusano:0 "Cusano" + dynn_Covyntrhy:0 "Covyntrhy" + dynn_Cyddyrhmynstyrh:0 "Cyddyrhmynstyrh" + dynn_Conwy:0 "Conwy" + dynn_Chystyr:0 "Chystyr" + dynn_Cairlisle:0 "Cairlisle" dynn_D_pst_Agostino:0 "D'Agostino" dynn_D_pst_Angelis:0 "D'Angelis" dynn_D_pst_Angelo:0 "D'Angelo" @@ -578,6 +594,11 @@ dynn_Dussmann:0 "Dussmann" dynn_Duval:0 "Duval" dynn_Dworschak:0 "Dworschak" + dynn_Ddovyr:0 "Ddovyr" + dynn_Ddynbygh:0 "Ddynbygh" + dynn_Dyrby:0 "Dyrby" + dynn_Ddumfries:0 "Ddumfries" + dynn_Ddumbairton:0 "Ddumbairton" dynn_Eastoyndd:0 "Eastoyndd" dynn_Eastynddyng:0 "Eastynddyng" dynn_Eberle:0 "Eberle" @@ -646,6 +667,7 @@ dynn_Evenshaug:0 "Evenshaug" dynn_Ewen:0 "Ewen" dynn_Exle:0 "Exle" + dynn_Ealyng:0 "Ealyng" dynn_F_a_uml_hndrich:0 "Fähndrich" dynn_F_u_uml_gel:0 "Fügel" dynn_F_u_uml_nfgeld:0 "Fünfgeld" @@ -841,6 +863,12 @@ dynn_Gwilhmod:0 "Gwilhmod" dynn_Gwilho_u_grv_:0 "Gwilhoù" dynn_Gwivarc_pst_h:0 "Gwivarc'h" + dynn_Guylddffordd:0 "Guylddffordd" + dynn_Gloucystyrh:0 "Gloucystyrh" + dynn_Glossop:0 "Glossop" + dynn_Gnosall:0 "Gnosall" + dynn_Girvain:0 "Girvain" + dynn_Glaisgow:0 "Glaisgow" dynn_H_a_rng_kansson:0 "Håkansson" dynn_H_a_rng_llander:0 "Hållander" dynn_H_a_uml_rle:0 "Härle" @@ -963,6 +991,10 @@ dynn_Hussain:0 "Hussain" dynn_Huynh:0 "Huynh" dynn_Hyfing:0 "Hyfing" + dynn_Hastyngs:0 "Hastyngs" + dynn_Hyllyngddon:0 "Hyllyngddon" + dynn_Hyrtffordd:0 "Hyrtffordd" + dynn_Hyrhyfforhdd:0 "Hyrhyfforhdd" dynn_Iacono:0 "Iacono" dynn_Iammarino:0 "Iammarino" dynn_Iannaccone:0 "Iannaccone" @@ -992,6 +1024,7 @@ dynn_Izagirre:0 "Izagirre" dynn_Izeta:0 "Izeta" dynn_Izzo:0 "Izzo" + dynn_Irvine:0 "Irvine" dynn_J_a_uml_ger:0 "Jäger" dynn_J_o_stk_rgensen:0 "Jørgensen" dynn_J_o_uml_nsson:0 "Jönsson" @@ -1152,6 +1185,10 @@ dynn_Kurz:0 "Kurz" dynn_Kvalem:0 "Kvalem" dynn_Kyburg:0 "Kyburg" + dynn_Kantyrbury:0 "Kantyrbury" + dynn_Kolshystyr:0 "Kolshystyr" + dynn_Kyttyryng:0 "Kyttyryng" + dynn_Kenddail:0 "Kenddail" dynn_L_a_uml_mmerhirt:0 "Lämmerhirt" dynn_L_a_uml_mmle:0 "Lämmle" dynn_L_e_act_cuyer:0 "Lécuyer" @@ -1295,6 +1332,15 @@ dynn_Lymyllyygh:0 "Lymyllyygh" dynn_Lynch:0 "Lynch" dynn_Lyng:0 "Lyng" + dynn_Lywys:0 "Lywys" + dynn_Londdon:0 "Londdon" + dynn_Lwton:0 "Lwton" + dynn_Lyddburhy:0 "Lyddburhy" + dynn_Lyomynstyrh:0 "Lyomynstyrh" + dynn_Luddlow:0 "Luddlow" + dynn_Llyfyrpwll:0 "Llyfyrpwll" + dynn_Llancastyrh:0 "Llancastyrh" + dynn_Lainairk:0 "Lainairk" dynn_M_o_stk_ller:0 "Møller" dynn_M_o_stk_llgaard:0 "Møllgaard" dynn_M_o_uml_ller:0 "Möller" @@ -1438,6 +1484,8 @@ dynn_Murua:0 "Murua" dynn_Muxika:0 "Muxika" dynn_Myles:0 "Myles" + dynn_Maccllysffyylldd:0 "Maccllysffyylldd" + dynn_Maibole:0 "Maibole" dynn_N_e_act_el:0 "Néel" dynn_N_pst_Diaye:0 "N'Diaye" dynn_N_u_uml_bling:0 "Nübling" @@ -1477,6 +1525,8 @@ dynn_Nyg_a_rng_rd:0 "Nygård" dynn_Nylander:0 "Nylander" dynn_Nystr_o_uml_m:0 "Nyström" + dynn_Norfampton:0 "Norfampton" + dynn_Nywporht:0 "Nywporht" dynn_Odriozola:0 "Odriozola" dynn_Oettinger:0 "Oettinger" dynn_Offenloch:0 "Offenloch" @@ -1729,6 +1779,7 @@ dynn_Rutgers:0 "Rutgers" dynn_Ruthven:0 "Ruthven" dynn_Ryan:0 "Ryan" + dynn_Roshystyr:0 "Roshystyr" dynn_S_e_grv_govesso:0 "Sègovesso" dynn_S_e_grv_rvi:0 "Sèrvi" dynn_S_o_stk_r_o_stk_:0 "Sørø" @@ -1915,6 +1966,18 @@ dynn_Svensson:0 "Svensson" dynn_Swinton:0 "Swinton" dynn_Sy:0 "Sy" + dynn_Suzwky:0 "Suzwky" + dynn_Soufwark:0 "Soufwark" + dynn_Shyshystyr:0 "Shyshystyr" + dynn_Soufyndd_on_Sya:0 "Soufyndd-on-Sya" + dynn_Saffron_Walddyn:0 "Saffron Walddyn" + dynn_Styfynagy:0 "Styfynagy" + dynn_Strhowdd:0 "Strhowdd" + dynn_Shrhywsburhy:0 "Shrhywsburhy" + dynn_Swaddlynkoty:0 "Swaddlynkoty" + dynn_Stafforhdd:0 "Stafforhdd" + dynn_Stocy_on_Trhynt:0 "Stocy-on-Trhynt" + dynn_Sainquhair:0 "Sainquhair" dynn_T_u_uml_nnermann:0 "Tünnermann" dynn_Tafeit:0 "Tafeit" dynn_Taiado:0 "Taiado" @@ -1974,6 +2037,8 @@ dynn_Turquetil:0 "Turquetil" dynn_Turquier:0 "Turquier" dynn_Tyakh:0 "Tyakh" + dynn_Takahashy:0 "Takahashy" + dynn_Tylfforhdd:0 "Tylfforhdd" dynn_Ugarte:0 "Ugarte" dynn_Uhland:0 "Uhland" dynn_Ulmer:0 "Ulmer" @@ -2128,6 +2193,16 @@ dynn_Wright:0 "Wright" dynn_wrihtssen:0 "Wrihtssen" dynn_Wurm:0 "Wurm" + dynn_Watanaby:0 "Watanaby" + dynn_Wystmynstyr:0 "Wystmynstyr" + dynn_Watffordd:0 "Watffordd" + dynn_Wokyng:0 "Wokyng" + dynn_Warhwyc:0 "Warhwyc" + dynn_Worhcystyrh:0 "Worhcystyrh" + dynn_Wystburhy:0 "Wystburhy" + dynn_Wrycsham:0 "Wrycsham" + dynn_Whitehaiven:0 "Whitehaiven" + dynn_Wigton:0 "Wigton" dynn_Yachir:0 "Yachir" dynn_Yacoubi:0 "Yacoubi" dynn_Yahiaoui:0 "Yahiaoui" From 43f5fbe05ad44609af5395ebe9c5f1e2674e2493 Mon Sep 17 00:00:00 2001 From: trashmasteruni Date: Sun, 15 Mar 2026 22:17:50 +0100 Subject: [PATCH 23/52] republic gfx fix --- gfx/interface/coat_of_arms/rep_crown_strip_115.dds | 4 ++-- gfx/interface/coat_of_arms/rep_crown_strip_28.dds | 4 ++-- gfx/interface/coat_of_arms/rep_crown_strip_44.dds | 4 ++-- gfx/interface/coat_of_arms/rep_crown_strip_62.dds | 4 ++-- gfx/interface/coat_of_arms/rep_crown_strip_86.dds | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_115.dds b/gfx/interface/coat_of_arms/rep_crown_strip_115.dds index 1eeb6622..a1866605 100644 --- a/gfx/interface/coat_of_arms/rep_crown_strip_115.dds +++ b/gfx/interface/coat_of_arms/rep_crown_strip_115.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c873b2a46e1982c53092e0751401da7172140c3f7817ebc1ce737fd178bfd4d -size 96240 +oid sha256:4bb1ed5fc99ac564426377f80306879f67166160a497853db937943fe64ea146 +size 286848 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_28.dds b/gfx/interface/coat_of_arms/rep_crown_strip_28.dds index cd635127..4cb58a23 100644 --- a/gfx/interface/coat_of_arms/rep_crown_strip_28.dds +++ b/gfx/interface/coat_of_arms/rep_crown_strip_28.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc33570a93b54891a5edbbe482117f9f6fa77d663a516d16c6d9ca1efe177842 -size 7536 +oid sha256:b3bd7d17bda78fd183ed2faf44b8ae9a4e58439aa8a0a87832007d7f4b520f03 +size 19840 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_44.dds b/gfx/interface/coat_of_arms/rep_crown_strip_44.dds index bc40ea57..01894289 100644 --- a/gfx/interface/coat_of_arms/rep_crown_strip_44.dds +++ b/gfx/interface/coat_of_arms/rep_crown_strip_44.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0144365b17ad8457fe29a35dfe3407fb01e6daff079376043ab5a706deb8339a -size 15856 +oid sha256:058ffe98e8d33a3c9dbd8b97a6a584ddf559d187783d4d88f303668e34e195a7 +size 46720 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_62.dds b/gfx/interface/coat_of_arms/rep_crown_strip_62.dds index 60be11d3..f139842a 100644 --- a/gfx/interface/coat_of_arms/rep_crown_strip_62.dds +++ b/gfx/interface/coat_of_arms/rep_crown_strip_62.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56eea9cce81c3bfa2ed8402124228c22a836c9d29369dde469aea42817b0646c -size 24560 +oid sha256:03fc7b82d48d725f9a454b0dffb1f6a14904cc988411c94b0c2784e2d0b461eb +size 71808 diff --git a/gfx/interface/coat_of_arms/rep_crown_strip_86.dds b/gfx/interface/coat_of_arms/rep_crown_strip_86.dds index 51b362e9..a4d53800 100644 --- a/gfx/interface/coat_of_arms/rep_crown_strip_86.dds +++ b/gfx/interface/coat_of_arms/rep_crown_strip_86.dds @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a746fa25400f75ca333dbb1f27fa745703e17013a3921d2fe4504d353d2c6b1a -size 54944 +oid sha256:cd45cbc82788b145e6a0a6b405f91b78c75d916d94de5a64f179f400926cbe65 +size 161408 From 4aff5dc9994981d90992e71da605bf530757522d Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 16 Mar 2026 00:41:50 +0000 Subject: [PATCH 24/52] fixes to republics --- common/governments/00_government_types.txt | 4 +- common/legitimacy/00_legitimacy.txt | 925 ------------------ common/on_action/title_on_actions.txt | 99 ++ .../replace/council_tasks_l_english.yml | 2 +- .../english/replace/factions_l_english.yml | 470 +++++++++ .../replace/game_concepts_l_english.yml | 16 +- .../english/replace/laws_l_english.yml | 462 +++++++++ 7 files changed, 1042 insertions(+), 936 deletions(-) delete mode 100644 common/legitimacy/00_legitimacy.txt create mode 100644 localization/english/replace/factions_l_english.yml create mode 100644 localization/english/replace/laws_l_english.yml diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index 46f586a2..3615b201 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -661,7 +661,6 @@ peasantrepublic_government = { always_use_patronym = yes rulers_should_have_dynasty = yes landless_playable = yes - legitimacy = yes barter = yes mercenary = yes use_as_base_on_landed = yes @@ -733,6 +732,7 @@ peasantrepublic_government = { government_locked_to_elective government_allows_nomad_domicile_titles gov_uses_non_crown_coa + government_uses_crown_authority } mechanic_type = feudal @@ -751,7 +751,6 @@ urbanrepublic_government = { always_use_patronym = yes rulers_should_have_dynasty = yes landless_playable = yes - legitimacy = yes barter = yes mercenary = yes use_as_base_on_landed = yes @@ -817,6 +816,7 @@ urbanrepublic_government = { government_locked_to_elective government_allows_nomad_domicile_titles gov_uses_non_crown_coa + government_uses_crown_authority } mechanic_type = feudal diff --git a/common/legitimacy/00_legitimacy.txt b/common/legitimacy/00_legitimacy.txt deleted file mode 100644 index e1c70e61..00000000 --- a/common/legitimacy/00_legitimacy.txt +++ /dev/null @@ -1,925 +0,0 @@ -###################### -# Legitimacy -###################### - -count_legitimacy = { - is_valid = { - OR = { - highest_held_title_tier = tier_county - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - NOR = { - government_allows = administrative - government_has_flag = government_is_nomadic - government_has_flag = government_is_mandala - } - } - - ai_expected_level = default_ai_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - modifier = { - short_reign_duration_mult = 0.25 - monthly_dynasty_prestige = -0.1 - county_opinion_add = -10 - } - flag = reduced_marriage_acceptance - flag = increased_claim_cb_cost - flag = reduced_alliance_acceptance - flag = reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = increased_factions - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = -0.1 - } - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = -0.25 - } - flag = reduced_claim_cb_cost - flag = increased_marriage_acceptance - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - short_reign_duration_mult = -0.5 - county_opinion_add = 10 - } - flag = increased_marriage_acceptance - flag = increased_alliance_acceptance - flag = very_reduced_claim_cb_cost - flag = reduced_factions - flag = reduced_swing_scales_cost - flag = reduced_title_creation_cost - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - modifier = { - short_reign_duration_mult = -0.75 - monthly_dynasty_prestige = 0.25 - county_opinion_add = 20 - } - flag = very_increased_marriage_acceptance - flag = very_increased_alliance_acceptance - flag = extra_reduced_claim_cb_cost - flag = very_reduced_factions - flag = very_reduced_swing_scales_cost - flag = very_reduced_title_creation_cost - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - short_reign_duration_mult = -1 - monthly_dynasty_prestige = 0.5 - county_opinion_add = 30 - } - flag = extra_increased_marriage_acceptance - flag = extra_increased_alliance_acceptance - flag = extra_reduced_claim_cb_cost - flag = extra_reduced_factions - flag = extra_swing_scales_cost - flag = extra_reduced_title_creation_cost - } -} - -duke_legitimacy = { - is_valid = { - highest_held_title_tier = tier_duchy - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - NOR = { - government_allows = administrative - government_has_flag = government_is_nomadic - government_has_flag = government_is_mandala - } - } - - ai_expected_level = default_ai_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - modifier = { - short_reign_duration_mult = 0.5 - monthly_dynasty_prestige = -0.1 - county_opinion_add = -10 - } - flag = very_reduced_marriage_acceptance - flag = very_increased_claim_cb_cost - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = very_increased_factions - flag = very_increased_swing_scales_cost - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = 0.1 - county_opinion_add = -5 - } - flag = reduced_marriage_acceptance - flag = increased_claim_cb_cost - flag = reduced_alliance_acceptance - flag = reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = increased_factions - flag = increased_swing_scales_cost - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = -0.15 - } - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - short_reign_duration_mult = -0.35 - } - flag = increased_marriage_acceptance - flag = reduced_claim_cb_cost - flag = increased_alliance_acceptance - flag = increased_vassalization_acceptance - flag = increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_swing_scales_cost - flag = reduced_title_creation_cost - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - modifier = { - short_reign_duration_mult = -0.65 - county_opinion_add = 10 - } - flag = very_increased_marriage_acceptance - flag = very_reduced_claim_cb_cost - flag = very_increased_alliance_acceptance - flag = very_increased_vassalization_acceptance - flag = very_increased_tributarization_acceptance - flag = very_reduced_factions - flag = very_reduced_swing_scales_cost - flag = very_reduced_title_creation_cost - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - short_reign_duration_mult = -1 - monthly_dynasty_prestige = 0.25 - county_opinion_add = 20 - } - flag = extra_increased_marriage_acceptance - flag = extra_reduced_claim_cb_cost - flag = extra_increased_alliance_acceptance - flag = extra_increased_vassalization_acceptance - flag = extra_increased_tributarization_acceptance - flag = extra_reduced_factions - flag = extra_reduced_swing_scales_cost - flag = extra_reduced_title_creation_cost - } -} - -king_legitimacy = { - is_valid = { - highest_held_title_tier = tier_kingdom - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - OR = { - NOT = { government_allows = administrative } - top_liege = this - } - NOR = { - government_has_flag = government_is_nomadic - government_has_flag = government_is_mandala - } - } - - ai_expected_level = default_ai_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - modifier = { - short_reign_duration_mult = 0.75 - monthly_dynasty_prestige = -0.2 - county_opinion_add = -20 - } - flag = very_reduced_marriage_acceptance - flag = very_increased_claim_cb_cost - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = very_increased_factions - flag = very_increased_swing_scales_cost - - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = 0.5 - monthly_dynasty_prestige = -0.1 - county_opinion_add = -10 - } - flag = reduced_marriage_acceptance - flag = increased_claim_cb_cost - flag = reduced_alliance_acceptance - flag = reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = increased_factions - flag = increased_swing_scales_cost - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = 0.25 - } - flag = reduced_marriage_acceptance - flag = reduced_vassalization_acceptance - flag = increased_claim_cb_cost - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - short_reign_duration_mult = -0.10 - } - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - modifier = { - short_reign_duration_mult = -0.25 - } - flag = increased_marriage_acceptance - flag = reduced_claim_cb_cost - flag = increased_alliance_acceptance - flag = increased_vassalization_acceptance - flag = increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_swing_scales_cost - flag = reduced_title_creation_cost - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - short_reign_duration_mult = -0.5 - county_opinion_add = 10 - monthly_dynasty_prestige = 0.25 - } - flag = very_increased_marriage_acceptance - flag = very_reduced_claim_cb_cost - flag = very_increased_alliance_acceptance - flag = very_increased_vassalization_acceptance - flag = very_increased_tributarization_acceptance - flag = very_reduced_factions - flag = very_reduced_swing_scales_cost - flag = very_reduced_title_creation_cost - } -} - -emperor_legitimacy = { - is_valid = { - highest_held_title_tier = tier_empire - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - NOR = { - government_has_flag = government_is_nomadic - government_has_flag = government_is_mandala - } - } - - ai_expected_level = default_ai_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - modifier = { - short_reign_duration_mult = 1 - monthly_dynasty_prestige = -0.3 - county_opinion_add = -30 - } - flag = massively_reduced_marriage_acceptance - flag = massively_increased_claim_cb_cost - flag = massively_reduced_vassalization_acceptance - flag = massively_reduced_tributarization_acceptance - flag = massively_reduced_alliance_acceptance - flag = massively_increased_factions - flag = massively_increased_swing_scales_cost - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = 0.65 - monthly_dynasty_prestige = -0.2 - county_opinion_add = -20 - } - flag = very_reduced_marriage_acceptance - flag = very_increased_claim_cb_cost - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = very_reduced_tributarization_acceptance - flag = very_increased_factions - flag = very_increased_swing_scales_cost - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = 0.35 - monthly_dynasty_prestige = -0.1 - county_opinion_add = -10 - } - flag = reduced_marriage_acceptance - flag = reduced_alliance_acceptance - flag = increased_claim_cb_cost - flag = reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = increased_factions - flag = increased_swing_scales_cost - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - short_reign_duration_mult = 0.15 - } - flag = reduced_marriage_acceptance - flag = reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = increased_claim_cb_cost - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - modifier = { - short_reign_duration_mult = -0.1 - } - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - short_reign_duration_mult = -0.25 - county_opinion_add = 10 - } - flag = increased_marriage_acceptance - flag = reduced_claim_cb_cost - flag = increased_alliance_acceptance - flag = increased_vassalization_acceptance - flag = increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_title_creation_cost - flag = reduced_swing_scales_cost - } -} - -hegemon_legitimacy = { - is_valid = { - highest_held_title_tier = tier_hegemony - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - NOT = { government_has_flag = government_is_mandala } - NAND = { - has_tgp_dlc_trigger = yes - has_title = title:h_china - } - NOR = { - government_has_flag = government_is_nomadic - government_has_flag = government_is_mandala - } - } - - ai_expected_level = default_ai_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - modifier = { - short_reign_duration_mult = 1.25 - monthly_dynasty_prestige = -0.4 - county_opinion_add = -40 - } - flag = massively_reduced_marriage_acceptance - flag = massively_increased_claim_cb_cost - flag = massively_reduced_vassalization_acceptance - flag = massively_reduced_tributarization_acceptance - flag = massively_reduced_alliance_acceptance - flag = massively_increased_factions - flag = massively_increased_swing_scales_cost - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = 0.75 - monthly_dynasty_prestige = -0.3 - county_opinion_add = -30 - } - flag = very_reduced_marriage_acceptance - flag = very_increased_claim_cb_cost - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = very_reduced_tributarization_acceptance - flag = very_increased_factions - flag = very_increased_swing_scales_cost - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = 0.5 - monthly_dynasty_prestige = -0.2 - county_opinion_add = -20 - } - flag = reduced_marriage_acceptance - flag = reduced_alliance_acceptance - flag = increased_claim_cb_cost - flag = reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = increased_factions - flag = increased_swing_scales_cost - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - short_reign_duration_mult = 0.2 - } - flag = reduced_marriage_acceptance - flag = reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = increased_claim_cb_cost - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - short_reign_duration_mult = -0.25 - county_opinion_add = 10 - } - flag = increased_marriage_acceptance - flag = reduced_claim_cb_cost - flag = increased_alliance_acceptance - flag = increased_vassalization_acceptance - flag = increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_title_creation_cost - flag = reduced_swing_scales_cost - } -} - -mandate_legitimacy = { - is_valid = { - highest_held_title_tier = tier_hegemony - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - has_tgp_dlc_trigger = yes - has_title = title:h_china - } - - # must be equal to the dynastic_cycle_legitimacy_expectation script value and not dependent on vassal scopes - ai_expected_level = dynastic_cycle_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = mandate_legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - on_level_entered = { - situation:dynastic_cycle ?= { - if = { - limit = { - situation_top_has_catalyst = catalyst_hegemon_lost_mandate_of_heaven - months_from_game_start > 0 # We check this to avoid potentially triggering this immediately on game start - } - trigger_situation_catalyst = catalyst_hegemon_lost_mandate_of_heaven - } - } - } - on_level_entered_desc = { - desc = legitimacy_on_entered_lost_mandate - } - modifier = { - short_reign_duration_mult = 1.25 - monthly_dynasty_prestige = -0.4 - county_opinion_add = -40 - } - flag = massively_reduced_marriage_acceptance - flag = massively_increased_claim_cb_cost - flag = massively_reduced_vassalization_acceptance - flag = massively_reduced_tributarization_acceptance - flag = massively_reduced_alliance_acceptance - flag = massively_increased_factions - flag = massively_increased_swing_scales_cost - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = 0.75 - monthly_dynasty_prestige = -0.3 - county_opinion_add = -30 - } - flag = very_reduced_marriage_acceptance - flag = very_increased_claim_cb_cost - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = very_reduced_tributarization_acceptance - flag = very_increased_factions - flag = very_increased_swing_scales_cost - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = 0.5 - monthly_dynasty_prestige = -0.2 - county_opinion_add = -20 - } - flag = reduced_marriage_acceptance - flag = reduced_alliance_acceptance - flag = increased_claim_cb_cost - flag = reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = increased_factions - flag = increased_swing_scales_cost - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - short_reign_duration_mult = 0.2 - } - flag = reduced_marriage_acceptance - flag = reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = increased_claim_cb_cost - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - short_reign_duration_mult = -0.25 - county_opinion_add = 10 - } - flag = reduced_claim_cb_cost - flag = increased_marriage_acceptance - flag = increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_title_creation_cost - flag = reduced_swing_scales_cost - } - level = { - threshold = legitimacy_level_7 # 1650-6600 - modifier = { - tributary_opinion = 20 - county_opinion_add = 20 - monthly_dynasty_prestige = 0.15 - } - flag = very_reduced_claim_cb_cost - flag = very_increased_marriage_acceptance - flag = extra_increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_title_creation_cost - flag = reduced_swing_scales_cost - } - level = { - threshold = legitimacy_level_8 - modifier = { - tributary_opinion = 30 - county_opinion_add = 25 - monthly_dynasty_prestige = 0.25 - } - flag = very_reduced_claim_cb_cost - flag = very_increased_marriage_acceptance - flag = extra_increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_title_creation_cost - flag = reduced_swing_scales_cost - } -} - -nomadic_legitimacy = { - is_valid = { - has_mpo_dlc_trigger = yes - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - government_has_flag = government_is_nomadic - } - - ai_expected_level = default_ai_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = legitimacy_level_1 - modifier = { - short_reign_duration_mult = 0.75 - county_opinion_add = -10 - herd_gain_mult = -0.05 - dread_baseline_add = -30 - } - flag = very_reduced_marriage_acceptance - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = very_reduced_tributarization_acceptance - flag = very_reduced_confederation_acceptance - flag = reduced_obedience_acceptance - - } - # Gap of at least 50 - level = { - threshold = legitimacy_level_2 # 50-200 - modifier = { - short_reign_duration_mult = 0.5 - county_opinion_add = -5 - dread_baseline_add = -15 - } - flag = reduced_marriage_acceptance - flag = reduced_alliance_acceptance - flag = reduced_vassalization_acceptance - flag = reduced_tributarization_acceptance - flag = reduced_confederation_acceptance - flag = reduced_obedience_acceptance - } - # Gap of at least 100 - level = { - threshold = legitimacy_level_3 # 150-600 - modifier = { - short_reign_duration_mult = 0.25 - dread_baseline_add = -5 - } - flag = reduced_marriage_acceptance - flag = reduced_vassalization_acceptance - flag = reduced_obedience_acceptance - } - # Gap of at least 200 - level = { - threshold = legitimacy_level_4 # 350-1400 - modifier = { - tributary_opinion = 5 - herd_gain_mult = 0.05 - } - flag = increased_obedience_acceptance - } - # Gap of at least 350 - level = { - threshold = legitimacy_level_5 # 700-2800 - modifier = { - tributary_opinion = 10 - herd_gain_mult = 0.15 - } - flag = increased_marriage_acceptance - flag = increased_alliance_acceptance - flag = increased_vassalization_acceptance - flag = increased_tributarization_acceptance - flag = increased_confederation_acceptance - flag = reduced_factions - flag = reduced_swing_scales_cost - flag = increased_obedience_acceptance - } - # Gap of at least 500 - level = { - threshold = legitimacy_level_6 # 1200-4800 - modifier = { - tributary_opinion = 15 - county_opinion_add = 10 - monthly_dynasty_prestige = 0.25 - herd_gain_mult = 0.30 - } - flag = very_increased_marriage_acceptance - flag = very_increased_alliance_acceptance - flag = very_increased_vassalization_acceptance - flag = very_increased_tributarization_acceptance - flag = very_increased_confederation_acceptance - flag = very_reduced_factions - flag = very_reduced_swing_scales_cost - flag = increased_obedience_acceptance - } -} - -mandala_legitimacy = { - is_valid = { - has_tgp_dlc_trigger = yes - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - government_has_flag = government_is_mandala - } - - ai_expected_level = default_ai_mandala_legitimacy_expectation - - below_expectations_opinion = default_legitimacy_opinion_penalty - - max = mandala_legitimacy_max - - # Scales based on Tier and Era - ## A Tribal era Count requires 4x less than a Late Medieval era Emperor - level = { - threshold = mandala_legitimacy_level_1 - modifier = { - short_reign_duration_mult = 0.75 - county_opinion_add = -10 - monthly_piety_gain_mult = -0.05 - } - flag = massively_increased_claim_cb_cost - flag = massively_reduced_marriage_acceptance - flag = massively_reduced_alliance_acceptance - flag = massively_reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = very_increased_factions - - } - # Gap of at least 200 - level = { - threshold = mandala_legitimacy_level_2 # 200-800 - modifier = { - short_reign_duration_mult = 0.5 - county_opinion_add = -5 - } - flag = very_increased_claim_cb_cost - flag = very_reduced_marriage_acceptance - flag = very_reduced_alliance_acceptance - flag = very_reduced_vassalization_acceptance - flag = slightly_reduced_tributarization_acceptance - flag = increased_factions - } - # Gap of at least 220 - level = { - threshold = mandala_legitimacy_level_3 # 420-1680 - modifier = { - short_reign_duration_mult = 0.25 - } - flag = increased_claim_cb_cost - flag = reduced_marriage_acceptance - flag = reduced_alliance_acceptance - flag = reduced_vassalization_acceptance - flag = increased_factions - } - # Gap of at least 220 - level = { - threshold = mandala_legitimacy_level_4 # 640-2560 - modifier = { - tributary_opinion = 5 - monthly_piety_gain_mult = 0.05 - } - flag = reduced_vassalization_acceptance - } - # Gap of at least 270 - level = { - threshold = mandala_legitimacy_level_5 # 910-3640 - modifier = { - tributary_opinion = 10 - monthly_piety_gain_mult = 0.15 - } - flag = reduced_claim_cb_cost - flag = increased_marriage_acceptance - flag = increased_alliance_acceptance - flag = increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_swing_scales_cost - } - # Gap of at least 330 - level = { - threshold = mandala_legitimacy_level_6 # 1240-4960 - modifier = { - tributary_opinion = 15 - county_opinion_add = 10 - monthly_piety_gain_mult = 0.2 - monthly_dynasty_prestige = 0.15 - } - flag = reduced_claim_cb_cost - flag = increased_marriage_acceptance - flag = increased_alliance_acceptance - flag = very_increased_tributarization_acceptance - flag = reduced_factions - flag = reduced_swing_scales_cost - } - # Gap of at least 550 - level = { - threshold = mandala_legitimacy_level_7 # 1650-6600 - modifier = { - tributary_opinion = 20 - county_opinion_add = 20 - monthly_piety_gain_mult = 0.3 - monthly_dynasty_prestige = 0.15 - } - flag = very_reduced_claim_cb_cost - flag = very_increased_marriage_acceptance - flag = very_increased_alliance_acceptance - flag = extra_increased_tributarization_acceptance - flag = very_reduced_factions - flag = very_reduced_swing_scales_cost - } - # Gap of at least 550 - level = { - threshold = mandala_legitimacy_level_8 # 2200-8800 - modifier = { - tributary_opinion = 30 - county_opinion_add = 25 - monthly_piety_gain_mult = 0.35 - monthly_dynasty_prestige = 0.25 - faith_conversion_piety_cost_mult = -0.15 - } - flag = very_reduced_claim_cb_cost - flag = very_increased_marriage_acceptance - flag = very_increased_alliance_acceptance - flag = increased_vassalization_acceptance - flag = extra_increased_tributarization_acceptance - flag = very_reduced_factions - flag = very_reduced_swing_scales_cost - } - # Gap of at least 700 - level = { - threshold = mandala_legitimacy_level_9 # 3000-12000 - modifier = { - tributary_opinion = 35 - county_opinion_add = 35 - monthly_piety_gain_mult = 0.4 - monthly_dynasty_prestige = 0.3 - faith_conversion_piety_cost_mult = -0.3 - } - flag = extra_reduced_claim_cb_cost - flag = extra_increased_marriage_acceptance - flag = extra_increased_alliance_acceptance - flag = very_increased_vassalization_acceptance - flag = extra_increased_tributarization_acceptance - flag = extra_reduced_factions - flag = extra_reduced_swing_scales_cost - } -} diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index db9b8823..236688c9 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -197,6 +197,39 @@ on_title_gain = { # COUNTY-TIER TITLES # ###################### + if = { + limit = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + scope:title = { + is_nomad_title = no + title_tier = county + scope:title.title_province = { + NOR = { + has_holding_type = monotown_holding + has_holding_type = city_holding + } + } + } + } + scope:title = { + limit = { + is_nomad_title = no + title_tier = county + scope:title.title_province = { + NOR = { + has_holding_type = monotown_holding + has_holding_type = city_holding + } + } + } + scope:title.title_province = { + set_holding_type = city_holding + } + } + } if = { limit = { OR = { @@ -2915,6 +2948,39 @@ on_title_gain_inheritance = { diarchy.0113 } effect = { + if = { + limit = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + scope:title = { + is_nomad_title = no + title_tier = county + scope:title.title_province = { + NOR = { + has_holding_type = monotown_holding + has_holding_type = city_holding + } + } + } + } + scope:title = { + limit = { + is_nomad_title = no + title_tier = county + scope:title.title_province = { + NOR = { + has_holding_type = monotown_holding + has_holding_type = city_holding + } + } + } + scope:title.title_province = { + set_holding_type = city_holding + } + } + } if = { limit = { OR = { @@ -3082,6 +3148,39 @@ on_title_gain_usurpation = { events = { } effect = { + if = { + limit = { + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + scope:title = { + is_nomad_title = no + title_tier = county + scope:title.title_province = { + NOR = { + has_holding_type = monotown_holding + has_holding_type = city_holding + } + } + } + } + scope:title = { + limit = { + is_nomad_title = no + title_tier = county + scope:title.title_province = { + NOR = { + has_holding_type = monotown_holding + has_holding_type = city_holding + } + } + } + scope:title.title_province = { + set_holding_type = city_holding + } + } + } if = { limit = { OR = { diff --git a/localization/english/replace/council_tasks_l_english.yml b/localization/english/replace/council_tasks_l_english.yml index 202e13ec..255051f2 100644 --- a/localization/english/replace/council_tasks_l_english.yml +++ b/localization/english/replace/council_tasks_l_english.yml @@ -189,7 +189,7 @@ task_increase_control_force_vassal_partition:0 "\n$EFFECT_LIST_BULLET$#P Force Partition for Vassal#!" task_increase_control_lose_vassal_opinion:0 "\n$EFFECT_LIST_BULLET$#N Lowered Vassal Opinion#!" task_increase_control_worsen_contract:1 "\n$EFFECT_LIST_BULLET$#N Worsened [vassal_contract|E]#!" - task_increase_control_loss_of_crown_authority:0 "\n$EFFECT_LIST_BULLET$#N Loss of Crown Authority#!" + task_increase_control_loss_of_crown_authority:0 "\n$EFFECT_LIST_BULLET$#N Loss of Ruler Authority#!" task_domestic_affairs_notification_tooltip:0 "From $task_domestic_affairs$" task_manage_guards:0 "Manage Royal Guards" diff --git a/localization/english/replace/factions_l_english.yml b/localization/english/replace/factions_l_english.yml new file mode 100644 index 00000000..876fc962 --- /dev/null +++ b/localization/english/replace/factions_l_english.yml @@ -0,0 +1,470 @@ +l_english: + FACTION_DISCONTENT_POWER_ABOVE_THRESHOLD:0 "[faction_military_power|E] above threshold: #V $VALUE|0=-$#!" + FACTION_DISCONTENT_POWER_BELOW_THRESHOLD:0 "[faction_military_power|E] is below threshold: #V $VALUE|0=-$#!" + FACTION_POWER_HARD_RULE:0 "[GetPerk( 'hard_rule_perk' ).GetName( GetPlayer )]: #V +$VALUE|0$#!" + FACTION_POWER_INTERNAL_ISSUES:0 "Existing Factions: #V $VALUE|0$#!" + FACTION_DEMAND_ACCEPT:0 "I guess I have no choice..." + FACTION_DEMAND_REFUSE:0 "I will not be threatened!" + FACTION_DEMAND_ACCEPTED_OPT:0 "A wise decision" + FACTION_DEMAND_REFUSED_OPT:0 "Then war it is!" + faction_demand.2004.opt_tt:1 "I join the war against [faction_target.GetShortUIName]" + FACTION_DEMAND_SEND_DEMAND_NOTIFICATION_OPT:0 "Send the ultimatum!" + FACTION_IMPRISONMENT_RETALIATION_WARNING:2 "#high Imprisoning [recipient.GetShortUIName] may incite the [retaliating_faction.GetName] to revolt!#!" + faction_demand.9001.t:1 "[retaliating_faction.GetNameNoTooltip] Retaliates" + FACTION_FAILED_IMPRISONMENT_RETALIATION:1 "[actor.GetShortUIName] has unjustly attempted to imprison [recipient.GetShortUIName], who is one of my fellow faction members." + FACTION_SUCCESSFUL_IMPRISONMENT_RETALIATION:1 "[actor.GetShortUIName] has unjustly imprisoned [recipient.GetShortUIName], who was one of my fellow faction members." + FACTION_IMPRISONMENT_RETALIATION_END:0 "\n\nSuch a brazen attack on the [retaliating_faction.GetName] can only been seen as an act of war, and unless we defend ourselves now we will surely be picked off one by one!" + FACTION_IMPRISONMENT_RETALIATION_OPT:0 "To war!" + + # Independence Faction + independence_faction:0 "$game_concept_independence_faction$" + independence_faction_desc:0 "Members of the Independence [faction|E] seek independence from their [liege|E].\n\n#S Ultimatum#!\nAll Faction Members become [independent|E]\n[liege|E] loses [prestige|E]" + independence_faction_short_effect_desc:0 "Wants Independence from their [liege|E]" + + nation_fracturing_faction:1 "Dissolution Faction" + nation_fracturing_faction_desc:1 "Members of the $nation_fracturing_faction$ [faction|E] seek to destroy the realm of their [liege|E].\n\n#S Ultimatum#!\nAll Faction Members become [independent|E]\n[liege|E] loses their [primary_title|E] and other [titles|E] of the same [title_tier|E]" + nation_fracturing_faction_short_effect_desc:0 "Wants to destroy the Realm of their [liege|E]" + liege_primary_title_dissolution:0 "You are now independent!" + liege_primary_title_dissolution_desc:0 "Your liege lost their [primary_title|E] due to a $nation_fracturing_faction$ [faction|E]" + + FACTION_DEMAND_COLLAPSE:1 "[faction_target.GetPrimaryTitle.GetNameNoTier] Dissolution Demand" + FACTION_DEMAND_COLLAPSE_DESC:1 "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nIt is time for you to recognize that you are not able to maintain the unity of [faction_target.GetPrimaryTitle.GetNameNoTier]. It's time to end your rule or of any others: the region needs more freedom. Accept our demands or face our swords on the battlefield!" + FACTION_DEMAND_COLLAPSE_ACCEPTED:1 "Dissolution Demands Accepted" + FACTION_DEMAND_COLLAPSE_ACCEPTED_DESC:1 "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour misguided demands will only serve to weaken us all. Regardless, to spare the realm from futile bloodshed I am forced to accept your request for independence." + FACTION_DEMAND_COLLAPSE_REFUSED:1 "Dissolution Demands Refused" + FACTION_DEMAND_COLLAPSE_REFUSED_DESC:0 "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour shameful attempt at blackmail has not succeeded. No matter how many corrupted souls you have enticed to help carry out your plan I will not give in without a fight. I'd rather die defending what is rightfully mine!" + FACTION_DEMAND_COLLAPSE_SEND_DEMAND_NOTIFICATION:1 "End of [faction_target.GetPrimaryTitle.GetNameNoTier]!" + FACTION_DEMAND_COLLAPSE_SEND_DEMAND_NOTIFICATION_DESC:0 "The moment has come! The unified voices of the [faction.GetName] agree that [faction_target.GetName] has lost any right of rule [faction_target.GetSheHe] might once have had. We shall be given our independence or take it by force!" + faction_demand.1002.tt:1 "[faction_target.GetPrimaryTitle.GetNameNoTier] is destroyed." + + FACTION_DEMAND_INDEPENDENCE:0 "Independence Demand" + FACTION_DEMAND_INDEPENDENCE_DESC:0 "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nIt is time for you to recognize the full independence of [faction_leader.GetPrimaryTitle.GetNameNoTier] and the other states in the [faction.GetName]. Accept our demands or face our swords on the battlefield!" + FACTION_DEMAND_INDEPENDENCE_ACCEPTED:0 "Independence Demands Accepted" + FACTION_DEMAND_INDEPENDENCE_ACCEPTED_DESC:1 "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour misguided demands will only serve to weaken us all. Regardless, to spare the realm from futile bloodshed I am forced to accept your request for independence." + FACTION_DEMAND_INDEPENDENCE_REFUSED:0 "Independence Demands Refused" + FACTION_DEMAND_INDEPENDENCE_REFUSED_DESC:0 "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour shameful attempt at blackmail has not succeeded. No matter how many corrupted souls you have enticed to help carry out your plan I will not give in without a fight. I'd rather die defending what is rightfully mine!" + FACTION_DEMAND_INDEPENDENCE_SEND_DEMAND_NOTIFICATION:0 "Independence!" + FACTION_DEMAND_INDEPENDENCE_SEND_DEMAND_NOTIFICATION_DESC:0 "The moment has come! The unified voices of the [faction.GetName] agree that [faction_target.GetName] has lost any right of rule [faction_target.GetSheHe] might once have had. We shall be given our independence or take it by force!" + faction_demand.0002.tt:0 "All Faction Members Gain Independence!" + + FACTION_DEMAND_BRIBE_CO_EMPEROR: "Surely a gift of office can yet force their cooperation?" + FACTION_DEMAND_BRIBE_CO_EMPEROR_REASON: "[faction_leader.GetShortUIName|U] must be the [faction|E] [claimant|E] #weak ([faction.GetSpecialCharacter.GetTitledFirstName])#!" + faction_demand.0000.faction_leader_accepts: "If their leader accepts your offer" + faction_demand.0000.faction_leader_rejects: "If their leader rejects your offer" + faction_demand.0000.enter_co_rule_avoiding_worst_effects: "[faction_target.GetShortUIName|U] appoint[_s(faction_target)] [faction_leader.GetShortUIName] as [CharYourHerHis(faction_target)] [co_emperor|E], avoiding the worst of the [faction.GetName]'s consequences" + faction_demand.0000.truce_from_co_rule: "[faction_target.GetShortUIName|U] gain[_s(faction_target)] a [EmptyScope.ScriptValue('faction_counter_offer_appointed_co_emperor_value')] year [truce|E] with every [faction|E] member" + ep3_truce_appointed_faction_leader_coruler: "Truce after Faction Leader elevated to Co-Emperor" + + FACTION_DEMAND_COUNTER_OFFER_CORULE: "Faction Counter-Offer" + FACTION_DEMAND_COUNTER_OFFER_CORULE_DESC: "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour demands have merit — perhaps even showing errors in my own judgement. Lower your arms and join me as my Co-[faction_target.GetTitleAsNameNoTooltip], and we shall rule [faction_target.GetPrimaryTitle.GetDefinitiveName] together!" + FACTION_DEMAND_COUNTER_OFFER_CORULE_ACCEPT: "An offer I cannot refuse..." + FACTION_DEMAND_COUNTER_OFFER_CORULE_REJECT: "Bah, naught but a poisoned chalice!" + faction_demand.0000.offer_accepted: "Counter Offer Accepted" + faction_demand.0000.enter_co_emperorship: "[faction_leader.GetFirstName] becomes your [co_emperor|E]" + faction_demand.0000.offer_rejected: "Counter Offer Rejected" + + FACTION_DEMAND_COUNTER_OFFER_CORULE_MEMBER_NOTIFICATION: "Faction Leader Elevated" + FACTION_DEMAND_COUNTER_OFFER_CORULE_MEMBER_NOTIFICATION_DESC: "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nI am pleased to report that [faction_target.GetTitledFirstName] has come around to our way of thinking. [faction_target.GetSheHe|U] has appointed #EMP me#! as Co-[faction_target.GetTitleAsNameNoTooltip], and I have agreed that we shall lay down our swords. Effective immediately." + FACTION_DEMAND_COUNTER_OFFER_MEMBER_NOTIFICATION.A: "We were so close..." + FACTION_DEMAND_COUNTER_OFFER_MEMBER_NOTIFICATION.B: "That selfish fool!" + + # Peasant Faction + peasant_faction:0 "Peasant Faction" + peasant_faction_desc:0 "The Peasant [faction|E] wants freedom for the people from foreign or infidel rule, and will strive to replace a liege who does not share the [culture|E] and [faith|E] of the commoners in the [counties|E]." + peasant_faction_short_effect_desc:0 "Wants lower [county_control|E]" + peasant_faction_every_county:0 "Every [faction|E] [county|E]" + peasant_faction_spawn_county_levies:0 "Raises a [new_title.GetAdjective] [army|E] proportional to its [levies|E]" + FACTION_DEMAND_PEASANT:1 "To the [ROOT.Char.Custom2('InsultAdjective', ROOT.Char)] [ROOT.Char.GetTitledFirstName]" + FACTION_DEMAND_PEASANT_DESC:0 "We have been burdened with your oppressive laws for far too long. No more! We are done paying you taxes.\n\nOnce your coffers dry up and your larders are empty, you will wish you had treated us more fairly." + FACTION_DEMAND_PEASANT_ACCEPT:0 "I guess I could grant a tax lien..." + FACTION_DEMAND_PEASANT_REFUSE:0 "Never! A peasant's lot is to serve their lord!" + FACTION_PEASANT_NAME:0 "Peasant Rabble" + FACTION_PEASANT_TITLE_NAME:0 "Peasant Revolt" + + # Nomadic Faction + nomadic_faction: "Nomadic Faction" + nomadic_faction_desc: "The Nomadic [faction|E] wants to be ruled by a [GetGovernment( 'nomad_government' ).GetName] [ruler|E] whos [yurt|E] shares their [culture|E] and [faith|E]." + nomadic_faction_short_effect_desc: "Wants to establish new [GetGovernment( 'nomad_government' ).GetName] [realms|E]" + FACTION_DEMAND_NOMADIC: "To the [ROOT.Char.Custom2('InsultAdjective', SCOPE.sC('peasant_leader'))] [ROOT.Char.GetTitledFirstName]" + FACTION_DEMAND_NOMADIC_DESC: "We will no longer bow beneath your yoke of oppression! We, the proud [GetGovernment( 'nomad_government' ).GetName] [peasant_leader.GetCulture.GetCollectiveNoun], were born to roam free beneath these endless skies.\n\nWith [peasant_leader.GetFaith.WarGodName] guiding our riders, we shall break from your pathetic rule and reclaim our place on the open steppe!" + FACTION_DEMAND_NOMADIC_ACCEPT_GRANT_INDEPENDENCE: "Fine! My realm has no place for your unwashed herds." + FACTION_DEMAND_NOMADIC_VASSAL_DESC: "We will no longer tolerate your vile oppression of the proud [peasant_leader.GetCulture.GetName] [peasant_leader.GetFaith.GetAdherentNamePlural]. Born to roam free beneath these open skies, we reject your tyranny — our time is at hand!\n\nWe shall cast off your rule and that of your liege, [faction_target.GetTitledFirstName], once and for all!!" + FACTION_DEMAND_NOMADIC_VASSAL_JOIN_WAR: "Then I shall meet you on the field of battle, #EMP vagabond#!!" + + # Populist Faction + populist_faction:0 "Populist Faction" + populist_faction_desc:1 "The Populist [faction|E] wants freedom from foreign or infidel rule, and will seek independence from a liege who does not share their [culture|E] or [faith|E]." + populist_faction_short_effect_desc:0 "Wants Independence from their [liege|E]" + populist_faction_short_effect_desc_admin: "Wants the [state_faith|E] to match their own" + FACTION_DEMAND_POPULIST:0 "To the [ROOT.Char.Custom2('InsultAdjective', SCOPE.sC('peasant_leader'))] [ROOT.Char.GetTitledFirstName]" + FACTION_DEMAND_POPULIST_DESC_ADMIN: "We shall not permit any further oppression from your [ROOT.Char.Custom2('GetUnbelieverTermAdjective', peasant_leader)] rule. [peasant_leader.GetFaith.GetName|U] must be recognized as the preeminent faith of the [ROOT.Char.GetPrimaryTitle.GetName]!\n\nGive our faith the rightful status it deserves, or prepare to face the wrath of our many faithful!" + FACTION_DEMAND_POPULIST_DESC_CULTURE:0 "We will not stand for the foreign oppression of [peasant_leader.GetCulture.GetName] traditions any longer. Our time is now at hand!\n\nGive us the right to rule ourselves as we see fit, or face the combined wrath of all my countrymen!" + FACTION_DEMAND_POPULIST_DESC_FAITH:0 "We will not stand for your vile oppression of faithful [peasant_leader.GetFaith.GetAdherentNamePlural] any longer. Our time is now at hand!\n\nWith [peasant_leader.GetFaith.WarGodName] guiding us, we will rise up and free ourselves from your [ROOT.Char.Custom2('GetUnbelieverTermAdjective', peasant_leader)] rule!" + FACTION_DEMAND_POPULIST_DESC:0 "We will not stand for your vile oppression of good [peasant_leader.GetCulture.GetName] [peasant_leader.GetFaith.GetAdherentNamePlural] any longer. Our time is now at hand!\n\nWith [peasant_leader.GetFaith.WarGodName] guiding us, we will rise up and free ourselves from your [ROOT.Char.Custom2('GetUnbelieverTermAdjective', peasant_leader)] rule!" + FACTION_DEMAND_POPULIST_ACCEPT_CONVERT:0 "Now hold on... what if I adopted your ways instead?" + FACTION_DEMAND_POPULIST_ACCEPT_CONVERT_STATE_FAITH: "[peasant_leader.GetFaith.GetNameNoTooltip|U] shall be accorded this honor." + FACTION_DEMAND_POPULIST_ACCEPT_GRANT_INDEPENDENCE:0 "Fine, I have no need of such quarrelsome subjects!" + FACTION_DEMAND_POPULIST_ACCEPT_GRANT_INDEPENCE_TT:0 "#N This will leave you landless!#!" + FACTION_DEMAND_POPULIST_REFUSE:0 "You want freedom? You shall have it in death!" + FACTION_DEMAND_POPULIST_REFUSE_ADMIN: "Such changes are not yours to make, insolent [peasant_leader.Custom2('InsultNoun', ROOT.Char)]!" + FACTION_DEMAND_POPULIST_REFUSE_TT:0 "#high [peasant_leader.GetTitledFirstName]#! and the #high [faction.GetName]#! declares [war|E] on you" + FACTION_POPULIST_REVOLT_TITLE_NAME:0 "the Populist Uprising" + FACTION_NOMADIC_REVOLT_TITLE_NAME: "the Nomadic Revolt" + FACTION_POPULIST_CREATED_TITLE_NAME:0 "the [founder_culture.GetCollectiveNounNoTooltip]" + FACTION_DEMAND_POPULIST_VASSAL_DESC_SAME_CULTURE_AND_FAITH:0 "You may share our traditions and our beliefs, but we cannot tolerate you or the [faction_target.Custom2('InsultAdjective', SCOPE.sC('peasant_leader'))] [faction_target.GetTitledFirstName] any longer!\n\nEither stand aside, or aid us in gaining the freedom we rightly deserve!" + FACTION_DEMAND_POPULIST_VASSAL_DESC_CULTURE:0 "We will not stand for the foreign oppression of [peasant_leader.GetCulture.GetName] traditions any longer. Our time is now at hand!\n\nWe will demand nothing less than total freedom from your liege, [faction_target.GetTitledFirstName]!" + FACTION_DEMAND_POPULIST_VASSAL_DESC_FAITH:0 "We will not stand for your vile oppression of faithful [peasant_leader.GetFaith.GetAdherentNamePlural] any longer. Our time is now at hand!\n\nWith [peasant_leader.GetFaith.WarGodName] guiding us, we will rise up and free ourselves from the rule your liege, [faction_target.GetTitledFirstName]!" + FACTION_DEMAND_POPULIST_VASSAL_DESC:0 "We will not stand for your vile oppression of good [peasant_leader.GetCulture.GetName] [peasant_leader.GetFaith.GetAdherentNamePlural] any longer. Our time is now at hand!\n\nWe will free ourselves from your rule and the tyranny of your liege, [faction_target.GetTitledFirstName]!" + FACTION_DEMAND_POPULIST_VASSAL_JOIN_REBELS:0 "Let me join your cause!" + FACTION_DEMAND_POPULIST_VASSAL_CONVERTS:0 "Wait! What if I adopted your ways and #EMP help#! you?" + FACTION_DEMAND_POPULIST_VASSAL_CONVERTS_TT:0 "You will aid the rebels against your [liege|E]" + FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR:0 "Then I shall meet you on the field of battle, #EMP traitor#!!" + FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_BLOCK_TT:0 "You cannot join the war because you are already at war with another participant" + FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_BLOCK_TT_2:0 "You cannot join the war as that would put you at war with an ally in a different war" + FACTION_DEMAND_POPULIST_VASSAL_JOIN_WAR_TT:0 "You will aid your [liege|E] against the rebels" + FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE:0 "I would rather not get involved..." + FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE_TT_A:0 "You do not join the #high [populist_war.GetName]#!" + FACTION_DEMAND_POPULIST_VASSAL_TAKE_NO_SIDE_TT_B:0 "#N You will lose a part of your realm if your liege surrender to their demands!#!" + POPULIST_FACTION_INDEPENDENCE_TITLE:0 "Gained Independence" + POPULIST_FACTION_INDEPENDENCE_DESC:0 "You gained independence from [faction_target.GetTitledFirstName] as a result of the [popular_faction|E]" + VASSAL_JOINS_LIEGE_TOOLTIP:0 "#high [vassal_to_join_liege.GetTitledFirstName]#! joins the war on your side as a Defender" + VASSAL_JOINS_REBELS_TOOLTIP:0 "#high [vassal_to_join_rebels.GetTitledFirstName]#! joins the war on the rebel side as an Attacker" + populist_faction_same_culture_faith_as_liege:0 "Cannot be of the same [culture|E] and [faith|E] as your [liege|E]" + + # Liberty Faction + liberty_faction:0 "Liberty Faction" + liberty_faction_desc:0 "The Liberty [faction|E] seeks to lower [crown_authority|E], [tribal_authority|E], or [imperial_bureaucracy|E], but members are otherwise loyal to the [realm|E]." + liberty_faction_desc_admin: "The Liberty [faction|E] seeks to lower [imperial_bureaucracy|E], but members are otherwise loyal to the [realm|E]." + liberty_faction_desc_tribal: "The Liberty [faction|E] seeks to lower [tribal_authority|E], but members are otherwise loyal to the [realm|E]." + liberty_faction_desc_feudal: "The Liberty [faction|E] seeks to lower [crown_authority|E], but members are otherwise loyal to the [realm|E]." + liberty_faction_short_effect_desc:0 "Wants to lower [crown_authority|E]" + liberty_faction_short_effect_desc_admin: "Wants to lower [imperial_bureaucracy|E]" + liberty_faction_short_effect_desc_tribal: "Wants to lower [tribal_authority|E]" + FACTION_DISCONTENT_CA_1:0 "Limited Ruler Authority: #V $VALUE|0$%#!" + FACTION_DISCONTENT_CA_2:0 "High Ruler Authority: #V $VALUE|0$%#!" + FACTION_DISCONTENT_CA_3:0 "Absolute Ruler Authority: #V $VALUE|0$%#!" + FACTION_DEMAND_LIBERTY:0 "Liberty Demand" + FACTION_DEMAND_LIBERTY_DESC:0 "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nIt is time for you to recognize the ancient and inalienable rights of your vassals! Accept the demands of the [faction.GetName] or face our swords on the battlefield!" + FACTION_DEMAND_LIBERTY_ACCEPTED:0 "Liberty Demands Accepted" + FACTION_DEMAND_LIBERTY_ACCEPTED_DESC:0 "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour selfish notions of 'liberty' will weaken the Realm as a whole. However, to avoid needless bloodshed I will accept your demands." + faction_demand.0102.tt:0 "Your Liege's [crown_authority|E] is Lowered!" + FACTION_DEMAND_LIBERTY_REFUSED:0 "Liberty Demands Refused" + FACTION_DEMAND_LIBERTY_REFUSED_DESC:0 "[faction_target.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nYour ridiculous attempt at intimidation will never succeed. I am the [faction_target.GetTitleAsNameNoTooltip]! You miserable bunch of traitors shall learn your place on the battlefield!" + FACTION_DEMAND_LIBERTY_SEND_DEMAND_NOTIFICATION:0 "Liberty or Death!" + FACTION_DEMAND_LIBERTY_SEND_DEMAND_NOTIFICATION_DESC:0 "The moment has come! The lords of the [faction.GetName] agree that [faction_target.GetName] is a despot who must yield [faction_target.GetHerHis] tyrannic authority over us... at sword point, if need be." + + # Claimant faction + claimant_faction:0 "Claimant Faction" + claimant_faction_desc:0 "Members of the claimant [faction|E] supports a pretender targeting a title belonging to their [liege|E]." + claimant_faction_short_effect_desc:0 "Wants [ROOT.Faction.GetSpecialTitle.GetDefinitiveName|l]" + FACTION_DEMAND_CLAIMANT:0 "Claimant Demand" + FACTION_DEMAND_CLAIMANT_DESC:0 "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nThe right to rule [faction_targeted_title.GetNameNoTier] belongs to [faction_claimant.GetName] by divine right, and we have gathered the support required to make it so. Accept this fact peacefully or we will make you do so by force!" + FACTION_DEMAND_CLAIMANT_DESC_ME:0 "The right to rule [faction_targeted_title.GetNameNoTier] belongs to me by divine right, and I finally have the means to make it so. Accept this fact peacefully or I will make you do so by force!" + FACTION_DEMAND_CLAIMANT_ACCEPTED:0 "Claimant Demands Accepted" + FACTION_DEMAND_CLAIMANT_ACCEPTED_DESC:0 "It is clear to me that you would see the realm burn before giving up this foolish venture. For the good of the [ROOT.Char.GetTopLiege.GetPrimaryTitle.GetBaseNameNoTierNoTooltip] I must accept your demands, but know that a great injustice was done here today. This will not stand!" + FACTION_DEMAND_CLAIMANT_REFUSED:0 "Claimant Demands Refused" + FACTION_DEMAND_CLAIMANT_REFUSED_DESC:1 "[faction_claimant.GetShortUINamePossessive|U] claim on my title is no more real than the stories we tell children at night. No matter how many misguided fools you have gathered to help carry out your scheme I will not bend to such a collection of dung. I'd rather die than see my birthright fall to someone so low!" + FACTION_DEMAND_CLAIMANT_SEND_DEMAND_NOTIFICATION:0 "A Rightful Claim!" + FACTION_DEMAND_CLAIMANT_SEND_DEMAND_NOTIFICATION_DESC:1 "The moment has come! All who support [faction_claimant.GetName] as the rightful ruler of [faction_targeted_title.GetNameNoTier] will now rise as one and make sure that [faction_claimant.GetSheHe] can take [faction_claimant.GetHerHis] rightful place on the throne. We shall see it done, by sword and fire if we must!" + FACTION_CLAIMANT_INVITE:1 "[faction_invite_from.Custom2('AppropriateGreeting', ROOT.Char)]" + FACTION_CLAIMANT_INVITE_DESC:0 "[faction_target.GetName] occupies a throne that should rightly be yours! I am willing to support your claim with word and sword, and I am sure others in the realm will also champion this rightful cause. All you need to do is accept." + FACTION_CLAIMANT_INVITE_ACCEPT:0 "Finally!" + FACTION_CLAIMANT_INVITE_REFUSE:0 "It is not right..." + FACTION_CLAIMANT_INVITE_ACCEPTED:1 "[faction_claimant.Custom2('AppropriateGreeting', ROOT.Char)]" + FACTION_CLAIMANT_INVITE_ACCEPTED_DESC:0 "Finally! [faction_target.GetName] is nothing more than a jester acting a [faction_target.GetTitleAsNameNoTooltip], and I am sure the realm will rise to my cause. Those who aid me will not be forgotten." + FACTION_CLAIMANT_INVITE_ACCEPTED_OPT:0 "It is only a matter of time..." + + FACTION_CLAIMANT_INVITE_REFUSED:1 "[faction_claimant.Custom2('AppropriateGreeting', ROOT.Char)]" + FACTION_CLAIMANT_INVITE_REFUSED_ALLY_DESC:0 "My claim is just, this I know. But my alliance to [faction_target.GetTitledFirstName] prevents me from going to war. I will be with you in spirit." + FACTION_CLAIMANT_INVITE_REFUSED_HOOK_DESC:0 "While my claim is just I... just can't join you. [faction_target.GetTitledFirstName] has this... #emphasis 'undeniable charm'#! that prevents me from ever lifting my hand against [faction_target.GetHerHim]. Yes, that's it. I wish you luck." + FACTION_CLAIMANT_INVITE_REFUSED_PREDICAMENT_DESC:1 "While I am glad to see the realm rise against the false [faction_target.GetTitledFirstName] my current predicament prevents me from joining you in this righteous endeavor. If you succeed, I will be in your debt." + FACTION_CLAIMANT_INVITE_REFUSED_CHILD_DESC:1 "I am happy that you too think that [faction_target.GetTitledFirstName] is a real meanie, and that I would be a much better ruler than [faction_target.GetHerHim]!\n\nI am busy playing with my new toys right now... but if you win I promise that I'll share them with you!" + FACTION_CLAIMANT_INVITE_REFUSED_INSIGNIFICANT_DESC:0 "Finally! [faction_target.GetName] is nothing more than a jester acting a [faction_target.GetTitleAsNameNoTooltip], and I am sure the realm will rise to my cause.\n\nDue to my current lowly status, I cannot aid you. But know this – #emphasis when#! you are victorious, I will see you rewarded handsomely!" + FACTION_CLAIMANT_INVITE_REFUSED_DESC:1 "While I appreciate your enthusiasm for my claim, I cannot help but feel that this endeavor is doomed to fail. I will not give you my support as a result, but if you somehow manage to succeed anyway I will accept my place on the throne." + FACTION_CLAIMANT_INVITE_REFUSED_OPT:0 "Unfortunate." + FACTION_CLAIMANT_EVERY_FACTION_MEMBER:0 "Every Faction Member" + FACTION_CLAMAINT_DYNAMIC_NAME:0 "Install [ROOT.Faction.GetSpecialCharacter.GetTitledFirstName] on the [ROOT.Faction.GetSpecialTitle.GetAdjective] Throne" + FACTION_POPULIST_DYNAMIC_NAME:0 "[ROOT.Var('faction_culture').Culture.GetNameNoTooltip] [ROOT.Var('faction_faith').Faith.GetAdjectiveNoTooltip] Populists" + FACTION_ESCALATED_PEASANT_DYNAMIC_NAME:0 "[ROOT.Faction.GetSpecialCharacter.Custom('GetTurbanRebellionColor')] [ROOT.Faction.GetSpecialCharacter.Custom('RegionalPeasantHeadgearPlural')|U] Rebellion" + + FACTION_NOMAD_DYNAMIC_NAME: "[ROOT.Var('faction_culture').Culture.GetNameNoTooltip] [ROOT.Var('faction_faith').Faith.GetAdjectiveNoTooltip] Nomads" + + WARNING_I_HAVE_ALREADY_JOINED_A_FACTION:1 "@warning_icon! #X You have already joined a [faction|E]#!" + WARNING_I_AM_ALREADY_AT_WAR_WITH_TARGET:1 "@warning_icon! #X You are already at war with [faction_target.GetTitledFirstName]#!" + WARNING_I_AM_AT_WAR_WITH_FACTION_LEADER:1 "@warning_icon! #X You are at war with [faction_invite_from.GetTitledFirstName]#!" + WARNING_INVITE_CANNOT_JOIN:0 "@warning_icon! #X [faction_invite_from.GetTitledFirstName] can't join the faction#!" + +# FACTION JOIN/CREATE REASONS + FACTION_REASON_AI_PERSONALITY:0 "\n[personality|E]: $RESULT|0+=$" + FACTION_REASON_DIFFICULTY_HARD: "Hard Difficulty: $VALUE|0+=$" + FACTION_REASON_DIFFICULTY_VERY_HARD: "Very Hard Difficulty: $VALUE|0+=$" + FACTION_REASON_DIFFICULTY_EASY:0 "Easy Difficulty: $VALUE|0+=$" + FACTION_REASON_DIFFICULTY_VERY_EASY:0 "Very Easy Difficulty: $VALUE|0+=$" + FACTION_REASON_GAME_RULE_REALM_STABILITY_LESSER:0 "Lesser Realm Stability Game Rule: $VALUE|0+=$" + FACTION_REASON_GAME_RULE_REALM_STABILITY_HIGHER:0 "Higher Realm Stability Game Rule: $VALUE|0+=$" + FACTION_REASON_GAME_RULE_REALM_STABILITY_EXTREME:0 "Extreme Realm Stability Game Rule: $VALUE|0+=$" + FACTION_REASON_CAPITAL_COUNTY:0 "[liege|E]'s [realm_capital|E]: $VALUE|0+=$" + FACTION_REASON_GLORY_LEGACY_4:0 "[GetDynastyPerk('glory_legacy_4').GetName]: $VALUE|0+=$" + FACTION_REASON_COUNTY_OPINION:0 "Low [county_opinion|E]: $VALUE|0+=$" + FACTION_REASON_TARGET_FRIEND_LOVER:0 "[relation|E] with [liege|E]: $VALUE|0+=$" + FACTION_REASON_POWER_HALFWAY_THRESHOLD:0 "Strong [faction_military_power|E]: $FACTOR|0%+=$" + FACTION_REASON_POWER_PUSHING_THRESHOLD:0 "Formidable [faction_military_power|E]: $FACTOR|0%+=$" + FACTION_REASON_POWER_THRESHOLD:0 "Overwhelming [faction_military_power|E]: $FACTOR|0%+=$" + FACTION_REASON_POWERFUL_VASSAL:0 "[powerful_vassal|E]: $FACTOR|0%+=$" + FACTION_REASON_NEIGHBORS:0 "Neighbors in same [faction|E]: $FACTOR|^%+=$" + FACTION_REASON_CULTURAL_REASONS:0 "Cultural reasons: $VALUE|0+=$" + FACTION_REASON_LEGITIMACY_LEGACY_4: "[GetDynastyPerk('ce1_legitimacy_legacy_4').GetName]: $VALUE|0+=$" + +#common_faction_modifiers + FACTION_REASON_GAME_START_DUCHY:0 "1 years from Game start: $VALUE|0+=$" + FACTION_REASON_GAME_START_KINGDOM:0 "5 years from Game start: $VALUE|0+=$" + FACTION_REASON_GAME_START_EMPIRE:0 "10 years from Game start: $VALUE|0+=$" + FACTION_REASON_LIEGE_DEBT:0 "[liege|E] is in [debt|E]: $VALUE|0+=$" + REASON_DEBT:0 "Is in [debt|E]: $VALUE|0+=$" + FACTION_REASON_PLURALISM_ASTRAY:0 "[GetFaithDoctrine('doctrine_pluralism_pluralistic').GetBaseName] [faith|E]: $VALUE|0+=$" + FACTION_REASON_PLURALISM_HOSTILE:0 "[GetFaithDoctrine('doctrine_pluralism_pluralistic').GetBaseName] [faith|E]: $VALUE|0+=$" + FACTION_REASON_PLURALISM_EVIL:0 "[GetFaithDoctrine('doctrine_pluralism_pluralistic').GetBaseName] [faith|E]: $VALUE|0+=$" + FACTION_REASON_LEGALISM_VIRTUES:0 "[GetFaithDoctrine('tenet_legalism').GetBaseName]: [liege|E] is [virtuous|E]: $VALUE|0+=$" + FACTION_REASON_LEGALISM_SINS:0 "[GetFaithDoctrine('tenet_legalism').GetBaseName]: [liege|E] is [sinful|E]: $VALUE|0+=$" + FACTION_REASON_INTIMIDATED:0 "[intimidated|E]: $VALUE|0+=$" + FACTION_REASON_TERRIFIED:0 "[cowed|E]: $VALUE|0+=$" + +#independence_faction_modifiers + FACTION_REASON_ELECTOR:0 "[elector|E]: $VALUE|0+=$" + FACTION_REASON_RIGHTFUL:0 "Outside [liege|E] [de_jure|E]: $VALUE|0+=$" + FACTION_REASON_KING:0 "[kings|E] desire independence: $VALUE|0+=$" + FACTION_REASON_COUNT:0 "[counts|E] want to stay as [vassals|E]: $VALUE|0+=$" + FACTION_REASON_PERK_TOE_THE_LINE:0 "[GetPerk('toe_the_line_perk').GetName(GetPlayer)]: $VALUE|0+=$" + FACTION_REASON_INNOVATION_STEM_DUCHIES:0 "$innovation_stem_duchies$: $VALUE|0+=$" + FACTION_REASON_CULTURE_ACCEPTANCE:0 "Low [cultural_acceptance|E]: $VALUE|0+=$" + FACTION_REASON_DIFFERENT_CULTURE: "Different [culture|E]: $VALUE|0+=$" + FACTION_REASON_PREFER_DISSOLUTION_FACTION:0 "Prefers $nation_fracturing_faction$: $VALUE|0+=$" + FACTION_REASON_NEW_VASSAL:0 "New [vassal|E]: $VALUE|0+=$" + +#peasant_faction_new + FACTION_REASON_PREFER_POPULIST_FACTION:0 "Prefers $populist_faction$: $VALUE|0+=$" + FACTION_REASON_PREFER_ESCALATED_FACTION:0 "Prefers $escalated_peasant_faction$: $VALUE|0+=$" + FACTION_REASON_RULING_CASTE:0 "[GetCultureTradition('tradition_ruling_caste').GetName]: $VALUE|0+=$" + FACTION_REASON_AT_WAR_WITH_TARGET:0 "Already revolting against [liege|E]: $VALUE|0+=$" + + FACTION_REASON_DISLIKE_NON_NOMADS: "Wants a [GetGovernment( 'nomad_government' ).GetName] [ruler|E]: $VALUE|0+=$" + +#liberty_faction_modifiers + FACTION_REASON_CROWN_AUTHORITY_1:0 "$crown_authority_1$: $VALUE|0+=$" + FACTION_REASON_CROWN_AUTHORITY_2:0 "$crown_authority_2$: $VALUE|0+=$" + FACTION_REASON_CROWN_AUTHORITY_3:0 "$crown_authority_3$: $VALUE|0+=$" + +#claimant_faction + FACTION_REASON_CLAIMANT_COUNTY_SHARED_CULTURE:0 "[claimant|E]'s [culture|E] is [county|E]'s Culture: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_COUNTY_SHARED_HERITAGE:0 "[claimant|E]'s [heritage|E] is [county|E]'s Heritage: $VALUE|0+=$" + FACTION_REASON_LIKE_CLAIMANT_FAITH:0 "Prefers [claimant|E]'s [faith|E]: $VALUE|0+=$" + FACTION_REASON_ADULT_CLAIMANT_CHILD_RULER:0 "[claimant|E] is an [adult|E] and [liege|E] is just a [child|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_KINDNESS:0 "[claimant|E] has a magnanimous [personality|E]: $VALUE|0+=$" + +#claimant_faction_modifiers + FACTION_REASON_CLAIMANT_GENDER:0 "[claimant|E]'s Gender: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_GENDER_VS_TARGET:0 "[liege|E]'s Gender: $VALUE|0+=$" + FACTION_REASON_POWERFUL_LIKES_CLAIMANT_MORE:0 "[powerful_vassal|E] has higher [opinion|E] of [claimant|E]: $VALUE|0+=$" + FACTION_REASON_LIKES_LIEGE_UNLESS_CULTURE:0 "Higher [opinion|E] of [liege|E] than [claimant|E]: $VALUE|0+=$" + FACTION_REASON_LIKE_CLAIMANT_MORE_THAN_LIEGE:0 "Higher [opinion|E] of [claimant|E]: $VALUE|0+=$" + FACTION_REASON_LIKES_LIEGE:0 "Further [opinion|E] of [liege|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_TOO_OLD:0 "[claimant|E] is too old: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_TOO_YOUNG:0 "[claimant|E] is a [child|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMAINT_DYING:0 "[claimant|E]'s [health|E] is poor: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_LOW_LEGITIMACY: "[claimant|E]'s [legitimacy|E] is too low: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_RARE_PRODUCE_HEIR:0 "[claimant|E] is unlikely to produce an [heir|E]: $VALUE|0+=$" + FACTION_REASON_INFIRM:0 "[claimant|E] is [GetTrait('infirm').GetName( GetNullCharacter )]: $VALUE|0+=$" + FACTION_REASON_MEMBER_IS_CLAIMANT:0 "I am the [claimant|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_FRIEND_LOVER:0 "[relation|E] with [claimant|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_SUPER_FRIEND_LOVER:0 "Very [relation|E] with [claimant|E]: $VALUE|0+=$" + FACTION_REASON_TARGET_IS_CHILD:0 "[liege|E] is a [child|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMAINT_SAME_FAITH:0 "Shares [faith|E] with [claimant|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_FAITH_ASTRAY:0 "[claimant|E]'s [faith|E] is [faith_astray|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_FAITH_HOSTILE:0 "[claimant|E]'s [faith|E] is [faith_hostile|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_FAITH_EVIL:0 "[claimant|E]'s [faith|E] is [faith_evil|E]: $VALUE|0+=$" + FACTION_REASON_LOW_TIER_TARGET_TITLE:0 "Target [title|E] is lower [title_tier|E] than [liege|E]'s [primary_title|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_IS_RIGHTFUL_LIEGE:0 "[claimant|E] is [rightful_liege|E]: $VALUE|0+=$" + FACTION_REASON_TITLE_DEJURE_ABOVE:0 "[primary_title|E] is not [de_jure|E] vassal of target [title|E]: $VALUE|0+=$" + FACTION_REASON_PREFER_INDEPENDENCE_FACTION:0 "Prefers $independence_faction$: $VALUE|0+=$" + FACTION_REASON_LIEGE_IS_UNPREFERRED_HEIR: "[liege|E] was [unpreferred_heir|E]: $VALUE|0+=$" + FACTION_REASON_LIEGE_IS_PREFERRED_HEIR: "[liege|E] was [preferred_heir|E]: $VALUE|0+=$" + FACTION_REASON_BETTER_CROWN_AUTHORITY:0 "[claimant|E] has lower [crown_authority|E]: $VALUE|0+=$" + FACTION_REASON_LOWER_COURT_GRANDEUR:0 "[liege|E] is below [court_grandeur_expectations|E]: $VALUE|0+=$" + FACTION_REASON_BYZANTINE:0 "[GetCultureTradition('tradition_byzantine_succession').GetName]: $FACTOR|0%+=$" + FACTION_REASON_CLAIMANT_DISGRUNTLED_VASSALS: "[liege|E] has the [GetModifier('ep3_disgruntled_vassals_modifier').GetName][modifier|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANT_LIFE_THREATENED: "[liege|E] has the [GetModifier('ep3_life_threatened_modifier').GetName][modifier|E]: $VALUE|0+=$" + +#nation_fracturing_faction_modifiers + FACTION_REASON_SHORT_REIGN:0 "[liege|E] recently gained [primary_title|E]: $VALUE|0+=$" + FACTION_REASON_CLAIMANTS_OF_MY_CULTURE:0 "[claimants|E] of my [culture|E] for [liege|E]'s [primary_title|E] exist: $VALUE|0+=$" + FACTION_REASON_DE_JURE_VASSAL: "Part of the [de_jure|E] [liege|E]'s [primary_title|E]: $VALUE|0+=$" + FACTION_REASON_CULTURAL_ACCEPTANCE:0 "[cultural_acceptance|E]: $VALUE|0+=$" + FACTION_REASON_TARGET_NOT_FULL_CONTROL:0 "[liege|E] does not control their entire [de_jure] area: $VALUE|0+=$" + FACTION_REASON_RECENT_LOST_WAR:0 "[liege|E] recently lost [war|E]: $VALUE|0+=$" + FACTION_REASON_TRIBAL_CLAN:0 "[liege|E] has [GetGovernment( 'tribal_government' ).GetName], [GetGovernment( 'nomad_government' ).GetName], or [GetGovernment( 'clan_government' ).GetName] [government|E]: $VALUE|0+=$" + FACTION_REASON_STRUGGLE_PHASE:0 "Current [struggle_phase|E]: $VALUE|0+=$" + FACTION_REASON_ELECTIVE_PRIMARY:0 "[liege|E]'s [primary_title|E] has Elective [succession_law|E]: $VALUE|0+=$" + FACTION_REASON_BYZANTINE_RELIGION:0 "Same [religion|E] as Byzantine [liege|E]: $VALUE|0+=$" + FACTION_REASON_PERSIAN_STRUGGLE: "Part of the [persian_struggle|E]: $VALUE|0+=$" + FACTION_REASON_FRENCH_VASSAL: "Same [heritage|E] as French [liege|E]: $VALUE|0+=$" + FACTION_REASON_ANGLOSAXON: "West-Germanic [heritage|E]: $VALUE|0+=$" + FACTION_REASON_NORMAN: "Frankish [heritage|E]: $VALUE|0+=$" + FACTION_REASON_BRYTHONIC: "Brythonic [heritage|E]: $VALUE|0+=$" + FACTION_REASON_LOW_CROWN_AUTHORITY: "Low [crown_authority|E]: $VALUE|0+=$" + +#populist_faction + FACTION_REASON_POWER_MINIMAL:0 "Weak [faction_military_power|E]: $FACTOR|0%+=$" + FACTION_REASON_FACTION_LEADER:0 "I am the [faction|E] leader: $VALUE|0+=$" + + FACTION_REASON_REGENT_CULTURAL_REASONS:0 "[regent_possessive|E] [culture|E]: $VALUE|0+=$" + FACTION_REASON_REGENT_FAITH_REASONS:0 "[regent_possessive|E] [faith|E]: $VALUE|0+=$" + +#struggle faction modifiers + FACTION_FP3_STRUGGLE_FRICTION: "Ongoing [struggle|E]: $VALUE|0+=$" + FACTION_FP3_STRUGGLE_FRICTION_CALIPHAL: "[struggle|E] position on [liege|E]: $VALUE|0+=$" + FACTION_REASON_unity_more_likely_claimant_factions: "$competitive$ [house_unity_level|E]: $VALUE|0+=$" + FACTION_REASON_unity_significantly_more_likely_claimant_factions: "$antagonistic$ [house_unity_level|E]: $VALUE|0+=$" + FACTION_REASON_unity_less_likely_claimant_factions: "$friendly$ [house_unity_level|E]: $VALUE|0+=$" + FACTION_REASON_unity_significantly_less_likely_claimant_factions: "$harmonious$ [house_unity_level|E]: $VALUE|0+=$" + + #legitimacy + FACTION_REASON_LOW_LEGITIMACY: "[liege_possessive|E] low [legitimacy|E]: $VALUE|0+=$" + FACTION_REASON_HIGH_LEGITIMACY: "[liege_possessive|E] high [legitimacy|E]: $VALUE|0+=$" + + FACTION_REASON_HOUSE_HOSTILITY: "[GetCultureTradition('tradition_ep3_indomitable_azatani').GetName]: $FACTOR|^%+=$" + + # Duty Focus + FACTION_REASON_duty_focus: "[liege_possessive|E] Duty [focus|E]: $VALUE|0+=$" + + # Court Position Task + FACTION_REASON_court_position_task: "[liege_possessive|E] [court_position_task|E]: $VALUE|0+=$" + + #Nomads + MPO_OBEDIENT_NOMAD: "[obedient|E]: $VALUE|0+=$" + MPO_NON_OBEDIENT_NOMAD: "#bold Not #![obedient|E]: $VALUE|0+=$" + + #Harrying of the North + FACTION_REASON_HARRYING_RESISTANCE: "Harrying of the North Resistance: $VALUE|1+=$" + FACTION_REASON_HARRYING_PACIFICATION: "Harrying of the North Pacification: $VALUE|1+=$" + FACTION_REASON_HARRYING_ANGLO_SAXON: "Claimant is Anglo-Saxon: $VALUE|0+=$" + + # Claimant + FACTION_REASON_SIDE_WITH_EXISTING: "Preferable [claimant|E] [faction|E]: $VALUE|0+=$" + + # Admin + FACTION_REASON_ADMIN_SHORT_REIGN_REASON: "Liege's Reign Length: $VALUE|+0=$" + FACTION_REASON_ADMIN_EXISTING_STRONGER_FACTION_OF_SAME_TYPE_REASON: "Existing stronger [faction|E] of same type: $FACTOR|0%+=$" + FACTION_REASON_ADMIN_CLAIMANT_STATE_FAITH: "[claimant|E] follows [state_faith|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_NOT_STATE_FAITH: "[claimant|E] doesn't follow [state_faith|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_RELATIVE_SKILL: "Liege and [claimant|E] Relative [skill|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_POOR_SKILL: "Liege's Poor [skill|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_DEVIANT_AND_CRIMINAL: "Liege is [GetTrait('deviant').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_INCESTUOUS_AND_CRIMINAL: "Liege is [GetTrait('incestuous').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_SODOMITE_AND_CRIMINAL: "Liege is [GetTrait('sodomite').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_CANNIBAL_AND_CRIMINAL: "Liege is [GetTrait('cannibal').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_KINSLAYER_1_AND_CRIMINAL: "Liege is [GetTrait('kinslayer_1').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_KINSLAYER_2_AND_CRIMINAL: "Liege is [GetTrait('kinslayer_2').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_KINSLAYER_3_AND_CRIMINAL: "Liege is [GetTrait('kinslayer_3').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_WITCH_AND_CRIMINAL: "Liege is [GetTrait('witch').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_ADULTERER_AND_CRIMINAL: "Liege is [GetTrait('adulterer').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_LIEGE_FORNICATOR_AND_CRIMINAL: "Liege is [GetTrait('fornicator').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_DEVIANT_AND_CRIMINAL: "[claimant|E] is [GetTrait('deviant').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_INCESTUOUS_AND_CRIMINAL: "[claimant|E] is [GetTrait('incestuous').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_SODOMITE_AND_CRIMINAL: "[claimant|E] is [GetTrait('sodomite').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_CANNIBAL_AND_CRIMINAL: "[claimant|E] is [GetTrait('cannibal').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_KINSLAYER_1_AND_CRIMINAL: "[claimant|E] is [GetTrait('kinslayer_1').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_KINSLAYER_2_AND_CRIMINAL: "[claimant|E] is [GetTrait('kinslayer_2').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_KINSLAYER_3_AND_CRIMINAL: "[claimant|E] is [GetTrait('kinslayer_3').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_WITCH_AND_CRIMINAL: "[claimant|E] is [GetTrait('witch').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_ADULTERER_AND_CRIMINAL: "[claimant|E] is [GetTrait('adulterer').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_FORNICATOR_AND_CRIMINAL: "[claimant|E] is [GetTrait('fornicator').GetName( GetNullCharacter )] #weak (considered [criminal|E])#!: $VALUE|+0=$" + FACTION_REASON_ADMIN_COURTLY: "[claimant_possessive|E] appeal to [GetVassalStance( 'courtly' ).GetTextIcon][GetVassalStance( 'courtly' ).GetName]: $VALUE|+0=$" + FACTION_REASON_ADMIN_GLORY_HOUND: "[claimant_possessive|E] appeal to [GetVassalStance( 'glory_hound' ).GetTextIcon][GetVassalStance( 'glory_hound' ).GetName]: $VALUE|+0=$" + FACTION_REASON_ADMIN_PAROCHIAL: "[claimant_possessive|E] appeal to [GetVassalStance( 'parochial' ).GetTextIcon][GetVassalStance( 'parochial' ).GetName]: $VALUE|+0=$" + FACTION_REASON_ADMIN_ZEALOT: "[claimant_possessive|E] appeal to [GetVassalStance( 'zealot' ).GetTextIcon][GetVassalStance( 'zealot' ).GetName]: $VALUE|+0=$" + FACTION_REASON_ADMIN_MINORITY: "[claimant_possessive|E] appeal to [GetVassalStance( 'minority' ).GetTextIcon][GetVassalStance( 'minority' ).GetName]: $VALUE|+0=$" + FACTION_REASON_CLAIMANT_PARENT: "Parent of [claimant|E]: $VALUE|+0=$" + FACTION_REASON_CLAIMANT_CLOSE_FAMILY: "[close_family|E] of [claimant|E]: $VALUE|+0=$" + FACTION_REASON_CLAIMANT_CLOSE_FAMILY_SPOUSE: "[close_family|E] of [claimant_possessive|E] [spouse|E]: $VALUE|+0=$" + FACTION_REASON_CLAIMANT_EXTENDED_FAMILY: "[extended_family|E] of [claimant|E]: $VALUE|+0=$" + FACTION_REASON_CLAIMANT_DYNASTY: "Same [dynasty||E] as [claimant|E]: $VALUE|+0=$" + FACTION_REASON_CLAIMANT_HOUSE: "Same [house|E] as [claimant|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_POWERFUL_FAMILY: "[claimant_possessive|E] [noble_family|E] is [powerful|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_DOMINANT_FAMILY: "[claimant_possessive|E] [noble_family|E] is [dominant|E]: $VALUE|+0=$" + FACTION_REASON_ADMIN_BORN_IN_PURPLE: "[claimant|E] is [GetTrait('born_in_the_purple')]: $VALUE|+0=$" + FACTION_REASON_ADMIN_CLAIMANT_CO_EMPEROR: "[claimant|E] is [co_emperor|E]: $FACTOR|0%+=$" + FACTION_REASON_ADMIN_CLAIMANT_JUNIOR_EMPEROR: "[claimant|E] is [junior_emperor|E]: $FACTOR|0%+=$" + FACTION_REASON_CLAIMANT_PRIMARY_HEIR: "[claimant|E] is my [heir|E]: $VALUE|+0=$" + FACTION_REASON_ADMINISTRATIVE: "[administrative|E] [vassal|E]: $VALUE|+0=$" + FACTION_REASON_NOMADIC: "[GetGovernment( 'nomad_government' ).GetName]: $VALUE|+0=$" + FACTION_REASON_DYNASTIC_CYCLE_INSTABILITY: "[dynastic_cycle|E] is in [GetSituationType('dynastic_cycle').GetPhaseType('situation_dynastic_cycle_phase_instability').GetName]: $VALUE|+0=$" + FACTION_REASON_ESCALATED_TO_LIEGE: "[holder|E] folded to a [peasant_faction|E]: $VALUE|+0=$" + FACTION_DEMAND_CEREMONIAL_CLAIMANT: "Ceremonial Claimant Demand" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_DESC: "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nNone can deny that [faction_claimant.GetName], not [faction_targeted_title.GetHolder.GetFirstName], is the rightful sovereign of [faction_targeted_title.GetNameNoTier].\n\nAccept this fact peacefully or we will make you do so by force!" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_DESC_ME: "[faction_targeted_title.GetDefinitiveName|U] belongs to me by divine right, and I finally have the means to make it so. Accept this fact peacefully or I will make you do so by force!" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_ACCEPTED: "Ceremonial Claimant Demands Accepted" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_ACCEPTED_DESC: "It is clear to me that you would see the realm burn before giving up this foolish venture. For the good of the realm I must accept your demands, but know that a great injustice was done here today. This will not stand!" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_REFUSED: "Ceremonial Claimant Demands Refused" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_REFUSED_DESC: "Your support for [faction_claimant.GetShortUINamePossessive|U] claim to [faction_targeted_title.GetDefinitiveName|l] is an affront to the dignity of our rightful [faction_targeted_title.GetHolder.GetTitleAsName]!\n\nYour treachery and dishonor will soon find divine judgment, foul traitor!" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_SEND_DEMAND_NOTIFICATION: "A Rightful Claim!" + FACTION_DEMAND_CEREMONIAL_CLAIMANT_SEND_DEMAND_NOTIFICATION_DESC: "The moment has come! All who support [faction_claimant.GetName] as the rightful [faction_targeted_title.GetHolder.GetTitleAsName] will now rise as one and make sure that [faction_claimant.GetSheHe] can take [faction_claimant.GetHerHis] rightful place on [faction_targeted_title.GetDefinitiveName|l]. We shall see it done, by sword and fire if we must!" + FACTION_CEREMONIAL_CLAIMANT_INVITE: "[faction_invite_from.Custom2('AppropriateGreeting', ROOT.Char)]" + FACTION_CEREMONIAL_CLAIMANT_INVITE_DESC: "[faction_target.GetName] occupies a throne that should rightly be yours! I am willing to support your claim with word and sword, and I am sure others in the realm will also champion this rightful cause. All you need to do is accept." + FACTION_CEREMONIAL_CLAIMANT_INVITE_ACCEPT: "Finally!" + FACTION_CEREMONIAL_CLAIMANT_INVITE_REFUSE: "It is not right..." + FACTION_CEREMONIAL_CLAIMANT_INVITE_ACCEPTED: "[faction_claimant.Custom2('AppropriateGreeting', ROOT.Char)]" + FACTION_CEREMONIAL_CLAIMANT_INVITE_ACCEPTED_DESC: "Finally! [faction_target.GetName] is nothing more than a jester acting a [faction_target.GetTitleAsNameNoTooltip], and I am sure the realm will rise to my cause. Those who aid me will not be forgotten." + FACTION_CEREMONIAL_CLAIMANT_INVITE_ACCEPTED_OPT: "It is only a matter of time..." + + # Imperial Policy + FACTION_DEMAND_IMPERIAL_POLICY: "Imperial Policy" + FACTION_DEMAND_IMPERIAL_POLICY_DESC: "[faction_leader.Custom2('AppropriateGreetingNegative', ROOT.Char)]\n\nThe loyal subjects of the realm have endured your misguided policies for too long. The [faction.GetName] demands you assent to a new direction for [ROOT.Char.GetPrimaryTitle.GetBaseNameNoTierNoTooltip], or we shall force one upon you!" + FACTION_DEMAND_IMPERIAL_POLICY_ACCEPTED: "Imperial Policy Demands Accepted" + FACTION_DEMAND_IMPERIAL_POLICY_ACCEPTED_DESC: "It is clear to me that you would see the realm burn before giving up this foolish venture. For the good of [ROOT.Char.GetTopLiege.GetPrimaryTitle.GetBaseNameNoTierNoTooltip] I must accept your demands, but know that a great injustice was done here today. This will not stand!" + FACTION_DEMAND_IMPERIAL_POLICY_REFUSED: "Imperial Policy Demands Refused" + FACTION_DEMAND_IMPERIAL_POLICY_REFUSED_DESC: "Your arrogant and petulant disregard for the sound policies of my government only prove how ill-fit you are to make such decisions!\n\nYour treachery and dishonor will soon find divine judgement, foul traitor!" + FACTION_DEMAND_IMPERIAL_POLICY_SEND_DEMAND_NOTIFICATION: "Turning the Ship" + FACTION_DEMAND_IMPERIAL_POLICY_SEND_DEMAND_NOTIFICATION_DESC: "The moment has come! All who support aborting [faction_target.GetTitledFirstNamePossessive] misguided policies will now rise as one and make sure that the realm is steered in a new direction. We shall see it done, by sword and fire if we must!" + faction_demand.0222.tt: "[THIS.Char.GetShortUIName|U] will select a new [imperial_policy|E]" + imperial_policy_faction_war: "Imperial Policy Faction" + IMPERIAL_POLICY_WAR_NAME: "Imperial Policy War" + imperial_policy_war_victory_desc: "[attacker.GetShortUIName|U] will select a new [imperial_policy|E]" + imperial_policy_war_white_peace_end_desc: "[defender.GetShortUIName|U] gets a truce and a [revoke_title_reason|E] against all rebelling vassals." + imperial_policy_war_defeat_end_desc: "[defender.GetShortUIName|U] imprisons every rebellious vassal and gains a [revoke_title_reason|E] against each of them." + faction_demand.0227.t: "Imperial Policy Faction: Drafting Legislation" + faction_demand.0227.desc: "With [faction_target.GetTitledFirstNamePossessive] hand forced, we can at last enact a policy beneficial to our interests — the interests of #EMP all#! [ROOT.Char.GetTopLiege.GetPrimaryTitle.GetBaseNameNoTierNoTooltip]...\n\nMany suggestions and requests have been submitted, and it falls to me as leader of the faction to decide on the best course." + faction_demand.0227.a: "$defense_mobilization_law_subname$." + faction_demand.0227.b: "$disarmament_law_subname$." + faction_demand.0227.c: "$isolation_law_subname$." + faction_demand.0227.e: "$imperial_expansion_law_subname$." + faction_demand.0227.f: "$manor_reform_law_subname$." + faction_demand.0227.g: "$bandit_crackdown_law_subname$." + faction_demand.0227.i: "There are many possibilities to consider..." + faction_demand.0227.i.tt: "Consider other [imperial_policies|E]" + FACTION_REASON_DESIRES_SORYO_POLICY: "Desires aggressive [imperial_policy|E]: $VALUE|0+=$" + FACTION_REASON_ANTI_POLICY: "Friction with current [imperial_policy|E]: $VALUE|0+=$" + FACTION_REASON_DESIRES_RITSURYO_POLICY: "Desires passive [imperial_policy|E]: $VALUE|0+=$" + + escalated_peasant_faction: "Escalated Peasant Faction" + escalated_peasant_faction_desc: "The [escalated_peasant_faction|E] wants freedom from unjust rule, and will seek independence from their liege." + escalated_peasant_faction_short_effect_desc: "Wants Independence from their [liege|E]" + county_and_leader_join_faction_against_top_liege: "All [counties|E] will join an [escalated_peasant_faction|E] against [defender.GetTopLiege.GetName]" + peasant_leader_army_name: "[ROOT.Char.GetFirstNamePossessive] [ROOT.Char.Custom('GetTurbanRebellionColor')|U] [ROOT.Char.Custom('RegionalPeasantHeadgearPlural')|U]" + peasant_leader_title_name: "[ROOT.Char.Custom('GetTurbanRebellionColor')|U] [ROOT.Char.Custom('RegionalPeasantHeadgearPlural')|U] Rebellion" + peasant_troops_name: "[ROOT.Char.GetCurrentLocation.GetName] Militia" + border_war_increased_peasant_discontent: "[GetLaw('top_liege_not_redirected_to_border_wars_law').GetName]: $VALUE|0+=$" + instability_increased_peasant_discontent: "[dynastic_cycle_era_type_unstable|E]: $VALUE|0+=$" + trait_track_peasant_leader: "Notoriety" + trait_track_peasant_leader_desc: "Infamous and feared among the nobles, revered and idolized in the folk tales." + can_join_escalated_peasant_faction_tt: "You have a [GetTrait('peasant_leader').GetName( GetNullCharacter )] [trait|E] or your [domicile|E] has a [GetDomicileBuilding('east_asian_peasant_quarters_03').GetName] or higher [domicile_building_upgrade|E] of the [GetDomicileBuilding('east_asian_estate_main_01').GetName] [domicile_building|E]" + + FACTION_REASON_DETRACTOR: "[coronation_detractor|E]: $VALUE|+0=$" + + FACTION_REASON_POPULIST_PEASANT_MORE_LIKELY: "Empowered [faction|E] due to local [faith|E]: $VALUE|0+=$" + LEADER_CANNOT_LEAVE_FACTION_OF_THIS_TYPE: "@warning_icon! #X Leader of this faction type can't leave it#!" + + FACTION_REASON_SAME_HOUSE_LEADER: "Same [house|E] as [faction|E] Leader: $VALUE|+0=$" + FACTION_REASON_SAME_DYNASTY_LEADER: "Same [dynasty|E] as [faction|E] Leader: $VALUE|+0=$" + FACTION_REASON_SAME_HOUSE_TARGET: "Same [house|E] as [faction|E] Target: $VALUE|+0=$" + FACTION_REASON_SAME_DYNASTY_TARGET: "Same [dynasty|E] as [faction|E] Target: $VALUE|+0=$" + FACTION_REASON_BLOC_HEAD_IS_LEADER: "[house_bloc|E] Leader's [faction] is [faction|E] Leader: $VALUE|+0=$" diff --git a/localization/english/replace/game_concepts_l_english.yml b/localization/english/replace/game_concepts_l_english.yml index 24f6bab7..3f1320be 100644 --- a/localization/english/replace/game_concepts_l_english.yml +++ b/localization/english/replace/game_concepts_l_english.yml @@ -51,22 +51,22 @@ game_concept_obligation:0 "Obligation" game_concept_vassal_obligations_desc:4 "$game_concept_vassal_obligations$ define how much [tax|E] and how many [levies|E] a [vassal|E] provides to their [liege|E]. A Vassal's [government_form|E] determines how their $game_concept_obligations$ are modified.\n\n#weak For example, [GetGovernment('feudal_government').GetName] and [GetGovernment('clan_government').GetName] [vassals|E] $game_concept_obligations$ depend on their [vassal_contract|E], while [GetGovernment('administrative_government').GetName] Vassal's depend on their [province_administration|E]." game_concept_contract:0 "Contract" - game_concept_crown_authority:0 "Crown Authority" + game_concept_crown_authority:0 "Ruler Authority" game_concept_crown_authority_desc:1 "$game_concept_crown_authority$ represents the general power that a [ruler|E] wields over their [vassals|E].\n\nThere are four levels of $game_concept_crown_authority$; [autonomous_vassals|E], [limited|E], [high|E], and [absolute|E]. Increasing $game_concept_crown_authority$ costs an amount of [prestige|E] depending on the level and the ruler's [learning_skill|E].\n\n#weak Vassals dislike higher levels of $game_concept_crown_authority$, and lowering it is the primary goal of [Concept( 'liberty_faction', 'Liberty Factions' )|E].#!" game_concept_autonomous_vassals:0 "Autonomous Vassals" - game_concept_autonomous_vassals_crown_authority:0 "Autonomous Vassals Crown Authority" + game_concept_autonomous_vassals_crown_authority:0 "Autonomous Vassals Ruler Authority" game_concept_autonomous_vassals_crown_authority_desc:0 "'$game_concept_autonomous_vassals$' is the lowest level of [crown_authority|E]. At this level, [vassals|E] have no [opinion|E] penalty toward their [liege|E], and the liege only has basic power over them." game_concept_limited:0 "Limited" - game_concept_limited_crown_authority:0 "Limited Crown Authority" + game_concept_limited_crown_authority:0 "Limited Ruler Authority" game_concept_limited_crown_authority_desc:1 "'$game_concept_limited_crown_authority$' is the second to lowest level of [crown_authority|E]. [vassals|E] have a #N -10#! [opinion|E] penalty toward their [liege|E], and the liege may [revoke|E] [titles|E] and [retract|E] a vassal's vassals. The [ruler|E] can change between available Partition [succession_laws|E]." game_concept_high:0 "High" - game_concept_high_crown_authority:0 "High Crown Authority" + game_concept_high_crown_authority:0 "High Ruler Authority" game_concept_high_crown_authority_desc:2 "$game_concept_high_crown_authority$ is the second to highest level. [vassals|E] have a #N -20#! [opinion|E] penalty toward their [liege|E].\n\nAt this level — in addition to the powers the liege gets at [limited_crown_authority|E] — vassals under the same liege can no longer wage war against each other, the ruler can change between all available [succession_laws|E], and vassals' [titles|E] cannot be inherited by rulers outside the liege's [realm|E].\n\nLastly, refusing title [revocation|E] or vassal [retraction|E] is considered a [crime|E] even if the liege lacks sufficient justification." game_concept_absolute:0 "Absolute" - game_concept_absolute_crown_authority:0 "Absolute Crown Authority" - game_concept_absolute_crown_authority_desc:2 "$game_concept_absolute_crown_authority$ is the highest level of [crown_authority|E]. [vassals|E] have a #N -30#! [opinion|E] penalty toward their [liege|E].\n\nAt this level — in addition to the effects of [high|E] and [limited|E] Crown Authority — the ruler can pick a [designated_heir|E] at a [prestige|E] cost.\n\nFurthermore, vassals cannot declare war even against foreign rulers." + game_concept_absolute_crown_authority:0 "Absolute Ruler Authority" + game_concept_absolute_crown_authority_desc:2 "$game_concept_absolute_crown_authority$ is the highest level of [crown_authority|E]. [vassals|E] have a #N -30#! [opinion|E] penalty toward their [liege|E].\n\nAt this level — in addition to the effects of [high|E] and [limited|E] Ruler Authority — the ruler can pick a [designated_heir|E] at a [prestige|E] cost.\n\nFurthermore, vassals cannot declare war even against foreign rulers." game_concept_tribal_authority:0 "Tribal Authority" - game_concept_tribal_authority_desc:2 "$game_concept_tribal_authority$ represents the general influence that a [tribal|E] [ruler|E] wields over their [vassals|E]. Compared to [crown_authority|E], it offers fewer powers and at later levels.\n\nThere are four levels of $game_concept_tribal_authority$: [disparate_tribes|E], [limited_tribal|E], [high_tribal|E], and [absolute_tribal|E]. Increasing $game_concept_tribal_authority$ costs an amount of [prestige|E] depending on the level and the ruler's [learning_skill|E], but is generally more expensive than increasing crown authority.\n\n#weak Vassals dislike higher levels of $game_concept_tribal_authority$, and lowering it is the primary goal of any [liberty_faction|E].#!" + game_concept_tribal_authority_desc:2 "$game_concept_tribal_authority$ represents the general influence that a [tribal|E] [ruler|E] wields over their [vassals|E]. Compared to [crown_authority|E], it offers fewer powers and at later levels.\n\nThere are four levels of $game_concept_tribal_authority$: [disparate_tribes|E], [limited_tribal|E], [high_tribal|E], and [absolute_tribal|E]. Increasing $game_concept_tribal_authority$ costs an amount of [prestige|E] depending on the level and the ruler's [learning_skill|E], but is generally more expensive than increasing ruler authority.\n\n#weak Vassals dislike higher levels of $game_concept_tribal_authority$, and lowering it is the primary goal of any [liberty_faction|E].#!" game_concept_disparate_tribes:0 "Disparate Tribes" game_concept_disparate_tribes_tribal_authority:0 "Disparate Tribes Tribal Authority" game_concept_disparate_tribes_tribal_authority_desc:0 "$game_concept_disparate_tribes$ is the lowest level of [tribal_authority|E]. At this level, [vassals|E] have no [opinion|E] penalty towards their [liege|E], and the liege lacks any power over them other than the ability to demand [levies|E] and [taxes|E]." @@ -1804,7 +1804,7 @@ game_concept_liberty_faction:0 "$liberty_faction$" game_concept_faction_liberty:0 "Liberty" game_concept_liberty_factions:0 "Liberty Factions" - game_concept_liberty_faction_desc:1 "The $game_concept_liberty_faction$ seeks to lower the [crown_authority|E] and, if applicable, their own [vassal_contracts|E]. If successful, their [liege|E] will be unable to change the Crown Authority of the [realm|E] for some time." + game_concept_liberty_faction_desc:1 "The $game_concept_liberty_faction$ seeks to lower the [crown_authority|E] and, if applicable, their own [vassal_contracts|E]. If successful, their [liege|E] will be unable to change the Ruler Authority of the [realm|E] for some time." game_concept_claimant_faction:0 "$claimant_faction$" game_concept_claimant_factions:0 "Claimant Factions" diff --git a/localization/english/replace/laws_l_english.yml b/localization/english/replace/laws_l_english.yml new file mode 100644 index 00000000..ef9eff09 --- /dev/null +++ b/localization/english/replace/laws_l_english.yml @@ -0,0 +1,462 @@ +l_english: + + PASS_LAW_TOOLTIP_TITLE: "[SelectLocalization( GuiLaw.IsEnacted, Law.GetNameNoTooltip, Law.GetPassLawPhrase)]" + PASS_LAW_TITLE_DEFAULT: "[AddLocalizationIf( Not(Law.GetLawGroup.HasFlag( 'realm_no_pass' ) ), 'Pass ' )][Law.GetNameNoTooltip]" + + ADD_LAW_CONFIRMATION_TITLE: "[Law.GetAddLawConfirmationTitle]" + ADD_LAW_CONFIRMATION_TITLE_DEFAULT: "Pass [Law.GetNameNoTooltip] Law" + + ADD_LAW_CONFIRMATION_ACCEPT: "[Law.GetAddLawConfirmationButtonText]" + ADD_LAW_CONFIRMATION_ACCEPT_DEFAULT: "Pass Law" + + ADVENTURER_LAW_SELECTED: "We are [Law.GetNameNoTooltip]!" + LAW_TOOLTIP_TITLE:1 "[Law.GetNameNoTooltip]" + LAW_TOOLTIP_SUBTITLE:0 "#weak [Law.GetSubName]#!" + ADD_LAW_CONFIRMATION_TEXT:0 "$EFFECTS$" + ADD_LAW_CONFIRMATION_COST:0 "Cost: $COST$" + LAW_ENACT_EFFECT_HEADER:0 "#S When this law is passed:#!" + LAW_PROVIDES_EFFECTS:0 "" + LAW_PROVIDES_PREVIOUS_EFFECTS:1 "#S From previous Levels#!" + ALREADY_HAS_THIS_LAW:1 "#high Current Law#!" + CLICK_TO_PASS_LAW: "\n#I Click to [SelectLocalization( IsLandlessAdventurer( GetPlayer ), 'become', 'pass' )] [Law.GetNameNoTooltip|V]#!" + LAW_COST:1 "\n#S Cost:#! [GuiLaw.GetShortCostString|L]" + LAW_TITLE_ALLEGIANCE_OPINION:0 "$EFFECT_LIST_BULLET$Vassals Swearing [title_allegiance|E] [opinion|E]: $VALUE|+=$" + LAW_CANT_BE_ON_ANY_TITLE: "[Law.GetName] can not be applied to titles[Select_CString( InDebugMode, '#D (no trigger)#!', '')]" + LAW_CANT_BE_ON_SPECIFIC_TITLE: "[Title.GetName] can not have [Law.GetName]" + + crown_authority:0 "[crown_authority|E]" + crown_authority_0:0 "Autonomous Vassals" + crown_authority_0_effects_not_in_prev:0 "#weak Vassals provide [levies|E] and [taxes|E], but are otherwise free to do as they wish#!" + crown_authority_1:0 "Limited Ruler Authority" + crown_authority_1_effects:1 "$EFFECT_LIST_BULLET$#indent_newline:3 Can establish [tributaries|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between available Partition [succession_laws|E]#!\n$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted" + crown_authority_2:0 "High Ruler Authority" + crown_authority_2_effects:3 "$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between all available [succession_laws|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 [vassals|E] cannot wage [war|E] against other Vassals unless they use a [hook|E] on their [liege|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Vassals' [titles|E] cannot be inherited by Characters outside the [realm|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 All Vassals who refuse Title revocation or Vassal retraction are considered [criminals|E]#!" + crown_authority_3:0 "Absolute Ruler Authority" + crown_authority_3_effects:1 "$EFFECT_LIST_BULLET$#indent_newline:3 [vassals|E] cannot wage any [war|E] unless they use a [hook|E] on their [liege|E]#!\n$EFFECT_LIST_BULLET$Rulers can designate their [heir|E]" + I_LACK_LAW_ALLOWING_TITLE_REVOCATION_TRIBAL:1 "You do not have [GetLaw('tribal_authority_2').GetName] [tribal_authority|E] or better" + I_LACK_LAW_ALLOWING_VASSAL_RETRACTION_TRIBAL:1 "You do not have [GetLaw('tribal_authority_2').GetName] [tribal_authority|E] or better" + I_LACK_LAW_ALLOWING_TITLE_REVOCATION_CROWN:1 "You do not have [GetLaw('crown_authority_1').GetName] [crown_authority|E] or better" + I_LACK_LAW_ALLOWING_TITLE_REVOCATION_SORYO: "You do not have [GetLaw('japanese_bureaucracy_1').GetName] [crown_authority|E] or better" + I_LACK_LAW_ALLOWING_VASSAL_RETRACTION_CROWN:1 "You do not have [GetLaw('crown_authority_1').GetName] [crown_authority|E] or better" + I_LACK_LAW_ALLOWING_TITLE_REVOCATION_ADMIN: "You do not have [GetLaw('imperial_bureaucracy_1').GetName] [imperial_bureaucracy|E] or better" + I_LACK_LAW_ALLOWING_VASSAL_RETRACTION_ADMIN: "You do not have [GetLaw('imperial_bureaucracy_1').GetName] [imperial_bureaucracy|E] or better" + I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE:2 "[SelectLocalization( GetPlayer.GetGovernment.HasGovernmentFlag( 'government_is_japan_feudal' ), 'I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE_JAPANESE_FEUDAL', 'I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE_FEUDAL' )]" + I_LACK_TRIBAL_LAW_ALLOWING_SUCCESSION_LAW_CHANGE:0 "You do not have [GetLaw('tribal_authority_1').GetName] [tribal_authority|E]" + I_LACK_ADMIN_LAW_ALLOWING_SUCCESSION_LAW_CHANGE: "You do not have [GetLaw('imperial_bureaucracy_2').GetName] [imperial_bureaucracy|E] or better" + I_LACK_LAW_ALLOWING_PARTITION_SUCCESSION_LAW_CHANGE:1 "[SelectLocalization( GetPlayer.GetGovernment.HasGovernmentFlag( 'government_is_japan_feudal' ), 'I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE_JAPANESE_FEUDAL', 'I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE_FEUDAL' )]" + I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE_FEUDAL: "You do not have [GetLaw('crown_authority_2').GetName] [crown_authority|E] or better" + I_LACK_LAW_ALLOWING_SUCCESSION_LAW_CHANGE_JAPANESE_FEUDAL: "You do not have [GetLaw('japanese_bureaucracy_2').GetName] [crown_authority|E] or better" + I_LACK_ADMIN_ALLOWING_DESIGNATE_HEIR: "You do not hold a [noble_family|E] [title|e]" + I_LACK_CROWN_AUTHORITY_DESIGNATE_HEIR: "You do not have [GetLaw( 'crown_authority_3' ).GetName] [crown_authority|E]" + I_LACK_LAW_ALLOWING_DESIGNATE_HEIR: "You do not have a law that permits you to designate an heir" + MY_DYNASTY_MEMBER_LEADS_THE_ELECTION:1 "A member of your [dynasty|E] ([CHARACTER.GetPrimaryTitle.GetHeir.GetShortUIName|V]) is leading the election for your [primary_title|E]" + I_HAVE_POWERFUL_VASSAL_WITH_NEGATIVE_OPINION:2 "You have one or more [powerful_vassals|E] who have a negative opinion of you and are blocking all [succession_law|E] changes" + designate_heir:0 "Designate as Heir" + CROWN_AUTHORITY_IS_ON_COOLDOWN:2 "You recently changed Ruler Authority.\n @alert_icon! #alert_trial Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'crown_authority_cooldown') )]#!" + TRIBAL_AUTHORITY_IS_ON_COOLDOWN:2 "You recently changed Tribal Authority\n @alert_icon! #alert_trial Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'tribal_authority_cooldown') )]#!" + tribal_authority:0 "[tribal_authority|E]" + tribal_authority_0:0 "Disparate Tribes" + tribal_authority_0_effects_not_in_prev:1 "$EFFECT_LIST_BULLET$#indent_newline:3 [characters|E] #N cannot#! be [imprisoned|E]#!\n\n#weak Vassals provide [levies|E] and [taxes|E], but are otherwise free to do as they wish.#!" + tribal_authority_1:0 "Limited Tribal Authority" + tribal_authority_1_effects:0 "$EFFECT_LIST_BULLET$ Can establish [tributaries|E]\n$EFFECT_LIST_BULLET$ [characters|E] can be [imprisoned|E]\n$EFFECT_LIST_BULLET$#indent_newline:3 [tribal|E] rulers with non-$game_concept_tribal$ [Concept('liege','Lieges')|E] may settle, becoming [feudal|E] or [clan|E]#!" + tribal_authority_2:0 "High Tribal Authority" + tribal_authority_2_effects:0 "$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted" + tribal_authority_3:0 "Absolute Tribal Authority" + tribal_authority_3_effects:0 "$EFFECT_LIST_BULLET$#indent_newline:3 [independent|E] [tribal|E] rulers may settle, becoming [feudal|E] or [clan|E]#!" + + camp_purpose: "Camp Purpose" + camp_purpose_pass_phrase: "Become [Law.GetNameNoTooltip]" + camp_purpose_confirmation_button_text: "Change Purpose" + camp_purpose_mercenaries: "Swords-for-Hire" + camp_purpose_mercenaries_effects: "$EFFECT_LIST_BULLET$Finds more [mercenary_task_contracts|E]\n$EFFECT_LIST_BULLET$Finds more [prowess|E] and [martial|E] [task_contracts|E]\n$EFFECT_LIST_BULLET$Unlocks [camp_buildings|E]:\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_siege_engineers').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_lockwagon').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_perimeter_palisade').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_perimeter_ditch').GetName]#!\n$EFFECT_LIST_BULLET$Can access certain special [officers|E]:\n$BULLET_WITH_TAB$[GetCourtPositionType('chief_engineer_camp_officer').GetName()] #weak (Unlocked via $baggage_train_siege_engineers_domicile_building$)#!\n$BULLET_WITH_TAB$[GetCourtPositionType('master_of_spoils_camp_officer').GetName()] #weak (Unlocked via $proving_grounds_lockwagon_domicile_building$)#!\n\n#WEAK Mercenaries earn their coin first and foremost by the sword. Usually legally, but when times are tough and all you have is an axe...#!" + camp_purpose_wanderers: "Wanderers" + camp_purpose_wanderers_effects: "$EFFECT_LIST_BULLET$Equal chance to find [task_contracts|E] of any type\n$EFFECT_LIST_BULLET$May change to any other $camp_purpose$ without paying hefty [prestige|E]\n\n#WEAK The open road offers a freedom quite unlike any other: why sully that with a needless niche?#!" + camp_purpose_scholars: "Scholars" + camp_purpose_scholars_effects: "$EFFECT_LIST_BULLET$Finds more [learning|E] and [stewardship|E] [task_contracts|E]\n$EFFECT_LIST_BULLET$Finds slightly more [diplomacy|E] [task_contracts|E]\n$EFFECT_LIST_BULLET$Unlocks [camp_buildings|E]:\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('barber_tent_reference_corpus').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('barber_tent_morticians_tools').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_siege_engineers').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_scribes').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_ascetics').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_fire_nightly_debates').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_martial_study').GetName]#!\n$EFFECT_LIST_BULLET$Can access certain special [officers|E]:\n$BULLET_WITH_TAB$[GetCourtPositionType('chief_engineer_camp_officer').GetName()] #weak (Unlocked via $baggage_train_siege_engineers_domicile_building$)#!\n\n#WEAK A book kept in one library is restless, an idea held in only one mind is wasted.#!" + camp_purpose_explorers: "Explorers" + camp_purpose_explorers_effects: "$EFFECT_LIST_BULLET$Finds more [transport_task_contracts|E]\n$EFFECT_LIST_BULLET$Finds more [diplomacy|E] and [intrigue|E] [task_contracts|E]\n$EFFECT_LIST_BULLET$Finds slightly more [martial|E] [task_contracts|E]\n$EFFECT_LIST_BULLET$Unlocks [camp_buildings|E]:\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('supply_tent_reserve_provisions').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('supply_tent_reserve_water').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('supply_tent_climbing_gear').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_fire_local_hangers_on').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_perimeter_extra_watch').GetName]#!\n\n#WEAK There's always another hill, another mountain, another culture, another language, awaiting just over that horizon...#!" + camp_purpose_brigands: "Freebooters" + camp_purpose_brigands_effects: "$EFFECT_LIST_BULLET$Finds more [criminal_task_contracts|E] of all kinds\n$EFFECT_LIST_BULLET$Finds more [prowess|E] and [intrigue|E] [task_contracts|E]\n$EFFECT_LIST_BULLET$Unlocks [camp_buildings|E]:\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('supply_tent_subdued_gear').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('barber_tent_morticians_tools').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_ransom_cages').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_negotiators').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_fire_juicy_rumors').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_lockwagon').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_the_stick_game').GetName]#!\n$EFFECT_LIST_BULLET$Can access certain special [officers|E]:\n$BULLET_WITH_TAB$[GetCourtPositionType('master_thief_camp_officer').GetName()] #weak (Unlocked via $supply_tent_subdued_gear_domicile_building$)#!\n$BULLET_WITH_TAB$[GetCourtPositionType('person_haggler_camp_officer').GetName()] #weak (Unlocked via $baggage_train_ransom_cages_domicile_building$)#!\n$BULLET_WITH_TAB$[GetCourtPositionType('master_of_spoils_camp_officer').GetName()] #weak (Unlocked via $proving_grounds_lockwagon_domicile_building$)#!\n\n#WEAK "Brigand" is such an ugly term — there's nothing wrong with being decisive and practical, especially if you can turn a tidy profit at the same time.#!" + camp_purpose_legitimists: "Legitimists" + camp_purpose_legitimists_effects: "$EFFECT_LIST_BULLET$Equal chance to find [task_contracts|E] of any type\n$EFFECT_LIST_BULLET$Can use $request_laamp_legitimist_support$ Interaction on Kings and Emperors\n$EFFECT_LIST_BULLET$Can use $claim_cb$ [casus_belli|E]\n$EFFECT_LIST_BULLET$Finds unique $laamp_legitimist_support_contract$ [task_contract|E]\n$EFFECT_LIST_BULLET$Unlocks [camp_buildings|E]:\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('camp_fire_future_dreams').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_bodyguard_drills').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_martial_study').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('proving_grounds_lockwagon').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_scribes').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_proof_of_claims').GetName]#!\n$BULLET_WITH_TAB$#high [GetDomicileBuilding('baggage_train_ransom_cages').GetName]#!\n$EFFECT_LIST_BULLET$Can access certain special [officers|E]:\n$BULLET_WITH_TAB$[GetCourtPositionType('witness_camp_officer').GetName()] #weak (Unlocked via $baggage_train_proof_of_claims_domicile_building$)#!\n$BULLET_WITH_TAB$[GetCourtPositionType('master_of_spoils_camp_officer').GetName()] #weak (Unlocked via $proving_grounds_lockwagon_domicile_building$)#!\n\n#WEAK A claim, they call it. A mere claim. It's not just a claim, it's a letter of debt, a statement of intent, and a sure marker of the reclamation yet to come.#!" + ep3_can_have_legitimists_camp_purpose_trigger.tt.explanation: "You must have a [pressed_claim|E] on at least one [kingdom|E]-[title_tier|E] [title|E]" + + imperial_bureaucracy: "[imperial_bureaucracy|E]" + imperial_bureaucracy_0: "Decentralized Realm" + imperial_bureaucracy_0_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Vassals' [titles|E] cannot be inherited by Characters outside the [realm|E]#!" + imperial_bureaucracy_1: "Limited Administration" + imperial_bureaucracy_1_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Can establish [tributaries|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between available Partition [succession_laws|E]#!\n$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted" + imperial_bureaucracy_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage [war|E] against other Vassals unless they use a [hook|E] on their [liege|E]#!" + imperial_bureaucracy_2: "Centralized Bureaucracy" + imperial_bureaucracy_2_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between all available [succession_laws|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 All Vassals who refuse Title revocation or Vassal retraction are considered [criminals|E]#!\n$EFFECT_LIST_BULLET$#high $demand_admin_interaction$#! cost is reduced" + imperial_bureaucracy_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Cost for [liege|E] to call upon [provincial_armies|E]: [influence_i|E]#P -[EmptyScope.ScriptValue('admin_law_cost_reduction_value')|+0%]#!#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage any [war|E] unless they use a [hook|E] on their [liege|E]#!" + imperial_bureaucracy_3: "Absolute Autocracy" + imperial_bureaucracy_3_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Cost for [liege|E] to call upon [provincial_armies|E]: [influence_i|E]#P -[EmptyScope.ScriptValue('admin_law_cost_reduction_high_value')|+0%]#!#!" + imperial_bureaucracy_3_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] can never declare [war|E]#!" + IMPERIAL_BUREAUCRACY_IS_ON_COOLDOWN: "You recently changed [imperial_bureaucracy|E]\n @alert_icon! #alert_trial Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'imperial_bureaucracy_cooldown') )]#!" + imperial_bureaucracy_pending_law_change: "#alert_trial Your [liege|E] recently adopted this [law|E] and you will soon adopt it automatically#!" + admin_all_vassal_wars_banned: "The [laws|E] of your [liege|E] prevents you from declaring [war|E]" + + province_war_law: "[provincial|E] [war|E] Declaration" + province_war_law_singular: "$province_war_law$" + province_war_law_0: "War Declaration Allowed" + province_war_law_0_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] can wage external [wars|E]#!" + province_war_law_1: "War Declaration Restricted" + province_war_law_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Only [governors|E] with [GetSubjectContractType( 'administrative_themes' ).GetObligationNameShort( 'admin_theme_frontier' )] and [GetSubjectContractType( 'administrative_themes' ).GetObligationNameShort( 'admin_theme_naval' )] [province_administration|E] can wage external [wars|E]#!" + province_war_law_2: "War Declaration Approval" + province_war_law_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Only [governors|E] with [GetSubjectContractType( 'administrative_themes' ).GetObligationNameShort( 'admin_theme_frontier' )] and [GetSubjectContractType( 'administrative_themes' ).GetObligationNameShort( 'admin_theme_naval' )] [province_administration|E] can wage external [wars|E] but must request permission to do so#!" + province_war_law_3: "War Declaration Banned" + province_war_law_3_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] #bold cannot#! wage external [wars|E]#!" + + province_border_law: "[provincial|E] Border Policy" + province_border_law_singular: "$province_border_law$" + province_border_law_0: "Tentative Border Policy" + province_border_law_0_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] are free to use the [GetScheme('dispute_border').GetTypeName] and [GetScheme('subsume_province').GetTypeName] [schemes|E]#!" + province_border_law_1: "Limited Border Policy" + province_border_law_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] can use the [GetScheme('dispute_border').GetTypeName] and [GetScheme('subsume_province').GetTypeName] [schemes|E] only if they belong to a [powerful|E] or [dominant_family|E]#!" + province_border_law_2: "Fixed Border Policy" + province_border_law_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] #bold cannot#! use the [GetScheme('dispute_border').GetTypeName] and [GetScheme('subsume_province').GetTypeName] [schemes|E]#!" + + have_bureaucracy_1_or_higher: "Your [imperial_bureaucracy|E] is #bold not#! at #high [GetLaw('imperial_bureaucracy_1').GetName]#! or better" + have_bureaucracy_2_or_higher: "Your [imperial_bureaucracy|E] is #bold not#! at #high [GetLaw('imperial_bureaucracy_2').GetName]#! or better" + have_bureaucracy_3: "Your [imperial_bureaucracy|E] is #bold not#! at #high [GetLaw('imperial_bureaucracy_3').GetName]#!" + admin_law_cooldown_desc: "A [law|E] was changed recently - [laws] can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( GetPlayer.MakeScope, 'admin_law_cooldown') )]" + admin_vassal_wars_permission_only_desc: "You must ask your [liege|E] for permission to declare [war|E]" + admin_vassal_border_limit_desc: "The [laws|E] of your [liege|E] prevents you from using this [scheme|E]" + + # Nomadic + nomadic_authority: "[nomadic_authority|E]" + nomadic_authority_1: "Unruly Nomads" + nomadic_authority_1_pass_phrase: "Change your [dominance|E] to Weak" + nomadic_authority_confirmation_button_text: "Change Dominance" + nomadic_authority_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$[characters|E] #N cannot#! be [imprisoned|E]#!\n$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$Can establish [tributaries|E]\n$EFFECT_LIST_BULLET$[migration|E] can only target [de_jure|E] [county|E] [titles|E]" + nomadic_authority_2: "Limited Dominance" + nomadic_authority_2_pass_phrase: "Change your [dominance|E] to Limited" + nomadic_authority_2_effects: "$EFFECT_LIST_BULLET$[characters|E] can be [imprisoned|E]\n$EFFECT_LIST_BULLET$[migration|E] can target [de_jure|E] [duchy|E] [titles|E]\n$EFFECT_LIST_BULLET$Can use the #V $step_away_from_the_steppe_decision$#! [decision|E]\n$EFFECT_LIST_BULLET$Can recruit [GetMaA('nomad_lancers').GetName] as [men_at_arms|E]\n$EFFECT_LIST_BULLET$Can recruit [GetMaA('cataphract_archers').GetName] as [men_at_arms|E], if your [culture|E] has the #high $tradition_mpo_iron_cavalry_name$#! [tradition|E]\n$EFFECT_LIST_BULLET$Can construct [GetDomicileBuilding('yurt_main_03').GetName] [yurt_building|E]" + nomadic_authority_3: "High Dominance" + nomadic_authority_3_pass_phrase: "Change your [dominance|E] to High" + nomadic_authority_3_effects: "$EFFECT_LIST_BULLET$[vassals|E] can be retracted\n$EFFECT_LIST_BULLET$[migration|E] can target [de_jure|E] [kingdom|E] [titles|E]\n$EFFECT_LIST_BULLET$Can construct [GetDomicileBuilding('yurt_main_04').GetName] [yurt_building|E]\n$EFFECT_LIST_BULLET$Can use the #V $settle_people_decision$#! [decision|E]\n$EFFECT_LIST_BULLET$Can use the #V $settle_the_steppe_decision$#! [decision|E] for [GetGovernment( 'tribal_government' ).GetName]\n$EFFECT_LIST_BULLET$[independent|E] [GetGovernment( 'nomad_government' ).GetName] rulers get access to the #high $MPO_NOMAD_INVASION_CB_NAME$#! [casus_belli|E]" + nomadic_authority_4: "Absolute Dominance" + nomadic_authority_4_pass_phrase: "Change your [dominance|E] to Absolute" + nomadic_authority_4_effects: "$EFFECT_LIST_BULLET$[migration|E] can target [de_jure|E] [empire|E] [titles|E]\n$EFFECT_LIST_BULLET$Can use the #high $mpo_establish_paiza_system_decision$#! [decision|E]\n$EFFECT_LIST_BULLET$Can use the #V $settle_the_steppe_decision$#! [decision|E] for [GetGovernment( 'feudal_government' ).GetName] or [GetGovernment( 'clan_government' ).GetName]\n$EFFECT_LIST_BULLET$Can construct [GetDomicileBuilding('yurt_main_05').GetName] [yurt_building|E]" + nomadic_authority_5: "Unrestricted Dominance" + nomadic_authority_5_pass_phrase: "Change your [dominance|E] to Unrestricted" + nomadic_authority_5_effects: "$EFFECT_LIST_BULLET$May use the #high $mpo_become_greatest_of_khans_decision$#! [decision|E], unlocking the [GetTrait('greatest_of_khans').GetName( GetNullCharacter )] [trait|E] and the means to conquer the world!\n$EFFECT_LIST_BULLET$The [GetTrait('greatest_of_khans').GetName( GetNullCharacter )] may change [government|E] type with the #high $mpo_gok_world_conquest_decision$#! [decision|E]" + NOMADIC_AUTHORITY_IS_ON_COOLDOWN: "You recently changed [nomadic_authority|E]\n @alert_icon! #alert_trial Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'nomadic_authority_cooldown') )]#!" + NOMADIC_AUTHORITY_5_GREATEST_KHAN_REQUIREMENT: "There is already a [GetGovernment( 'nomad_government' ).GetName] [ruler|E] with [unrestricted_nomadic|E] [nomadic_authority|E]: [CHARACTER.GetName]" + nomadic_authority_5_greatest_khan: "$NOMADIC_AUTHORITY_5_GREATEST_KHAN_REQUIREMENT$" + nomadic_authority_5_gurkhan: "$NOMADIC_AUTHORITY_5_GURKHAN_REQUIREMENT$" + NOMADIC_AUTHORITY_5_GURKHAN_REQUIREMENT: "You are #bold not#! the [gurkhan|E]" + + NOMADIC_AUTHORITY_LEVEL_4: "You do #bold NOT#! have the [GetLaw('nomadic_authority_3').GetName] or [GetLaw('nomadic_authority_5').GetName] Laws" + nomadic_authority_4_level_requirement: "$NOMADIC_AUTHORITY_LEVEL_4$" + NOMADIC_AUTHORITY_LEVEL_2: "You do #bold NOT#! have the [GetLaw('nomadic_authority_1').GetName] or [GetLaw('nomadic_authority_3').GetName] Laws" + nomadic_authority_2_level_requirement: "$NOMADIC_AUTHORITY_LEVEL_2$" + NOMADIC_AUTHORITY_LEVEL_3: "You do #bold NOT#! have the [GetLaw('nomadic_authority_2').GetName] or [GetLaw('nomadic_authority_4').GetName] Laws" + nomadic_authority_3_level_requirement: "$NOMADIC_AUTHORITY_LEVEL_3$" + + # Mandala + mandala_decree: "Devaraja Decree" + mandala_rule_effects: "#S Always Active:#!\n$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted\n$EFFECT_LIST_BULLET$#indent_newline:3 All Vassals who refuse Title revocation or Vassal retraction are considered [criminals|E]#!\n$EFFECT_LIST_BULLET$Rulers can designate their [heir|E]" + mandala_decree_none: "No Decree" + mandala_decree_none_effects: "#weak $NO_EFFECTS$...#!\n\n$mandala_rule_effects$\n\n#WEAK I decree...#!" + devaraja_aspect_does_not_allow_this_decree: "#alert_trial Your current [mandala_aspect|E] does not allow this decree#!" + mandala_decree_prosperity: "Prosperity Decree" + mandala_decree_prosperity_effects: "$EFFECT_LIST_BULLET$$mandala_decree_flag_more_prone_to_accept_exact_tribute$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_gain_devotion_when_winning_defensive_wars$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_lose_devotion_when_losing_wars$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_can_use_piety_to_reassert_tributary$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_tributaries_less_likely_to_break_free$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_subjects_appear_more_economical$\n\n$mandala_rule_effects$\n\n#WEAK A prosperous realm is a strong realm.#!" + mandala_decree_expansion: "Expansion Decree" + mandala_decree_expansion_effects: "$EFFECT_LIST_BULLET$$mandala_decree_flag_gain_piety_when_winning_offensive_wars$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_lose_devotion_when_losing_wars$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_can_call_tributaries_for_piety$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_piety_for_sieging_temple_complexes$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_subjects_appear_more_warlike$\n\n$mandala_rule_effects$\n\n#WEAK More is always more.#!" + mandala_decree_reverence: "Reverence Decree" + mandala_decree_reverence_effects: "$EFFECT_LIST_BULLET$$mandala_decree_flag_cheaper_pilgrimages$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_piety_from_converting_subjects$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_vassals_more_inclined_to_convert$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_easier_to_mandalize_vassals$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_can_mandalize_tributaries$\n$EFFECT_LIST_BULLET$$mandala_decree_flag_tributaries_more_likely_to_contribute$\n\n$mandala_rule_effects$\n\n#WEAK Let us look to the heavens.#!" + + mandala_decree_flag_tributaries_more_likely_to_contribute: "[vassals|E] and [tributaries|E] are more inclined to help fund $building_type_mandala_capital_01$ [great_projects|E]" + mandala_decree_flag_easier_to_mandalize_vassals: "[vassals|E] are more likely to accept adopting [mandala|E] governance" + mandala_decree_flag_can_mandalize_tributaries: "[tributaries|E] can be invited to adopt [mandala|E] governance" + mandala_decree_flag_piety_for_sieging_temple_complexes: "A siege of a $building_type_mandala_capital_01$ yields [piety|E]" + mandala_decree_flag_can_call_tributaries_for_piety: "Can call [tributaries|E] into wars for a [piety|E] cost" + mandala_decree_flag_can_use_piety_to_reassert_tributary: "Can spend [piety|E] to #high $reassert_tributary_interaction$#!" + mandala_decree_flag_tributaries_less_likely_to_break_free: "[tributaries|E] are more loyal" + mandala_decree_flag_more_prone_to_accept_exact_tribute: "[tributaries|E] are more accepting towards #high $exact_tribute_interaction$#!" + mandala_decree_flag_increased_tributarization_acceptance: "$increased_tributarization_acceptance$" + mandala_decree_flag_slightly_reduced_tributarization_acceptance: "$slightly_reduced_tributarization_acceptance$" + mandala_decree_flag_increased_vassalization_acceptance: "$increased_vassalization_acceptance$" + mandala_decree_flag_reduced_vassalization_acceptance: "$reduced_vassalization_acceptance$" + mandala_decree_flag_gain_piety_when_winning_offensive_wars: "Successful Offensive [wars|E] generate [piety|E]" + mandala_decree_flag_lose_devotion_when_losing_wars: "Losing [wars|E] cost [piety_experience|E]" + mandala_decree_flag_gain_devotion_when_winning_defensive_wars: "Successful Defensive [wars|E] generate [piety_experience|E]" + mandala_decree_flag_cheaper_pilgrimages: "The act of going on [pilgrimages|E] costs less" + mandala_decree_flag_cheaper_pilgrimages_desc: "Mandala Reverence Decree" + mandala_decree_flag_piety_from_converting_subjects: "[converting|E] [subjects|E] generate [piety|E]" + mandala_decree_flag_vassals_more_inclined_to_convert: "[vassals|E] are more inclined to [convert|E] to your [faith|E]" + #mandala_decree_flag_may_ignore_tribute_mission_grace: "May use #high $exact_tribute_interaction$#! regardless of if the [tributary|E] is on cooldown" + mandala_decree_flag_subjects_appear_more_warlike: "[subjects|E] are more inclined to [warlike_i] [ai_warlike_personality|E] actions" + mandala_decree_flag_subjects_appear_more_economical: "[subjects|E] are more inclined to [builder_i] [ai_economical_boom_personality|E] actions" + mandala_decree_flag_subjects_appear_more_pious: "[subjects|E] are more inclined to [pious_builder_i] [ai_pious_builder_personality|E] actions" + + # Celestial bureaucracy + celestial_bureaucracy: "[celestial_bureaucracy|E]" + celestial_bureaucracy_0: "Autonomous Provinces" + celestial_bureaucracy_0_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Vassals' [titles|E] cannot be inherited by Characters outside the [realm|E]#!" + celestial_bureaucracy_1: "Limited Civil Service" + celestial_bureaucracy_1_effects: "$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted" + celestial_bureaucracy_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage [war|E] against other Vassals unless they use a [hook|E] on their [liege|E]#!" + celestial_bureaucracy_2: "Centralized Ministries" + celestial_bureaucracy_2_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between all available [succession_laws|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 All Vassals who refuse Title revocation or Vassal retraction are considered [criminals|E]#!\n$EFFECT_LIST_BULLET$#high $demand_admin_interaction$#! cost is reduced" + celestial_bureaucracy_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage any [war|E] unless they use a [hook|E] on their [liege|E]#!" + celestial_bureaucracy_3: "Divine Mandate" + celestial_bureaucracy_3_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] can never declare [war|E]#!" + + CELESTIAL_BUREAUCRACY_IS_ON_COOLDOWN: "You recently changed [celestial_bureaucracy|E]. Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'imperial_bureaucracy_cooldown') )]" + have_celestial_bureaucracy_1_or_higher: "Your [celestial_bureaucracy|E] is #bold not#! at #high [GetLaw('celestial_bureaucracy_1').GetName]#! or better" + have_celestial_bureaucracy_2_or_higher: "Your [celestial_bureaucracy|E] is #bold not#! at #high [GetLaw('celestial_bureaucracy_2').GetName]#! or better" + have_celestial_bureaucracy_3: "Your [celestial_bureaucracy|E] is #bold not#! at #high [GetLaw('celestial_bureaucracy_3').GetName]#!" + + # Celestial Army + celestial_army_liege_law: "[army|E] Command Structure" + celestial_army_liege_law_singular: "$celestial_army_liege_law$" + celestial_army_liege_law_0: "Autonomous Command" + celestial_army_liege_law_0_subname: "All Governors have personal military authority" + celestial_army_liege_law_0_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] can keep Personal [men_at_arms|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Military [governors|E] can keep only a limited number of [title_men_at_arms|E]#!" + celestial_army_liege_law_1: "Regional Command" + celestial_army_liege_law_1_subname: "Military matters are handled by regional armies" + celestial_army_liege_law_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Cost for [liege|E] to call upon [provincial_armies|E]: [influence_i|E]#P -[EmptyScope.ScriptValue('admin_law_cost_reduction_value')|+0%]#!#!" + celestial_army_liege_law_1_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] can keep less Personal [men_at_arms|E] and #bold slightly#! more [title_men_at_arms|E]#!" + celestial_army_liege_law_2: "Imperial Command" + celestial_army_liege_law_2_subname: "Military command is centralized and regulated" + celestial_army_liege_law_2_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] can keep no Personal [men_at_arms|E] and more [title_men_at_arms|E]#!" + celestial_army_liege_law_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Cost for [liege|E] to call upon [provincial_armies|E]: [influence_i|E]#P -[EmptyScope.ScriptValue('admin_law_cost_reduction_high_value')|+0%]#!#!" + celestial_army_liege_law_3: "Grand Expansionist Command" + celestial_army_liege_law_3_subname: "Military command is highly prioritized and centralized" + celestial_army_liege_law_3_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] can keep no Personal [men_at_arms|E] and #bold significantly#! more [title_men_at_arms|E]#!" + celestial_army_liege_law_3_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Cost for [liege|E] to call upon [provincial_armies|E]: [influence_i|E]#P -[EmptyScope.ScriptValue('admin_law_cost_reduction_very_high_value')|+0%]#!#!" + celestial_army_vassal_law: "$celestial_army_liege_law$" + celestial_army_vassal_law_singular: "$celestial_army_liege_law$" + celestial_army_vassal_law_0: "$celestial_army_liege_law_0$" + celestial_army_vassal_law_0_subname: "$celestial_army_liege_law_0_subname$" + celestial_army_vassal_law_0_effects_not_in_prev: "$celestial_army_liege_law_0_effects_not_in_prev$" + celestial_army_vassal_law_1: "$celestial_army_liege_law_1$" + celestial_army_vassal_law_1_subname: "$celestial_army_liege_law_1_subname$" + celestial_army_vassal_law_1_effects_not_in_prev: "$celestial_army_liege_law_1_effects_not_in_prev$" + celestial_army_vassal_law_2: "$celestial_army_liege_law_2$" + celestial_army_vassal_law_2_subname: "$celestial_army_liege_law_2_subname$" + celestial_army_vassal_law_2_effects_not_in_prev: "$celestial_army_liege_law_2_effects_not_in_prev$" + celestial_army_vassal_law_3: "$celestial_army_liege_law_3$" + celestial_army_vassal_law_3_subname: "$celestial_army_liege_law_3_subname$" + celestial_army_vassal_law_3_effects_not_in_prev: "$celestial_army_liege_law_3_effects_not_in_prev$" + celestial_retirement_law: "Retirement Age" + celestial_retirement_law_singular: "$celestial_retirement_law$" + celestial_retirement_law_5: "No Set Retirement" + celestial_retirement_law_5_effects_not_in_prev: "$EFFECT_LIST_BULLET$There is no official Retirement Age" + celestial_retirement_law_0: "Very Early Retirement" + celestial_retirement_law_0_effects_not_in_prev: "$EFFECT_LIST_BULLET$The official Retirement Age is [EmptyScope.ScriptValue('retirement_age_0_value')|V0]\n$celestial_retirement_effect_desc$" + celestial_retirement_law_1: "Early Retirement" + celestial_retirement_law_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$The official Retirement Age is [EmptyScope.ScriptValue('retirement_age_1_value')|V0]\n$celestial_retirement_effect_desc$" + celestial_retirement_law_2: "Standard Retirement" + celestial_retirement_law_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$The official Retirement Age is [EmptyScope.ScriptValue('retirement_age_2_value')|V0]\n$celestial_retirement_effect_desc$" + celestial_retirement_law_3: "Late Retirement" + celestial_retirement_law_3_effects_not_in_prev: "$EFFECT_LIST_BULLET$The official Retirement Age is [EmptyScope.ScriptValue('retirement_age_3_value')|V0]\n$celestial_retirement_effect_desc$" + celestial_retirement_law_4: "Overdue Retirement" + celestial_retirement_law_4_effects_not_in_prev: "$EFFECT_LIST_BULLET$The official Retirement Age is [EmptyScope.ScriptValue('retirement_age_4_value')|V0]\n$celestial_retirement_effect_desc$" + #celestial_retirement_effect_desc: "$EFFECT_LIST_BULLET$#indent_newline:3 Retiring [governors|E] above the Retirement Age cost less [influence_i|E][influence|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Retiring [governors|E] above the Retirement Age costs [treasury_i][treasury|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 [governors|E] above the Retirement Age have reduced [candidate_score|E]#!" + celestial_retirement_effect_desc: "\nEffects on [governors|E] when above the Retirement Age:\n$EFFECT_LIST_BULLET$#indent_newline:3 Retiring [governors|E] cost less [influence_i|E][influence|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 Retiring [governors|E] costs [treasury_i][treasury|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 [candidate_score|E] is reduced#!\n$EFFECT_LIST_BULLET$Gain access to [GetDecisionWithKey('renounce_noble_family_title_decision').GetName] [decision|E]" + celestial_salary_law: "Government Salary Rate" + + budget_allocation_salary_law: "Salary Budget Allocation" + budget_allocation_salary_law_singular: "$budget_allocation_salary_law$" + budget_allocation_salary_0: "$budget_allocation_salary_law$ 0%" + budget_allocation_salary_5: "$budget_allocation_salary_law$ 5%" + budget_allocation_salary_10: "$budget_allocation_salary_law$ 10%" + budget_allocation_salary_15: "$budget_allocation_salary_law$ 15%" + budget_allocation_salary_20: "$budget_allocation_salary_law$ 20%" + budget_allocation_salary_25: "$budget_allocation_salary_law$ 25%" + budget_allocation_salary_30: "$budget_allocation_salary_law$ 30%" + budget_allocation_salary_35: "$budget_allocation_salary_law$ 35%" + budget_allocation_salary_40: "$budget_allocation_salary_law$ 40%" + budget_allocation_salary_45: "$budget_allocation_salary_law$ 45%" + budget_allocation_salary_50: "$budget_allocation_salary_law$ 50%" + budget_allocation_salary_55: "$budget_allocation_salary_law$ 55%" + budget_allocation_salary_60: "$budget_allocation_salary_law$ 60%" + budget_allocation_salary_65: "$budget_allocation_salary_law$ 65%" + budget_allocation_salary_70: "$budget_allocation_salary_law$ 70%" + budget_allocation_salary_75: "$budget_allocation_salary_law$ 75%" + budget_allocation_salary_80: "$budget_allocation_salary_law$ 80%" + budget_allocation_salary_85: "$budget_allocation_salary_law$ 85%" + budget_allocation_salary_90: "$budget_allocation_salary_law$ 90%" + budget_allocation_salary_95: "$budget_allocation_salary_law$ 95%" + budget_allocation_salary_100: "$budget_allocation_salary_law$ 100%" + budget_allocation_salary_0_short: "0%" + budget_allocation_salary_5_short: "5%" + budget_allocation_salary_10_short: "10%" + budget_allocation_salary_15_short: "15%" + budget_allocation_salary_20_short: "20%" + budget_allocation_salary_25_short: "25%" + budget_allocation_salary_30_short: "30%" + budget_allocation_salary_35_short: "35%" + budget_allocation_salary_40_short: "40%" + budget_allocation_salary_45_short: "45%" + budget_allocation_salary_50_short: "50%" + budget_allocation_salary_55_short: "55%" + budget_allocation_salary_60_short: "60%" + budget_allocation_salary_65_short: "65%" + budget_allocation_salary_70_short: "70%" + budget_allocation_salary_75_short: "75%" + budget_allocation_salary_80_short: "80%" + budget_allocation_salary_85_short: "85%" + budget_allocation_salary_90_short: "90%" + budget_allocation_salary_95_short: "95%" + budget_allocation_salary_100_short: "100%" + budget_allocation_ministry_law: "Ministry Budget Allocation" + budget_allocation_ministry_law_singular: "$budget_allocation_ministry_law$" + budget_allocation_ministry_0: "$budget_allocation_ministry_law$ 0%" + budget_allocation_ministry_5: "$budget_allocation_ministry_law$ 5%" + budget_allocation_ministry_10: "$budget_allocation_ministry_law$ 10%" + budget_allocation_ministry_15: "$budget_allocation_ministry_law$ 15%" + budget_allocation_ministry_20: "$budget_allocation_ministry_law$ 20%" + budget_allocation_ministry_25: "$budget_allocation_ministry_law$ 25%" + budget_allocation_ministry_30: "$budget_allocation_ministry_law$ 30%" + budget_allocation_ministry_35: "$budget_allocation_ministry_law$ 35%" + budget_allocation_ministry_40: "$budget_allocation_ministry_law$ 40%" + budget_allocation_ministry_45: "$budget_allocation_ministry_law$ 45%" + budget_allocation_ministry_50: "$budget_allocation_ministry_law$ 50%" + budget_allocation_ministry_55: "$budget_allocation_ministry_law$ 55%" + budget_allocation_ministry_60: "$budget_allocation_ministry_law$ 60%" + budget_allocation_ministry_65: "$budget_allocation_ministry_law$ 65%" + budget_allocation_ministry_70: "$budget_allocation_ministry_law$ 70%" + budget_allocation_ministry_75: "$budget_allocation_ministry_law$ 75%" + budget_allocation_ministry_80: "$budget_allocation_ministry_law$ 80%" + budget_allocation_ministry_85: "$budget_allocation_ministry_law$ 85%" + budget_allocation_ministry_90: "$budget_allocation_ministry_law$ 90%" + budget_allocation_ministry_95: "$budget_allocation_ministry_law$ 95%" + budget_allocation_ministry_100: "$budget_allocation_ministry_law$ 100%" + budget_allocation_ministry_0_short: "0%" + budget_allocation_ministry_5_short: "5%" + budget_allocation_ministry_10_short: "10%" + budget_allocation_ministry_15_short: "15%" + budget_allocation_ministry_20_short: "20%" + budget_allocation_ministry_25_short: "25%" + budget_allocation_ministry_30_short: "30%" + budget_allocation_ministry_35_short: "35%" + budget_allocation_ministry_40_short: "40%" + budget_allocation_ministry_45_short: "45%" + budget_allocation_ministry_50_short: "50%" + budget_allocation_ministry_55_short: "55%" + budget_allocation_ministry_60_short: "60%" + budget_allocation_ministry_65_short: "65%" + budget_allocation_ministry_70_short: "70%" + budget_allocation_ministry_75_short: "75%" + budget_allocation_ministry_80_short: "80%" + budget_allocation_ministry_85_short: "85%" + budget_allocation_ministry_90_short: "90%" + budget_allocation_ministry_95_short: "95%" + budget_allocation_ministry_100_short: "100%" + budget_allocation_military_law: "Military Budget Allocation" + budget_allocation_military_law_singular: "$budget_allocation_military_law$" + budget_allocation_military_0: "$budget_allocation_military_law$ 0%" + budget_allocation_military_5: "$budget_allocation_military_law$ 5%" + budget_allocation_military_10: "$budget_allocation_military_law$ 10%" + budget_allocation_military_15: "$budget_allocation_military_law$ 15%" + budget_allocation_military_20: "$budget_allocation_military_law$ 20%" + budget_allocation_military_25: "$budget_allocation_military_law$ 25%" + budget_allocation_military_30: "$budget_allocation_military_law$ 30%" + budget_allocation_military_35: "$budget_allocation_military_law$ 35%" + budget_allocation_military_40: "$budget_allocation_military_law$ 40%" + budget_allocation_military_45: "$budget_allocation_military_law$ 45%" + budget_allocation_military_50: "$budget_allocation_military_law$ 50%" + budget_allocation_military_55: "$budget_allocation_military_law$ 55%" + budget_allocation_military_60: "$budget_allocation_military_law$ 60%" + budget_allocation_military_65: "$budget_allocation_military_law$ 65%" + budget_allocation_military_70: "$budget_allocation_military_law$ 70%" + budget_allocation_military_75: "$budget_allocation_military_law$ 75%" + budget_allocation_military_80: "$budget_allocation_military_law$ 80%" + budget_allocation_military_85: "$budget_allocation_military_law$ 85%" + budget_allocation_military_90: "$budget_allocation_military_law$ 90%" + budget_allocation_military_95: "$budget_allocation_military_law$ 95%" + budget_allocation_military_100: "$budget_allocation_military_law$ 100%" + budget_allocation_military_0_short: "0%" + budget_allocation_military_5_short: "5%" + budget_allocation_military_10_short: "10%" + budget_allocation_military_15_short: "15%" + budget_allocation_military_20_short: "20%" + budget_allocation_military_25_short: "25%" + budget_allocation_military_30_short: "30%" + budget_allocation_military_35_short: "35%" + budget_allocation_military_40_short: "40%" + budget_allocation_military_45_short: "45%" + budget_allocation_military_50_short: "50%" + budget_allocation_military_55_short: "55%" + budget_allocation_military_60_short: "60%" + budget_allocation_military_65_short: "65%" + budget_allocation_military_70_short: "70%" + budget_allocation_military_75_short: "75%" + budget_allocation_military_80_short: "80%" + budget_allocation_military_85_short: "85%" + budget_allocation_military_90_short: "90%" + budget_allocation_military_95_short: "95%" + budget_allocation_military_100_short: "100%" + # Confucian bureaucracy + meritocratic_bureaucracy: "[celestial_bureaucracy|E]" + meritocratic_bureaucracy_0: "Autonomous Provinces" + meritocratic_bureaucracy_0_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Vassals' [titles|E] cannot be inherited by Characters outside the [realm|E]#!" + meritocratic_bureaucracy_1: "Limited Civil Service" + meritocratic_bureaucracy_1_effects: "$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted" + meritocratic_bureaucracy_1_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage [war|E] against other Vassals unless they use a [hook|E] on their [liege|E]#!" + meritocratic_bureaucracy_2: "Centralized Ministries" + meritocratic_bureaucracy_2_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between all available [succession_laws|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 All Vassals who refuse Title revocation or Vassal retraction are considered [criminals|E]#!\n$EFFECT_LIST_BULLET$#high $demand_admin_interaction$#! cost is reduced" + meritocratic_bureaucracy_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage any [war|E] unless they use a [hook|E] on their [liege|E]#!" + meritocratic_bureaucracy_3: "Divine Mandate" + meritocratic_bureaucracy_3_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] can never declare [war|E]#!" + + CONFUCIAN_BUREAUCRACY_IS_ON_COOLDOWN: "You recently changed [meritocratic_bureaucracy|E]. Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'imperia l_bureaucracy_cooldown') )]" + # Japanese bureauracy + japanese_bureaucracy: "[japanese_bureaucracy|E]" + japanese_bureaucracy_0: "Autonomous Governors" + japanese_bureaucracy_0_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Vassals' [titles|E] cannot be inherited by Characters outside the [realm|E]#!\n$EFFECT_LIST_BULLET$Rulers can designate their [heir|E]" + japanese_bureaucracy_1: "Limited Oversight" + japanese_bureaucracy_1_effects: "$EFFECT_LIST_BULLET$[titles|E] can be revoked\n$EFFECT_LIST_BULLET$[vassals|E] can be retracted" + japanese_bureaucracy_2: "Powerful Ministries" + japanese_bureaucracy_2_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Rulers can change between all available [succession_laws|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 All Vassals who refuse Title revocation or Vassal retraction are considered [criminals|E]#!\n$EFFECT_LIST_BULLET$#high $demand_admin_interaction$#! cost is reduced" + japanese_bureaucracy_2_effects_not_in_prev: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] cannot wage [war|E] against other Vassals unless they use a [hook|E] on their [liege|E]#!" + japanese_bureaucracy_3: "Centralized Governance" + japanese_bureaucracy_3_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 Non-[governor|E] [vassals|E] can never declare [war|E]#!" + + JAPANESE_BUREAUCRACY_IS_ON_COOLDOWN: "You recently changed [japanese_bureaucracy|E]. Can be changed again after [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.MakeScope, 'imperial_bureaucracy_cooldown') )]" + border_wars_laws: "Border Wars Policy" + border_wars_laws_singular: "$border_wars_laws$" + top_liege_redirected_to_border_wars_law: "Guaranteed Protection" + top_liege_redirected_to_border_wars_law_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 [top_liege|E] will always be the defending [war_leader|E] in [wars|E] for any [title|E] in their [realm|E]#!" + top_liege_not_redirected_to_border_wars_law: "Conditional Join" + top_liege_not_redirected_to_border_wars_law_effects: "$EFFECT_LIST_BULLET$#indent_newline:3 All [title|E] [holders|E] within the [realm|E] can be targeted by [wars|E] declared by other [rulers|E]#!\n$EFFECT_LIST_BULLET$#indent_newline:3 [top_liege|E] will #N #bold not#!#! be involved in those wars on declaration#!\n$EFFECT_LIST_BULLET$#indent_newline:3 [top_liege|E] can still join the war as an ally using #V $join_vassal_war_interaction$#! [interaction|E]\n\n#weak Top Liege is more likely to join:\n$EFFECT_LIST_BULLET$#indent_newline:3 Contested titles are kingdom or higher tier#!\n$EFFECT_LIST_BULLET$#indent_newline:3 War targets multiple titles#!\n$EFFECT_LIST_BULLET$#indent_newline:3 War lasts more than 5 years#!\n$EFFECT_LIST_BULLET$#indent_newline:3 If the defender is weaker than the attacker#!\nTop Liege will #bold not#! join:\n$EFFECT_LIST_BULLET$#indent_newline:3 During the 1st year of the war#!\n$EFFECT_LIST_BULLET$#indent_newline:3 When already at war#!\n$EFFECT_LIST_BULLET$#indent_newline:3 When in debt#!\n$EFFECT_LIST_BULLET$#indent_newline:3 If the defender is stronger than the attacker#!" + top_liege_not_redirected_to_border_wars_law_effects_not_in_prev: "\n\n@alert_icon! This law is enacted automatically if the [top_liege_possessive|E]:\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_hegemony$#!\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_realm_size_tt$#!\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_antagonistic_house$#!\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_defender_in_civil_war$#!" + border_wars_laws_triggers: "At least one of these:\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_hegemony$#!\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_realm_size$#!\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_antagonistic_house$#!\n$EFFECT_LIST_BULLET$#indent_newline:3 $border_wars_laws_defender_in_civil_war$#!" + border_wars_laws_hegemony: "Highest held Title is [hegemony|E] [rank|E]" + border_wars_laws_realm_size_tt: "[realm_size|E] is [EmptyScope.ScriptValue('border_war_sized_realm_value')|V0] or more" + border_wars_laws_realm_size: "$border_wars_laws_realm_size_tt$ #weak ($VALUE|V0$)#!" + border_wars_laws_antagonistic_house: "[house_unity|E] is @dynasty_house_unity_antagonistic! $antagonistic$" + border_wars_laws_defender_in_civil_war: "Defending [war_leader|E] in a [civil_war|E]" + + grand_secretariat_laws: "Grand Secretariat Control" + grand_secretariat_laws_singular: "$grand_secretariat_laws$" + grand_chancellor_law: "$councillor_chancellor_celestial_government_imperial$" + grand_chancellor_law_effects: "$EFFECT_LIST_BULLET$ Set [SelectLocalization( GetPlayer.IsValid, 'grand_chancellor_law_title_name', '$e_minister_chancellor|q$' )] [title_succession|E] as the [grand_secretariat|E] [succession|E]\n$EFFECT_LIST_BULLET$ Designate [SelectLocalization( GetPlayer.IsValid, 'grand_chancellor_law_title_name_holder', '$councillor_chancellor_celestial_government_imperial|q$' )] as the [grand_secretariat_director|E]" + grand_marshal_law: "$minister_grand_marshal$" + grand_marshal_law_effects: "$EFFECT_LIST_BULLET$ Set [SelectLocalization( GetPlayer.IsValid, 'grand_marshal_law_title_name', '$e_minister_grand_marshal|q$' )] [title_succession|E] as the [grand_secretariat|E] [succession|E]\n$EFFECT_LIST_BULLET$ Designate [SelectLocalization( GetPlayer.IsValid, 'grand_marshal_law_title_name', '$minister_grand_marshal|q$' )] as the [grand_secretariat_director|E]" + grand_chancellor_law_title_name: "[GetTitleByKey('e_minister_chancellor').GetName]" + grand_chancellor_law_title_name_holder: "[GetTitleByKey('e_minister_chancellor').GetHolder.GetShortUIName]" + grand_marshal_law_title_name: "[GetTitleByKey('e_minister_grand_marshal').GetName]" + grand_marshal_law_title_name_holder: "[GetTitleByKey('e_minister_grand_marshal').GetHolder.GetShortUIName]" + + grand_censor_law: "$councillor_spymaster_celestial_government_imperial$" + grand_censor_law_effects: "$EFFECT_LIST_BULLET$ Set [SelectLocalization( GetPlayer.IsValid, 'grand_censor_law_title_name', '$e_minister_censor|q$' )] [title_succession|E] as the [grand_secretariat|E] [succession|E]\n$EFFECT_LIST_BULLET$ Designate [SelectLocalization( GetPlayer.IsValid, 'grand_censor_law_title_name_holder', '$councillor_spymaster_celestial_government_imperial|q$' )] as the [grand_secretariat_director|E]" + grand_censor_law_title_name: "[GetTitleByKey('e_minister_censor').GetName]" + grand_censor_law_title_name_holder: "[GetTitleByKey('e_minister_censor').GetHolder.GetShortUIName]" + candidate_score_laws: "Candidate Score Focus" + candidate_score_laws_singular: "$candidate_score_laws$" + candidate_score_merit_law: "Merit" + candidate_score_merit_law_effects: "$EFFECT_LIST_BULLET$ [prestige_level|E] and [dynasty_prestige_level|E] have #bold no#! impact on [candidate_score|E]" + candidate_score_prestige_law: "Family" + candidate_score_prestige_law_effects: "$EFFECT_LIST_BULLET$ [prestige_level|E] and [dynasty_prestige_level|E] have major impact on [candidate_score|E]" + conservative_powerful_families_tt: "[house_heads|E] of at least [CHARACTER.MakeScope.ScriptValue('needed_conservative_powerful_families_value')] [powerful_families|E] have to be members of [GetSituation('dynastic_cycle').GetTopParticipantGroupByKey('conservative_movement').GetName] #weak (currently: $VALUE|0$)#!" + conservative_ministers_tt: "At least [CHARACTER.MakeScope.ScriptValue('needed_conservative_ministers_value')] [ministers|E] have to be members of [GetSituation('dynastic_cycle').GetTopParticipantGroupByKey('conservative_movement').GetName] #weak (currently: $VALUE|0$)#!" + not_conservative_powerful_families_tt: "[house_heads|E] of at least [CHARACTER.MakeScope.ScriptValue('needed_conservative_powerful_families_value')] [powerful_families|E] #bold cannot#! be members of [GetSituation('dynastic_cycle').GetTopParticipantGroupByKey('conservative_movement').GetName] #weak (currently: $VALUE|0$)#!" + not_conservative_ministers_tt: "At least [CHARACTER.MakeScope.ScriptValue('needed_conservative_ministers_value')] [ministers|E] #bold cannot#! be members of [GetSituation('dynastic_cycle').GetTopParticipantGroupByKey('conservative_movement').GetName] #weak (currently: $VALUE|0$)#!" + + can_have_single_heir_succession_law_trigger_merit_or_japan_tt: "One of these:\n$BULLET_WITH_TAB$Your [culture|E] has the $innovation_primogeniture$ [innovation|E]\n$BULLET_WITH_TAB$You are an [independent|E] [ruler|E]\n$BULLET_WITH_TAB$You are the [ceremonial_liege|E]" From 5da0e4805626b879aa85f72cf599a271b0e3d945 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 16 Mar 2026 14:02:18 +0000 Subject: [PATCH 25/52] republic stuff --- .../00_tradition_interactions.txt | 511 ++++++++++++++++++ common/governments/00_government_types.txt | 24 + .../peasant_republic_obligations.txt | 383 ++++++++++++- .../contracts/urban_republic_obligations.txt | 376 ++++++++++++- .../replace/urepublic_loc_l_english.yml | 24 +- 5 files changed, 1314 insertions(+), 4 deletions(-) create mode 100644 common/character_interactions/00_tradition_interactions.txt diff --git a/common/character_interactions/00_tradition_interactions.txt b/common/character_interactions/00_tradition_interactions.txt new file mode 100644 index 00000000..5eb44c8f --- /dev/null +++ b/common/character_interactions/00_tradition_interactions.txt @@ -0,0 +1,511 @@ +spar_with_knight_interaction = { + icon = icon_combat + interface_priority = 30 + common_interaction = yes + category = interaction_category_friendly + ai_min_reply_days = 0 + ai_max_reply_days = 0 + popup_on_receive = yes + pause_on_receive = yes + desc = spar_with_knight_interaction_desc + + greeting = positive + notification_text = REQUEST_SPARRING_TEXT + + is_shown = { + scope:actor = { + OR = { + culture = { + has_cultural_parameter = can_use_sparring_duel + } + top_participant_group:dynastic_cycle ?= { + participant_group_type = expansion_movement + } + } + } + scope:recipient = { + is_knight_of = scope:actor + } + # Can't duel yourself. + scope:actor != scope:recipient + } + + is_valid_showing_failures_only = { + scope:actor = { can_start_single_combat_trigger = yes } + scope:actor = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:actor } } + # Scope:recipient must be able to fight personally. + scope:recipient = { can_start_single_combat_trigger = yes } + # Scope:recipient must not be banned from single combat. + scope:recipient = { + custom_description = { + text = fp1_tbc_recipient_banned_from_combat + can_start_single_combat_banned_checks_trigger = no + } + } + # Neither of the characters can be imprisoned. + scope:actor = { is_imprisoned = no } + scope:recipient = { is_imprisoned = no } + + scope:actor = { is_at_war = no } + scope:recipient = { is_at_war = no } + } + + can_send = { + scope:actor = { + custom_description = { + text = "character_interactions_hostile_actions_disabled_delay" + NOT = { has_character_flag = flag_hostile_actions_disabled_delay } + } + } + } + + cost = { prestige = medium_prestige_value } + cooldown = { years = 5 } + cooldown_against_recipient = { years = 10 } + + on_send = { + scope:actor = { + add_character_flag = { + flag = flag_hostile_actions_disabled_delay + days = 10 + } + } + } + + on_accept = { + # Set up the bout immediately. + ## First inform. + scope:actor = { + custom_tooltip = challenge_to_single_combat_interaction.enter_non_lethal_bout.tt + custom_tooltip = spar_with_knight_interaction.effect.tt + custom_tooltip = spar_with_knight_interaction.negative_effect.tt + } + scope:recipient = { + custom_tooltip = spar_with_knight_interaction.effect.tt + custom_tooltip = spar_with_knight_interaction.negative_effect.tt + } + ## Finally, begin. + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:actor + SC_DEFENDER = scope:recipient + FATALITY = no + FIXED = no + LOCALE = army_camp + OUTPUT_EVENT = culture_tradition_events.0001 + INVALIDATION_EVENT = perk_interaction.0102 + } + } + + ai_accept = { + base = 10 # Try to make it 0 for most interactions + + modifier = { + desc = CTSC_RELATIVE_PROWESS + scope:recipient.prowess < scope:actor.prowess + add = { + value = scope:actor.prowess + subtract = scope:recipient.prowess + multiply = -2 + } + } + + # Personality values + ai_value_modifier = { + who = scope:recipient + ai_boldness = 0.5 + ai_honor = { + if = { + limit = { + scope:recipient = { + ai_honor > 0 + } + } + value = 0.25 + } + } + } + modifier = { + desc = AI_REFUSAL_WOUNDED + scope:recipient = { + OR = { + has_trait = wounded + has_trait = maimed + } + } + add = -200 + } + } + + # AI + ai_potential = { + culture = { + has_cultural_parameter = can_use_sparring_duel + } + NOT = { has_trait = craven } + is_imprisoned = no + can_start_single_combat_trigger = yes + number_of_knights > 0 + } + + ai_target_quick_trigger = { + adult = yes + } + ai_targets = { + ai_recipients = vassals + max = 10 + } + ai_targets = { + ai_recipients = courtiers + max = 10 + } + + ai_frequency_by_tier = { + barony = 0 + county = 72 + duchy = 72 + kingdom = 36 + empire = 36 + hegemony = 36 + } + + ai_will_do = { + base = -25 + + # Factor for personality (excluding realism). + modifier = { + add = { + value = ai_boldness + multiply = 1 + } + } + modifier = { + add = { + value = ai_energy + multiply = 0.5 + } + } + modifier = { + add = -50 + prowess <= low_skill_rating + } + modifier = { + factor = 0 + OR = { + has_trait = wounded + has_trait = maimed + } + } + } +} + + +#Appointing a Podesta over a Commune - Turning a one county holder into a Republican Vassal +#Local culture must have the parameter, as does the granting character. +#Recipient does not need to have local culture. +appoint_podesta_interaction = { + icon = grant_titles_interaction + interface_priority = 30 + common_interaction = yes + category = interaction_category_vassal + ai_min_reply_days = 0 + ai_max_reply_days = 0 + popup_on_receive = yes + pause_on_receive = yes + desc = appoint_podesta_desc + + greeting = positive + notification_text = REQUEST_REPUBLIC_TEXT + + is_shown = { + scope:actor != scope:recipient # Can't make yourself a Podesta. + scope:actor = { + culture = { + has_cultural_parameter = can_make_republican_vassals + } + any_held_title = { + count > 1 + } + } + scope:recipient = { + is_ai = yes + is_landed = yes + target_is_liege_or_above = scope:actor + NOR = { + government_has_flag = government_is_republic + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + + } + } + + is_valid_showing_failures_only = { + scope:recipient = { can_be_granted_titles_by = { RULER = scope:actor } } + NOT = { scope:actor = { is_at_war_with = scope:recipient } } + + custom_description = { + text = too_many_republics + scope:actor = { + any_vassal = { + count < 4 #Use Script Value + highest_held_title_tier >= tier_county + government_has_flag = government_is_republic + } + } + } + + + scope:recipient = { + target_is_liege_or_above = scope:actor + NOR = { + government_has_flag = government_is_republic + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + is_claimant = no + + custom_description = { + text = must_be_one_county_count + any_held_title = { + count = 1 + title_tier = county + } + } + + custom_description = { + text = must_not_have_landed_relatives + NOT = { + any_close_or_extended_family_member = { + is_landed_or_landless_administrative = yes + } + } + } + + custom_description = { + text = must_not_be_heir_to_any_title + scope:recipient = { + any_heir_title = { + count < 1 + tier >= tier_county + } + } + } + + custom_description = { #The county must be developed or have at least one city + text = county_must_have_city + any_held_title = { + count = 1 + title_tier = county + OR = { + any_county_province = { + has_holding_type = city_holding + } + development_level > 20 + } + } + } + custom_description = { #County must be of a culture that has the tradition parameter + text = county_must_have_culture + any_held_title = { + count = 1 + title_tier = county + OR = { + any_county_province = { + culture = { + has_cultural_parameter = can_make_republican_vassals + } + } + OR = { + government_has_flag = government_is_prepublic + government_has_flag = government_is_urepublic + } + } + } + } + } + + trigger_if = { + limit = { + scope:recipient = { + is_ruler = no + } + } + scope:recipient = { + is_imprisoned = no + } + } + } + + cost = { prestige = minor_prestige_value } + cooldown = { years = 5 } + cooldown_against_recipient = { years = 10 } + + on_accept = { + scope:actor = { + hidden_effect = { + send_interface_toast = { + type = event_toast_effect_neutral + title = appoint_podesta_interaction_notification + + left_icon = scope:actor + right_icon = scope:recipient + if = { + limit = { + scope:actor = { government_has_flag = government_is_urepublic } + } + scope:recipient = { + show_as_tooltip = { + change_government = urbanrepublic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + primary_title = { + add_to_global_variable_list = { + name = urepublic_list + target = prev + } + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + } + } + else_if = { + limit = { + scope:actor = { government_has_flag = government_is_prepublic } + } + scope:recipient = { + show_as_tooltip = { + change_government = peasantrepublic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + primary_title = { + add_to_global_variable_list = { + name = prepublic_list + target = prev + } + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + } + } + else = { + scope:recipient = { + show_as_tooltip = { + change_government = republic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + } + } + } + } + } + scope:recipient = { + change_government = republic_government + create_title_and_vassal_change = { + type = returned + save_scope_as = change + add_claim_on_loss = no + } + every_vassal = { + limit = { + government_has_flag = government_is_republic + } + every_held_title = { + change_title_holder = { + holder = scope:recipient + change = scope:change + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:change + } + + # If we're a clan this interaction affects unity + add_clan_unity_interaction_effect = { + CHARACTER = scope:actor + TARGET = scope:recipient + VALUE = minor_unity_gain + DESC = clan_unity_podesta.desc + REVERSE_NON_HOUSE_TARGET = no + } + } + + auto_accept = yes + + # AI + ai_potential = { + culture = { + has_cultural_parameter = can_make_republican_vassals + has_cultural_era_or_later = culture_era_high_medieval + } + primary_title.tier > tier_county + } + + ai_target_quick_trigger = { + adult = yes + } + ai_targets = { + ai_recipients = vassals + } + + ai_frequency_by_tier = { + barony = 0 + county = 0 + duchy = 240 + kingdom = 60 + empire = 60 + hegemony = 60 + } + + ai_will_do = { + base = 100 + } +} diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index 3615b201..4a19a275 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -64,6 +64,12 @@ republic_government = { any_liege_or_above = { has_government = peasantrepublic_government } + primary_title = { + is_target_in_global_variable_list = { + name = prepublic_list + target = prev + } + } } NOR = { culture = { @@ -75,6 +81,12 @@ republic_government = { any_liege_or_above = { has_government = urbanrepublic_government } + primary_title = { + is_target_in_global_variable_list = { + name = urepublic_list + target = prev + } + } } } ai = { @@ -685,6 +697,12 @@ peasantrepublic_government = { liege = { has_government = peasantrepublic_government } + primary_title = { + is_target_in_global_variable_list = { + name = prepublic_list + target = prev + } + } } NOR = { culture = { @@ -775,6 +793,12 @@ urbanrepublic_government = { any_liege_or_above = { has_government = urbanrepublic_government } + primary_title = { + is_target_in_global_variable_list = { + name = urepublic_list + target = prev + } + } } } domicile_type = palace diff --git a/common/subject_contracts/contracts/peasant_republic_obligations.txt b/common/subject_contracts/contracts/peasant_republic_obligations.txt index f99c91aa..2312ce00 100644 --- a/common/subject_contracts/contracts/peasant_republic_obligations.txt +++ b/common/subject_contracts/contracts/peasant_republic_obligations.txt @@ -1,9 +1,13 @@ peasantrepublic_obligations = { + display_mode = tree uses_opinion_of_liege = yes + icon = prestige_icon obligation_levels = { - default = { + military_canton_p = { + position = { 0 0 } + parent = balanced_canton_p levies = { - value = 0.1 + value = 0.2 max = 1 scope:liege = { add = { @@ -151,6 +155,381 @@ } } } + + ai_liege_desire = { + value = 0 + if = { + limit = { + scope:subject = { + is_ai = yes + OR = { + has_trait = education_martial + martial >= very_high_skill_rating + primary_title = { any_owned_title_maa_regiment = { count > 4 } } + AND = { # Large inland themes are good for military + any_sub_realm_county = { count >= 5 } + any_sub_realm_county = { percent >= 0.95 is_coastal_county = no } + } + } + } + } + add = 2 + } + if = { + limit = { + scope:liege = { + ai_has_warlike_personality = yes + } + } + add = 1 + } + } + ai_subject_desire = 0 + + score = 0 + color = { 0.7 0.2 0.2 1.0 } + subject_modifier = { + fort_level = 2 + hostile_county_attrition = -0.3 + hostile_raid_time = 0.75 + development_growth_factor = -0.25 + men_at_arms_title_cap = 2 + men_at_arms_maintenance = -0.2 + monthly_treasury_from_military_budget_base = 1 + } + flag = obligation_high_levies + } + + balanced_canton_p = { + default = yes + position = { 1 0 } + levies = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + tax = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + barter_goods = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + ai_liege_desire = { + value = 0 + if = { + limit = { + scope:subject = { + is_ai = yes + } + } + add = 1 + } + } + ai_subject_desire = 0 + + score = 0 + color = { 0.7 0.7 0.7 1.0 } + + subject_modifier = { + monthly_martial_lifestyle_xp_gain_mult = 0.1 + monthly_stewardship_lifestyle_xp_gain_mult = 0.1 + monthly_diplomacy_lifestyle_xp_gain_mult = 0.1 + monthly_treasury_from_military_budget_base = 0.5 + monthly_treasury_from_salary_budget_base = 0.5 + } + } + civilian_canton_p = { + position = { 2 0 } + levies = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + tax = { + value = 0.2 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + barter_goods = { + value = 0.2 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + herd = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + ai_liege_desire = { + value = 0 + if = { + limit = { + scope:subject = { + is_ai = yes + OR = { + has_trait = education_stewardship + stewardship >= very_high_skill_rating + AND = { # Large semi-coastal themes are good for an economic focus + any_sub_realm_county = { count >= 2 is_coastal_county = yes } + any_sub_realm_county = { count >= 2 is_coastal_county = no } + } + } + } + } + add = 2 + } + if = { + limit = { + scope:liege = { + ai_has_builder_or_pious_builder_personality = yes + } + } + add = 1 + } + } + ai_subject_desire = 0 + + score = 0 + color = { 0.2 0.2 0.7 1.0 } + subject_modifier = { + development_growth_factor = 0.2 + build_gold_cost = -0.1 + build_speed = -0.1 + men_at_arms_title_limit = -2 + men_at_arms_title_cap = -2 + monthly_treasury_from_salary_budget_base = 1 + } + flag = obligation_high_taxes } } } diff --git a/common/subject_contracts/contracts/urban_republic_obligations.txt b/common/subject_contracts/contracts/urban_republic_obligations.txt index e9f75a3c..9f32eee8 100644 --- a/common/subject_contracts/contracts/urban_republic_obligations.txt +++ b/common/subject_contracts/contracts/urban_republic_obligations.txt @@ -1,7 +1,184 @@ urbanrepublic_obligations = { + display_mode = tree uses_opinion_of_liege = yes + icon = prestige_icon obligation_levels = { - default = { + military_canton_u = { + position = { 0 0 } + parent = balanced_canton_u + levies = { + value = 0.2 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = influence_level + } + } + + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + tax = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = influence_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + barter_goods = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = influence_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + ai_liege_desire = { + value = 0 + if = { + limit = { + scope:subject = { + is_ai = yes + OR = { + has_trait = education_martial + martial >= very_high_skill_rating + primary_title = { any_owned_title_maa_regiment = { count > 4 } } + AND = { # Large inland themes are good for military + any_sub_realm_county = { count >= 5 } + any_sub_realm_county = { percent >= 0.95 is_coastal_county = no } + } + } + } + } + add = 2 + } + if = { + limit = { + scope:liege = { + ai_has_warlike_personality = yes + } + } + add = 1 + } + } + ai_subject_desire = 0 + subject_modifier = { + fort_level = 2 + hostile_county_attrition = -0.3 + hostile_raid_time = 0.75 + development_growth_factor = -0.25 + men_at_arms_title_cap = 2 + men_at_arms_maintenance = -0.2 + monthly_treasury_from_military_budget_base = 1 + } + flag = obligation_high_levies + } + balanced_canton_u = { + default = yes + position = { 1 0 } levies = { value = 0.1 max = 1 @@ -132,6 +309,203 @@ } } } + ai_liege_desire = { + value = 0 + if = { + limit = { + scope:subject = { + is_ai = yes + } + } + add = 1 + } + } + ai_subject_desire = 0 + + score = 0 + color = { 0.7 0.7 0.7 1.0 } + + subject_modifier = { + monthly_martial_lifestyle_xp_gain_mult = 0.1 + monthly_stewardship_lifestyle_xp_gain_mult = 0.1 + monthly_diplomacy_lifestyle_xp_gain_mult = 0.1 + monthly_treasury_from_military_budget_base = 0.5 + monthly_treasury_from_salary_budget_base = 0.5 + } + } + civilian_canton_u = { + parent = balanced_canton_u + position = { 2 0 } + levies = { + value = 0.1 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = influence_level + } + } + + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + tax = { + value = 0.2 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = influence_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + barter_goods = { + value = 0.2 + max = 1 + scope:liege = { + add = { + value = 0.1 + multiply = legitimacy_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = piety_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = dynasty_prestige_level + } + } + scope:liege = { + add = { + value = 0.1 + multiply = influence_level + } + } + if = { + limit = { OR = { scope:opinion_of_liege > 0 scope:opinion_of_liege < 0} } + add = { + value = { + add = scope:opinion_of_liege + divide = 100 + } + } + } + } + ai_liege_desire = { + value = 0 + if = { + limit = { + scope:subject = { + is_ai = yes + OR = { + has_trait = education_stewardship + stewardship >= very_high_skill_rating + AND = { # Large semi-coastal themes are good for an economic focus + any_sub_realm_county = { count >= 2 is_coastal_county = yes } + any_sub_realm_county = { count >= 2 is_coastal_county = no } + } + } + } + } + add = 2 + } + if = { + limit = { + scope:liege = { + ai_has_builder_or_pious_builder_personality = yes + } + } + add = 1 + } + } + ai_subject_desire = 0 + + score = 0 + color = { 0.2 0.2 0.7 1.0 } + subject_modifier = { + development_growth_factor = 0.2 + build_gold_cost = -0.1 + build_speed = -0.1 + men_at_arms_title_limit = -2 + men_at_arms_title_cap = -2 + monthly_treasury_from_salary_budget_base = 1 + } + flag = obligation_high_taxes } } } diff --git a/localization/english/replace/urepublic_loc_l_english.yml b/localization/english/replace/urepublic_loc_l_english.yml index 6c741da7..02135450 100644 --- a/localization/english/replace/urepublic_loc_l_english.yml +++ b/localization/english/replace/urepublic_loc_l_english.yml @@ -157,4 +157,26 @@ grand_solar_palace_01_domicile_building: "Rustic Hearth" grand_solar_palace_02_domicile_building: "Family Sitting Rooms" grand_solar_palace_03_domicile_building: "Spacious Family Solar" - grand_solar_palace_04_domicile_building: "Salon of Heirlooms" \ No newline at end of file + grand_solar_palace_04_domicile_building: "Salon of Heirlooms" + + balanced_canton_u: "Balanced Province" + military_canton_u: "Military Province" + civilian_canton_u: "Civilian Province" + balanced_canton_u_desc: "Balanced Obligations for the Province." + military_canton_u_desc: "Obligations focused on providing defence and levies to the Republic." + civilian_canton_u_desc: "Obligations focused on building up the province and providing wealth to their Republic's Coffers." + balanced_canton_u_short: "Balanced" + military_canton_u_short: "Military" + civilian_canton_u_short: "Civilian" + balanced_canton_p: "Balanced Province" + military_canton_p: "Military Province" + civilian_canton_p: "Civilian Province" + balanced_canton_p_desc: "Balanced Obligations for the Province." + military_canton_p_desc: "Obligations focused on providing defence and levies to the Republic." + civilian_canton_p_desc: "Obligations focused on building up the province and providing wealth to their Republic's Coffers." + balanced_canton_p_short: "Balanced" + military_canton_p_short: "Military" + civilian_canton_p_short: "Civilian" + + urbanrepublic_obligations: "Urban Republic Obligations" + peasantrepublic_obligations: "Peasant Republic Obligations" \ No newline at end of file From 4f857c9b5e14343a8eea6da35010ecbfa926eccc Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 16 Mar 2026 15:21:53 +0000 Subject: [PATCH 26/52] fix to republic taxes --- .../peasant_republic_obligations.txt | 32 +++++++------------ .../contracts/urban_republic_obligations.txt | 27 +++++++--------- 2 files changed, 23 insertions(+), 36 deletions(-) diff --git a/common/subject_contracts/contracts/peasant_republic_obligations.txt b/common/subject_contracts/contracts/peasant_republic_obligations.txt index 2312ce00..88ce4451 100644 --- a/common/subject_contracts/contracts/peasant_republic_obligations.txt +++ b/common/subject_contracts/contracts/peasant_republic_obligations.txt @@ -45,7 +45,6 @@ } } tax = { - value = 0.1 max = 1 scope:liege = { add = { @@ -82,7 +81,6 @@ } } barter_goods = { - value = 0.1 max = 1 scope:liege = { add = { @@ -119,7 +117,6 @@ } } herd = { - value = 0.1 max = 1 scope:liege = { add = { @@ -184,18 +181,17 @@ add = 1 } } - ai_subject_desire = 0 + subject_opinion = -5 + ai_subject_desire = -1 - score = 0 - color = { 0.7 0.2 0.2 1.0 } + score = -1 subject_modifier = { fort_level = 2 hostile_county_attrition = -0.3 hostile_raid_time = 0.75 development_growth_factor = -0.25 - men_at_arms_title_cap = 2 + men_at_arms_cap = 2 men_at_arms_maintenance = -0.2 - monthly_treasury_from_military_budget_base = 1 } flag = obligation_high_levies } @@ -204,7 +200,6 @@ default = yes position = { 1 0 } levies = { - value = 0.1 max = 1 scope:liege = { add = { @@ -242,7 +237,6 @@ } } tax = { - value = 0.1 max = 1 scope:liege = { add = { @@ -279,7 +273,6 @@ } } barter_goods = { - value = 0.1 max = 1 scope:liege = { add = { @@ -326,10 +319,9 @@ add = 1 } } - ai_subject_desire = 0 score = 0 - color = { 0.7 0.7 0.7 1.0 } + ai_subject_desire = 1 subject_modifier = { monthly_martial_lifestyle_xp_gain_mult = 0.1 @@ -340,9 +332,9 @@ } } civilian_canton_p = { + parent = balanced_canton_p position = { 2 0 } levies = { - value = 0.1 max = 1 scope:liege = { add = { @@ -454,7 +446,6 @@ } } herd = { - value = 0.1 max = 1 scope:liege = { add = { @@ -517,17 +508,16 @@ add = 1 } } - ai_subject_desire = 0 + ai_subject_desire = 2 - score = 0 - color = { 0.2 0.2 0.7 1.0 } + subject_opinion = 10 + score = 1 subject_modifier = { development_growth_factor = 0.2 build_gold_cost = -0.1 build_speed = -0.1 - men_at_arms_title_limit = -2 - men_at_arms_title_cap = -2 - monthly_treasury_from_salary_budget_base = 1 + men_at_arms_limit = -2 + men_at_arms_cap = -2 } flag = obligation_high_taxes } diff --git a/common/subject_contracts/contracts/urban_republic_obligations.txt b/common/subject_contracts/contracts/urban_republic_obligations.txt index 9f32eee8..54eeefdc 100644 --- a/common/subject_contracts/contracts/urban_republic_obligations.txt +++ b/common/subject_contracts/contracts/urban_republic_obligations.txt @@ -51,7 +51,6 @@ } } tax = { - value = 0.1 max = 1 scope:liege = { add = { @@ -94,7 +93,6 @@ } } barter_goods = { - value = 0.1 max = 1 scope:liege = { add = { @@ -164,15 +162,18 @@ add = 1 } } - ai_subject_desire = 0 + subject_opinion = -5 + ai_subject_desire = -1 + score = -1 subject_modifier = { fort_level = 2 hostile_county_attrition = -0.3 hostile_raid_time = 0.75 development_growth_factor = -0.25 - men_at_arms_title_cap = 2 + men_at_arms_cap = 2 men_at_arms_maintenance = -0.2 monthly_treasury_from_military_budget_base = 1 + monthly_treasury_from_salary_budget_base = 0.25 } flag = obligation_high_levies } @@ -180,7 +181,6 @@ default = yes position = { 1 0 } levies = { - value = 0.1 max = 1 scope:liege = { add = { @@ -224,7 +224,6 @@ } } tax = { - value = 0.1 max = 1 scope:liege = { add = { @@ -267,7 +266,6 @@ } } barter_goods = { - value = 0.1 max = 1 scope:liege = { add = { @@ -320,10 +318,9 @@ add = 1 } } - ai_subject_desire = 0 + ai_subject_desire = 1 score = 0 - color = { 0.7 0.7 0.7 1.0 } subject_modifier = { monthly_martial_lifestyle_xp_gain_mult = 0.1 @@ -337,7 +334,6 @@ parent = balanced_canton_u position = { 2 0 } levies = { - value = 0.1 max = 1 scope:liege = { add = { @@ -493,16 +489,17 @@ add = 1 } } - ai_subject_desire = 0 + ai_subject_desire = 2 - score = 0 - color = { 0.2 0.2 0.7 1.0 } + score = 1 + subject_opinion = 10 subject_modifier = { development_growth_factor = 0.2 build_gold_cost = -0.1 build_speed = -0.1 - men_at_arms_title_limit = -2 - men_at_arms_title_cap = -2 + men_at_arms_limit = -2 + men_at_arms_cap = -2 + monthly_treasury_from_military_budget_base = 0.25 monthly_treasury_from_salary_budget_base = 1 } flag = obligation_high_taxes From 93b68af972366915a3efd190e7d7c23789fc9838 Mon Sep 17 00:00:00 2001 From: edwardtheelbowhigh <73761109+edwardtheelbowhigh@users.noreply.github.com> Date: Mon, 16 Mar 2026 17:48:41 +0000 Subject: [PATCH 27/52] Update bookmark_N3OW_2555_l_english.yml --- .../english/replace/bookmark/bookmark_N3OW_2555_l_english.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml b/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml index fd742a62..98532b4e 100644 --- a/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml +++ b/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml @@ -24,7 +24,7 @@ bookmark_WE_windsor_windsor_sior:0 "George" bookmark_WE_windsor_windsor_sior_subheading:0 "The Scion of Heaven" - bookmark_WE_windsor_windsor_sior_desc:0 "One of the only families of old anglia to speak queens-english, the Windsors, true scions of the heavnly Queen herself, are a respected family within the empire. The elevation of there ancestral province to a Royal Honor by the current First Lord is no small testament to the diplomatic skill of the current family head George. But Britannia is not well. Ireland is lost, the eastern anglicans and the so called 'true welsh' are still in rebellion, and though the rebellion in the southwest has been crushed it was more than a simple close call. George, hidbound by honour as he is, now faces a difficult choice. Remain loyal to the crown in its ineptitude, or stake his honour and the future of his family on a bid for the throne. Even if he does not choose to ride with his armies east along the thames there is no telling what his own scions will do once he is gone.\n\n#bold Can the Scions of the Heavenly Queen steer Britannia back to her righful place as the supreme power, or will they finally inevitably, be erroded by the sand of time?#!" + bookmark_WE_windsor_windsor_sior_desc:0 "One of the only families of old anglia to speak queens-english, the Windsors, true scions of the heavenly Queen herself, are a respected family within the empire. The elevation of there ancestral province to a Royal Honor by the current First Lord is no small testament to the diplomatic skill of the current family head George. But Britannia is not well. Ireland is lost, the eastern anglicans and the so called 'true welsh' are still in rebellion, and though the rebellion in the southwest has been crushed it was more than a simple close call. George, hidebound by honour as he is, now faces a difficult choice: remain loyal to the crown in its ineptitude, or stake his honour and the future of his family on a bid for the throne. Even if he does not choose to ride with his armies east along the thames there is no telling what his own scions will do once he is gone.\n\n#bold Can the Scions of the Heavenly Queen steer Britannia back to her rightful place as the supreme power, or will they finally inevitably, be erroded by the sands of time?#!" bookmark_WE_tirrenia_bollani_albertu:0 "Albertu" bookmark_WE_tirrenia_bollani_albertu_subheading:0 "The Archon of Archons" From c9a4f9b7ff333a3e1cfbdba9d254be7d7bc25001 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 16 Mar 2026 17:51:18 +0000 Subject: [PATCH 28/52] various fixes and loc fixes --- .../culture/cultures/NEOW_north_germanic.txt | 3 +- common/culture/name_lists/00_ainu.txt | 172 -- common/culture/name_lists/00_akan.txt | 199 -- common/culture/name_lists/00_arabic.txt | 954 -------- common/culture/name_lists/00_balhae.txt | 379 --- common/culture/name_lists/00_bantu.txt | 282 --- common/culture/name_lists/00_burman.txt | 113 - .../culture/name_lists/00_central_african.txt | 133 -- common/culture/name_lists/00_chinese.txt | 215 -- common/culture/name_lists/00_dead.txt | 534 ----- common/culture/name_lists/00_dravidian.txt | 528 ----- common/culture/name_lists/00_east_african.txt | 284 --- common/culture/name_lists/00_indo_aryan.txt | 2101 ----------------- common/culture/name_lists/00_iranian.txt | 922 -------- common/culture/name_lists/00_japanese.txt | 1428 ----------- common/culture/name_lists/00_khmer.txt | 69 - common/culture/name_lists/00_korean.txt | 196 -- common/culture/name_lists/00_malay.txt | 419 ---- common/culture/name_lists/00_mongolic.txt | 403 ---- common/culture/name_lists/00_nakkavaram.txt | 61 - common/culture/name_lists/00_nivkh.txt | 121 - .../culture/name_lists/00_north_germanic.txt | 872 ------- common/culture/name_lists/00_qiangic.txt | 213 -- common/culture/name_lists/00_ryukyuan.txt | 144 -- common/culture/name_lists/00_sahelian.txt | 455 ---- common/culture/name_lists/00_senegambian.txt | 80 - common/culture/name_lists/00_somalian.txt | 295 --- common/culture/name_lists/00_tai.txt | 73 - common/culture/name_lists/00_tibetan.txt | 878 ------- common/culture/name_lists/00_tungusic.txt | 319 --- common/culture/name_lists/00_ugro_permian.txt | 212 -- common/culture/name_lists/00_vietnamese.txt | 139 -- common/culture/name_lists/00_volga_finnic.txt | 340 --- common/culture/name_lists/00_west_african.txt | 387 --- common/culture/name_lists/00_yoruba.txt | 261 -- .../culture/traditions/03_fp3_traditions.txt | 854 +++++++ common/dynasties/NEOW_dynasties.txt | 40 + history/characters/NEOW_fishe_chars.txt | 97 + history/provinces/e_italy.txt | 6 +- history/provinces/e_scandinavia.txt | 10 +- history/titles/k_aragon.txt | 3 +- history/titles/k_portugal.txt | 24 +- history/titles/k_sweden.txt | 40 +- .../bookmark/bookmark_N3OW_2555_l_english.yml | 2 +- .../zz_NEOW_cultural_traditions_l_english.yml | 2 +- 45 files changed, 1061 insertions(+), 14201 deletions(-) delete mode 100644 common/culture/name_lists/00_ainu.txt delete mode 100644 common/culture/name_lists/00_akan.txt delete mode 100644 common/culture/name_lists/00_arabic.txt delete mode 100644 common/culture/name_lists/00_balhae.txt delete mode 100644 common/culture/name_lists/00_bantu.txt delete mode 100644 common/culture/name_lists/00_burman.txt delete mode 100644 common/culture/name_lists/00_central_african.txt delete mode 100644 common/culture/name_lists/00_chinese.txt delete mode 100644 common/culture/name_lists/00_dead.txt delete mode 100644 common/culture/name_lists/00_dravidian.txt delete mode 100644 common/culture/name_lists/00_east_african.txt delete mode 100644 common/culture/name_lists/00_indo_aryan.txt delete mode 100644 common/culture/name_lists/00_iranian.txt delete mode 100644 common/culture/name_lists/00_japanese.txt delete mode 100644 common/culture/name_lists/00_khmer.txt delete mode 100644 common/culture/name_lists/00_korean.txt delete mode 100644 common/culture/name_lists/00_malay.txt delete mode 100644 common/culture/name_lists/00_mongolic.txt delete mode 100644 common/culture/name_lists/00_nakkavaram.txt delete mode 100644 common/culture/name_lists/00_nivkh.txt delete mode 100644 common/culture/name_lists/00_north_germanic.txt delete mode 100644 common/culture/name_lists/00_qiangic.txt delete mode 100644 common/culture/name_lists/00_ryukyuan.txt delete mode 100644 common/culture/name_lists/00_sahelian.txt delete mode 100644 common/culture/name_lists/00_senegambian.txt delete mode 100644 common/culture/name_lists/00_somalian.txt delete mode 100644 common/culture/name_lists/00_tai.txt delete mode 100644 common/culture/name_lists/00_tibetan.txt delete mode 100644 common/culture/name_lists/00_tungusic.txt delete mode 100644 common/culture/name_lists/00_ugro_permian.txt delete mode 100644 common/culture/name_lists/00_vietnamese.txt delete mode 100644 common/culture/name_lists/00_volga_finnic.txt delete mode 100644 common/culture/name_lists/00_west_african.txt delete mode 100644 common/culture/name_lists/00_yoruba.txt create mode 100644 common/culture/traditions/03_fp3_traditions.txt create mode 100644 history/characters/NEOW_fishe_chars.txt diff --git a/common/culture/cultures/NEOW_north_germanic.txt b/common/culture/cultures/NEOW_north_germanic.txt index 643617c7..417e999f 100644 --- a/common/culture/cultures/NEOW_north_germanic.txt +++ b/common/culture/cultures/NEOW_north_germanic.txt @@ -10,6 +10,7 @@ tradition_eye_for_an_eye tradition_hereditary_hierarchy tradition_seafaring + tradition_republican_legacy } name_list = name_list_danish @@ -217,7 +218,7 @@ gutnsk = { traditions = { tradition_landstinget tradition_astute_diplomats - tradition_isolationist + tradition_republican_legacy tradition_practiced_pirates tradition_stalwart_defenders } diff --git a/common/culture/name_lists/00_ainu.txt b/common/culture/name_lists/00_ainu.txt deleted file mode 100644 index 71635b8c..00000000 --- a/common/culture/name_lists/00_ainu.txt +++ /dev/null @@ -1,172 +0,0 @@ -name_list_ainu = { - - dynasty_name_first = yes - - dynasty_names = { - "dynn_Akam" - "dynn_Amamsuke" - "dynn_Aptapet" - "dynn_Atkeusi" - "dynn_Cipasir" - "dynn_Ciroti" - "dynn_Esausi" - "dynn_Huranuy" - "dynn_Hurpira" - "dynn_Ioci" - "dynn_Iput" - "dynn_Iskar" - "dynn_Kusuri" - "dynn_Maske" - "dynn_Mopet" - "dynn_Moruran" - "dynn_Mukap" - "dynn_Nayoro" - "dynn_Nayporo" - "dynn_Nikap" - "dynn_Nimuoro" - "dynn_Nupurpet" - "dynn_Otarunay" - "dynn_Piporo" - "dynn_Piratur" - "dynn_Poropet" - "dynn_Rironay" - "dynn_Rusut" - "dynn_Sakkotan" - "dynn_Samani" - "dynn_Sar" - "dynn_Satporopet" - "dynn_Setanay" - "dynn_Sikot" - "dynn_Simukap" - "dynn_Sipet" - "dynn_Sipicar" - "dynn_Sirawoi" - "dynn_Sirpet" - "dynn_Sorapci" - "dynn_Soya" - "dynn_Tes_uni" - "dynn_Tokapusi" - "dynn_Tokor" - "dynn_Toya" - "dynn_Urarpet" - "dynn_Usor" - "dynn_Yuparo" - } - - cadet_dynasty_names = { - "dynn_Akam" - "dynn_Amamsuke" - "dynn_Aptapet" - "dynn_Atkeusi" - "dynn_Cipasir" - "dynn_Ciroti" - "dynn_Esausi" - "dynn_Huranuy" - "dynn_Hurpira" - "dynn_Ioci" - "dynn_Iput" - "dynn_Iskar" - "dynn_Kusuri" - "dynn_Maske" - "dynn_Mopet" - "dynn_Moruran" - "dynn_Mukap" - "dynn_Nayoro" - "dynn_Nayporo" - "dynn_Nikap" - "dynn_Nimuoro" - "dynn_Nupurpet" - "dynn_Otarunay" - "dynn_Piporo" - "dynn_Piratur" - "dynn_Poropet" - "dynn_Rironay" - "dynn_Rusut" - "dynn_Sakkotan" - "dynn_Samani" - "dynn_Sar" - "dynn_Satporopet" - "dynn_Setanay" - "dynn_Sikot" - "dynn_Simukap" - "dynn_Sipet" - "dynn_Sipicar" - "dynn_Sirawoi" - "dynn_Sirpet" - "dynn_Sorapci" - "dynn_Soya" - "dynn_Tes_uni" - "dynn_Tokapusi" - "dynn_Tokor" - "dynn_Toya" - "dynn_Urarpet" - "dynn_Usor" - "dynn_Yuparo" - } - - male_names = { - Akarakay Antaaynu Apita Atuy Awta Aykoraynu - Cikomotaynu Cikunis Cimenpa - Ekasimatak Ekasipa Ekasiwakka Eytek - Haerire Harou Hasitaynu Haukase - Hemosite Hennauke Hepenrek - Ikotoy Imaarey Isar Isonnoas Itakisiroma - Kamokutaynu Kamuymar Kanetuaynu Kanikusiaynu Kannarik Kanniskor Kanririka Kansiyawmante - Keksike - Kimiyusaaynu Kimurakaaynu - Kosamaynu - Kucinkur Kukarkur Kuturaaynu - Menkakus - Monokute - Munkeke - Nisenrus Nisiktaaynu Nisirkeaynu - Notekarima - Nukanur - Onipis - Penkukar Penriuk - Pikki - Ponyaunpet Ponni - Ramante Ramranke - Resak - Rikunrik - Sahpo Saksaynu Sankekur Sanniyoaynu Satorki Surok - Sentaynu - Sianrek Sinrik Sirotmaaynu Siskuray Sisratoka Sitkureran Sitonay Sonko - Tanaynu Tarikonna - Tecirki - Toakanno Tosiyanke Towosirpa - Tukinoe Tunous Turusno - Usikante Wentuk Wikis - Utahu - Wokera Womannen Wonowankur - Yaenkur - Yayomanekuh - Yutormaka - } - - female_names = { - Apenanka - Asir_Rera Asikor Asiriro - Cinita - Erattatuke Esohrankemah Esohranma - Horpeca - Huci Huisak Husko Hutcise - Ianpanu Imekanu Itomosimat Iutanimat - Kakura Karipa Kasinukar - Keutoranke - Kinarapuk - Monasinouk - Muysasmat - Noakante - Nuyno - Peramonkoro - Pirka - Rerura Resunotek - Sanketek Sanure - Tanemonkor - Tanerankemat - Tekakunkemah - Utoyki - Wokonririkmat - } -} diff --git a/common/culture/name_lists/00_akan.txt b/common/culture/name_lists/00_akan.txt deleted file mode 100644 index b04489cf..00000000 --- a/common/culture/name_lists/00_akan.txt +++ /dev/null @@ -1,199 +0,0 @@ -name_list_akan = { - - cadet_dynasty_names = { - "dynn_Brong" #001 - "dynn_Bono" #002 - "dynn_Abron" #003 - "dynn_Kulango" #004 - "dynn_Badu" - "dynn_Seikwa" - "dynn_Nkurange" - "dynn_Lorhon" - "dynn_Ngwela" - "dynn_BabE_" - "dynn_Oyoko" #005 - "dynn_Abohyen" - "dynn_Akwapim" - "dynn_Adisi" - "dynn_Ewotre" - "dynn_Agwa" - "dynn_Kompa" - "dynn_Sehwi" - "dynn_Anwhiaso" - "dynn_Wiawso" - "dynn_Assini" - "dynn_Abripiquem" - "dynn_Ankobra" - "dynn_Kumasi" - "dynn_Kokofu" - "dynn_Dwaben" - "dynn_Nsuta" - "dynn_Bretuo" - "dynn_Mampong" - "dynn_Afigyaase" - } - - dynasty_names = { - "dynn_Brong" #001 - "dynn_Bono" #002 - "dynn_Abron" #003 - "dynn_Kulango" #004 - "dynn_Badu" - "dynn_Seikwa" - "dynn_Nkurange" - "dynn_Lorhon" - "dynn_Ngwela" - "dynn_BabE_" - "dynn_Oyoko" #005 - "dynn_Abohyen" - "dynn_Akwapim" - "dynn_Adisi" - "dynn_Ewotre" - "dynn_Agwa" - "dynn_Kompa" - "dynn_Sehwi" - "dynn_Anwhiaso" - "dynn_Wiawso" - "dynn_Assini" - "dynn_Abripiquem" - "dynn_Ankobra" - "dynn_Kumasi" - "dynn_Kokofu" - "dynn_Dwaben" - "dynn_Nsuta" - "dynn_Bretuo" - "dynn_Mampong" - "dynn_Afigyaase" - } - - male_names = { - Addae Adeben Adofo Adom Adusa Agyei Agyeman Agyemang Akron Akwasi Amoa Amoani Ampah Anan Anane Ankoma Anum Asamoah Ashon Ason Atoapem Awotwe Awotwi - Badu Berko Boadi Bodua Donkor Dubaku Ebo Ekow Enu Fiifi Gyasi Jojo Kobby Kobena Kobi Kobina Kodjo Koffi Kofi Kojo Komla Komlan Kontar Kosi Kow Kwabena Kwadwo Kwaku Kwame Kwasi Kwaw Kweku Kwesi Kwodwo Kyere - Manu Minkah Nkruma Nsia Nsonowa Ntonni Ogyam Okoto Okyin Osei Owusu Owusuwao Pereko Siisi Tano Yaba Yao Yaw Yawo Yoofi - } - - female_names = { - Aba Abena Abina Abla Abrema Adowa Adwoa Afi Afia Afua Akosi Akosiwa Akosua Aku Akua Ama Amba Ame Ameyo Amma Araba Asi Awusi Ayawa - Baaba Baako Baduwaa Efia Efua Ekua Esi Kaakyire Kakra Kessie Kunto Kwasiba Maanu Mansa Morowa Nkroma Nsowaa Panyin Thema Yaa Yaaba - } - - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_kru = { - - cadet_dynasty_names = { - "dynn_Bakwe" - "dynn_Kodia" - "dynn_Godie" - "dynn_Wane" - "dynn_Neyo" - "dynn_Dida" - "dynn_Bete" - "dynn_We" - "dynn_Glio" - "dynn_Ubi" - "dynn_Gbii" - "dynn_Kuya" - "dynn_Kwadia" - "dynn_Kuwaa" - "dynn_Aizi" - } - dynasty_names = { - "dynn_Bakwe" - "dynn_Kodia" - "dynn_Godie" - "dynn_Wane" - "dynn_Neyo" - "dynn_Dida" - "dynn_Bete" - "dynn_We" - "dynn_Glio" - "dynn_Ubi" - "dynn_Gbii" - "dynn_Kuya" - "dynn_Kwadia" - "dynn_Kuwaa" - "dynn_Aizi" - } - - male_names = { - Armah Borforh Boryee Cammue Didwho Dolo Dwe Flomo Forkay - Garnahweh Gartee Garteh Gardiah Garyupleh Garmuyu Gboto Gbwe - Jlakon Kollie Konmlan Konowa Kpakelah Kpangbah Kparnkpai Kparsi - Lami Luogon Manhtee Monon-Konmlan Nimene Nyennoh Odeleia Paye Pennon - Siakoh Soe-Tehpoe Sundaygar Teh Tehpoe Togar Toimu Togba - Wamah Welleh Wonlay Yakpazuah Yarkpawolo Yenseloh Zaowolo Zokaya - } - - female_names = { - Arway Bindu Bloh Dechontee Donyen Fahnlohnee Fortee - Garmenh Gblormehn Gborlormenh Gormenh Gorpue - Janjay Jayplo Kehper Korlu Korto Konah Kortolo Lurpu - Mardea Mayupleh Mehnmah Miata Monji - Nowa Nyamen Nyonontee Nyanpue Nyene-Dwe Nyonweh - Paye Pahn Poady Tardy Sorntee Suah Sundaymah - Tarloh Teenesee Tomah Wlejii Wloh Wlojii Yenplu Zoe - } - - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_guan = { - - cadet_dynasty_names = { - "dynn_Ntafo" - "dynn_Fanti" - "dynn_Kyerepong" - "dynn_Le" - "dynn_Ahanta" - "dynn_Obutu" - "dynn_Kpesi" - "dynn_Anyi" - "dynn_Brosa" - "dynn_Twifo" - "dynn_Akwamu" - "dynn_Doma" - "dynn_Winneba" - "dynn_Kade" - "dynn_Nsawan" - "dynn_Densu" #named after a river - } - dynasty_names = { - "dynn_Ntafo" - "dynn_Fanti" - "dynn_Kyerepong" - "dynn_Le" - "dynn_Ahanta" - "dynn_Obutu" - "dynn_Kpesi" - "dynn_Anyi" - "dynn_Brosa" - "dynn_Twifo" - "dynn_Akwamu" - "dynn_Doma" - "dynn_Winneba" - "dynn_Kade" - "dynn_Nsawan" - "dynn_Densu" #named after a river - } - - male_names = { - Abere_Anyo Achangso Achulo Achintri Afiso Amabangye Amankwa Amati Amo_elema Amoma Aso_wura Ataawa Awale Awaare Awalekiye Awo_n_nche Awo_n_nka_nne Awo_omoto Awoshe Awoshie Ayinsah - Badoh Bakoaso Boreginkpr Banemu_eye Bangben Bashaso Benyepo_eye Bi_awur_bi Bin_ka Bonyangso Booma Bore Bore_chie Bore_ena_sa Bore_enye Bore_enyi-enchi Bore_nyekpe Boresa Bore_masa_alowe Bore_walae Bore_wo Bore_wu B_sha_anye - Chepura Daa_mato Dambatu Dari Dariche Dokilebi Dranaya Ebanyepo Ebo_eye Edonbone Edonkufo Ekomato Ekone_oto Ekoso Ekumpo Ekunfo Elempo Esapo Esa_ewoeboto Etimpo Ewanye Ewale Ewonye Ewunio Ewuntomah Ewura Eyri_modon - Footou Gbeadese Gyem_che Gyema_alela Jinapor Gyeowo Kakore Kanagbong Kanamo Kananmaluwe Kasha Keche_e-basa Kenyiti Keshie_eko Keshie_wale K_fantang Kginginfra Koji Kotochi Kowuribi Kramoase Kurabaso Kurayerito - Lempoche Lomashie Longefiye Longesai Maaman Mankpa Mankre Mantenso Mapoche Masa-agben Masape Matuamo Mbema - Nefa Njo_amonche Nkpamafo Nndefeso Ntoba Obosu Okonfo Owoshie Pumaya Safo Sha_moye Samafon Sorkowule Shung_nkpa - Techira Titi_aka Tuntunba Yomba - } - - female_names = { - Awo Demba Doye Faaduma Fatim Fatoumata Malado Maram Mbodj Ndate Ndieumbeutt Ndoung Ndoye Sall Yalla Yumeyga - } - - founder_named_dynasties = yes - house_based_map_names = yes -} diff --git a/common/culture/name_lists/00_arabic.txt b/common/culture/name_lists/00_arabic.txt deleted file mode 100644 index 32790cbe..00000000 --- a/common/culture/name_lists/00_arabic.txt +++ /dev/null @@ -1,954 +0,0 @@ -name_list_bedouin = { - - cadet_dynasty_names = { - "dynn_Rasulid" - "dynn_Umarid" - "dynn_Najadid" - "dynn_Dinnid" - "dynn_Qutalmish" - "dynn_Qadir" - "dynn_Toghan" - "dynn_Walashma" - "dynn_Usfurid" - "dynn_Jarwanid" - "dynn_Zurayid" - "dynn_Muazzamid" - "dynn_Banu_Hatim" - "dynn_Qubaybid" - "dynn_Halabanid" - "dynn_Basri" - "dynn_Hallaj" - "dynn_Baghdadi" - "dynn_Bistami" - "dynn_Karkhi" - "dynn_Qadir" - "dynn_Jilani" - "dynn_Chishti" - "dynn_Badr" - "dynn_Miqadiyid" - "dynn_Munirid" - "dynn_Nabhanid" - "dynn_Nadjafid" - "dynn_Hamdan" - "dynn_Ashhadid" - "dynn_Quraishid" - "dynn_Kamalid" - "dynn_Mosulid" - "dynn_Jazrid" - "dynn_Husayn" - "dynn_Nazeerid" - "dynn_Nasrid" - "dynn_Bichrid" - "dynn_Hafizid" - "dynn_Fakhourid" - "dynn_Nawawid" - "dynn_Naderid" - "dynn_Chakroun" - "dynn_Atrashid" - "dynn_Shehhid" - "dynn_Hasanid" - "dynn_Qasimid" - "dynn_Sulaymanid" - "dynn_Halwasid" - "dynn_Jamalid" - "dynn_Abbasid" - "dynn_Razinid" - "dynn_Numayrid" - "dynn_Kaabid" - "dynn_Jabrid" - "dynn_Chrusarkha" - "dynn_Hakamid" - "dynn_Hanaya" - "dynn_Ibrahimid" - "dynn_Al-Duhli" - "dynn_Kinda" - "dynn_Madhhij" - { "dynnp_al-" "dynn_Zawayhi" } - "dynn_Mufaddalid" - "dynn_Zurayid" - "dynn_Bannu_Man" - "dynn_Mahdid" - "dynn_Hatimid" - "dynn_Sulaymanid" - "dynn_Tanukh" - "dynn_Hilalid" - { "dynnp_al-" "dynn_Riyahdid" } - { "dynnp_al-" "dynn_Athbejid" } - { "dynnp_al-" "dynn_Zoghbadid" } - { "dynnp_al-" "dynn_Adid" } - "dynn_Suleimid" - { "dynnp_al-" "dynn_Zegbid" } - { "dynnp_al-" "dynn_Debbabid" } - { "dynnp_al-" "dynn_Awfid" } - } - - dynasty_names = { - "dynn_Rasulid" - "dynn_Umarid" - "dynn_Najadid" - "dynn_Dinnid" - "dynn_Qutalmish" - "dynn_Qadir" - "dynn_Toghan" - "dynn_Walashma" - "dynn_Usfurid" - "dynn_Jarwanid" - "dynn_Zurayid" - "dynn_Muazzamid" - "dynn_Banu_Hatim" - "dynn_Qubaybid" - "dynn_Halabanid" - "dynn_Basri" - "dynn_Hallaj" - "dynn_Baghdadi" - "dynn_Bistami" - "dynn_Karkhi" - "dynn_Qadir" - "dynn_Jilani" - "dynn_Chishti" - "dynn_Badr" - "dynn_Miqadiyid" - "dynn_Munirid" - "dynn_Nabhanid" - "dynn_Nadjafid" - "dynn_Hamdan" - "dynn_Ashhadid" - "dynn_Quraishid" - "dynn_Kamalid" - "dynn_Mosulid" - "dynn_Jazrid" - "dynn_Husayn" - "dynn_Nazeerid" - "dynn_Nasrid" - "dynn_Bichrid" - "dynn_Hafizid" - "dynn_Fakhourid" - "dynn_Nawawid" - "dynn_Naderid" - "dynn_Chakroun" - "dynn_Atrashid" - "dynn_Shehhid" - "dynn_Hasanid" - "dynn_Qasimid" - "dynn_Sulaymanid" - "dynn_Halwasid" - "dynn_Jamalid" - "dynn_Abbasid" - "dynn_Razinid" - "dynn_Numayrid" - "dynn_Kaabid" - "dynn_Jabrid" - "dynn_Chrusarkha" - "dynn_Hakamid" - "dynn_Hanaya" - "dynn_Ibrahimid" - "dynn_Al-Duhli" - "dynn_Kinda" - "dynn_Madhhij" - { "dynnp_al-" "dynn_Zawayhi" } - "dynn_Mufaddalid" - "dynn_Zurayid" - "dynn_Bannu_Man" - "dynn_Mahdid" - "dynn_Hatimid" - "dynn_Sulaymanid" - "dynn_Tanukh" - "dynn_Hilalid" - { "dynnp_al-" "dynn_Riyahdid" } - { "dynnp_al-" "dynn_Athbejid" } - { "dynnp_al-" "dynn_Zoghbadid" } - { "dynnp_al-" "dynn_Adid" } - "dynn_Suleimid" - { "dynnp_al-" "dynn_Zegbid" } - { "dynnp_al-" "dynn_Debbabid" } - { "dynnp_al-" "dynn_Awfid" } - } - - male_names = { - Abu-Bakr Aarif Abdul-Gafur Abdul-Jaleel Abdul-Qadir Abdul-Wahab Abdullah Aghlab Akin Ali Alim Aram Azam Bahir - Fadil Fadl Faruk Ghalib Hafiz Halil Hasan Husam Hussayn Ibrahim Idris Is_mail Isa Jabir Jalil Jibril Khalil Mahdi Mahmud - Mansur Mirza Mubarak Muhammad Mukhtar Murad Musa Najib Nasr Nizam Qawurd Ramadan Sadiq Sami Samir Shaiban - Shamir Shujah Sulayman Talib Ubayd Uways Yahya Ya_qub Youkhanna Yusuf Zeyd - } - female_names = { - Adila Amsha Asiya Faghira Habiba Hanifa Jahaira Kamala Layla Maryam Nafisa Nyawela Parand Parween Paymaneh Paywand Qamara Rafiqa Rasa Rashida Reshawna - Saaman Sabba Saghar Sahba Sajida Samira Semeah Setara Shahrbano Shahzadah Shameem Shararah Sheeftah Sheeva Shogofa Shokouh Shola Sholah Simin Souzan - Taliba Tanaz Taneen Yagana Yakta Yasmin Zaynab - } - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - founder_named_dynasties = yes - house_based_map_names = yes - - - - mercenary_names = { - { name = "mercenary_company_the_wanderers" } - { name = "mercenary_company_bedouin_company_of_place" } - } -} -name_list_levantine = { - - cadet_dynasty_names = { - "dynn_Nasrid" - "dynn_Muayyadid" - "dynn_Isavid" - "dynn_Shukrid" - "dynn_Yaruqid" - "dynn_Qaimid" - "dynn_Alaid" - "dynn_Zahirid" - "dynn_Jamalid" - "dynn_Izzid" - "dynn_Bahaid" - "dynn_Shihabid" - "dynn_Jalalid" - "dynn_Yaminid" - "dynn_Lu_Lu" - "dynn_Sulaymanid" - "dynn_Mahmudid" - "dynn_Bahadur" - "dynn_Ata-Malik" - "dynn_Ma_anid" - "dynn_Hamdanid" - "dynn_Farooqid" - "dynn_Elbazid" - "dynn_Abbarid" - "dynn_Abbasid" - "dynn_Shamid" - "dynn_Allawid" - "dynn_Aqilid" - "dynn_Qahtanid" - "dynn_Bahjatid" - "dynn_Bekkalid" - "dynn_Baradid" - "dynn_Bseisoid" - "dynn_Fattaid" - "dynn_Fazilid" - "dynn_Gheisarid" - "dynn_Hayekid" - "dynn_Ibrahimid" - "dynn_Abdel_Nour" - "dynn_Abdilla" - "dynn_Mahdi" - { "dynnp_el-" "dynn_Khattab" } - "dynn_Moneim" - "dynn_Moosevi" - "dynn_Mubarak" - "dynn_Moustapha" - "dynn_Nader" - "dynn_Nafti" - "dynn_Alam" - "dynn_Naeemi" - "dynn_Nahhas" - "dynn_Nimri" - "dynn_Himsi" - "dynn_Haleem" - "dynn_Qaderi" - "dynn_Aqabid" - "dynn_Jalalid" - "dynn_Jarraid" - "dynn_Arishid" - "dynn_Jasemid" - "dynn_Abdelid" - "dynn_Alivid" - "dynn_Qasimid" - "dynn_Shaddad" - { "dynnp_al-" "dynn_Nafis" } - { "dynnp_al-" "dynn_Baghdadi" } - { "dynnp_al-" "dynn_Dakhwar" } - { "dynnp_al-" "dynn_Suri" } - "dynn_Khorasani" - { "dynnp_al-" "dynn_Hasanid" } - "dynn_Aqabid" - } - - dynasty_names = { - "dynn_Nasrid" - "dynn_Muayyadid" - "dynn_Isavid" - "dynn_Shukrid" - "dynn_Yaruqid" - "dynn_Qaimid" - "dynn_Alaid" - "dynn_Zahirid" - "dynn_Jamalid" - "dynn_Izzid" - "dynn_Bahaid" - "dynn_Shihabid" - "dynn_Jalalid" - "dynn_Yaminid" - "dynn_Lu_Lu" - "dynn_Sulaymanid" - "dynn_Mahmudid" - "dynn_Bahadur" - "dynn_Ata-Malik" - "dynn_Ma_anid" - "dynn_Hamdanid" - "dynn_Farooqid" - "dynn_Elbazid" - "dynn_Abbarid" - "dynn_Abbasid" - "dynn_Shamid" - "dynn_Allawid" - "dynn_Aqilid" - "dynn_Qahtanid" - "dynn_Bahjatid" - "dynn_Bekkalid" - "dynn_Baradid" - "dynn_Bseisoid" - "dynn_Fattaid" - "dynn_Fazilid" - "dynn_Gheisarid" - "dynn_Hayekid" - "dynn_Ibrahimid" - "dynn_Abdel_Nour" - "dynn_Abdilla" - "dynn_Mahdi" - { "dynnp_el-" "dynn_Khattab" } - "dynn_Moneim" - "dynn_Moosevi" - "dynn_Mubarak" - "dynn_Moustapha" - "dynn_Nader" - "dynn_Nafti" - "dynn_Alam" - "dynn_Naeemi" - "dynn_Nahhas" - "dynn_Nimri" - "dynn_Himsi" - "dynn_Haleem" - "dynn_Qaderi" - "dynn_Aqabid" - "dynn_Jalalid" - "dynn_Jarraid" - "dynn_Arishid" - "dynn_Jasemid" - "dynn_Abdelid" - "dynn_Alivid" - "dynn_Qasimid" - "dynn_Shaddad" - { "dynnp_al-" "dynn_Nafis" } - { "dynnp_al-" "dynn_Baghdadi" } - { "dynnp_al-" "dynn_Dakhwar" } - { "dynnp_al-" "dynn_Suri" } - "dynn_Khorasani" - { "dynnp_al-" "dynn_Hasanid" } - "dynn_Aqabid" - } - - male_names = { - Abdul-Azeem Abdul-Hamid Abdul-Lateef Abdul-Razzaq Abdul-Wahad Abdullah Adhid Adil Akab Ala_i Ali Amir Ashraf Aziz Bashar Boutros Da_ud Faisal - Fayiz Ghazi Hakam Hamdan Hussayn Ibrahim Isa Is_mail Ismat Jahan Jamil Kamran Khalid Khudayar Majid Mas_ud - Muaddam Muhammad Muhsin Mukhtar Murad Musa Muzaffar Nuri Radhi Rasul Sa_ud Seyfullah Sharaf - Sirhan Taimur Tawfiq Umaya Wahid Yahya Ya_qub Yasar Youkhanna Zahir - } - female_names = { - Aisha Aziza Duha Farida Golbahar Gulnar Gulnaz Gulpari Hafsa Hasti Huma Ibtisam Jalila Kamala Karima Khandan Khaterah Khatira Kinah Lala Madiha Mahdokht - Mahsa Mahwash Marwa Mastana Mehri Mina Minoo Munawwar Muzhdah Nahal Najela Nasiba Nastaran Nazaneen Nazy Neelab Negar Niki Nikoo Noushin Rabiya - Rajiya Sadiya Salma Sitara Thana Zahra Zuhayra - } - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - founder_named_dynasties = yes - house_based_map_names = yes - - - - mercenary_names = { - { name = "mercenary_company_sarkans_of_place" } - { name = "mercenary_company_company_of_the_oasis" } - { name = "mercenary_company_desert_brethren" } - } -} -name_list_egyptian = { - - cadet_dynasty_names = { - "dynn_Hammadid" - "dynn_Bahri" - { "dynnp_as-" "dynn_Sa_di" } - "dynn_Jukondarid" - "dynn_Dewadarid" - "dynn_Kanzid" - "dynn_Azizid" - "dynn_Ghanemid" - "dynn_Abazid" - "dynn_Hararid" - "dynn_Bayoumid" - "dynn_Bashandid" - "dynn_Bakhoumid" - "dynn_Bekhitid" - "dynn_Bahurid" - "dynn_Banoubid" - "dynn_Shenoudid" - "dynn_Abusirid" - "dynn_Abuhairyid" - "dynn_Masrid" - "dynn_Shamyid" - "dynn_Abuneb" - "dynn_Ramzan" - "dynn_Ibrahimid" - "dynn_Sharifid" - "dynn_Abouresid" - "dynn_Elesbaam" - } - - dynasty_names = { - "dynn_Hammadid" - "dynn_Bahri" - { "dynnp_as-" "dynn_Sa_di" } - "dynn_Jukondarid" - "dynn_Dewadarid" - "dynn_Kanzid" - "dynn_Azizid" - "dynn_Ghanemid" - "dynn_Abazid" - "dynn_Hararid" - "dynn_Bayoumid" - "dynn_Bashandid" - "dynn_Bakhoumid" - "dynn_Bekhitid" - "dynn_Bahurid" - "dynn_Banoubid" - "dynn_Shenoudid" - "dynn_Abusirid" - "dynn_Abuhairyid" - "dynn_Masrid" - "dynn_Shamyid" - "dynn_Abuneb" - "dynn_Ramzan" - "dynn_Ibrahimid" - "dynn_Sharifid" - "dynn_Abouresid" - "dynn_Elesbaam" - } - - male_names = { - Aaron Abanoub Abderahman Abd-al-Aziz Abdul-Haq Abdul-Madjid Abdul-Salaam Abdullah - Abianos Abisalom Ablarion Abraam Abu-Bakr Adnan Agathon Agathonikos Agathos - Ahmad Akbar Alam Ali Amr Androus Anthinos Arsenios Ashraf Asim - Athanasios Badr Bashir Biktor Binyamin Bishoi Boutros Danyal Dawlat Da_oud - Ezra Farhan Firuz Gabri_el Georgios Habil Hakam Hammud Hanri Haroun Hisham - Hussayn Ibrahim Ilyas Is_mail Jawdat Jerjer Khalil Krystafer - Latif Lot Malik Matta Mehtar Mikail Mikhael Milad Mina Muammar Muhammad - Mukhtar Murad Murshid Musa Nabil Nasir Nassib Pamin Qadir Ra_uf Rafiq Ridwan Sabah Salim Sha_ban - Sharif Suhail Tadros Tayyib Touma Usama Walid Yahya Yared Yassir Youkhanna Youssef Zaia Zakariyah - } - female_names = { - Acenith Alia Amunet Andali Asanet Asenath Asenet Azenet Badiat Cena Fatima Halima - Jamila Khadija Majida Mariam Nabila Nura Radiya Rana Sacmis Safiya - Samira Suhaila Tawaret Taweret Titi Thuriya Zara Zahra - } - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - founder_named_dynasties = yes - house_based_map_names = yes - - - - mercenary_names = { - { name = "mercenary_company_host_of_the_nile" } - { name = "mercenary_company_keepers_of_the_lighthouse" } - } -} -name_list_maghrebi = { - - cadet_dynasty_names = { - "dynn_Hammadid" - "dynn_Taishufin" - "dynn_Hafsid" - "dynn_Zayanid" - "dynn_Aznagid" - "dynn_Wanurid" - "dynn_Alivid" - "dynn_Madinid" - "dynn_Muttawakilid" - "dynn_Mansurid" - "dynn_Yazid" - "dynn_Tremecen" - "dynn_Ishaqid" - "dynn_Yahyavid" - "dynn_Bilalid" - "dynn_Utmanid" - "dynn_Tittawin" - "dynn_Sebtaid" - "dynn_Tariqid" - "dynn_Muhajir" - "dynn_Ladenid" - "dynn_Hannachid" - "dynn_Sabrid" - "dynn_Safavid" - "dynn_Sajjadid" - "dynn_Saidid" - "dynn_Sedkid" - "dynn_Shakeelid" - "dynn_Sharifid" - "dynn_Shehzadid" - "dynn_Sidqid" - "dynn_Tahirid" - "dynn_Talalid" - "dynn_Medjerdid" - "dynn_Tasneemid" - "dynn_Tayebid" - "dynn_Umarid" - "dynn_Waheedid" - "dynn_Wahidid" - "dynn_Waleedid" - "dynn_Wazirid" - "dynn_Younisid" - "dynn_Zafarid" - "dynn_Zahirid" - "dynn_Zakariyid" - "dynn_Zakidid" - "dynn_Zaydid" - "dynn_Abdoid" - "dynn_Abidin" - "dynn_Adilid" - "dynn_Balochid" - "dynn_Bakkalid" - "dynn_Mahmoudid" - "dynn_Nadeerid" - "dynn_Nadvid" - "dynn_Najidid" - "dynn_Naqvid" - "dynn_Namjoid" - "dynn_Anwarid" - "dynn_Fawzid" - "dynn_Nawfalid" - "dynn_Abbasid" - "dynn_Bari" - "dynn_Isavid" - "dynn_Fatamid" - "dynn_Ayyubid" - "dynn_Khazrunid" - "dynn_Marinid" - "dynn_Almohad" - "dynn_Ghaniya" - "dynn_Jalayar" - "dynn_Tudjinid" - "dynn_Seddoukid" - "dynn_Raghraghwid" - "dynn_Temimid" - "dynn_Azfavid" - "dynn_Hamdanid" - "dynn_Thabitid" - { "dynnp_al-" "dynn_Idrisi" } - "dynn_Khaldun" - "dynn_Battuta" - "dynn_Kamalid" - } - - dynasty_names = { - "dynn_Hammadid" - "dynn_Taishufin" - "dynn_Hafsid" - "dynn_Zayanid" - "dynn_Aznagid" - "dynn_Wanurid" - "dynn_Alivid" - "dynn_Madinid" - "dynn_Muttawakilid" - "dynn_Mansurid" - "dynn_Yazid" - "dynn_Tremecen" - "dynn_Ishaqid" - "dynn_Yahyavid" - "dynn_Bilalid" - "dynn_Utmanid" - "dynn_Tittawin" - "dynn_Sebtaid" - "dynn_Tariqid" - "dynn_Muhajir" - "dynn_Ladenid" - "dynn_Hannachid" - "dynn_Sabrid" - "dynn_Safavid" - "dynn_Sajjadid" - "dynn_Saidid" - "dynn_Sedkid" - "dynn_Shakeelid" - "dynn_Sharifid" - "dynn_Shehzadid" - "dynn_Sidqid" - "dynn_Tahirid" - "dynn_Talalid" - "dynn_Medjerdid" - "dynn_Tasneemid" - "dynn_Tayebid" - "dynn_Umarid" - "dynn_Waheedid" - "dynn_Wahidid" - "dynn_Waleedid" - "dynn_Wazirid" - "dynn_Younisid" - "dynn_Zafarid" - "dynn_Zahirid" - "dynn_Zakariyid" - "dynn_Zakidid" - "dynn_Zaydid" - "dynn_Abdoid" - "dynn_Abidin" - "dynn_Adilid" - "dynn_Balochid" - "dynn_Bakkalid" - "dynn_Mahmoudid" - "dynn_Nadeerid" - "dynn_Nadvid" - "dynn_Najidid" - "dynn_Naqvid" - "dynn_Namjoid" - "dynn_Anwarid" - "dynn_Fawzid" - "dynn_Nawfalid" - "dynn_Abbasid" - "dynn_Bari" - "dynn_Isavid" - "dynn_Fatamid" - "dynn_Ayyubid" - "dynn_Khazrunid" - "dynn_Marinid" - "dynn_Almohad" - "dynn_Ghaniya" - "dynn_Jalayar" - "dynn_Tudjinid" - "dynn_Seddoukid" - "dynn_Raghraghwid" - "dynn_Temimid" - "dynn_Azfavid" - "dynn_Hamdanid" - "dynn_Thabitid" - { "dynnp_al-" "dynn_Idrisi" } - "dynn_Khaldun" - "dynn_Battuta" - "dynn_Kamalid" - } - - male_names = { - Aaron Abanoub Abderahman Abd-al-Aziz Abdul-Haq Abdul-Madjid Abdul-Salaam Abdullah - Abianos Abisalom Ablarion Abraam Abu-Bakr Adnan Agathon Agathonikos Agathos - Ahmad Akbar Alam Ali Amr Androus Anthinos Arsenios Ashraf Asim - Athanasios Badr Bashir Biktor Binyamin Bishoi Boutros Danyal Dawlat Da_oud - Ezra Farhan Firuz Gabri_el Georgios Habil Hakam Hammud Hanri Haroun Hisham - Hussayn Ibrahim Ilyas Is_mail Jawdat Jerjer Khalil Krystafer - Latif Lot Malik Matta Mehtar Mikail Mikhael Milad Mina Muammar Muhammad - Mukhtar Murad Murshid Musa Nabil Nasir Nassib Pamin Qadir Ra_uf Rafiq Ridwan Sabah Salim Sha_ban - Sharif Suhail Tadros Tayyib Touma Usama Walid Yahya Yared Yassir Youkhanna Youssef Zaia Zakariyah - } - female_names = { - Acenith Alia Amunet Andali Asanet Asenath Asenet Azenet Badiat Cena Fatima Halima - Jamila Khadija Majida Mariam Nabila Nura Radiya Rana Sacmis Safiya - Samira Suhaila Tawaret Taweret Titi Thuriya Zara Zahra - } - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - founder_named_dynasties = yes - house_based_map_names = yes - - - - mercenary_names = { - { name = "mercenary_company_union_of_swords" } - { name = "mercenary_company_army_of_the_senator" } - } -} -name_list_andalusian = { - - cadet_dynasty_names = { - "dynn_Mutamin" - "dynn_Huddid" - "dynn_Matiyid" - "dynn_Tahirid" - "dynn_Razinid" - "dynn_Hakamid" - "dynn_Wazirid" - "dynn_Ismailid" - "dynn_Farayid" - "dynn_Abu-Ya_farid" - "dynn_Mardanisid" - "dynn_Mursiyid" - { "dynnp_banu" "dynn_FA_tima" } - "dynn_Laridid" - "dynn_Ishbiliyid" - "dynn_Qunkid" - "dynn_Balansiyyid" - "dynn_Maymunid" - "dynn_Adhavid" - "dynn_Hassunid" - "dynn_Gharnatid" - "dynn_Hishamid" - "dynn_Mahfuzid" - "dynn_Ahlidid" - "dynn_Zannunid" - "dynn_Mahdid" - "dynn_Sa_did" - "dynn_Wadalqavirid" - "dynn_Qadirid" - "dynn_Hamdinid" - "dynn_Yakubid" - "dynn_Yassin" - "dynn_Aminid" - "dynn_Ismailid" - "dynn_Nasrid" - "dynn_Muzaffar" - "dynn_Bajjah" - "dynn_Zuhr" - { "dynnp_al-" "dynn_Baitar" } - { "dynnp_al-" "dynn_Khatib" } - "dynn_Rushd" - "dynn_Hafsid" - } - - dynasty_names = { - "dynn_Mutamin" - "dynn_Huddid" - "dynn_Matiyid" - "dynn_Tahirid" - "dynn_Razinid" - "dynn_Hakamid" - "dynn_Wazirid" - "dynn_Ismailid" - "dynn_Farayid" - "dynn_Abu-Ya_farid" - "dynn_Mardanisid" - "dynn_Mursiyid" - { "dynnp_banu" "dynn_FA_tima" } - "dynn_Laridid" - "dynn_Ishbiliyid" - "dynn_Qunkid" - "dynn_Balansiyyid" - "dynn_Maymunid" - "dynn_Adhavid" - "dynn_Hassunid" - "dynn_Gharnatid" - "dynn_Hishamid" - "dynn_Mahfuzid" - "dynn_Ahlidid" - "dynn_Zannunid" - "dynn_Mahdid" - "dynn_Sa_did" - "dynn_Wadalqavirid" - "dynn_Qadirid" - "dynn_Hamdinid" - "dynn_Yakubid" - "dynn_Yassin" - "dynn_Aminid" - "dynn_Ismailid" - "dynn_Nasrid" - "dynn_Muzaffar" - "dynn_Bajjah" - "dynn_Zuhr" - { "dynnp_al-" "dynn_Baitar" } - { "dynnp_al-" "dynn_Khatib" } - "dynn_Rushd" - "dynn_Hafsid" - } - - male_names = { - Aban Abbad Abbas Abdallah Abd-al-Baqi Abd-al-Gafur Abd-al-Majid Abd-al-Nur Abd-al-Qadir Abd-al-Ra_uf Abd-al-Warith Abd-al-Aziz Abdul-Hakam Abdul-Hasan Abdul-Hazm Abdul-Rahman Abdul-Razzaq Abu-al-Qasim - Abu-Bakr Adfuns Adi Affan Aflah Ahmad A_idh Ajannas Ala Ali Amir Asas Asbat Ashhab Asim Aslam Atarid Atiyya Atrad Ayshun Ayyash Ayyub Aziz Bahram Bakr Balashk Balj Baqi Bashir Bilal Dimam Darras Dhu_al_N_n Dulaf Fadl Faraj Farqad Fath Fulayh Galib Galind Ganim Garsiya Gazi Habib Hakam Hamda Hamdin Hamid Hamza Haway Hayyan Hazm Hilal Hiyaz Hizam Hubab Hani_ Harith Hatim Haykal Hisham Ibrahim Idris Imran Isa Isma_il Iyad Jahhaf Jahwar Jalaf_Allah Jalhama Jalil Jami Jarir Jattab Jayr Jayrun Jidr Jubayr Juda Jumahir Juzayy - Jyad Kathir Kaysan Kulayb Lubb Mahbub Majluf Malik Ma_n Mansur Marwan Maymun Mirdas Mu_awiyah Mubashir Mudrik Muffarij Muhallab Muhammad Mundir Musa Mus_ab Mutarrif Muyahid Nadar Nasir Nizar Nudhayr Qar_us Qasim Qatan Qays Raf Rashid Rasiq Razin Sa_d Sa_dan Safwan Sa_ib_Jatir Sajr Salmun Sanyo Saqi Sarur Shabtun Shajara Siddray Siraj Sufyan Suleyman Tahir Talha Tamim Tammam Tariq Taytal Tayyib Tawd Tifilwit Tuways Ubada Ubayd Ubayd_Allah Ubaydun Ulaym - Umar Umayyah Urayb Utman Wadih Wahb Walid Wannaqo Wasim Wathima Wazir Ya_far Yahaff Yahya Ya_ish Yasin Yaskar Yasid Yujamir Yusr Yusuf Zaban Zafir Zakariyya Zarb Ziyad Zuhayr Zuhr Zurar - } - female_names = { - Abda Ahu Aiza A_isha Afiya Aliyah al-Shura Amat_al_Aziz Amat_al_Izz Amat_al_Jaliq Amat_al_Rahman Amat_al_Wahhab Amina Amira Arwa Asma Asmuna Asmuniya Atika Awriya Ayluh Ayshuna Aziza Baraka Bazi_a Butayna Dana Daniyah Dhuna Dima Fahra Fahriya Fatima Faynan Gamila Ganiya Ghada Gislan Habiba Hadija Hakima Halawa Hamda Hamida Hassana Hawa_ Hayal Hayzuran Hind Huda Ibtisam Idlal Ihtizaz Ishush Isra Jalida Jawra Kanza Karima Kera Khadija Kinda Layla Lidhdha - Maha Mahabba Mahjuna Makkiya Malika Mariam Masabih Ma_shuq Maymuna Mayya Mu_amarra Muhja Munya Muzahima Muzna Nadia Naila Najat Najma Nazhun Nu_ayma Nur Nuwayra Nuzha Qasmuna Qusayma Rafiqa Rahat Raisa Randa Rasis Ra_y Rayhana Ruhayma Ruqayya Sa_ada Sa_duna Safiya Sakan Salma Samra Shakira Shawwab Su_ad Sukayna Suraya Tahira Tahr Tahtazz Tarifa Tarub Thashim Umayna Urraka Usayma Utayqa Wahida Wallada - Yasmin Zahida Zahra - } - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - founder_named_dynasties = yes - house_based_map_names = yes - - - - pat_grf_name_chance = 60 - mat_grf_name_chance = 20 - father_name_chance = 10 - - pat_grm_name_chance = 40 - mat_grm_name_chance = 20 - mother_name_chance = 30 - - - - mercenary_names = { - { name = "mercenary_company_almogavars_andalusian_1" } - { name = "mercenary_company_mawali_band" } - { name = "mercenary_company_andalusian_treasurers_1" } - } -} -name_list_yemeni = { - - cadet_dynasty_names = { - "dynn_Rasulid" - "dynn_Umarid" - "dynn_Najadid" - "dynn_Dinnid" - "dynn_Huraydid" - "dynn_Qadir" - "dynn_Mahrid" - "dynn_Walashma" - "dynn_Usfurid" - "dynn_Jarwanid" - "dynn_Zurayid" - "dynn_Muazzamid" - "dynn_Qubaybid" - "dynn_Halabanid" - "dynn_Basri" - "dynn_Hallaj" - "dynn_Bistami" - "dynn_Karkhi" - "dynn_Qadir" - "dynn_Jilani" - "dynn_Ziyadid" - "dynn_Chishti" - "dynn_Najran" - "dynn_Miqadiyid" - "dynn_Munirid" - "dynn_Nabhanid" - "dynn_Nadjafid" - "dynn_Hamdan" - "dynn_Ashhadid" - "dynn_Quraishid" - "dynn_Kamalid" - "dynn_Jazrid" - "dynn_Husayn" - "dynn_Nazeerid" - "dynn_Nasrid" - "dynn_Bichrid" - "dynn_Hafizid" - "dynn_Fakhourid" - "dynn_Nawawid" - "dynn_Naderid" - "dynn_Chakroun" - "dynn_Atrashid" - "dynn_Shehhid" - "dynn_Hasanid" - "dynn_Qasimid" - "dynn_Sulaymanid" - "dynn_Halwasid" - "dynn_Jamalid" - "dynn_Abbasid" - "dynn_Razinid" - "dynn_Numayrid" - "dynn_Kaabid" - "dynn_Jabrid" - "dynn_Hakamid" - "dynn_Hanaya" - "dynn_Ibrahimid" - "dynn_Al-Duhli" - "dynn_Kinda" - "dynn_Madhhij" - { "dynnp_al-" "dynn_Zawayhi" } - "dynn_Mufaddalid" - "dynn_Zurayid" - "dynn_Mahdid" - "dynn_Yufirid" - "dynn_Wabirid" - "dynn_Hatimid" - "dynn_Sulaymanid" - } - - dynasty_names = { - "dynn_Rasulid" - "dynn_Umarid" - "dynn_Rassid" - "dynn_Najadid" - "dynn_Dinnid" - "dynn_Huraydid" - "dynn_Qadir" - "dynn_Mahrid" - "dynn_Walashma" - "dynn_Usfurid" - "dynn_Jarwanid" - "dynn_Zurayid" - "dynn_Muazzamid" - "dynn_Qubaybid" - "dynn_Halabanid" - "dynn_Basri" - "dynn_Hallaj" - "dynn_Bistami" - "dynn_Karkhi" - "dynn_Qadir" - "dynn_Jilani" - "dynn_Ziyadid" - "dynn_Najran" - "dynn_Miqadiyid" - "dynn_Munirid" - "dynn_Nabhanid" - "dynn_Nadjafid" - "dynn_Hamdan" - "dynn_Ashhadid" - "dynn_Quraishid" - "dynn_Kamalid" - "dynn_Jazrid" - "dynn_Husayn" - "dynn_Nazeerid" - "dynn_Nasrid" - "dynn_Bichrid" - "dynn_Hafizid" - "dynn_Fakhourid" - "dynn_Nawawid" - "dynn_Naderid" - "dynn_Chakroun" - "dynn_Atrashid" - "dynn_Shehhid" - "dynn_Hasanid" - "dynn_Qasimid" - "dynn_Sulaymanid" - "dynn_Halwasid" - "dynn_Jamalid" - "dynn_Abbasid" - "dynn_Razinid" - "dynn_Numayrid" - "dynn_Kaabid" - "dynn_Jabrid" - "dynn_Hakamid" - "dynn_Hanaya" - "dynn_Ibrahimid" - "dynn_Al-Duhli" - "dynn_Kinda" - "dynn_Madhhij" - { "dynnp_al-" "dynn_Zawayhi" } - "dynn_Mufaddalid" - "dynn_Zurayid" - "dynn_Mahdid" - "dynn_Yufirid" - "dynn_Hatimid" - "dynn_Sulaymanid" - } - - male_Names = { - Abu-Bakr Aarif Abdul-Gafur Abdul-Jaleel Abdul-Qadir Abdul-Wahab Abdullah Aden Aghlab Akin Ali Alim Aram Azam Bahir - Fadil Fadl Faruk Ghalib Hafiz Halil Hasan Husam Hussayn Ibrahim Idris Is_mail Isa Jabir Jalil Jibril Khalil Malik Mahdi Mahmud - Mansur Mirza Mubarak Muhammad Mukhtar Murad Musa Najib Nasr Nizam Qawurd Ramadan Sadiq Sami Samir Shaiban - Shamir Shujah Sulayman Talib Ubayd Uways Yahya Ya_qub Youkhanna Yusuf Zeyd Zulfiqar - } - female_Names = { - Adila Amsha Asiya Faghira Habiba Hanifa Isra Jahaira Kamala Layla Maryam Munya Nafisa Nyawela Parand Parween Paymaneh Paywand Qamara Rafiqa Rasa Rashida Reshawna - Saaman Sabba Saghar Sahba Sajida Samira Semeah Setara Shahrbano Shahzadah Shameem Shararah Sheeftah Sheeva Shogofa Shokouh Shola Sholah Simin Souzan - Taliba Tanaz Taneen Yagana Yakta Yasmin Zaynab - } - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - founder_named_dynasties = yes - house_based_map_names = yes -} diff --git a/common/culture/name_lists/00_balhae.txt b/common/culture/name_lists/00_balhae.txt deleted file mode 100644 index 73bce0d1..00000000 --- a/common/culture/name_lists/00_balhae.txt +++ /dev/null @@ -1,379 +0,0 @@ -name_list_balhae = { - - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - dynasty_names = { - "dynn_A_963F" - "dynn_Al_8B01" - "dynn_An_5B89" - "dynn_Bae_88F5" - "dynn_Bak_6734" - "dynn_Choe_5D14" - "dynn_Chong_8471" - "dynn_Da_591A" - "dynn_Dae_5927" - "dynn_Dal_9054" - "dynn_Eun_96B1" - "dynn_Go_53E4" - "dynn_Go_9AD8" - "dynn_Gong_516C" - "dynn_Gwak_90ED" - "dynn_Ha_590F" - "dynn_Ha_8CC0" - "dynn_Hae_89E3" - "dynn_Hong_6D2A" - "dynn_I_5DF2" - "dynn_I_674E" - "dynn_Il_58F9" - "dynn_Im_4EFB" - "dynn_Jang_5F35" - "dynn_Ji_667A" - "dynn_Jo_8D99" - "dynn_Ju_5468" - "dynn_Ju_6731" - "dynn_Ma_99AC_KO" - "dynn_Mo_5192" - "dynn_Mo_6155" - "dynn_Mok_6728" - "dynn_Mun_6587" - "dynn_Mun_9580" - "dynn_Myo_536F" - "dynn_O_5433" - "dynn_O_70CF" - "dynn_Pung_99AE" - "dynn_Ra_7F85" - "dynn_Rim_6797" - "dynn_Ryul_807F" - "dynn_Sa_53F2" - "dynn_Seo_80E5" - "dynn_Sin_7533" - "dynn_Sin_8F9B" - "dynn_Su_53D7" - "dynn_Wang_738B_KO" - "dynn_Wi_885B" - "dynn_Yang_6881" - "dynn_Yang_694F" - "dynn_Yeo_5442" - "dynn_Yeo_8339" - "dynn_Yeol_5217" - "dynn_Yu_5289" - } - - cadet_dynasty_names = { - "dynn_A_963F" - "dynn_Al_8B01" - "dynn_An_5B89" - "dynn_Bae_88F5" - "dynn_Bak_6734" - "dynn_Choe_5D14" - "dynn_Chong_8471" - "dynn_Da_591A" - "dynn_Dae_5927" - "dynn_Dal_9054" - "dynn_Eun_96B1" - "dynn_Go_53E4" - "dynn_Go_9AD8" - "dynn_Gong_516C" - "dynn_Gwak_90ED" - "dynn_Ha_590F" - "dynn_Ha_8CC0" - "dynn_Hae_89E3" - "dynn_Hong_6D2A" - "dynn_I_5DF2" - "dynn_I_674E" - "dynn_Il_58F9" - "dynn_Im_4EFB" - "dynn_Jang_5F35" - "dynn_Ji_667A" - "dynn_Jo_8D99" - "dynn_Ju_5468" - "dynn_Ju_6731" - "dynn_Ma_99AC_KO" - "dynn_Mo_5192" - "dynn_Mo_6155" - "dynn_Mok_6728" - "dynn_Mun_6587" - "dynn_Mun_9580" - "dynn_Myo_536F" - "dynn_O_5433" - "dynn_O_70CF" - "dynn_Pung_99AE" - "dynn_Ra_7F85" - "dynn_Rim_6797" - "dynn_Ryul_807F" - "dynn_Sa_53F2" - "dynn_Seo_80E5" - "dynn_Sin_7533" - "dynn_Sin_8F9B" - "dynn_Su_53D7" - "dynn_Wang_738B_KO" - "dynn_Wi_885B" - "dynn_Yang_6881" - "dynn_Yang_694F" - "dynn_Yeo_5442" - "dynn_Yeo_8339" - "dynn_Yeol_5217" - "dynn_Yu_5289" - } - - male_names = { - # A - 아 - A_96C5 A_ri - # Al - 알 - Al_gi_mong - # An - 안 - An_su - # Baek - 백 - Baek_gye - # Bal - 발 - Bal_gye - # Bang - 방 - Bang_gyeong Bang_rye - # Beon - 번 - Beon_8543 - # Bi - 비 - Bi_7DCB Bi_eung - # Bo - 보 - Bo_bang Bo_jang_3 Bo_jun Bo_yeong - # Bog/Bok - 복 - Bog_yeon Bok_ja Bok_mo Bok_san - # Bong - 봉 - Bong_ye - # Bu - 부 - Bu_gu - # Cha - 차 - Cha_ji_mong - # Chang - 창 - Chang_bal_ga Chang_hwi Chang_rok Chang_tae - # Cheong - 청 - Cheong_yun - # Cho - 초 - Cho_gyeong - # Chong/Chung - 총 - Chong_ye Chung_jeong - # Da - 다 - Da_bul Da_yeong - # Deok - 덕 - Deok_5FB7 - # Do - 도 - Do_mong Do_ri_haeng - # Du - 두 - Du_gan - # Eo - 어 - Eo_6F01 - # Eon - 언 - Eon_ui - # Eung - 응 - Eung_seon Eung_sun - # Gae - 개 - Gae_je Gae_mong - # Geo - 거 - Geo_jeong - # Geon - 건 - Geon_hwang - # Geun - 근 - Geun_8FD1 - # Gil - 길 - Gil_bok - # Goeng - 굉 - Goeng_rim - # Gong - 공 - Gong_chik - # Gu - 구 - Gu_7486 Gu_mo - # Gwang - 광 - Gwang_chan Gwang_hyeon_2 Gwang_hyeon Gwang_seong Gwang_sin - # Gwi -귀 - Gwi_bo - # Gye - 계 - Gye_jong Gye_sang - # Gyeong - 경 - Gyeong_su - # Gyu - 규 - Gyu_seon - # Gyun - 균 - Gyun_921E Gyun_ro - # Heon - 헌 - Heon_su - # Heum - 흠 - Heum_mu - # Heung - 흥 - Heung_8208 Heung_bok - # Ho - 호 - Ho_a - # Hoe - 회 - Hoe_jin - # Hwa - 화 - Hwa_gyun Hwa_yeo_2 - # Hwan - 환 - Hwan_hui - # Hyeon - 현 - Hyeon_myeong Hyeon_seok Hyeon_si - # Hyo - 효 - Hyo_jin Hyo_myeong Hyo_ryeom Hyo_sin - # I - 이 - I_jin - # Il - 일 - Il_ha - # In - 인 - In_seon In_su In_ui - # Jae - 재 - Jae_nam - # Je - 제 - Je_deok - # Jeong - 정 - Jeong_633A Jeong_al Jeong_hyo Jeong_rim Jeong_su Jeong_sun Jeong_tae - Ji_ak - # Jin - 진 - Jin_eon Jin_mong Jin_rim - # Jo - 조 - Jo_gyeong Jo_yeong - # Ju - 주 - Ju_do - # Jun - 준 - Jun_ong - # Jung - 중 - Jung_won - # Man - 만 - Man_bok - # Mo - 모 - Mo_han - # Mong - 몽 - Mong_go - # Mu - 무 - Mu_ye - # Mun - 문 - Mun_gu Mun_gwe Mun_hwon Mun_hyu Mun_seon Mun_sin Mun_ye - # Mur - 물 - Mur_a - # Myeong - 명 - Myeong_chung Myeong_hun Myeong_jun - # Na - 나 - Na_dal_cho - # Nam - 남 - Nam_sin Nam_yong - # Nang - 낭 - Nang_a - # Neung - 능 - Neung_bon Neung_ji Neung_sin - # Nok - 녹 - Nok_seung - # Pyeong - 평 - Pyeong_sin - # Ri - 리 - Ri_gye - # Rim - 림 - Rim_7433 - # Rok - 록 - Rok_sa - # Sa - 사 - Sa_gye - # Sang - 상 - Sang_jeong Sang_se - # Seol - 설 - Seol_chang - # Seon - 선 - Seon_seong_2 Seon_su - # Seong - 성 - Seong_ak Seong_chwi_jin Seong_gyu Seong_sin - # Seung - 승 - Seung_6607 Seung_gi Seung_gyeong_2 Seung_jo Seung_jo Seung_won - # Si - 시 - Si_mong - # Sim - 심 - Sim_ri - # Sin - 신 - Sin_795E Sin_bok Sin_deok_2 Sin_mun_deok - # So - 소 - So_do_2 So_do So_hyeon_2 - # Su - 수 - Su_gyeom Su_hae - # Sug/Suk - 숙 - Sug_won Suk_man - # Sul - 술 - Sul_ye - # Sung - 숭 - Sung_rin - # Tae - 태 - Tae_sa - # Tan - 탄 - Tan_8A95 - # Ui - 의 - Ui_sin - # Uk - 욱 - Uk_jin - # Ul - 울 - Ul_lim - # Wi - 위 - Wi_hae - # Won - 원 - Won_gyun Won_tae Won_ui Won_yu - # Ya - 야 - Ya_bal - # Yang - 양 - Yang_juk - # Ye - 예 - Ye_gwang Ye_jin - # Yeo - 여 - Yeo_gyeong - # Yeon - 연 - Yeon_gwang Yeon_jin - # Yeong - 영 - Yeong_jin_2 Yeong_jun Yeong_seon - # Yo - 요 - Yo_deok - # Yu - 유 - Yu_beom - } - - female_names = { - # A - 아 - A_ji A_yeong - # Al - 알 - Al_yeong - # Bo - 보 - Bo_hui - # Bok - 복 - Bok_chang - # Byeok - 벽 - Byeok_hwa - # Deok - 덕 - Deok_gyo Deok_man - # Gwi - 귀 - Gwi_gang - # Gyeong - 경 - Gyeong_ae - # Hwon - 훤 - Hwon_yeong - # Jeong - 정 - Jeong_ran - # Ji - 지 - Ji_eun Ji_so Ji_ui - # Jun - 준 - Jun_jeong - # Man - 만 - - # Mun - 문 - Mun_hui - # Nam - 남 - - # Sa - 사 - - # Seon - 선 - Seon_gang - # Seung - 승 - Seung_gyeong Seung_man - # Yu - 유 - Yu_hwa - } - - # Keep names changing - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_bantu.txt b/common/culture/name_lists/00_bantu.txt deleted file mode 100644 index c26bd393..00000000 --- a/common/culture/name_lists/00_bantu.txt +++ /dev/null @@ -1,282 +0,0 @@ -name_list_east_bantu = { # Nyakyusa - - dynasty_names = { - "dynn_Abwao" - "dynn_Asangwile" - "dynn_Asilisye" - "dynn_Bopa" - "dynn_Dhado" - "dynn_Fisa" - "dynn_Fuli" - "dynn_Iwiba" - "dynn_Kahinu" - "dynn_Keke" - "dynn_Kimachu" - "dynn_Kinga" - "dynn_Kikuti" - "dynn_Kitumaini" - "dynn_Leka" - "dynn_Madhubuti" - "dynn_Magombo" - "dynn_Mathenge" - "dynn_Mposi" - "dynn_Mpiki" - "dynn_Msuya" - "dynn_Ndekile" - "dynn_Njole" - "dynn_Pilika" - "dynn_Suupa" - "dynn_Mtaveta" - "dynn_Mkirima" - "dynn_Mchagga" - "dynn_Mbololo" - "dynn_Mghange" - "dynn_Mwanda" - "dynn_Mrabai" - "dynn_Mchonyi" - "dynn_Mjibana" - } - - cadet_dynasty_names = { - "dynn_Abwao" - "dynn_Asangwile" - "dynn_Asilisye" - "dynn_Bopa" - "dynn_Dhado" - "dynn_Fisa" - "dynn_Fuli" - "dynn_Iwiba" - "dynn_Kahinu" - "dynn_Keke" - "dynn_Kimachu" - "dynn_Kinga" - "dynn_Kikuti" - "dynn_Kitumaini" - "dynn_Leka" - "dynn_Madhubuti" - "dynn_Magombo" - "dynn_Mathenge" - "dynn_Mposi" - "dynn_Mpiki" - "dynn_Msuya" - "dynn_Ndekile" - "dynn_Njole" - "dynn_Pilika" - "dynn_Suupa" - "dynn_Mtaveta" - "dynn_Mkirima" - "dynn_Mchagga" - "dynn_Mbololo" - "dynn_Mghange" - "dynn_Mwanda" - "dynn_Mrabai" - "dynn_Mchonyi" - "dynn_Mjibana" - } - - male_names = { - Afyusisye Aitete Akida Ambilike Ambwene Anangisye Andulile Andwele Angolile - Asegelile Auni Bahati Bakari Bwite Chandu Hamisi Jelani Jengo Kagile Kanyasa - Katumbula Katundu Kimelo Kisumusya Kito Kondo Lindima Mosi Omari Pili Rajabu - Shabani Shomari Simba Tondola Tukuswiga Tumaini Uhuru Undule Uswege Zuberi - } - - female_names = { - Akina Ambilike Ambwene Amne Anangisye Andulile Andwele Anyubatile Asha - Bahati Chausiku Chiku Eshe Jelani Kamaria Kanga Kenja Kichaka Kilasa - Kisalwe Kololo Nala Nia Ororo Penda Sakabwesye Sakalenge Samalasele - Sauda Sibagege Subira Syapakisu Tambika Tatu Tishala Tumaini - Tumwimbilege Upendo Zawadi Zuri - } - - patronym_prefix_male = "dynnpat_pre_Mwa" - patronym_prefix_female = "dynnpat_pre_San" - - #founder_named_dynasties = yes - - mercenary_names = { - { name = "mercenary_company_barge_raiders" } - { name = "mercenary_company_bloody_reeds" } - { name = "mercenary_company_trampling_gazelles" } - } -} - -name_list_swahili = { - # heavy Arabic influences - dynasty_names = { - { "dynnp_al-" "dynn_Batawi" } # Pate or waPate mataifa of Mombasa - { "dynnp_al-" "dynn_Bauri" } # Bajuni taifa of Mombasa - { "dynnp_al-" "dynn_Farsy" } - { "dynnp_al-" "dynn_Ghassaniy" } - { "dynnp_al-" "dynn_Jaufi" } # Jomvu or waJomvu mataifa - { "dynnp_al-" "dynn_Kilwi" } # of Kilwa - { "dynnp_al-" "dynn_Kindi" } # the Kilindini or waKilindini mataifa - { "dynnp_al-" "dynn_Kiwabi" } - { "dynnp_al-" "dynn_Mahdal" } - { "dynnp_al-" "dynn_Mazlum" } - { "dynnp_al-" "dynn_Mlomry" } - { "dynnp_al-" "dynn_Nabhani" } # claimed to be of Omani origin - { "dynnp_al-" "dynn_Shangani" } # one of Mombasa's mataifa, the Changamwe - { "dynnp_al-" "dynn_Shirazi" } # claimed to be from Shiraz - dynn_Baruti - dynn_Chaurembo - dynn_Jamali_Layl - dynn_Mazrui - dynn_Sikujua - dynn_Soud - dynn_Takadir - dynn_Waziri - dynn_Zaamuri - { "dynnp_wa" "dynn_Changamwe" } # of the mwinyi Changamwe - { "dynnp_wa" "dynn_Muli" } # of the mwinyi Muli - # - { "dynnp_al-" "dynn_Akilimali" } - { "dynnp_al-" "dynn_Hassani" } - { "dynnp_al-" "dynn_Tayari" } - { "dynnp_al-" "dynn_Juma" } - - ## toponymic bynames - # - { "dynnp_wa" "dynn_Gezira" } # of Gezira - { "dynnp_wa" "dynn_Hoja" } # of Hoja, near Ungwana - { "dynnp_wa" "dynn_Kiangwe" } # of Kiangwe - { "dynno_wa" "dynn_Malindi" } # of Malindi - { "dynno_wa" "dynn_Mvita" } # of Mombasa - { "dynnp_wa" "dynn_Sofala" } # of Sofala, way south of the map. - { "dynnp_wa" "dynn_Tumbe" } # of Tumbe, on Pemba Island - { "dynnp_wa" "dynn_Unguja" } # of Unguja, aka Zanzibar Island - { "dynnp_wa" "dynn_Uwani" } # of Uwani - { "dynnp_wa" "dynn_Wange" } # of Wange - { "dynnp_wa" "dynn_Witu" } # of Witu - - # Lamu Archipelago - { "dynnp_wa" "dynn_Faza" } # of Faza - { "dynnp_wa" "dynn_Hidabu" } # of Hidabu - { "dynnp_wa" "dynn_Ishakani" } # of Ishakani - { "dynnp_wa" "dynn_Manda" } # of Manda - { "dynnp_wa" "dynn_Lamu" } # of Lamu - { "dynnp_wa" "dynn_Pate" } # of Pate - { "dynnp_wa" "dynn_Shanga" } # of Shanga - { "dynnp_wa" "dynn_Takwa" } # of Takwa - { "dynnp_wa" "dynn_Tundwa" } # of Tundwa - - # Comoro Islands, off-map - { "dynnp_wa" "dynn_Dembeni" } # of Dembeni - { "dynnp_wa" "dynn_Mbachile" } # of Mbachile - { "dynnp_wa" "dynn_Sima" } # of Sima - } - - cadet_dynasty_names = { - { "dynnp_al-" "dynn_Batawi" } # Pate or waPate mataifa of Mombasa - { "dynnp_al-" "dynn_Bauri" } # Bajuni taifa of Mombasa - { "dynnp_al-" "dynn_Farsy" } - { "dynnp_al-" "dynn_Ghassaniy" } - { "dynnp_al-" "dynn_Jaufi" } # Jomvu or waJomvu mataifa - { "dynnp_al-" "dynn_Kilwi" } # of Kilwa - { "dynnp_al-" "dynn_Kindi" } # the Kilindini or waKilindini mataifa - { "dynnp_al-" "dynn_Kiwabi" } - { "dynnp_al-" "dynn_Mahdal" } - { "dynnp_al-" "dynn_Mazlum" } - { "dynnp_al-" "dynn_Mlomry" } - { "dynnp_al-" "dynn_Nabhani" } # claimed to be of Omani origin - { "dynnp_al-" "dynn_Shangani" } # one of Mombasa's mataifa, the Changamwe - { "dynnp_al-" "dynn_Shirazi" } # claimed to be from Shiraz - dynn_Baruti - dynn_Chaurembo - dynn_Jamali_Layl - dynn_Mazrui - dynn_Sikujua - dynn_Soud - dynn_Takadir - dynn_Waziri - dynn_Zaamuri - { "dynnp_wa" "dynn_Changamwe" } # of the mwinyi Changamwe - { "dynnp_wa" "dynn_Muli" } # of the mwinyi Muli - # - { "dynnp_al-" "dynn_Akilimali" } - { "dynnp_al-" "dynn_Hassani" } - { "dynnp_al-" "dynn_Tayari" } - { "dynnp_al-" "dynn_Juma" } - - ## toponymic bynames - # - { "dynnp_wa" "dynn_Gezira" } # of Gezira - { "dynnp_wa" "dynn_Hoja" } # of Hoja, near Ungwana - { "dynnp_wa" "dynn_Kiangwe" } # of Kiangwe - { "dynno_wa" "dynn_Malindi" } # of Malindi - { "dynno_wa" "dynn_Mvita" } # of Mombasa - { "dynnp_wa" "dynn_Sofala" } # of Sofala, way south of the map. - { "dynnp_wa" "dynn_Tumbe" } # of Tumbe, on Pemba Island - { "dynnp_wa" "dynn_Unguja" } # of Unguja, aka Zanzibar Island - { "dynnp_wa" "dynn_Uwani" } # of Uwani - { "dynnp_wa" "dynn_Wange" } # of Wange - { "dynnp_wa" "dynn_Witu" } # of Witu - - # Lamu Archipelago - { "dynnp_wa" "dynn_Faza" } # of Faza - { "dynnp_wa" "dynn_Hidabu" } # of Hidabu - { "dynnp_wa" "dynn_Ishakani" } # of Ishakani - { "dynnp_wa" "dynn_Manda" } # of Manda - { "dynnp_wa" "dynn_Lamu" } # of Lamu - { "dynnp_wa" "dynn_Pate" } # of Pate - { "dynnp_wa" "dynn_Shanga" } # of Shanga - { "dynnp_wa" "dynn_Takwa" } # of Takwa - { "dynnp_wa" "dynn_Tundwa" } # of Tundwa - - # Comoro Islands, off-map - { "dynnp_wa" "dynn_Dembeni" } # of Dembeni - { "dynnp_wa" "dynn_Mbachile" } # of Mbachile - { "dynnp_wa" "dynn_Sima" } # of Sima - } - - male_names = { - Abdullah Ahmed Ali Amani Abedi Athman Abdul Abdulrazak Abushiri Abdulmuhsin Abu_Bakar Alwy - Bakari Bakathir - Chamosi - Fumomadi Famao - Gosilatembo - Hamad Hasan Hussein Harun Hamisi - Idris Ibrahim Ishaq - Jiburili Juma - Khalifa Khatib Kassim Kombo Kaogota - Mohamed Mwalimu Muyaka Majid Matumula Mataka Mwengo Mgeni Masoud Mbaruk Mshangamwe Mbogo Mwinyihija - Ngara - Omari - Ruwei Rashid - Salih Said Saadi Suleiman Salim Simba Shallo - Thuwain - Ufunguo - Yusuf - Zagar Zuberi - } - female_names = { - Asha - Bitumu Bihija - Dunia - Fatuma Fungulia - Heshima Hadija Halima - Iki - Jiburi Johari - Kupona Kidogo Kero Kibunzi Kadide Karama - Latife - Matuka Mariamu Mebora Mefundi Mwajabu Mbura Marishedi Mlisho Mkaa Memtwana Mwatime Mtajiuthi - Nuru Nyanya - Sawadu Somoe Salima Sada - Turkiya - Uba - Zuleika Zaynab Zuhura - } - - # 'wa' is used in both patronymic and toponymic bynames. 'Mwengo bin Athumani' is also rendered in Swahili as 'Mwengo wa Athman'. It also functions as a general equivalent of 'of,' as in 'Sultani wa Zanzibar' (Sultan of Zanzibar) - - dynasty_of_location_prefix = "dynnp_wa" - - # using ibn/bint instead of wa to avoid confusing patronymic and toponymic bynames, although 'wa' could be swapped back in in a pinch for both genders. Heavy Arabicization is more 19th century, but leaning into it here makes Swahili more distinctive earlier on. - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - mercenary_names = { - { name = "mercenary_company_vanguard_of_kilwa" coat_of_arms = "mc_vanguard_of_kilwa" } - { name = "mercenary_company_sofala_guardians" } - } -} diff --git a/common/culture/name_lists/00_burman.txt b/common/culture/name_lists/00_burman.txt deleted file mode 100644 index 1543028b..00000000 --- a/common/culture/name_lists/00_burman.txt +++ /dev/null @@ -1,113 +0,0 @@ -name_list_burmese = { - - cadet_dynasty_names = { - "dynn_MO_ng_Pai" - "dynn_Shwemyo" - "dynn_Taungdwingyi" - "dynn_Thayetmyo" - "dynn_Myede" - "dynn_Thaungdut" - "dynn_Chin" - "dynn_Mingiu" - "dynn_Maukkadaw" - "dynn_Momeik" - "dynn_Katha" - "dynn_Myedu" - "dynn_Peikthanomyo" - "dynn_Binnaka" - "dynn_Yawnghwe" - "dynn_Taungbyon" - "dynn_Singu" - } - - dynasty_names = { - "dynn_Sagaing" - "dynn_Ava" - "dynn_Prome" - "dynn_Toungoo" - "dynn_Sriksetra" - "dynn_Takon" - "dynn_Kale" - "dynn_Swa" - "dynn_Magwe" - "dynn_Hanlan" - "dynn_Madaya" - "dynn_Yamethin" - "dynn_Minbu" - "dynn_Shwesettaw" - "dynn_Kyaukse" - "dynn_Maingmaw" - "dynn_Pinya" - } - - male_names = { - Kyansittha Kyiso Saw_Lu Sokkate Tannet Theinhko Thurein - Abhiyaza Alaungpaya Bayinnaung Hmauk Htilominlo Kyaswa Kyawswa Kyit Kywe Minkhaung Narapati Narathihapate Narathu Pyit Pyusawhti Sawrahan Sithu - Tabinshwehti Taik Tarabya Thihathu Uzana Yahawlaw Yathekyaung Yazathingyan - - Arkar Hein Htin Htut Jeyya Khant Kjaw Kyaw Lin Maung Nyan Sein Siha Sithu Thang Thaun Thukha Thura Ukka Wanna Wunna Yarzar Zarni Zaw Zayar Zeya Zeyar - } - - female_names = { - Bo_Me Dhamma_Dewi Khame_Mi Nant_tha Myo_Myat Soe_Min Salin_Mibaya Salin_Minthami Ta_Lat - - Bawk Chit Cho Eindra Ekari Gadau Haymar Heman Hkyac Hkyairi Hkyam Hnin Ingyin Inzali Kalya Kra Kyaukni Linlun Manyju Marlar Mibaya Mra Mru Myine Myintzu Nadi Nilar Nwe - Ohmar Paannsee Payang Phway Pulai Sabai Sajang Sanda Sauta Singgi Thandar Tharahpi Thawdar Thawka Theingi Thidar Thinzar Thiri Thitkwa Thuzar Wah Wittyi Yadanar Yamin - } - - mercenary_names = { - { name = "mercenary_company_company_of_the_irrawaddy" } - { name = "mercenary_company_burmese_host" } - } -} - -name_list_mon = { - - dynasty_names = { - "dynn_Athinlung" - "dynn_Lampala" - "dynn_Lavothala" - "dynn_Thanetta" - "dynn_Warelung" - "dynn_Wimalung" - "dynn_Manitung" - "dynn_Phitanlha" - "dynn_Utthada" - "dynn_Thadon" - "dynn_Sittha" - "dynn_Camadevi" - } - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Athinlung" - "dynn_Lampala" - "dynn_Lavothala" - "dynn_Thanetta" - "dynn_Warelung" - "dynn_Wimalung" - "dynn_Manitung" - "dynn_Phitanlha" - "dynn_Utthada" - "dynn_Thadon" - "dynn_Sittha" - "dynn_Camadevi" - } - - male_names = { - Adara Angula Anuyama Araka Areindama Atha Athinkha Attatha Dipa Einkura Ekkathamanda Geinda Geissadiya Karawika Kutha Mahintha Migadeippa Manuha Narathu Pontarika Pyinzala - Thaduka Thamala Thuganda Tissa Udinna Upadewa Uppala Urunnata Uttara Wimala Zambudipa Zawta - Bawlawkyantaw Dhammazedi Gada Gadu Kyan Law Leik_Munhtaw Razadarit Than_Bon Waru Wareru Zein - } - - female_names = { - Jamadevi Hnin_An_Po Mi_Pakahtaw Mwei_It Mwei_Maneit Mwei_Zeik Sawbu Thuddhamaya - - Botum Boupha Champei Champey Channary Chantou Chantrea Chenda Chhean Darareaksmey Jorani Kalliyan Kanha Kolab Kunthea Maly Mealea Mibaya - Pheakkley Phhoung Puthykol Raksa Solyna Sreykeo Sreyneang Thida Vatey Veata - } - - mercenary_names = { - { name = "mercenary_sadhuim_company" } - { name = "mercenary_company_mon_host" } - } -} diff --git a/common/culture/name_lists/00_central_african.txt b/common/culture/name_lists/00_central_african.txt deleted file mode 100644 index 85453c0d..00000000 --- a/common/culture/name_lists/00_central_african.txt +++ /dev/null @@ -1,133 +0,0 @@ -name_list_kanuri = { - - cadet_dynasty_names = { - "dynn_Kunkuna" - "dynn_Teda" - "dynn_Tabir" - } - - dynasty_names = { - "dynn_Kunkuna" - "dynn_Teda" - "dynn_Tabir" - } - - male_names = { - Abbas Abdallah Abdul Abdulraham Abubakar Adam Ahmed Airimi Alhaji Ali Alooma Amin Amr Arku Arsu Ayoma - Baba Baram Bikorom Bir Biri Bukar Bulu Buyuma - Dabbalemi Dala Daoud Dugu Dunama - Fune Gaji Gajideni Galrima Gana Garbai Gazali GazI_ Ghana - Hume Hummay Ibrahim Idris - Kaday Kanemi Kashim Katakarmabe Katur Kiyari Kura Kuri Kuwaana - Madu Mahmoud Mamane Modu Mohammed Mufioma Murama Musa Mustafa Nigale Nigalemi Nikale Osman - Said Salmama Sanda Sani Sef Selma Shettima Shu Suleyman - Tandja Umar Waziri Yahya Yaqub Yusuf Zannah - } - female_names = { - Aisha Aissa Aliyah Amina Aziza Bakhita Cinta Daniyah Dikwa Fatima Halima Jalila Kaltum Karima Khadija Khalila Kili Layla - Malika Mariam Mina Nadia Rashida Shadia Shakira Sukda Tebunnu Wahida Ya Yasmin - } - - #founder_named_dynasties = yes - - -} - -name_list_hausa = { - - dynasty_names = { - "dynn_Diarisso" - "dynn_BeretE_" - "dynn_KE_djou" - "dynn_Moussa" - "dynn_Sonni" - "dynn_Askiya" - "dynn_Gurmanche" - "dynn_Nungu" - "dynn_Mossi" - } - - male_names = { - Abi-Bakr Abubakari Akoi Alayaman Ali Ali-Fay Ali-Kolon Ali-Zalil BadA_ Bakr Bakr-Kanbu Bamari Bankanu - Bannu Bassarou Bassi Birama Bisi Biyu Bonga Cisse Dankaran Daoud Dawud Demba Diara DU_ru - Faga-Laye Fatta Fodi Fuluku FA_dazu Gane Gao Hargani Harun Igoumou Ishaq Ismail Kabayo Kalabi Kambine - Kanafa Kassa KasseI_ Kaya Kayna Kinkin Kisha Kodama KoI_zE_ Kukuray Kusoy Lahiltoul M_Bali Maammarou Maghan - Mahmud Majan Malla Mamadi Mamoudou Manding-Bory Mari-Djata MaY_roumfa Missi-IzE_ Morobani Musa - Nintasanay Nuh Ouali OuankoY_ Ouati Reidja Sakoura Salman Samsou-BE_ri Samsou-KeI_na Sandaki Soumaba - Soumaoro Soundiata Sulayman Takoi Tib Tomo Tunka Umar Yama Yaqub Yasiboy Zakoi Zenku - Najibu Garin Kumayo Bauwo Garin Biram Bawo Fodio Kazuru Abarshi Yerima Atuma Yerima Atuma Daura - } - female_names = { - Adja Aichata Aissata Alima Aminata Amita Aoua Barakissa Bintou Deye Djeneba Djenly Djire Fadima - Fatim Fatoumata Halima Hawa Ina Kadi Kilia Kolonkan Lorane Mariam Nafissa NamandjE_ Namiss Nana - Safiatou Salimata Sassouma SidibE_ Siya Sogolon Tekhaye Youma ZeI_nab - Shawata Magira Magajiva Bagwariya Daurama - } - - #founder_named_dynasties = yes - - -} - -name_list_sao = { - - dynasty_names = { #need update - currently only copied Hausa dynasties - "dynn_Diarisso" - "dynn_BeretE_" - "dynn_KE_djou" - "dynn_Moussa" - "dynn_Sonni" - "dynn_Askiya" - "dynn_Gurmanche" - "dynn_Nungu" - "dynn_Mossi" - } - - male_names = { - Adimun Adisun Anak Arva Baba Barbushe Buskun Bwlama - Dal Dala Dam Dehem Dongo Dumu Duna Galiya Gumami Iwetche - Kinana Law Lawan Matangi Noumouroudou - Shango Sita So Sougou Sungu Yim Zala - } - female_names = { - Akodu Am Awa Cakara Cenha Dugwi Fasama Galiya Gawalambo Gazargamu Ghurum Gulanum Gumsu Heni Kii Lighimi Magerim Niye Tukuri Zala - } - - #founder_named_dynasties = yes - - -} - -name_list_nupe = { - - dynasty_names = { - "dynn_Jukun" # a Nupe tribe - # copied Hausa/SubSaharian dynasties - "dynn_BeretE_" - "dynn_KE_djou" - "dynn_Moussa" - "dynn_Sonni" - "dynn_Askiya" - "dynn_Gurmanche" - "dynn_Nungu" - "dynn_Mossi" - } - - male_names = { - Abalihi Abazu Achonye Agu Akunna Alike Amamchukwu Anyamata Apia Azubuike Azuka Buife - Chibueze Chibuzo Chidi Chidiebere Chidubem Chiemeka Chike Chima Chinedu Chinualumogu Chinwe Chinwendu Chioma Chizoba Chukwudi Chukwuemeka - Ekene Ekenedilichukwu Ekweme Emeka Enweleana Enyinnaya Eri Ewenetem Ezeudu Ezimilo Ezinma Fenenu Ifeanyichukwu Ifikuanim Ikechukwu Ikemefuna - Jiofo Maduka Namoke Ndidi Ngozi Nkem Nkemdilim Nnamdi Nwabugwu Nwachukwu Nwakibie Nwankwo Nwokike Nwora Nwoye - Obalike Obi Obierika Obinna Ogbuefi Okagbue Okechukwu Okenna Okonkwo Oluchi Omalo Omalonyeso Onyeka Onyekachi Onyekachukwu - Uchechukwu Uchendu Udo Unoka Uyanwa Uzochi Uzoma - } - female_names = { - Abalihi Ada Adaeke Adaeze Adanna Adannaya Adaobi Adaoha Adaora Adaugo Adauwa Amadi Amamchukwu - Chiamaka Chibueze Chibuzo Chidiebere Chidimma Chielo Chika Chinaza Chinedu Chinwe Chinwendu Chioma Chisom Chizoba - Ebele Ekene Ekenedilichukwu Ekwefi Fumnanya Funanya Ndidi Ngozi Nkechinyere Nkem Nkemdilim Nkiruka Nwabugwu Nwando - Obiageli Ogechukwukama Ojiugo Oluchi Onyeka Onyekachi Onyekachukwu Uchechukwu Udo Uzoma - } - - #founder_named_dynasties = yes - -} diff --git a/common/culture/name_lists/00_chinese.txt b/common/culture/name_lists/00_chinese.txt deleted file mode 100644 index c5c9b501..00000000 --- a/common/culture/name_lists/00_chinese.txt +++ /dev/null @@ -1,215 +0,0 @@ -#name_list_blank = { -# -# cadet_dynasty_names = { -# } -# -# dynasty_names = { -# } -# -# male_names = { -# } -# female_names = { -# } -# -# dynasty_name_first = yes -# -#} - -name_list_han = { - cadet_dynasty_names = { - "dynn_Zhao_8D75" - "dynn_Qian_94B1" - "dynn_Sun_5B59" - "dynn_Li_674E" - "dynn_Zhou_5468" - "dynn_Wu_5434" - "dynn_Zheng_90D1" - "dynn_Wang_738B" - "dynn_Feng_4E30" - "dynn_Chen_9648" - "dynn_Chu_695A" - "dynn_Wei_97E6" - "dynn_Jiang_848B" - "dynn_Shen_6C88" - "dynn_Han_97E9" - "dynn_Yang_6768" - "dynn_Zhu_6731" - "dynn_Qin_79E6" - "dynn_You_5E7D" - "dynn_Xu_5F90" - "dynn_He_4F55" - "dynn_Shi_65BD" - "dynn_Zhang_5F20" - "dynn_Kong_5B54" - "dynn_Cao_66F9" - "dynn_Yan_95F2" - "dynn_Hua_534E" - "dynn_Jin_91D1" - "dynn_Wei_536B" - "dynn_Tao_9676" - "dynn_Qi_9F4A" - "dynn_Xie_8C22" - "dynn_Zou_90B9" - "dynn_Yu_5B87" - "dynn_Bai_767D" - "dynn_Shui_6C34" - "dynn_Dou_6597" - "dynn_Yun_4E91" - "dynn_Su_82CF" - "dynn_Pan_6F58" - "dynn_Ge_845B" - "dynn_Xi_5E2D" - "dynn_Fan_8303" - "dynn_Peng_5F6D" - "dynn_Lang_90CE" - "dynn_Lu_5415" - "dynn_Wei_9B4F" - "dynn_Chang_5E38" - "dynn_Ma_9A6C" - "dynn_Miao_82D7" - "dynn_Feng_51AF" - "dynn_Fang_65B9" - "dynn_Yu_4FDE" - "dynn_Ren_4EFB" - "dynn_Yuan_8881" - "dynn_Liu_5218" - "dynn_Bao_5305" - "dynn_Shi_77F3" - "dynn_Tang_5510" - "dynn_Fei_8D39" - "dynn_Liang_6881" - "dynn_Hu_80E1" - "dynn_Hao_90DD" - "dynn_Gong_9F9A" - "dynn_Wen_6587" - "dynn_Deng_9093" - "dynn_Zuo_5DE6" - "dynn_Cui_5D14" - "dynn_Lu_8DEF" - "dynn_Dong_8463" - "dynn_Du_675C" - "dynn_Ruan_962E" - "dynn_Lan_84DD" - "dynn_Min_95F5" - "dynn_Xi_595A" - "dynn_Ji_7EAA" - "dynn_Xu_8BB8" - "dynn_Luo_7F57" - "dynn_Gao_9AD8" - "dynn_Xia_590F" - "dynn_Cai_8521" - "dynn_Tian_7530" - "dynn_Ding_4E01" - "dynn_Xue_859B" - "dynn_Jiang_59DC" - } - - dynasty_names = { - "dynn_Zhao_8D75" - "dynn_Qian_94B1" - "dynn_Sun_5B59" - "dynn_Li_674E" - "dynn_Zhou_5468" - "dynn_Wu_5434" - "dynn_Zheng_90D1" - "dynn_Wang_738B" - "dynn_Feng_4E30" - "dynn_Chen_9648" - "dynn_Chu_695A" - "dynn_Wei_97E6" - "dynn_Jiang_848B" - "dynn_Shen_6C88" - "dynn_Han_97E9" - "dynn_Yang_6768" - "dynn_Zhu_6731" - "dynn_Qin_79E6" - "dynn_You_5E7D" - "dynn_Xu_5F90" - "dynn_He_4F55" - "dynn_Shi_65BD" - "dynn_Zhang_5F20" - "dynn_Kong_5B54" - "dynn_Cao_66F9" - "dynn_Yan_95F2" - "dynn_Hua_534E" - "dynn_Jin_91D1" - "dynn_Wei_536B" - "dynn_Tao_9676" - "dynn_Qi_9F4A" - "dynn_Xie_8C22" - "dynn_Zou_90B9" - "dynn_Yu_5B87" - "dynn_Bai_767D" - "dynn_Shui_6C34" - "dynn_Dou_6597" - "dynn_Yun_4E91" - "dynn_Su_82CF" - "dynn_Pan_6F58" - "dynn_Ge_845B" - "dynn_Xi_5E2D" - "dynn_Fan_8303" - "dynn_Peng_5F6D" - "dynn_Lang_90CE" - "dynn_Lu_5415" - "dynn_Wei_9B4F" - "dynn_Chang_5E38" - "dynn_Ma_9A6C" - "dynn_Miao_82D7" - "dynn_Feng_51AF" - "dynn_Fang_65B9" - "dynn_Yu_4FDE" - "dynn_Ren_4EFB" - "dynn_Yuan_8881" - "dynn_Liu_5218" - "dynn_Bao_5305" - "dynn_Shi_77F3" - "dynn_Tang_5510" - "dynn_Fei_8D39" - "dynn_Liang_6881" - "dynn_Hu_80E1" - "dynn_Hao_90DD" - "dynn_Gong_9F9A" - "dynn_Wen_6587" - "dynn_Deng_9093" - "dynn_Zuo_5DE6" - "dynn_Cui_5D14" - "dynn_Lu_8DEF" - "dynn_Dong_8463" - "dynn_Du_675C" - "dynn_Ruan_962E" - "dynn_Lan_84DD" - "dynn_Min_95F5" - "dynn_Xi_595A" - "dynn_Ji_7EAA" - "dynn_Xu_8BB8" - "dynn_Luo_7F57" - "dynn_Gao_9AD8" - "dynn_Xia_590F" - "dynn_Cai_8521" - "dynn_Tian_7530" - "dynn_Ding_4E01" - "dynn_Xue_859B" - "dynn_Jiang_59DC" - } - - male_names = { - Sili_601D_793C Yuanqing_5143_5E86 Sijing_601D_656C Zhongyi_5FE0_4E49 Yuanli_5143_793C Zhimei_77E5_5FAE Shaozong_7ECD_5B97 Sigong_601D_606D Yuangui_5143_73EA Sizhong_601D_5FE0 Chengzong_627F_5B97 Tingyu_5EAD_7389 Chongli_5D07_793C Yifang_4E49_65B9 Chengqing_627F_5E86 Sizong_55E3_5B97 Yuanfang_5143_65B9 Shouyi_5B88_4E00 Yanzuo_5EF6_795A Guangyuan_5149_8FDC Shouzong_5B88_5FE0 Yuanzhen_5143_8D1E Sizhen_601D_8D1E Guangting_5149_5EAD Zhengze_6B63_5219 Xiantong_4ED9_7AE5 Chengen_627F_6069 Yanqing_5EF6_5E86 Chengsi_627F_55E3 Huayi_6000_4E49 Anren_5B89_4EC1 Zhongxuan_4EF2_5BA3 Siwen_601D_6E29 Renshi_4EC1_5E08 Jingzhi_656C_4E4B Wanqing_4E07_9877 Huaijie_6000_8282 Jingzhong_656C_5FE0 Hongli_5F18_793C Renbiao_4EC1_8868 Zhijie_77E5_8282 Yuanliang_5143_4EAE Zongben_5B97_672C Jingxian_666F_5148 Siyan_601D_8A00 Chengye_627F_4E1A Shenwei_614E_5FAE Nanjin_5357_91D1 Liangfu_826F_8F85 Xingshi_884C_5B9E Siqi_601D_9F50 Keqin_514B_52E4 Zhonglian_4EF2_8FDE Yuanyu_5143_88D5 Chongye_5D07_4E1A Shize_58EB_5219 Yuansu_5143_7D20 Wenju_6587_4E3E Siyi_601D_4E49 Siqian_601D_8C26 Jingzong_656C_5B97 Boyu_4F2F_7389 Shaowei_5C11_5FAE Chengyu_627F_88D5 Lizhen_5229_8D1E Shouyi_5B88_4E49 Kerang_514B_8BA9 Liangbi_826F_5F3C Yansi_5EF6_55E3 Jiliang_5B63_826F Xuangjing_7384_666F Dazhi_5927_667A Rengui_4EC1_8F68 Xingfang_884C_65B9 Zihua_5B50_534E Shiliang_58EB_826F Yuanzong_5143_5B97 Sixuan_601D_7384 Defang_5FB7_65B9 Yanshou_5EF6_5BFF Yuanchao_5143_8D85 Xiaogong_5B5D_606D Jinsi_8FDB_601D Chongji_5D07_57FA Guangsi_5149_55E3 Zi_ang_5B50_6602 Renze_4EC1_5219 Shide_5E08_5FB7 Chongsi_5D07_55E3 Jingxuan_656C_7384 Tingzhi_5EAD_829D Xizhuang_5E0C_5E84 Hanzhang_542B_7AE0 Hongqing_5F18_5E86 Jingtong_656C_540C Xiyi_5E0C_9038 Yuanzhong_5143_5FE0 Siyuan_601D_8FDC - } - female_names = { - Aba_963F_516B Abian_963F_7A86 Acun_963F_5B58 Acuo_963F_63AA Aer_963F_4E8C Aer_963F_513F Agai_963F_6539 Aguan_963F_89C2 Ahao_963F_6D69 Ahuan_963F_6B22 Ahuan_963F_73AF Ajiang_963F_59DC Ajiao_963F_7126 Ajiu_963F_4E5D Alou_963F_5A04 Aluan_963F_683E Alv_963F_5F8B Amei_963F_7709 Amen_963F_95E8 Anong_963F_5F04 Anu_963F_5974 Apei_963F_6C9B Aqian_963F_8654 Aqiao_963F_7FD8 Aqiu_963F_79CB Aquan_963F_94E8 Ashen_963F_4EC0 Ashen_963F_6DF1 Ashi_963F_5E08 Asu_963F_7D20 Ata_963F_4ED6 Awan_963F_4E07 Axian_963F_54B8 Axiang_963F_76F8 Ayan_963F_5EF6 Ayan_963F_989C Ayi_963F_5B9C Ayu_963F_7389 Ayue_963F_8D8A Azang_963F_81E7 Azhao_963F_8D75 Azhou_963F_5468 Azu_963F_8DB3 Azun_963F_5C0A Baoer_5B9D_513F Bi_74A7 Bianzhen_8FA8_771F Bingyu_51B0_9C7C Binniang_5BBE_5A18 Bixia_78A7_971E Bore_822C_82E5 Buxu_6B65_865A Caicai_91C7_5F69 Caichun_91C7_6625 Caidie_91C7_8776 Caihua_91C7_534E Cainiang_91C7_5A18 Caiping_91C7_82F9 Cairong_91C7_5BB9 Caixia_91C7_971E Caiyue_91C7_6708 Caiyun_91C7_4E91 Can_74A8 Canou_8695_9E25 Changsheng_5E38_7701 Chaniang_59F9_5A18 Chanxin_7985_5FC3 Chaocai_6641_91C7 Chengfa_627F_6CD5 Chongchong_91CD_91CD Chonghe_51B2_548C Chuanluan_5DDD_9E3E Chunniang_6625_5A18 Ciai_6148_7231 Cihang_6148_822A Ciren_6148_4EC1 Cishun_6148_987A Cixin_6148_5FC3 Ciyi_6148_4EEA Ciyin_6148_97F3 Cong_742E Cui_7480 Cuicui_7CB9_7CB9 Dacheng_5927_4E58 Danxia_4E39_971E Dao_9053 Daoniang_9053_5A18 Daoyin_9053_56E0 Daozhen_9053_771F De_5FB7 Denian_5FB7_5FF5 Deniang_5FB7_5A18 Derang_5FB7_8BA9 Derong_5FB7_5BB9 Derou_5FB7_67D4 Dexian_5FB7_8D24 Dezhen_5FB7_771F Dezhen_5FB7_8D1E Dingzhen_5B9A_771F Diniang_5F1F_5A18 Dongxuan_6D1E_7384 Douhe_8C46_9E64 Duan_7AEF Duanhui_7AEF_60E0 Duanhui_7AEF_6167 Duanjia_7AEF_5609 Duanren_7AEF_4EC1 Duanyan_7AEF_4E25 Duanzheng_7AEF_6B63 Facang_6CD5_85CF Facheng_6CD5_6210 Fajing_6CD5_9759 Faner_68B5_513F Fangcao_82B3_8349 Fanghua_82B3_534E Fanniang_8629_5A18 Fanyin_68B5_97F3 Fashi_6CD5_5F0F Fatai_6CD5_53F0 Faxiang_6CD5_76F8 Faying_6CD5_5E94 Fayuan_6CD5_7F18 Fazhi_6CD5_667A Feiqiong_98DE_743C Feiyan_98DE_71D5 Feiying_98DE_83BA Fengdie_98CE_8776 Fenger_98CE_513F Fengxian_51E4_4ED9 Fu_99A5 Fucai_99A5_5F69 Fuhua_99A5_534E Funiang_590D_5A18 Furong_8299_84C9 Furong_99A5_5BB9 Fuxia_99A5_971E Fuyu_99A5_90C1 Fuyue_99A5_6708 Geer_9601_513F Genou_6839_9E25 Gong_606D Guan_89C2 Guanding_704C_9876 Guanfu_89C2_5BCC Guanger_5149_513F Guanguan_7BA1_7BA1 Guiniang_6842_5A18 Guiniang_8D35_5A18 Guizhi_6842_679D Guluan_8C37_9E3E Guoer_88F9_513F Guoniang_56FD_5A18 Haitang_6D77_68E0 Hangniang_676D_5A18 Hanzhen_542B_771F Haoer_597D_513F Haohao_597D_597D Heihei_9ED1_9ED1 Heniang_6CB3_5A18 Heying_79BE_83BA Heyun_8377_97F5 Hongdu_6D2A_5EA6 Huaer_534E_513F Huafu_534E_99A5 Huan_73AF Huanfeng_5E7B_51E4 Huarong_534E_5BB9 Huayan_534E_4E25 Huaying_534E_82F1 Huhu_6237_6237 Huicang_60E0_85CF Huide_60E0_5FB7 Huiduan_60E0_7AEF Huiguang_6167_5149 Huiguo_60E0_679C Huihai_6167_6D77 Huihui_4F1A_4F1A Huiji_60E0_79EF Huijian_6167_5251 Huijing_6167_9759 Huiming_60E0_660E Huiniang_60E0_5A18 Huiya_60E0_96C5 Huiying_6167_82F1 Huiyue_6167_6708 Jiajing_5609_9759 Jianjing_4FED_51C0 Jianjing_4FED_9759 Jianzhen_9274_771F Jiaojiao_5A07_5A07 Jiaren_5609_4EC1 Jiguang_5BC2_5149 Jilan_5B63_5170 Jin_747E Jiner_91D1_513F Jing_51C0 Jing_656C Jing_749F Jing_9759 Jingang_91D1_521A Jingchen_51C0_5C18 Jingde_51C0_5FB7 Jingde_9759_5FB7 Jingduan_51C0_7AEF Jingjing_51C0_9759 Jinglian_51C0_83B2 Jinglian_9759_83B2 Jingrou_9759_67D4 Jingru_656C_5B7A Jingwen_666F_6587 Jingxiao_51C0_5B5D Jingxu_9759_865A Jingyi_51C0_610F Jingyi_9759_4EEA Jingzhen_656C_771F Jiniang_5409_5A18 Jinniang_91D1_5A18 Jiya_5B63_96C5 Jue_89C9 Juexing_89C9_6027 Jufang_83CA_82B3 Juju_83CA_83CA Junhui_541B_5FBD Junxin_541B_4FE1 Lanxiang_5170_9999 Lanying_5170_82F1 Laolao_8001_8001 Leniang_4E50_5A18 Lianhua_83B2_534E Lianhua_83B2_82B1 Liansheng_83B2_751F Lianxiang_83B2_9999 Lianxin_83B2_5FC3 Lihua_4E3D_534E Lihua_674E_82B1 Lin_7433 Lin_7498 Lingde_4EE4_5FB7 Lingfeng_6CE0_98CE Lingjun_7075_5747 Lingling_4EE4_4EE4 Lingshu_4EE4_6DD1 Lingsu_7075_7D20 Lingxia_51CC_971E Lingxu_7075_865A Lingyi_4EE4_4EEA Linhe_6797_9E64 Liniang_4E3D_5A18 Lirong_4E3D_5BB9 Liuer_516D_513F Liuxu_67F3_7D6E Lixia_4E3D_971E Liyue_4E3D_6708 Lizhen_4E3D_771F Lizhi_4E3D_8D28 Lufeng_9732_8702 Luniang_9E7F_5A18 Luoer_6D1B_513F Luoer_7F57_513F Madie_9EBB_8776 Maiyan_9EA6_96C1 Maoniang_6BDB_5A18 Meier_5A9A_513F Meimei_59B9_59B9 Meimei_7F8E_7F8E Meiniang_5A9A_5A18 Meiniang_7709_5A18 Meiying_6885_82F1 Mengluan_68A6_9E3E Mengniang_5B5F_5A18 Mianou_7720_9E25 Miaofa_5999_6CD5 Miaohua_5999_534E Miaoji_5999_59EC Miaolian_5999_83B2 Miaoniang_5999_5A18 Miaoran_5999_7136 Miaoxiang_5999_76F8 Miaoyin_5999_97F3 Mifeng_7C73_51E4 Mile_5F25_52D2 Mingde_660E_5FB7 Minghe_9E23_9E64 Mingjing_660E_955C Minzhi_654F_76F4 Moli_8309_8389 Mudan_7261_4E39 Muyan_6728_96C1 Niangniang_5A18_5A18 Niangzi_5A18_5B50 Ningyang_51DD_9633 Nizi_5C3C_5B50 Panpan_76FC_76FC Pu_83E9 Pusa_83E9_8428 Puti_83E9_63D0 Qi_7398 Qi_7426 Qi_742A Qiangwei_8537_8587 Qianniang_5029_5A18 Qianshu_8C26_6DD1 Qianyi_8C26_61FF Qiaoxian_4E54_4ED9 Qingchan_6E05_7985 Qingfeng_8F7B_51E4 Qingjing_6E05_51C0 Qingtong_9752_7AE5 Qingwei_6E05_5FAE Qingyan_8F7B_71D5 Qinyan_52E4_4E25 Qinzhuang_52E4_5E84 Qionghua_743C_534E Qiuniang_79CB_5A18 Qiyan_6816_96C1 Qiyun_6816_4E91 Rangduan_8BA9_7AEF Rangying_8BA9_82F1 Ranniang_67D3_5A18 Ren_4EC1 Renhui_4EC1_6167 Renshun_4EC1_987A Renwan_4EC1_5A49 Rongcai_5BB9_5F69 Rongguang_5BB9_5149 Ronghua_5BB9_534E Rongxia_5BB9_971E Rongyue_5BB9_6708 Roufan_67D4_8303 Roushun_67D4_987A Rouzhi_67D4_4E4B Runniang_95F0_5A18 Ruyi_5982_4E00 Ruyi_5982_610F Sangfeng_6851_8702 Saoniang_81CA_5A18 Sengniang_50E7_5A18 Shande_5584_5FB7 Shanfeng_5C71_51E4 Shangxian_4E0A_4ED9 Shangzhen_4E0A_771F Shanshan_59D7_59D7 Shanzhi_5584_81F3 Shanzhu_5584_4E3B Shaoniang_97F6_5A18 Shaoxuan_5C11_7384 Shenger_76DB_513F Shenniang_7533_5A18 Shensi_614E_601D Shijie_5341_6212 Shilu_5B9E_9E6D Shiniang_5E08_5A18 Shishi_5341_5341 Shishi_5E08_5E08 Shouer_9996_513F Shouyi_5B88_4E00 Shouzhen_5B88_771F Shu_6DD1 Shuangou_971C_9E25 Shuer_6811_513F Shuhui_6DD1_6167 Shuiying_6C34_83BA Shumei_6DD1_7F8E Shun_987A Shunqian_987A_8C26 Shunyi_987A_4EEA Shunzhen_987A_8D1E Shuxian_6DD1_8D24 Shuya_6DD1_96C5 Shuying_6DD1_82F1 Shuzhen_6DD1_8D1E Shuzi_6DD1_59FF Side_56DB_5FB7 Sier_5BFA_513F Silu_4E1D_9E6D Sugong_7D20_606D Suiniang_9042_5A18 Suiyu_7A57_9C7C Sulu_5BBF_9E6D Sunsun_5B59_5B59 Suxin_7D20_5FC3 Taer_4ED6_513F Taizhen_592A_771F Taohong_6843_7EA2 Tianshi_5929_5E08 Tijuan_557C_9E43 Ting_73FD Tingniang_5A77_5A18 Tingting_505C_505C Tuaner_56E2_513F Wan_742C Wande_5A49_5FB7 Waner_5A49_513F Wangji_5FD8_673A Wanwan_5A49_5A49 Wanzhen_5A49_8D1E Weide_5A01_5FB7 Weiren_5A01_4EC1 Wenji_6587_59EC Wenniang_6C76_5A18 Wuchen_65E0_5C18 Wufeng_821E_51E4 Wuliang_65E0_91CF Wuniang_4EF5_5A18 Xian_4ED9 Xianai_4ED9_827E Xiang_76F8 Xianger_76F8_513F Xianger_7965_513F Xianger_8BE6_513F Xianger_9999_513F Xiangluan_7FD4_9E3E Xianhui_4ED9_8559 Xianniang_5C98_5A18 Xianshu_8D24_6DD1 Xianshun_8D24_987A Xianyi_8D24_4EEA Xianzhen_4ED9_771F Xianzhi_4ED9_8D28 Xiaoniang_5C0F_5A18 Xiaoou_7B11_9E25 Xiaoshun_5B5D_987A Xiaoyao_900D_9065 Xiaying_971E_83BA Xier_7EC6_513F Xifeng_620F_8702 Xingxing_661F_661F Xingyan_661F_96C1 Xingyu_674F_96E8 Xinniang_65B0_5A18 Xinzhen_4FE1_771F Xiongxiong_718A_718A Xiu_7407 Xiuniang_79C0_5A18 Xiuxiu_79C0_79C0 Xiuzhen_4FEE_771F Xiyi_5E0C_5937 Xu_865A Xuan_7384 Xuan_7EDA Xuandan_7384_4E39 Xuanfu_7384_7B26 Xuanji_7384_673A Xuanjing_7384_955C Xuanling_7384_7075 Xuanshi_7384_5F0F Xuantong_7384_540C Xuanxiao_7384_9704 Xuanying_7384_82F1 Xuanzhen_7384_771F Xuelu_96EA_9E6D Xumo_987B_6469 Yaer_9E26_513F Yan_7430 Yanai_4E25_7231 Yanci_4E25_6148 Yanjing_4E25_9759 Yanke_70DF_5BA2 Yanniang_5EF6_5A18 Yanzhuang_4E25_5E84 Yao_7476 Yaocai_7476_5F69 Yaoer_8981_513F Yaofang_7476_82B3 Yaoguang_7476_5149 Yaohua_59DA_534E Yaohua_7476_534E Yaohua_7A88_534E Yaoniang_7A85_5A18 Yaorong_59DA_5BB9 Yaorong_7476_5BB9 Yaorong_7A88_5BB9 Yaotiao_7A88_7A95 Yaoxia_59DA_971E Yaoxia_7476_971E Yaoxia_7A88_971E Yaoyao_7A88_7A88 Yaoying_59DA_82F1 Yaoyue_59DA_6708 Yaoyue_7476_6708 Yaoyue_7A88_6708 Yaozhen_7476_771F Yayi_96C5_61FF Yazhuang_96C5_5E84 Yefeng_53F6_8702 Yide_61FF_5FB7 Yier_76CA_513F Ying_745B Ying_83B9 Yingduan_82F1_7AEF Yinger_82F1_513F Yinghua_82F1_534E Yinghui_82F1_6167 Yingjian_82F1_4FED Yingniang_6620_5A18 Yingren_82F1_4EC1 Yingying_82F1_82F1 Yingying_83BA_83BA Yingzhen_5E94_8D1E Yiniang_610F_5A18 Yiniang_7317_5A18 Yinniang_9690_5A18 Yiqin_61FF_52E4 Yiren_4EEA_4EC1 Yiren_610F_4EC1 Yiren_61FF_4EC1 Yishu_61FF_6DD1 Yixuan_4E49_7384 Yiyi_610F_610F Yiyi_71A0_71A0 Yizhen_4EEA_8D1E Yougu_5E7D_8C37 Youwei_5E7C_5FAE Youyu_6E38_9C7C Yu_7389 Yu_745C Yuan_7457 Yuanhe_5143_548C Yuanjue_5706_89C9 Yuanniang_613F_5A18 Yuecai_6708_5F69 Yuehe_6708_9E64 Yuehua_6708_534E Yuekong_6708_7A7A Yuerong_6708_5BB9 Yuexia_6708_971E Yun_4E91 Yuncai_4E91_5F69 Yunhe_4E91_9E64 Yunhua_4E91_534E Yunji_4E91_5BC2 Yunniang_4E91_5A18 Yunrong_4E91_5BB9 Yunxia_4E91_971E Yunyan_4E91_71D5 Yunyun_82B8_82B8 Yuxian_7FBD_4ED9 Yuying_7389_82F1 Zan_74D2 Zhen_73CD Zhen_771F Zhen_8D1E Zhende_771F_5FB7 Zhengniang_90D1_5A18 Zhengze_6B63_5219 Zhenhua_771F_534E Zhenhui_8D1E_60E0 Zhenmei_771F_7F8E Zhennian_771F_5FF5 Zhenrong_771F_5BB9 Zhenru_771F_5982 Zhenxia_771F_971E Zhenya_8D1E_96C5 Zhenyan_771F_8273 Zhenyi_771F_4E00 Zhenyi_8D1E_4E00 Zhenyue_771F_6708 Zhi_667A Zhidie_679D_8776 Zhihui_667A_6167 Zhiniang_8C78_5A18 Zhirou_81F3_67D4 Zhongniang_4F17_5A18 Zhuang_5E84 Zhuangjia_5E84_5609 Zhuangrou_5E84_67D4 Zhuangshun_5E84_987A Zhuangya_5E84_96C5 Zhuniang_73E0_5A18 Zhuxiang_7AF9_9999 Ziran_81EA_7136 Zirou_6ECB_67D4 Zixu_7D2B_865A Ziyan_7D2B_70DF Zizhen_5B50_771F Zuidie_9189_8776 - } - - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_dead.txt b/common/culture/name_lists/00_dead.txt deleted file mode 100644 index c87659d2..00000000 --- a/common/culture/name_lists/00_dead.txt +++ /dev/null @@ -1,534 +0,0 @@ -name_list_hunnic = { # A lot of these are taken from Mogyer, not strictly accurate but the best I can do for now - - cadet_dynasty_names = { - "dynn_A_rpA_dy" - "dynn_CsA_szA_r" - "dynn_Vajlok" - "dynn_KA_n" - "dynn_Omodej" - "dynn_Zapolsky" - "dynn_Drugeth" - "dynn_Csak" - "dynn_Pallfy" - "dynn_Apafi" - "dynn_BA_nffy" - "dynn_BerzE_nyi" - "dynn_Bocskai" - "dynn_Borsa" - "dynn_CzirA_ky" - "dynn_Debreceni" - "dynn_DerencsE_nyi" - "dynn_DiO_szegi" - "dynn_DO_ry" - "dynn_EgervA_ri" - "dynn_ForgA_ch" - "dynn_Garai" - "dynn_PA_lO_czi" - "dynn_HE_dervA_ri" - "dynn_Hunyadi" - "dynn_KA_n" - "dynn_KA_rolyi" - "dynn_KO_szegi" - "dynn_Kun" - "dynn_Losonczi" - "dynn_MarO_ti" - "dynn_PerE_nyi" - "dynn_RA_tO_t" - "dynn_Rozgonyi" - "dynn_Szakoly" - "dynn_SzE_csE_nyi" - "dynn_SzE_chy" - "dynn_Telegdi" - "dynn_ThurzO_" - "dynn_U_jlaki" - "dynn_Kanizsai" - "dynn_Meggyesi" - "dynn_Osli" - "dynn_Viczay" - "dynn_Balassa" - "dynn_BA_thory" - "dynn_KA_lnoky" - "dynn_Niedzica" - "dynn_ZA_polya" - "dynn_SzE_kely" - "dynn_DO_zsa" - "dynn_Apafi" - "dynn_Balassi" - "dynn_Bethlen_von_IktA_r" - { "dynnp_of" "dynn_Szekezfehervar" } - "dynn_Budai_Nagy" - { "dynnp_de" "dynn_KincstartO_" } - "dynn_Celko" - "dynn_Corvinus" - { "dynnp_de" "dynn_Cseszneky" } - { "dynnp_de" "dynn_MilvA_ny" } - { "dynnp_von" "dynn_MoravA_n" } - "dynn_DA_vid" - "dynn_DE_csey" - "dynn_ME_zesi" - { "dynnp_de" "dynn_Ruszka" } - "dynn_Draskovich" - "dynn_ErdO_dy" - "dynn_RE_vay" - "dynn_DuruZ_mic" - "dynn_Szemere" - "dynn_Hadik" - "dynn_BatthyA_ny" - "dynn_Csesznegi" - "dynn_EsterhA_zy" - "dynn_HajdU_" - "dynn_JesenskY_" - "dynn_Medveczky" - "dynn_RA_kO_czi" - "dynn_Wass_de_Czege" - "dynn_Szapolyai" - "dynn_Zichy" - "dynn_Zrinski" - } - - dynasty_names = { - "dynn_A_rpA_dy" - "dynn_CsA_szA_r" - "dynn_Vajlok" - "dynn_KA_n" - "dynn_Omodej" - "dynn_Zapolsky" - "dynn_Drugeth" - "dynn_Csak" - "dynn_Pallfy" - "dynn_Apafi" - "dynn_BA_nffy" - "dynn_BerzE_nyi" - "dynn_Bocskai" - "dynn_Borsa" - "dynn_CzirA_ky" - "dynn_Debreceni" - "dynn_DerencsE_nyi" - "dynn_DiO_szegi" - "dynn_DO_ry" - "dynn_EgervA_ri" - "dynn_ForgA_ch" - "dynn_Garai" - "dynn_PA_lO_czi" - "dynn_HE_dervA_ri" - "dynn_Hunyadi" - "dynn_KA_n" - "dynn_KA_rolyi" - "dynn_KO_szegi" - "dynn_Kun" - "dynn_Losonczi" - "dynn_MarO_ti" - "dynn_PerE_nyi" - "dynn_RA_tO_t" - "dynn_Rozgonyi" - "dynn_Szakoly" - "dynn_SzE_csE_nyi" - "dynn_SzE_chy" - "dynn_Telegdi" - "dynn_ThurzO_" - "dynn_U_jlaki" - "dynn_Kanizsai" - "dynn_Meggyesi" - "dynn_Osli" - "dynn_Viczay" - "dynn_Balassa" - "dynn_BA_thory" - "dynn_KA_lnoky" - "dynn_Niedzica" - "dynn_ZA_polya" - "dynn_SzE_kely" - "dynn_DO_zsa" - "dynn_Apafi" - "dynn_Balassi" - "dynn_Bethlen_von_IktA_r" - { "dynnp_of" "dynn_Szekezfehervar" } - "dynn_Budai_Nagy" - { "dynnp_de" "dynn_KincstartO_" } - "dynn_Celko" - "dynn_Corvinus" - { "dynnp_de" "dynn_Cseszneky" } - { "dynnp_de" "dynn_MilvA_ny" } - { "dynnp_von" "dynn_MoravA_n" } - "dynn_DA_vid" - "dynn_DE_csey" - "dynn_ME_zesi" - { "dynnp_de" "dynn_Ruszka" } - "dynn_Draskovich" - "dynn_ErdO_dy" - "dynn_RE_vay" - "dynn_DuruZ_mic" - "dynn_Szemere" - "dynn_Hadik" - "dynn_BatthyA_ny" - "dynn_Csesznegi" - "dynn_EsterhA_zy" - "dynn_HajdU_" - "dynn_JesenskY_" - "dynn_Medveczky" - "dynn_RA_kO_czi" - "dynn_Wass_de_Czege" - "dynn_Szapolyai" - "dynn_Zichy" - "dynn_Zrinski" - } - - male_names = { - Attila Basig KU_rsig O_ldin Donat QaraTon Munsuq O_ktA_r HrO_gA_ OyBars EsQA_m Blid_A AtaQA_m - Mamas Laudaricus E_llA_g Denjircig HE_rnA_k EmnacU_r O_lcindU_r Gesam Munsu Elmingir ElmincU_r - Berik EdA_kU_n CerkU_n EslA_ KrekA_n U_negA_si SkO_ttA_ - } - female_names = { - A_gnes E_va Adelaida AgA_ta AmA_lia Angyalka AnikO_ Aranka Berta BorbA_la Csilla Csillag Czenzi Dorottya Edit EmO_ke Emese Erika ErzsE_bet Eszter - Etel Euphemia Gizella GyO_rgyi Hajnal Hedwig Ibolya IldikO_ Illona IrE_n JA_cinta JO_zsa JU_lia JolA_n Judith Kamilla Katalin Kinga KlA_ra - Konstancia Krisztina Kunigunda Luca MA_ria MA_rta Magdolna MargarE_ta Margit Matild NatA_lia Odola Orsolya Panni Piroska RO_zsa SA_ra Sarolt - Skolasztika Sophia TundE_r Terezia Viola VirA_g ZoltA_na ZsO_fia Zsanett Zsuzsa - } - - dynasty_of_location_prefix = "dynnp_a" - - patronym_suffix_male = "dynnpat_suf_fi" - - dynasty_name_first = yes -} - -name_list_ancient_egyptian = { # Lifted directly from Imperator: Rome - - cadet_dynasty_names = { - "dynn_Ahmid" - "dynn_Galestid" - "dynn_Kenamid" - "dynn_Naravid" - "dynn_Penamid" - "dynn_Senuid" - "dynn_Setnid" - "dynn_Arganid" - "dynn_Psammid" - "dynn_Philothid" - "dynn_Timolid" - "dynn_Zosid" - "dynn_Phileid" - "dynn_Nicodemid" - "dynn_Nefarid" - "dynn_Bastid" - "dynn_Xeneid" - "dynn_Naravid" - "dynn_Ezanid" - "dynn_Ahmid" - "dynn_Alarus" - "dynn_Alara" - "dynn_Alarid" - "dynn_Harsiotes" - "dynn_Harsiotid" - "dynn_Henus" - "dynn_Hena" - "dynn_Henid" - "dynn_Ibus" - "dynn_Iba" - "dynn_Ibid" - "dynn_Khabbash" - "dynn_Khabbashid" - "dynn_Amasus" - "dynn_Amasa" - "dynn_Amasid" - "dynn_Nectanebo" - "dynn_Nectanebid" - "dynn_Petubast" - "dynn_Petubastes" - "dynn_Petubastid" - "dynn_Djedhid" - "dynn_Tachys" - "dynn_Tachya" - "dynn_Tachyes" - "dynn_Tachyid" - "dynn_Mago" - "dynn_Magid" - } - - dynasty_names = { - "dynn_Ahmid" - "dynn_Galestid" - "dynn_Kenamid" - "dynn_Penamid" - "dynn_Senuid" - "dynn_Setnid" - "dynn_Arganid" - "dynn_Psammid" - "dynn_Philothid" - "dynn_Timolid" - "dynn_Zosid" - "dynn_Phileid" - "dynn_Nicodemid" - "dynn_Nefarid" - "dynn_Bastid" - "dynn_Xeneid" - "dynn_Naravid" - "dynn_Ezanid" - "dynn_Alarus" - "dynn_Alara" - "dynn_Alarid" - "dynn_Harsiotes" - "dynn_Harsiotid" - "dynn_Henus" - "dynn_Hena" - "dynn_Henid" - "dynn_Ibus" - "dynn_Iba" - "dynn_Ibid" - "dynn_Khabbash" - "dynn_Khabbashid" - "dynn_Amasus" - "dynn_Amasa" - "dynn_Amasid" - "dynn_Nectanebo" - "dynn_Nectanebid" - "dynn_Petubast" - "dynn_Petubastes" - "dynn_Petubastid" - "dynn_Djedhid" - "dynn_Tachys" - "dynn_Tachya" - "dynn_Tachyes" - "dynn_Tachyid" - "dynn_Mago" - "dynn_Magid" - } - - male_names = { - Amyrteos Ankhmachis Anemhor Aratos Arganos Charias Djedhor Ezena Horemakhet Isocrates - Khabbabash Leonippus Lydiadas Manetho Massiva Nakhthoreb Naravas Nefaarud Neferibre - Nesisti Nicias Nicodemus Oezalces Oxyntas Pedubast Peneus Perdiccas Philocrates - Philotheos Polyperchon Psherenamun Psherenptah Psammuthes Ptolemy Theocritus Therapon - Timoleon Xanthos Xenon Zeteres Zosimus Ahmes Ahmose Alarus Amasus Ameny Bakenrenef - Cleomenes Euclid Harsiotef Henut Ibi Khabash Lagus Nectanebo Kheperkare Neferkare - Nehi Osorkon Pami Petubastis Teos - } - female_names = { - Agape Agathoclea Amanishabheto Antigone Apame Apollonia Aristomache Artemisia Aspacia - Athenais Berenice Charis Cleopatra Cynna Demetria Elpis Eirene Eudocia Eunice Euphemia - Eurydice Euthalia Hypatia Nysa Oenanthe Olympia Phila Phile Sostrate Stratonice Thais - Theophila Thetima Thessaloniki Thorakis Timo Arsinoe Lysandra Kiya Qelhata - } - dynasty_of_location_prefix = "dynnp_of" - - dynasty_name_first = yes -} - -name_list_trojan = { # Also shamelessly stolen from Imperator - - cadet_dynasty_names = { - "dynn_Agathoklid" - "dynn_Alketid" - "dynn_Apollonid" - "dynn_Aratid" - "dynn_Helladid" - "dynn_Omirid" - "dynn_Peithid" - "dynn_Peneid" - "dynn_Philonid" - "dynn_Proktid" - "dynn_Pytheid" - "dynn_Sosiklid" - "dynn_Tauromeneid" - "dynn_Therid" - "dynn_Theronid" - "dynn_Timolid" - "dynn_Xenonid" - "dynn_Zagreid" - "dynn_Zosimid" - "dynn_Zotikid" - "dynn_Pelopid" - "dynn_Philetid" - "dynn_Proteid" - "dynn_Zenonid" - "dynn_Sostratid" - "dynn_Tauriskid" - "dynn_Sosthenid" - "dynn_Pyhrrid" - "dynn_Leonidid" - "dynn_Killistratid" - "dynn_Nikoklid" - "dynn_Pantauchid" - "dynn_Leukonid" - "dynn_Onomastid" - "dynn_Kephistodid" - "dynn_Karsid" - "dynn_Nikokrid" - "dynn_Persid" - "dynn_Hippostratid" - "dynn_Epandrid" - "dynn_Gylippid" - "dynn_Helenid" - "dynn_Megalid" - "dynn_Charinid" - "dynn_Dydid" - "dynn_Dionid" - "dynn_Hiketasid" - "dynn_Stratoklid" - "dynn_Spartokid" - "dynn_Stratonikid" - "dynn_Taurid" - "dynn_Timaid" - "dynn_Timarchid" - "dynn_Timoleid" - "dynn_Timotheid" - "dynn_Tryphid" - "dynn_Xanthippid" - "dynn_Xenarid" - "dynn_Xenokratid" - "dynn_Xenophid" - "dynn_Zenid" - "dynn_Lagid" - "dynn_Magid" - "dynn_Euryklid" - "dynn_Aleuadai" - "dynn_Philaidai" - "dynn_Demostenid" - } - - dynasty_names = { - "dynn_Agathoklid" - "dynn_Alketid" - "dynn_Apollonid" - "dynn_Aratid" - "dynn_Helladid" - "dynn_Omirid" - "dynn_Peithid" - "dynn_Peneid" - "dynn_Philonid" - "dynn_Proktid" - "dynn_Pytheid" - "dynn_Sosiklid" - "dynn_Tauromeneid" - "dynn_Therid" - "dynn_Theronid" - "dynn_Timolid" - "dynn_Xenonid" - "dynn_Zagreid" - "dynn_Zosimid" - "dynn_Zotikid" - "dynn_Pelopid" - "dynn_Philetid" - "dynn_Proteid" - "dynn_Zenonid" - "dynn_Sostratid" - "dynn_Tauriskid" - "dynn_Sosthenid" - "dynn_Pyhrrid" - "dynn_Leonidid" - "dynn_Killistratid" - "dynn_Nikoklid" - "dynn_Pantauchid" - "dynn_Leukonid" - "dynn_Onomastid" - "dynn_Kephistodid" - "dynn_Karsid" - "dynn_Nikokrid" - "dynn_Persid" - "dynn_Hippostratid" - "dynn_Epandrid" - "dynn_Gylippid" - "dynn_Helenid" - "dynn_Megalid" - "dynn_Charinid" - "dynn_Dydid" - "dynn_Dionid" - "dynn_Hiketasid" - "dynn_Stratoklid" - "dynn_Spartokid" - "dynn_Stratonikid" - "dynn_Taurid" - "dynn_Timaid" - "dynn_Timarchid" - "dynn_Timoleid" - "dynn_Timotheid" - "dynn_Tryphid" - "dynn_Xanthippid" - "dynn_Xenarid" - "dynn_Xenokratid" - "dynn_Xenophid" - "dynn_Zenid" - "dynn_Lagid" - "dynn_Magid" - "dynn_Euryklid" - "dynn_Aleuadai" - "dynn_Philaidai" - "dynn_Demostenid" - } - - male_names = { - Abreas Achaios Aineias Airopos Agaios Agatharchides Agathokles Agathon Agelaos Agenor - Agesipolis Agis Aiakides Aischines Aknonios Akrotatos Alexandros Alexarchos Alketas - Alkimachos Alkimos Amantas Amphoteros Amyntas Anaxarchos Anaxikrates Anaximandros - Anaxippos Andragoras Andromachos Andromenes Andronikos Androsthenes Antenor Antialkidas - Antigonos Antikles Antimachos Antiochos Antipatros Antiphates Antiphilos Antisthenes - Aphrodisios Apollodoros Apollodotos Apollonios Apollophanes Aratos Archagathos Archebios - Archelaos Archias Archidamos Archimedes Archippos Aretas Areus Aristarchos Aristobulos - Aristodemos Aristogeiton Aristomachos Ariston Aristonikos Aristophanes Aristophon - Aristoteles Arrhabaios Arrhidaios Arseas Artemidoros Artemidotos Asandros Asklepiades - Athanadoros Athenodoros Attalos Audoleon Bakchides Balakros Bikon Bryaxis Chabrias - Chairestratos Chairondas Chares Charidemos Charikles Charinos Chremes Chremonides - Chrysippos Damokrates Damophon Damoteles Deimachos Deinippos Demades Demaratos Demetrios - Demochares Demodamas Demogenes Demokleides Demokritos Demophanes Demosthenes Derdas - Deriades Didas Dikaiarchos Dikaios Dimnos Diodoros Diodotos Diogenes Diomedes Dion - Dionysios Dropidas Echekrates Eisigonos Ekdemos Empedokles Epameinondas Epandros Epikuros - Epikydes Epimenes Epokillos Erasistratos Eratosthenes Erigyios Euainetos Euandros Eubulos - Eudamidas Eudoxos Euhemeros Eukleides Eukrates Eukratides Euktemon Eumenes Eupolemos - Euripides Eurylochos Euthydemos Euthykrates Euthykritos Eutychides Euxenippos Gelon - Glaukias Gorgias Gorgippos Gorgos Gylippos Hagesandros Halkyoneus Harpalos Hegemachos - Hegesias Hekataios Hektor Helenos Heliodoros Heliokles Hephaistion Herakleides Herakon - Hermaios Hermarchos Hermesianax Hermias Hermogenes Hermolaos Herodas Heromenes Herophilos - Hierax Hieron Hieronymos Hiketas Hippalos Hipparchos Hippokrates Hippostratos Hyakinthos - Hyperbatas Hypereides Ikadion Iollas Iphikrates Ismenias Isokrates Kalas Kalliarchos - Kallines Kallisthenes Kallistratos Kallixeinos Karneades Karsis Kassandros Kebalinos - Kephalon Kephisodoros Kephisodotos Kephisophon Kineas Kleandros Kleanthes Klearchos - Kleitos Kleombrotos Kleomenes Kleonymos Koinos Koroibos Krateros Krates Krateuas Krenides - Ktesikles Lachares Laomedon Leonidas Leonnatos Leontios Leosthenes Leostratos Leukon - Lydiadas Lykurgos Lysandridas Lysandros Lysias Lysimachos Lysippos Lysistratos Machanidas - Machatas Magas Makartatos Marsyas Megaleas Megasthenes Meleagros Memnon Menandros - Menedemos Menelaos Menes Menidas Menippos Menon Menos Metrodoros Metron Milon Mnaseas - Mnesidemos Molon Nabis Neaichmos Nearchos Neoptolemos Nikagoras Nikandros Nikanor - Nikarchos Nikephoros Nikeratos Niketes Nikias Nikodoros Nikokles Nikokrates Nikokreon - Nikomachos Nikomedes Nikostratos Numenios Olympiodoros Onomarchos Onomastos Ophellas - Orestes Paionios Pairisades Pantaleon Pantauchos Pantordanos Parmenion Patrokles Pausanias - Peithagoras Peithon Pelopidas Pelops Perdikkas Peroidas Perseus Peukestas Peukolaos - Pherekles Philemon Philetairos Philetas Philinos Philippos Philokles Philon Philonides - Philopoimenos Philotas Philoxenos Phrynichos Phylarkhos Phyromachos Platon Pleistarchos - Polemon Polybios Polydamas Polydoros Polyeuktos Polygnotos Polyperchon Poseidippos - Poseidonios Praxibulos Praxiteles Prepelaos Proteas Ptolemaios Pyrrhias Pyrrhos Pytheas - Pythodelos Satyros Seleukos Simmias Simonides Sophytes Sopolis Sosistratos Sosthenes - Sostratos Sotas Spalyris Spartokos Stasanor Stilpon Stratokles Straton Stratonikos Taurion - Tauriskos Teisikrates Telesarchos Thearidas Themistios Theodamas Theodoros Theodotos - Theokritos Theophilos Theophrastos Thoas Thoinias Thoinon Thrasykles Timaios Timarchos - Timoleon Timotheos Tryphon Xanthippos Xenares Xenokrates Xenophon Zeionises Zenon Zeuxis - Zoilos Zopyrion - Argaios Dioskourides Dokimos Telesphoros - } - - female_names = { - Charis Demetria Diantha Dionysia Agathokleia Agiatis Antiochis Apame - Apollonia Ariadne Arsinoe Artemisia Athenais Belistiche Berenike Damarate - Daphne Demo Elpis Eirene Euphemia Euthalia Hypatia Kandake Kassandra Megaira - Melaina Narkissa Nysa Olympia Phila Phile Eurydike Histieia Isidora Kalliope - Kallista Kellanthis Kleio Kratesikleia Lanassa Laodike - Libys Lysandra Lysis Mestris Monime Nephoris Oinanthe - Phthia Ptolema Sofia Sostrate Thais Theophila Thetima Timo Xanthe Xene Xenia - Ptolemais Selene Sophe Stratonike Theoxene Thoeris Tryphaina Zosime - Ada Aigyptia Anthis Antigona Antigone Aphrodisia Archestrate Archilla Archippe Aristagora - Ariste Aristion Aristo Aristoboule Aristodike Aristokleia Aristokrateia Aristomache - Aristonike Aristylla Artemis Aspasia Beroaia Biote Boidion Chairestrate Chairippe Choirine - Chrysilla Chrysis Deidamia Demokrateia Demostrate Diokleia Doris Dorkas Eukleia Eukoline - Euphrosyne Euporia Eutychis Glykera Hedeia Hediste Hedyle Hedyline Herais Hiero Hierokleia - Hippostrate Homolois Kadmeia Kallimache Kallippe Kallis Kallistion Kallisto Kallistomache - Kallistrate Kleagora Kleariste Kleino Kleito Kleo Kleopatra Kleostrate Krateia Leaina - Leontis Lysimache Lysistrate Malthake Mania Melissa Melitta Menestrate Meniske Metrodora - Mika Mnesarete Mnesistrate Murrhine Nausistrate Nikagora Nikaia Nikareta Nikarete Nikeso - Niko Nikomache Nikostrate Olympias Pamphile Parthenis Patrokleia Phanagora Phano - Phanostrate Philainis Phileia Philias Philinna Philippa Philista Phillo Philokleia - Philostrate Philotera Philotis Philoumene Philoxena Plangon Plathane Pythias - Rhode Satyra Sima Simale Simon Syra Theano Theodora Theodote Thessalonike Thraitta - Timagora Timarete Timokleia Timostrate Troias Xeno Xenokrateia Zopyra Zopyris - Nikesipolis Gygaia - } - - dynasty_of_location_prefix = "dynnp_of" -} diff --git a/common/culture/name_lists/00_dravidian.txt b/common/culture/name_lists/00_dravidian.txt deleted file mode 100644 index 6b20a67d..00000000 --- a/common/culture/name_lists/00_dravidian.txt +++ /dev/null @@ -1,528 +0,0 @@ -name_list_tamil = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Aryacakravarti" - "dynn_Kulasekhara" - "dynn_Samoothiri" - "dynn_Perumadappu" - "dynn_Kadava" - { "dynn_Paraiyar" } - { "dynn_Aachari" } - { "dynn_Konar" } - { "dynn_Idaiyar" } - { "dynn_Reddiar" } - { "dynn_Udayar" } - { "dynn_Yadhavar" } - { "dynn_Iyer" } - { "dynn_Iyengar" } - { "dynn_Pillai" } - { "dynn_Mudaliar" } - { "dynn_Thevar" } - { "dynn_Nadar" } - { "dynn_Chettiar" } - { "dynn_Gounder" } - { "dynn_Naicker" } - { "dynn_Bai" } - { "dynn_Cavarai" } - { "dynn_Chandran" } - { "dynn_Chetti" } - { "dynn_Chettiar" } - { "dynn_Deva" } - { "dynn_Gopal" } - { "dynn_Kalla" } - { "dynn_Kallan" } - { "dynn_Kannan" } - { "dynn_Kavarai" } - { "dynn_Mudaliar" } - { "dynn_Narayanan" } - { "dynn_Odda" } - { "dynn_Oddai" } - { "dynn_Oddar" } - { "dynn_Oppara" } - { "dynn_Padaiyachi" } - { "dynn_Padiachy" } - { "dynn_Paraiya" } - { "dynn_Reddy" } - { "dynn_Thondan" } - { "dynn_Uppara" } - { "dynn_Vellala" } - { "dynn_Venkatesh" } - { "dynn_Wappara" } - { "dynn_Wodda" } - } - - dynasty_names = { - "dynn_Aryacakravarti" - "dynn_Kulasekhara" - "dynn_Samoothiri" - "dynn_Perumadappu" - "dynn_Kadava" - "dynn_Chera" - "dynn_Pallava" - "dynn_Ay" - "dynn_Ganga" - "dynn_Velir" - "dynn_Bana" - { "dynn_Paraiyar" } - { "dynn_Aachari" } - { "dynn_Konar" } - { "dynn_Idaiyar" } - { "dynn_Reddiar" } - { "dynn_Udayar" } - { "dynn_Yadhavar" } - { "dynn_Iyer" } - { "dynn_Iyengar" } - { "dynn_Pillai" } - { "dynn_Mudaliar" } - { "dynn_Thevar" } - { "dynn_Nadar" } - { "dynn_Chettiar" } - { "dynn_Gounder" } - { "dynn_Naicker" } - { "dynn_Bai" } - { "dynn_Cavarai" } - { "dynn_Chandran" } - { "dynn_Chetti" } - { "dynn_Chettiar" } - { "dynn_Deva" } - { "dynn_Kalla" } - { "dynn_Kallan" } - { "dynn_Kannan" } - { "dynn_Kavarai" } - { "dynn_Mudaliar" } - { "dynn_Narayanan" } - { "dynn_Odda" } - { "dynn_Oddai" } - { "dynn_Oddar" } - { "dynn_Oppara" } - { "dynn_Padaiyachi" } - { "dynn_Padiachy" } - { "dynn_Paraiya" } - { "dynn_Reddy" } - { "dynn_Thondan" } - { "dynn_Uppara" } - { "dynn_Vellala" } - { "dynn_Venkatesh" } - { "dynn_Wappara" } - { "dynn_Wodda" } - } - - male_names = { - Amarapuyankan AparA_cita AparA_citavarman AppU_taiyA_n ArikE_cari AriN_caya ArulmolitE_var - Arulmolivarman AtirA_cE_ntira Atitta AvaniyA_lappirantA_r Avraaham BrahmamA_rA_yar Cadayan Cankili Cataiyavarman CatturukA_lamakalA_tittan Cayantavarman - Celiyancentan CekarA_cacE_karan Cevakattevan CeyavI_ra Chaacko Chaandy Cimmavisnu CinkapA_ku CivakkoluntA_n Cuntara CA_ramutaiyA_n CA_ttanA_n - CI_vallapa CI_vallapan Daniyel Eappen EccavarA_kan Eisow ImpA_nA_yarpattan Irattapadikonda IrA_cacimman IrA_cakecaripanmar IrA_carA_ca - IrA_cA_cekara IrA_cA_tirA_ca IrA_cA_tirA_catevar IrA_cA_titta IrA_cE_ntira Ittac Iyob Kadarangkonda KanakacU_riya KantarA_titta - KaraikkiyemarrayilaiyA_n Karunandadakkan Karunandan Katunkon KilA_n KirA_marA_capattan KontA_n Kossy Kotukulapattan KulacE_kara KulacE_karan - KulO_ttunka KunapU_sana KunavI_ra Kurian Kutameratiruvatikal KO_pperuN_cimman Lukose MakE_ntiravarman ManappA_kkI_lan - ManavA_lapperumA_l MunnU_rruvappattan MA_mpA_kkamutaiyA_n MA_naticcuran MA_rapanmar MA_ravarman MA_rkantaiyan Markose MA_tevapattan MA_tevipattan Nantivarman - Naracimmavarman Nirupatunkavarman NiyA_yaparipA_lapattan NA_rpattennA_yirapattan NA_tittaN_cA_ttan PantA_ram - Parakesaripanmar ParamE_svaravarman Paranirupacinkam PararA_cacE_karan ParA_kkirama - ParA_nkucan ParA_ntaka Pathrose PaN_cavan Paulose Periyapillai PerumA_l PeruN_cintevar PiramA_rA_yan Piyliypaos PuvirA_ca PA_kkilA_n PA_larA_vA_yan Ranatitta - RanatI_ran Ravivarman Samuel Tantivarman Tennavan Thoma Tiruccirrampalapattan TirunattapperumA_l TirupuvanavI_ratevar Tripuvanacakkaravattikal - UravA_kkinA_n Utaiya Uttama Varakunan Varakunavarman VarO_taya Varughese VellantA_nkinA_n VicayA_laya VicayA_raka - VicayA_titta Vikkirama VikramA_tittA_ ViranA_rA_yanapattan VirA_cakecaripanmar VI_racE_kara VI_rakE_cari - VI_rarA_cE_ntira VI_rO_taya Yohannaan Yosef Zacharria A_ccinataratippan A_nU_rrenmanpiccan A_yirattalipattan - Naralokavira Vediarasan Kantan_Kumaran Kumaran Ravi - Venattadikal Ramakuta - - Budha Potha Chaunda Rudrama Nagasani Annaya Nijjayaraja Nagatiraja - Ganapatidev Jaggaraja Jaggadeva Edaraja Udaychoda Gokarna Malnathadeva - Ramanathadeva Visvanatha Annama Bolla Keta Tonda Meda Dinachintamani - Bachavarudhini Beta_Kshanipalaka Betaraja Danna Betana Lobhachalaka - Gonaga Bottubeta Sura Erra Niravadya Poranti Kusumayudha Ranamarda - Kokki Gonagudu - } - female_names = { - Aaleyaamma Accamma AccattE_vi Annamma AiyyA_rratikal AkkA_ranankayA_r Amittiravalli AmmaiyA_lvi AmmakkanA_r AmmankA_tE_vi AnkA_ti AramutaiyA_l - AricukA_ti Ariyapillai AriN_cikai AriN_cikaipirA_tti AriN_cikaippirA_ttiyA_r ArulmolinankaiyA_r Aruvanki AtavallA_l AtittapatA_riyA_r AtittapitA_ri - AtittapitA_riyA_r AtticapitA_riyA_r AvutaiyA_lccA_ni CankA_ni CantirA_dE_vi Cenkulam CeyyacO_lam CeyyavA_ymani CivatE_vi Civallapatevi - CorappaiyA_r CA_muntappai CE_ramankai CO_lamA_tE_vi Eccumantai Eluvanai EluvattU_r EtuttapA_tam IrA_cinkam IrA_cA_ticci IrA_cacuntari - Kalacci Kalicci Kanavati KannapparaciyA_r KantiyU_r KariyamA_tE_vi KarumA_nikkam KaucalaiyA_r Kavatiyakkan KaN_ciakkan KutitA_nkinA_l - KuN_caramalli KuN_ciramalli KA_muttiri KA_raikkA_l KO_kilA_nadigal KO_lA_liyA_r KO_malavalli KO_yinA_ccipitA_riyA_r KU_rrantE_vi KU_ttA_tunA_cci - MahA_deviyA_r MalaiyamA_n MalapA_ti MaraikkA_tu MaN_cavi MA_nikkam Mariamma MA_tE_vatikalA_r NakarattA_l NaltE_viyA_r NamaiyA_r NankaiyA_r Nantirinankai - Netuntukkai Nilammai Nimmatikal NA_cci NA_cciyA_lvi NA_rani NA_rA_yani NA_N_cU_ri NI_lakanti NI_liyA_r OlimatiyA_r OrriA_lvi Pavitram PennaraciyA_r - Peranankai PeriyanA_cci Perrappai PillayA_lvi PiramaccA_ni PiratamA_tevi PirriccA_ni PollA_tapillai PommavA_yi PonnampalattatikalA_r PunniyavA_tti PU_vA_nti - Raahelamma RA_catE_viyA_r RA_cakE_cari SA_mavA_yi Saramma Sosamma TaturA_ntakiyA_r TavaN_ceytA_l TayA_nitiyA_r Thresiamma TirumU_lattA_nam Tiruvaranki TiruvennA_val TiruvA_naikkA_vi - TiruvE_nkatam TunaiyiruntA_lcA_ni TA_natonkiyA_r TE_cappukal TE_mpA_vai TE_vA_nrA_l TU_nkA_nai UmaiyA_lvA_r Utaiyaval UtaiyaN_ceytA_l VaccavaiyA_r - Varakuni VatavA_yil Venankai VennA_val Vicciyakkan ViccA_tiri VikkiramA_titti ViraiyA_ccilai Vitari VA_navanmA_tE_vi - Kundavai Madhurantaki Kuntavaiyalvar Maturantikiyalvar - Arulmolinangai Mallambika Tikkambika Kamambika - } - - house_based_map_names = yes - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 - - dynasty_of_location_prefix = "dynnp_of" - - -} - -name_list_telugu = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Pattavardhani" - "dynn_Katakaraja" - "dynn_Durjaya" - "dynn_Aryyahu" - "dynn_Mitreyu" - "dynn_Panara" - "dynn_Velanati_Chola" - "dynn_Chalukya_Kakatiya" - { "dynn_Nara" } - { "dynn_Naidu" } - { "dynn_Agarwal" } - { "dynn_Arige" } - { "dynn_Aruna" } - { "dynn_Bai" } - { "dynn_Balija" } - { "dynn_Bellamkonda" } - { "dynn_Bethi" } - { "dynn_Chakkiliyan" } - { "dynn_Chakkiyam" } - { "dynn_Chand" } - { "dynn_Chavali" } - { "dynn_chetti" } - { "dynn_Choudray" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Durga" } - { "dynn_Gaddam" } - { "dynn_Gentoo" } - { "dynn_Gogula" } - { "dynn_Guntaka" } - { "dynn_Jadhav" } - { "dynn_Kapu" } - { "dynn_Konda" } - { "dynn_Komati" } - { "dynn_Konduru" } - { "dynn_Kometi" } - { "dynn_Kumari" } - { "dynn_Lakshmi" } - { "dynn_Madiga" } - { "dynn_Medidhi" } - { "dynn_Mekala" } - { "dynn_Mondithoka" } - { "dynn_Nallaparaju" } - { "dynn_Odde" } - { "dynn_Oleti" } - { "dynn_Palle" } - { "dynn_Pamireddy" } - { "dynn_Prasad" } - { "dynn_Raj" } - { "dynn_Raju" } - { "dynn_Ram" } - { "dynn_Reddy" } - { "dynn_Sahu" } - { "dynn_Sanagala" } - { "dynn_Shankar" } - { "dynn_Srivastav" } - { "dynn_Suresh" } - { "dynn_Tachuri" } - { "dynn_Telaga" } - { "dynn_Valeti" } - { "dynn_Vanga" } - { "dynn_Varma" } - { "dynn_Velama" } - { "dynn_Venkatesh" } - { "dynn_Yadav" } - } - - dynasty_names = { - "dynn_Pattavardhani" - "dynn_Mitreyu" - "dynn_Panara" - "dynn_natavadi" - "dynn_malyala" - "dynn_polavasa" - "dynn_induluri" - "dynn_kyastha" - "dynn_gona" - "dynn_bhargava" - "dynn_Kakatiya" - { "dynn_Nara" } - { "dynn_Naidu" } - { "dynn_Arige" } - { "dynn_Aruna" } - { "dynn_Bai" } - { "dynn_Balija" } - { "dynn_Bellamkonda" } - { "dynn_Bethi" } - { "dynn_Chakkiliyan" } - { "dynn_Chakkiyam" } - { "dynn_Chand" } - { "dynn_Chavali" } - { "dynn_chetti" } - { "dynn_Choudray" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Durga" } - { "dynn_Gaddam" } - { "dynn_Gentoo" } - { "dynn_Gogula" } - { "dynn_Guntaka" } - { "dynn_Jadhav" } - { "dynn_Kapu" } - { "dynn_Konda" } - { "dynn_Komati" } - { "dynn_Konduru" } - { "dynn_Kometi" } - { "dynn_Kumari" } - { "dynn_Lakshmi" } - { "dynn_Madiga" } - { "dynn_Medidhi" } - { "dynn_Mekala" } - { "dynn_Mondithoka" } - { "dynn_Nallaparaju" } - { "dynn_Odde" } - { "dynn_Oleti" } - { "dynn_Palle" } - { "dynn_Prasad" } - { "dynn_Ram" } - { "dynn_Reddy" } - { "dynn_Sahu" } - { "dynn_Sanagala" } - { "dynn_Shankar" } - { "dynn_Srivastav" } - { "dynn_Tachuri" } - { "dynn_Telaga" } - { "dynn_Valeti" } - { "dynn_Vanga" } - { "dynn_Varma" } - { "dynn_Velama" } - { "dynn_Venkatesh" } - { "dynn_Yadav" } - } - - male_names = { - Allada Allayavema Amma Ammaraja Anavema Anavota Ayyapayya Baladitya Ballaladeva Beta Bhima Bhandanaditya Chennappa - Danamava Devanayaka Durgaraja Ganapathideva Ganapathinayaka Indrabhattaraka Jayasimha Kaapayanayaka Kadeyaraja Kalakampa - Kammanayaka Katayavema Kumaragiri Kubjavishnuvardhana Mahadeva Mahakala Mangiyuvaraja Mallapa Nachana Narendra - Niravadyadhavala Nrpakama Pandaranga Prataparudra Prola Prolayanayak Prolayavema Prthiviyaraja Rajanayaka Rajaraja - Rudradeva Saktivarman Singamanayaka Somaditya Vengabhupathi Vijayaditya Vimaladitya Virabhadra Vishnuvardhana - Yuddamalla Yuddhamalla - } - female_names = { - Anitalli Chamekamba Chandena Chellava Gamakamba Hariharamba Nagipoti Pammava Rudramba Rudramadevi Srimahadevi Tundaka - } - - house_based_map_names = yes - - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - dynasty_of_location_prefix = "dynnp_of" - - -} - -name_list_gond = { - - dynasty_names = { - "dynn_Chanda" - "dynn_Rajgond" - "dynn_Deogadhi" - "dynn_Ballar_Sahi" - "dynn_Haihaya" - "dynn_Nagavamsi" - "dynn_Bhanja" - "dynn_Mana" - "dynn_Atram" - "dynn_Halba" - "dynn_Dher" - "dynn_Murani" - "dynn_Madia" - "dynn_Gowari" - "dynn_Khatulwar" - "dynn_Naikpod" - "dynn_Sonjhari" - "dynn_Thoti" - "dynn_Mannewar" - "dynn_Jhareya" - "dynn_Koya" - "dynn_gona" - - { "dynn_Angadi" } - { "dynn_Bhat" } - { "dynn_Bhatt" } - { "dynn_Biradar" } - { "dynn_Halivar" } - { "dynn_Hiremath" } - { "dynn_Jadhav" } - { "dynn_Nayak" } - { "dynn_Padukone" } - { "dynn_Prasad" } - { "dynn_Raju" } - { "dynn_Shankar" } - { "dynn_Srivastava" } - { "dynn_Suresh" } - { "dynn_Talavar" } - { "dynn_Venkatesh" } - { "dynn_Yadav" } - } - - male_names = { - Narsinghdeva Nar_Singh Arjuna Sangrama Daipat Vir Vir_Narayana Chandra Hir_Sah Hirde Madhukara - Dhundya Krasna Bir Hiradi Ram Nilkanth Bakht Lokba Babji_Ballal_Sah - - Talwar_Singh Kesar_Singh Dinkar_Singh Surja_Ballal_Singh Khandkya_Ballal_Singh Bhuma Kondya_Sah Hir_Singh Kharja_Ballal_Singh - Bhim_Ballal_Singh Soorjat_Badwaik Kurumpruhoda Kol_Bheel - - - Achugi Adikavi Ahavamalla Anekonda Asaga Avinita Ayanna Bijjama Bukka Butuga - Chavundaraya Dashavarman Dhruva Durgasimha Durvinita Ereganga Ereyanga - Gangaraja Gajankusha Gobburi Govinda Hakka Harihara Harivarman Indra - Jagadhekamalla Jagaraya Jagattunga Jayasimha Jogama - Kambarasa Kannama Karka Khottiga Kiriyasaga Kirtivarman Konganivarman Krishna - Madhava Madhura Mallugi Mangalesi Marasimha Marulaganga Mushkara Narasanayaka - Narasimha Neetimarga Nripakama Permanadi Polavira Praudharaya Pulakesi Purandaradasa - Rachamalla Ramachandra Ramadeva Ramaraya Sankama Satyasraya Sharva Shivamara Singhana Sovideva Sripadaraya Sripurusha Sriranga Srivikrama Tailapa Thimma Tirumalaraya - Uchita Venkatadri Venkatapathi Vikramaditya Vijayaditya Vinayaditya Viraballala Viravijaya - Virupaksha Vishnugopa Vishnuvardhana Yachama Yachamanedu - Achyutadeva Sadashiva Vendakadri Viranarasimha - } - female_names = { - Durgavati Hirai Ratna_Kuvar - - Akkadevi Bhavanaga Bijjabbe Chandaladevi Chandrabbalabbe Gangambika Kundakadevi - Lakshmi Mahadevi Mailaladevi Obayamma Pertal Revakanimmadi Shantaladevi Vijamba - Chinnambike Thirumalambike - } - - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - dynasty_of_location_prefix = "dynnp_of" - - house_based_map_names = yes -} - -name_list_kannada = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Sangama" - "dynn_Wodeyar" - "dynn_Hoysala_Alupa" - "dynn_Pallava" - "dynn_Chola" - "dynn_Bana" - "dynn_Vaidumba" - { "dynnp_of" "dynn_Malwa" } - "dynn_Karhade" - { "dynn_Agarwal" } - { "dynn_Angadi" } - { "dynn_Bhat" } - { "dynn_Bhatt" } - { "dynn_Biradar" } - { "dynn_Halivar" } - { "dynn_Hiremath" } - { "dynn_Jadhav" } - { "dynn_Kamat" } - { "dynn_Krishna" } - { "dynn_Kulakarni" } - { "dynn_Nayak" } - { "dynn_Padukone" } - { "dynn_Prasad" } - { "dynn_Raj" } - { "dynn_Raju" } - { "dynn_Reddy" } - { "dynn_Shankar" } - { "dynn_Shetty" } - { "dynn_Srivastava" } - { "dynn_Suresh" } - { "dynn_Talavar" } - { "dynn_Venkatesh" } - { "dynn_Yadav" } - } - - dynasty_names = { - "dynn_Sangama" - "dynn_Wodeyar" - "dynn_Pallava" - "dynn_Chola" - "dynn_Bana" - "dynn_Vaidumba" - "dynn_Karhade" - "dynn_Ganga" - { "dynn_Agarwal" } - { "dynn_Angadi" } - { "dynn_Bhat" } - { "dynn_Bhatt" } - { "dynn_Biradar" } - { "dynn_Halivar" } - { "dynn_Hiremath" } - { "dynn_Jadhav" } - { "dynn_Kamat" } - { "dynn_Krishna" } - { "dynn_Kulakarni" } - { "dynn_Padukone" } - { "dynn_Raj" } - { "dynn_Raju" } - { "dynn_Reddy" } - { "dynn_Shetty" } - { "dynn_Srivastava" } - { "dynn_Talavar" } - { "dynn_Venkatesh" } - { "dynn_Yadav" } - } - - male_names = { - Achugi Adikavi Ahavamalla Amoghavarsha Anekonda Asaga Avinita Ayanna Bhuvikrama Bijjama Bukka Butuga - Chavundaraya Dantidurga Dashavarman Dhruva Durgasimha Durvinita Ereganga Ereyanga - Gangaraja Gajankusha Gobburi Govinda Hakka Harihara Harivarman Indra - Jagadhekamalla Jagaraya Jagattunga Jayasimha Jogama - Kambarasa Kannama Karka Khottiga Kiriyasaga Kirtivarman Konganivarman Krishna - Madhava Madhura Mallikarjuna Mallugi Mangalesi Marasimha Marulaganga Mushkara Narasanayaka - Narasimha Neetimarga Nripakama Permadi Permanadi Polavira Praudharaya Pulakesi Purandaradasa - Rachamalla Ramachandra Ramadeva Ramaraya Sankama Satyasraya Sharva Shivamara Singhana - Somesvara Sovideva Sripadaraya Sripurusha Sriranga Srivikrama Tailapa Thimma Tirumalaraya - Uchita Venkatadri Venkatapathi Vikramaditya Vijayaditya Vinayaditya Viraballala Viravijaya - Virupaksha Vishnugopa Vishnuvardhana Yachama Yachamanedu - Achyutadeva Krishnadevaraya Sadashiva Vendakadri Viranarasimha - } - female_names = { - Akkadevi Bhavanaga Bijjabbe Chandaladevi Chandrabbalabbe Gangambika Hoysaladevi Kundakadevi - Lakshmi Mahadevi Mailaladevi Obayamma Pertal Revakanimmadi Shantaladevi Vijamba - Chinnambike Thirumalambike Sangappai Sattiyavvai - } - - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - dynasty_of_location_prefix = "dynnp_of" - - house_based_map_names = yes -} diff --git a/common/culture/name_lists/00_east_african.txt b/common/culture/name_lists/00_east_african.txt deleted file mode 100644 index 20062b4a..00000000 --- a/common/culture/name_lists/00_east_african.txt +++ /dev/null @@ -1,284 +0,0 @@ -name_list_ethiopian = { - - cadet_dynasty_names = { - "dynn_Solomonid" - "dynn_Muqurrid" - "dynn_Pakhoras" - "dynn_Ramlid" - "dynn_Sebsibeid" - "dynn_Kebedeid" - "dynn_Bekeleid" - "dynn_Abateid" - "dynn_Sabraid" - "dynn_Astatkeid" - "dynn_Habeshid" - "dynn_DubE_" - "dynn_Gobena" - "dynn_Selassie" - "dynn_Dengel" - "dynn_Mesafint" - "dynn_Sehul" - "dynn_Nadjahid" - "dynn_Zagwe" - } - - dynasty_names = { - "dynn_Solomonid" - "dynn_Muqurrid" - "dynn_Pakhoras" - "dynn_Ramlid" - "dynn_Sebsibeid" - "dynn_Kebedeid" - "dynn_Bekeleid" - "dynn_Abateid" - "dynn_Sabraid" - "dynn_Astatkeid" - "dynn_Habeshid" - "dynn_DubE_" - "dynn_Gobena" - "dynn_Selassie" - "dynn_Dengel" - "dynn_Mesafint" - "dynn_Sehul" - "dynn_Nadjahid" - "dynn_Zagwe" - } - - male_names = { - Amare Dahnay Desta Getachew Geteye Girma Iskinder Abai Abebe Afework Aman Assefa Atoberhan Azmera Bekele Benaim Berhanu Berhanua Berihun Berta Bworo Daniachew Dawit Demissie Eremias Ezana Fasilidas Fethee Gabra Gebereal Gebre Gondar Hackeem Haeran Hagos Hakeem Hakiem Hakim Hakym Iskander Iskinder Iyasu Jima Kafa Kaleb Kelile Kelyle Kifle Lebna Lema Loua Mamo Mekonnen Melaku Mengesha Merille Miruts Negash Negasi Negus Ogbae Ogbai Oromo Rahad Selassie Semer Semere Sisay Tamirat Tariku Taye Tefere Teferi Teka Tekle Tengene Teruworq Tesfaye Tessema Tewodros Yacob Yohannas Yonas Zula - } - - female_names = { - Habesha Abeba Abrihet Adanech Adina Alaworld Alitash Amhara Ayana Bathsheba Bekele Belkis Berhane Berta Cheren China Debre Debtera Desse - Desta Dilla Falasha Falashina Fana Fannah Genat Hagos Jahzara Jazarah Kayla Kelile Kelyle Keren Kess Kifle Lishan Louama Magdala Maharene - Makda Makeda Mandera Melesse Mellesse Misrak Negasi Nishan Nyala Qwara Retta Seble Sela Selamawit Selassie Semhar Senalat Sheba Shinasha - Sisay Tavavich Teru Totit Tsage Wagaye Yehudit Zala Zauditu Zeina Zena Zenia - } - - #founder_named_dynasties = yes - - - - mercenary_names = { - { name = "mercenary_company_geezan_company" } - { name = "mercenary_company_tigrayit_band" } - } -} - -name_list_nubian = { - - cadet_dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - male_names = { - AarO_n Aberikos Abraam AN_gelos Andreas Athanasios BalO_ Bartholomaios BirE_l Chael Christophoros Dauid Dimetheos - Dioskoros DiO_nisios Eliezer Eionkouda Emmanouel EnO_ch EphannE_ Epimachos Epiphanios Gabriel Gabrielkouda Gabrielophorou Gennatios - GeO_rgios HE_lias Hoase Hoassi Hoasse Iacob Ieremias IE_sous IE_sousinkouda IO_annou IO_annE_s Iordanes Ioseph Kalinikos Kollouthos - Krisanthos Kuriakos Kurillos Lazaros Leon Leontios Makarios Mariana Mariankouda Marianos Marios Markos Marturophoros - MaS_anN_al Maththias ME_lE_nkouda Mena Menankouda Merkourios MichaE_l MichaE_lkouda Mouses Orna Panigiros Papasinen Papasinkouda Patrikios - Paulos Petros Petrou Philotheos Philemon Prochoros Raphael Raphaelkouda Samson Senouthios Sentiko Sergios Simeoni Soizuros SolomO_n Sotinkouda Stephanos - Stephanou Thadeosi TheodO_ros Theodosios Theodote Thoma TophE_na Tirsakouni Zacharias Zosima - } - female_names = { - Agathe Alethia Anthelia Athanasia ChaelsoN_oja Chrissa Christina Douriko Egaloskoura Eikkir Eionmnne EionN_oka Eitou Elisabeth Eirena Eirene Eirota EirotatouN_N_lki - Entaeiri EO_neille EphannE_ Epimachosi Eudosia Eulabia Eusebia Eustephanou Fatima Genseoua Hellene Hemene Iannia IE_sousyko Ioustina Kel Kerike Kersiami Kettoudi - Keudonia Kurake MaraN_a Maria Mariam Mariane Marianou MichaE_liko N_aS_S_a N_eS_S_adena N_ejin N_ilesa N_ojjl N_oltou N_onne N_onnen N_ouddl N_ssitkitol OuarenO_ Patrikia Pelagia - Penatti Pesanthia Petronia Prisisilla Rahimah Sophia Sousanna Staurophania Theobronia Theodorake Theodosia Theognosta Theophania Theophilia Theipisthe Theozia Zerebekka - } - - #founder_named_dynasties = yes - - - - mercenary_names = { - { name = "mercenary_company_noba_company" } - { name = "mercenary_company_kushite_band" } - { name = "mercenary_company_company_of_meroe" } - } -} - -name_list_welayta = { - - cadet_dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - male_names = { - Abadir Abdale Abdirahman Abdulah Abram Abu-Bakr Adan Adeer Ahmed Ali Amlale Aul Awe - Aydahis Balad Baraka Barakat Ciise Dagale Dhidhin Hamalmal Hamar Hamid Hantale Haqq Harire - Ibrahim Irir Isman Jamal Kadhafo Kedafu Khalaf Liban Mahammad Mahamed - Mahamud Mansur Nahwi Naleye Nassir Nur Omer Sa_ad Sa_adaddin Sabir Sabr Sabraddin - Sadiq Salah Siciid Talha Umar Umardin Yayyo Yusuf Zuber - } - - female_names = { - Aasha Adey Alaso Ambro Amburo Asha Asli Astur Awa Awrala Ayaan Barni Basr Beydaan - Billan Canab Cawo Deeqa Delombira Dobira Faadumo Fathia Fawzia Geesi Haweeya Hibaaq - Hodan Hoodo Iftiin Jiinow Khadra Ladan Leyla Libin Luula Magol Maka Mariam - Mulki Nasteexo Sagal Sahra Sufia Ubah Ubax Waris Xalwo - } - - #founder_named_dynasties = yes - - - - mercenary_names = { - { name = "mercenary_company_company_of_the_leopard" } - { name = "mercenary_company_gondershe_band" } - { name = "mercenary_company_guardians_of_almnara" } - } -} - -name_list_daju = { - - cadet_dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - male_names = { - Adam Ahmed Anqarib Asil Bakhit Ber Bogirg Bokdoru Bolad Born Bug - Chang Chaski Dahab Dong Ede Ett Ferne Gaguwe Galan Gelgel Gon - Habib Hajar Hassaballah Ibedou Ibrahim Ishaq Issa Izzo Jal Jamne - Kalge Kamalgi Karim Kasefroge Kosom Koydin Kukne Kur Lanhjin - Magjin Maland Malaz Mbakin Meayge Meewge Moussa Moustafa Murtin - Omar Pen Pid Risha Rong Salih Shendi Shuaeib Wadanh Youssouf Yug - } - - female_names = { - Amm Awdinh Bakhita Ber Bis Bor Buk Chaski Emsire - Gaguwe Gosgod Hamam Jamne Kakaw Kimzir Kubuy Kugurg Kulk - Lanhjin Maj Mariam Musin Ngid Okk Pid Raqiq Ur Usk Wadanh - } - - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - #founder_named_dynasties = yes - - pat_grf_name_chance = 60 - mat_grf_name_chance = 20 - father_name_chance = 10 - - pat_grm_name_chance = 40 - mat_grm_name_chance = 20 - mother_name_chance = 30 - - - - mercenary_names = { - { name = "mercenary_company_army_of_the_crossing" } - { name = "mercenary_company_beja_place_band" } - { name = "mercenary_company_riders_of_the_mountains" } - } -} diff --git a/common/culture/name_lists/00_indo_aryan.txt b/common/culture/name_lists/00_indo_aryan.txt deleted file mode 100644 index b303bf2a..00000000 --- a/common/culture/name_lists/00_indo_aryan.txt +++ /dev/null @@ -1,2101 +0,0 @@ -name_list_bengali = { - - house_based_map_names = yes - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Samatata" - "dynn_Candravamsa" - "dynn_Sena" - "dynn_Sur" - "dynn_Karnata" - "dynn_Gupta" - "dynn_Mana" - "dynn_Ranaka" - "dynn_Gupta" - "dynn_Khayarwala" - "dynn_Chero" - "dynn_Sena" - "dynn_Khayarwala" - "dynn_Gupta" - "dynn_Mana" - "dynn_Deva" - "dynn_Pattikara" - "dynn_Deva" - "dynn_Khadi" - "dynn_Aparamandara" - { "dynn_Banerjee" } - { "dynn_Bagchi" } - { "dynn_Bhaduri" } - { "dynn_Bhattacharjee" } - { "dynn_Chakraborty" } - { "dynn_Chatterjee" } - { "dynn_Ganguly" } - { "dynn_Goswami" } - { "dynn_Ghoshal" } - { "dynn_Lahiri" } - { "dynn_Maitra" } - { "dynn_Mukherjee" } - { "dynn_Sanyal" } - { "dynn_Sengupta" } - { "dynn_Dasgupta" } - { "dynn_Duttagupta" } - { "dynn_Gupta" } - { "dynn_Sen_Sharma" } - { "dynn_Basu" } - { "dynn_Bose" } - { "dynn_Dutta" } - { "dynn_Ghosh" } - { "dynn_Choudhury" } - { "dynn_Guha" } - { "dynn_Gain" } - { "dynn_Mitra" } - { "dynn_Singh" } - { "dynn_Sinha" } - { "dynn_Sen" } - { "dynn_Pal" } - { "dynn_Dev" } - { "dynn_Palit" } - { "dynn_Dam" } - { "dynn_Kar" } - { "dynn_Nandi" } - { "dynn_Sarkar" } - { "dynn_Acharya" } - { "dynn_Adhikari" } - { "dynn_Agarwal" } - { "dynn_Bakshi" } - { "dynn_Bangla" } - { "dynn_Barman" } - { "dynn_Basu" } - { "dynn_Bhagat" } - { "dynn_Bhaumik" } - { "dynn_Bhuiyan" } - { "dynn_Biswas" } - { "dynn_Chakrabarti" } - { "dynn_Chand" } - { "dynn_Chaudhary" } - { "dynn_Dasgupta" } - { "dynn_Datta" } - { "dynn_Debnath" } - { "dynn_Devi" } - { "dynn_Dhar" } - { "dynn_Emu" } - { "dynn_Ganguly" } - { "dynn_Ghosh" } - { "dynn_Ghoshal" } - { "dynn_Hazra" } - { "dynn_Hoque" } - { "dynn_Jahan" } - { "dynn_Jarin" } - { "dynn_Jha" } - { "dynn_Jothy" } - { "dynn_Kajal" } - { "dynn_Karal" } - { "dynn_Kumari" } - { "dynn_Lal" } - { "dynn_Maharaj" } - { "dynn_Mahato" } - { "dynn_Mahi" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Miah" } - { "dynn_Mukerjee" } - { "dynn_Munna" } - { "dynn_Nath" } - { "dynn_Noor" } - { "dynn_Pandey" } - { "dynn_Pandit" } - { "dynn_Pradhan" } - { "dynn_Sahoo" } - { "dynn_Sinha" } - { "dynn_Tagore" } - { "dynn_Thapa" } - } - - dynasty_names = { - "dynn_Samatata" - "dynn_Candravamsa" - "dynn_Sena" - "dynn_Sur" - "dynn_Karnata" - "dynn_Gupta" - "dynn_Mana" - "dynn_Ranaka" - "dynn_Gupta" - "dynn_Khayarwala" - "dynn_Chero" - "dynn_Sena" - "dynn_Khayarwala" - "dynn_Gupta" - "dynn_Mana" - "dynn_Deva" - "dynn_Pattikara" - "dynn_Deva" - "dynn_Khadi" - "dynn_Aparamandara" - { "dynn_Banerjee" } - { "dynn_Bagchi" } - { "dynn_Bhaduri" } - { "dynn_Bhattacharjee" } - { "dynn_Chakraborty" } - { "dynn_Chatterjee" } - { "dynn_Ganguly" } - { "dynn_Goswami" } - { "dynn_Ghoshal" } - { "dynn_Lahiri" } - { "dynn_Maitra" } - { "dynn_Mukherjee" } - { "dynn_Sanyal" } - { "dynn_Sengupta" } - { "dynn_Dasgupta" } - { "dynn_Duttagupta" } - { "dynn_Gupta" } - { "dynn_Sen_Sharma" } - { "dynn_Basu" } - { "dynn_Bose" } - { "dynn_Dutta" } - { "dynn_Ghosh" } - { "dynn_Choudhury" } - { "dynn_Guha" } - { "dynn_Gain" } - { "dynn_Mitra" } - { "dynn_Singh" } - { "dynn_Sinha" } - { "dynn_Sen" } - { "dynn_Pal" } - { "dynn_Dev" } - { "dynn_Palit" } - { "dynn_Dam" } - { "dynn_Kar" } - { "dynn_Nandi" } - { "dynn_Sarkar" } - { "dynn_Acharya" } - { "dynn_Adhikari" } - { "dynn_Agarwal" } - { "dynn_Bakshi" } - { "dynn_Bangla" } - { "dynn_Barman" } - { "dynn_Basu" } - { "dynn_Bhagat" } - { "dynn_Bhaumik" } - { "dynn_Bhuiyan" } - { "dynn_Biswas" } - { "dynn_Chakrabarti" } - { "dynn_Chand" } - { "dynn_Chaudhary" } - { "dynn_Dasgupta" } - { "dynn_Datta" } - { "dynn_Debnath" } - { "dynn_Devi" } - { "dynn_Dhar" } - { "dynn_Emu" } - { "dynn_Ganguly" } - { "dynn_Ghosh" } - { "dynn_Ghoshal" } - { "dynn_Hazra" } - { "dynn_Hoque" } - { "dynn_Jahan" } - { "dynn_Jarin" } - { "dynn_Jha" } - { "dynn_Jothy" } - { "dynn_Kajal" } - { "dynn_Karal" } - { "dynn_Kumari" } - { "dynn_Lal" } - { "dynn_Maharaj" } - { "dynn_Mahato" } - { "dynn_Mahi" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Miah" } - { "dynn_Mukerjee" } - { "dynn_Munna" } - { "dynn_Nath" } - { "dynn_Noor" } - { "dynn_Pandey" } - { "dynn_Pandit" } - { "dynn_Pradhan" } - { "dynn_Sahoo" } - { "dynn_Sinha" } - { "dynn_Tagore" } - { "dynn_Thapa" } - } - - male_names = { - Amritnarayan Balabhata Balinarayan Ballalsen Basudevnayaran - Bhagadatta Bhairabendranarayan Bhatta Bhavashankari Bhimsingha Birnayaran - Chandrasen Chandranarayan Chaturanan Chilarai - Danujmadhava Dasharathadeva Devakhadga Devapala Devendranarayan - Dhairjendranayaran Dharendranarayan Dharmapala Dhirsingha - Gajnarayan Gopala Govindachandra Govindapala - Hajo Harendranarayan Haridevnarayan Hariyamandal Hemantasen Indranarayan - Jadu Jagaddipendranarayan Jatakhadga Jayanarayan Jayapala Jitendranarayan - Kalyanachandra Kamalnarayan Keshabsen Khadgodyama Krishanmishra Krishnaroy - Kumarapala Kumudnarayan Ladahachandra Lakshmansen Lakshmichandra Lakshminarayan Lomapada - Madanapala Mahendrapala Mahendrasingha Mahindranarayan Mahipala Manava Mukundanarayan - Naranarayan Narasingha Narayanapala Narendranarayan Nayapala Nripendranarayan - Parikshitnayaran Prananarayan Prannath Pratapnarayan Pratapnarayanroy Pushkaranadhipa - Raghudev Rajabhata Rajadinaj Rajaganesha Rajendranarayan Rajrajendranarayan Rajyapala - Ramapala Ramnath Ranasura Ranjitsingha Roopnarayan Rudranarayan - Samudrasen Shanibhangar Shashanka Shivanarayan Shivendranarayan Shukladhwaj Shurapala - Srichandra Srimanta Subarnachandra Sukhdev Suryanarayan Traillokyachandra - Udirnakhadga Uditanarayan Upendranayaran Vakapala Vapyata Vigrahapala - Vijaynarayan Vijaysen Vijaysingha Virajdendranarayan Vishwarupsen Vishwasingha - "Bhairav_Singh" "Bhavesh" "Bhogishwar" "Dev_Singh" "Dhir_Singh" Dhireshwar - "Ganeshwar_Singh" "Gang_Dev" Harasimhadeva "Hari_Singh" "Hemant_Sen" - "Kameshwar" "Kirti_Singh" Jyotirishwar "Laxman_Sen" "Laxminath_Singh_Dev" Madanpal - "Nanya_Dev" "Nar_Singh" "Narsingh_Dev" "Padma_Singh" "Rambhadra_Singh_Dev" Rameshwar - "Samant_Sen" "Shakrasingh_Dev" "Shiv_Singh" "Vallal_Sen" "Vijay_Sen" - Agnimitra Andhraka Ayus Bhagabhadra Bhikhari Bhumimitra Devabhuti Ghosha Gopal Govindapal - Khsetravridha Maharshi Mahendra Maurayadhwaj Narayana Pulindaka Pusyamitra - Sahtiya Susarman Vajramitra Vasudeva Vasujyeshtha Vasumitra - } - - female_names = { - Amrapali Amritakala Asima Bhavashankari "Bishwas_Devi" Bhogavati Bibibai Dattadevi Devavati "Devi_Ahiylya" Gandharavati - Gayatri Himadrija Hira Jira Kanchani Mahendrani Malavyadevi Nayanadevi Rani Ratnadevi Suvrata - Syamadevi Vijnayavati Vina Yajnavati - } - - mercenary_names = { - { name = "mercenary_company_company_of_the_delta" } - { name = "mercenary_company_bengal_host" } - } -} -name_list_oriya = { - - house_based_map_names = yes - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Bhanja" - "dynn_Gajapati" - "dynn_Mayura" - "dynn_Shailobhava" - "dynn_Kesari" - "dynn_Bhanja" - "dynn_Bhauma" - "dynn_Bhaumakara" - "dynn_Kalinga" - "dynn_Nanda" - "dynn_Mahameghavahana" - "dynn_Satavahana" - "dynn_Naga" - "dynn_Nala" - "dynn_Parvatadvarka" - "dynn_Sura" - "dynn_Sharabhapuriya" - "dynn_Mathara" - "dynn_Vigraha" - "dynn_Mudgalas" - "dynn_Durjaya" - "dynn_Shailodbhava" - "dynn_Bhaumakara" - "dynn_Somvanshi" - "dynn_Cindaka_Naga" - "dynn_Eastern_Ganga" - "dynn_Gajapati" - "dynn_Bhoi" - } - - dynasty_names = { - "dynn_Chandravansha" - "dynn_Suryavansha" - "dynn_Bhanja" - "dynn_Gajapati" - "dynn_Mayura" - "dynn_Shailobhava" - "dynn_Kesari" - "dynn_Bhanja" - "dynn_Bhauma" - "dynn_Bhaumakara" - "dynn_Kalinga" - "dynn_Nanda" - "dynn_Mahameghavahana" - "dynn_Satavahana" - "dynn_Naga" - "dynn_Nala" - "dynn_Parvatadvarka" - "dynn_Sura" - "dynn_Sharabhapuriya" - "dynn_Mathara" - "dynn_Vigraha" - "dynn_Mudgalas" - "dynn_Durjaya" - "dynn_Shailodbhava" - "dynn_Somvanshi" - "dynn_Bhoi" - } - - male_names = { - Anangabhima Anantasaktivarman Anantavarman Apsaradeva Arthapatiraja Ayasobhita Balabhadra Barjena - Betta Bhanu Bhavadattavarman Bhimaratha Bhimasena Bhramarbara Bhupendra Bhupendravarman Chandravarman - Charamparaja Damodara Danai Danarnava Dayita Dayitavarman Devananda Devendravarman Dharmaraja Dharmarstha - Dhruvananda Dibyasingha Digbhanja Durgaraja Durjaya Durjayabhanja Gangadhara Gandhata Gangakavilasa Gayada - Gopinatha Gunamaharnava Gunarnava Gundama Hamvira Harekrushna Hastivarman Hemantavarman Indranatha Indravarman - Jahangir Janmejaya Jayananda Jayaraja Jayasimha Jayasthambha Jayavarma Jayavarmadeva Kakharua Kalaha Kalahastambha - Kalasa Kalua Kalyankalasa Kamarnava Kanchana Kanchanastambha Kapilendra Kapilendradeva Karnadeva Khadaga Kotta - Kottabhanja Ksemankaradeva Kulastambha Lakshmikaradeva Madhavaraja Madhavavarman Madhukamarnava Mahendraditya - Mahendravarman Mahinda Manamatra Matradhyarya Mukunda Nahusa Nandaprabhanjana Nandaprabhanjanavarman Nandavarman - Narasimha Narendra Netta Nettabhanja Padmanava Paramananda Prasannamatra Prataparudra Pravaraja Prithivarman - Prithivimaharaja Prithvibhanja Prithvidena Pulindasena Puranjaya Purushottama Rajabhanja Rajaraja Ramachandra - Ramachandradeva Ranabhanja Ranabhita Ranadurjaya Ranga Rangabhanja Sailobhava Sainyabita Saktivarman Samantavarman - Sambhuyasa Sankaravarman Santikaradeva Sarabha Satru Satrubhanja Satyavarman Sila Silabhanja Sivakaradeva Sivananda - Skandavarman Sobhanaraja Solyana Subhakaradeva Sudevaraja Suravala Teja Tejavarsha Tustikara Udaya Udayavarsha Udita - Udyotakesari Umavarman Unmattasimha Utidavarsha Vaaraharaja Vajrahasta Vidhyadhara Vidhyadharabhanja Vijaya Vinayaditya - Vinita Vishakavarman Vrishadhvaja Vyaghraraja Yayati - Vichitravirya Kesaba Madhaba Languli Balarama Biswanatha Harisarana Raghunatha - } - female_names = { - Ahiavadevi Apsaradevi Bhogavati Dandi Dandimahadevi Dattadevi Devavati Dharma Dharmamahadevi Durlabha Gandharavati - Gauri Gaurimahadevi Kalyanavati Karnadevi Kuladevi Lakshmi Lakshmikaradevi Lilavati Mahadevi Nayanadevi Rajasundari - Ratnavati Suvrata Syamadevi Vakula Vakulamahadevi Vasumati Vijnanavati Vijnayavati Yajiyavati Yajnavati - } - - mercenary_names = { - { name = "mercenary_company_oriya_band" } - { name = "mercenary_company_company_of_odisha" } - } -} -name_list_assamese = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Vaidyadeva" - "dynn_Khen" - "dynn_Sutiya" - "dynn_Barobhyan" - } - - dynasty_names = { - "dynn_Vaidyadeva" - "dynn_Ahom" - "dynn_Khen" - "dynn_Sutiya" - "dynn_Barobhyan" - "dynn_Chandravansha" - "dynn_Suryavansha" - { "dynn_Banerjee" } - { "dynn_Bagchi" } - { "dynn_Bhaduri" } - { "dynn_Bhattacharjee" } - { "dynn_Chakraborty" } - { "dynn_Chatterjee" } - { "dynn_Ganguly" } - { "dynn_Goswami" } - { "dynn_Ghoshal" } - { "dynn_Lahiri" } - { "dynn_Maitra" } - { "dynn_Bakshi" } - { "dynn_Bangla" } - { "dynn_Barman" } - { "dynn_Basu" } - { "dynn_Bhagat" } - { "dynn_Bhaumik" } - { "dynn_Bhuiyan" } - { "dynn_Biswas" } - { "dynn_Chakrabarti" } - { "dynn_Chand" } - { "dynn_Datta" } - { "dynn_Debnath" } - { "dynn_Devi" } - { "dynn_Dhar" } - { "dynn_Emu" } - { "dynn_Ganguly" } - { "dynn_Ghosh" } - { "dynn_Ghoshal" } - { "dynn_Hazra" } - { "dynn_Hoque" } - } - - house_based_map_names = yes - - male_names = { - Balavarman Bhaskarvarman Bhattamahabahu Bhutivarman Birapala Brahmapala Chandramukhavarman - Dharmapala Ganapativarman Gopala Harjjaravarman Harshadeva Harshapala Harshavarman - Indrapala Jayamala Jayapala Kalyanavarman Kumarapala Mahendravarman Narayanavarman - Pralambha Purandelapala Pushyavarman Ratnadhwajpala Ratnapala - Salasthamba Samudravarman Sthitavarman Supratisthitavarman Susthitavarman - Timgyadeva Tyagasimha Ummoka Vanamalavarmadeva Vigrahastambha Vijaya Virabahu - } - female_names = { - Ahiavadevi Bhogavati Dattadevi Devavati Durlabha Gandharavati Kuladevi Nayanadevi - Ratnavati Suvrata Syamadevi Vasumati Vijnanavati Vijnayavati Yajiyavati Yajnavati - } - -} -name_list_hindustani = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Katyuri" - "dynn_Kangra" - "dynn_Kumanchal" - "dynn_Mana" - "dynn_Baghela" - "dynn_Mir" - "dynn_Yayvapala" - "dynn_Parmar" - "dynn_Katyuri" - "dynn_Chand" - "dynn_Khasiya" - "dynn_Chandravansha" - "dynn_Suryavansha" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Arora" } - { "dynn_Bai" } - { "dynn_Bansal" } - { "dynn_Batra" } - { "dynn_Bhagat" } - { "dynn_Bhasin" } - { "dynn_Bhatt" } - { "dynn_Bhuiyan" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chauhan" } - { "dynn_Chetri" } - { "dynn_Chohan" } - { "dynn_Chourey" } - { "dynn_Daima" } - { "dynn_Dass" } - { "dynn_Dayal" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Dewi" } - { "dynn_Dikshit" } - { "dynn_Dogra" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Goswami" } - { "dynn_Jahan" } - { "dynn_Jha" } - { "dynn_Kamat" } - { "dynn_Kapoor" } - { "dynn_Kapur" } - { "dynn_Khare" } - { "dynn_Kumari" } - { "dynn_Lahot" } - { "dynn_Lal" } - { "dynn_Mahajan" } - { "dynn_Mahato" } - { "dynn_Mahto" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Mehta" } - { "dynn_Nanda" } - { "dynn_Narayan" } - { "dynn_Nath" } - { "dynn_Natikar" } - { "dynn_Nimavat" } - { "dynn_Pandey" } - { "dynn_Pandit" } - { "dynn_Pathak" } - { "dynn_Pradhan" } - { "dynn_Pramanik" } - { "dynn_Rajabian" } - { "dynn_Ram" } - { "dynn_Rastogi" } - { "dynn_Rathor" } - { "dynn_Sachan" } - { "dynn_Sachdeva" } - { "dynn_Sahoo" } - { "dynn_Sanjay" } - { "dynn_Sethi" } - { "dynn_Shakya" } - { "dynn_Shan" } - { "dynn_Shankar" } - { "dynn_Shrivastava" } - { "dynn_Shukla" } - { "dynn_Sinha" } - { "dynn_Solanki" } - { "dynn_Sologar" } - { "dynn_Soni" } - { "dynn_Thapa" } - { "dynn_Trikha" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Uniyal" } - { "dynn_Upadhyaya" } - { "dynn_Vaid" } - { "dynn_Varma" } - { "dynn_Vinda" } - } - - dynasty_names = { - "dynn_Katyuri" - "dynn_Kangra" - "dynn_Kumanchal" - "dynn_Mana" - "dynn_Baghela" - "dynn_Mir" - "dynn_Yayvapala" - "dynn_Parmar" - "dynn_Katyuri" - "dynn_Chand" - "dynn_Khasiya" - "dynn_Chandravansha" - "dynn_Suryavansha" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Arora" } - { "dynn_Bai" } - { "dynn_Bansal" } - { "dynn_Batra" } - { "dynn_Bhagat" } - { "dynn_Bhasin" } - { "dynn_Bhatnagar" } - { "dynn_Bhatt" } - { "dynn_Bhuiyan" } - { "dynn_Chakravarti" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandra" } - { "dynn_Chauhan" } - { "dynn_Chetri" } - { "dynn_Chohan" } - { "dynn_Chourey" } - { "dynn_Daima" } - { "dynn_Dass" } - { "dynn_Dayal" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Dewi" } - { "dynn_Dikshit" } - { "dynn_Dogra" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Goswami" } - { "dynn_Jahan" } - { "dynn_Jha" } - { "dynn_Kamat" } - { "dynn_Kapoor" } - { "dynn_Kapur" } - { "dynn_Khare" } - { "dynn_Kumari" } - { "dynn_Lahot" } - { "dynn_Lal" } - { "dynn_Mahajan" } - { "dynn_Mahato" } - { "dynn_Mahto" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Mehta" } - { "dynn_Nanda" } - { "dynn_Narayan" } - { "dynn_Nath" } - { "dynn_Natikar" } - { "dynn_Nimavat" } - { "dynn_Pandey" } - { "dynn_Pandit" } - { "dynn_Pathak" } - { "dynn_Pradhan" } - { "dynn_Pramanik" } - { "dynn_Ram" } - { "dynn_Rastogi" } - { "dynn_Rathor" } - { "dynn_Sachan" } - { "dynn_Sachdeva" } - { "dynn_Sanjay" } - { "dynn_Sethi" } - { "dynn_Shakya" } - { "dynn_Shan" } - { "dynn_Shrivastava" } - { "dynn_Shukla" } - { "dynn_Sinha" } - { "dynn_Solanki" } - { "dynn_Sologar" } - { "dynn_Soni" } - { "dynn_Tandon" } - { "dynn_Thakur" } - { "dynn_Thapa" } - { "dynn_Trikha" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Uniyal" } - { "dynn_Upadhyaya" } - { "dynn_Vaid" } - { "dynn_Varadarajan" } - { "dynn_Varma" } - { "dynn_Vinda" } - } - - male_names = { - Achalraj Achalraja Adhandev Adityadeva Ajmal Alsi Amir Anangpal Anangpala Anupapala - Anuppal "Apara_Gangeya" Arjunpal Arjunpala Arjunavarman Bacchdev Bachraj Baghpal Baghpala - Bahadur-Singh Beejpal Beejpala Bhaadar Bhilpala Bhoj Bhoja Bhojavarman Bhopal Bhumpal - Bhumpala Birpal Birpala Bisaldeva Brahmadeva Brahmapala Brahmdevpal Chand Devapala Devavarman Dhanga - Dhangadeva Dharmapala Dhaulshaya Dilipapala Dilippal Doth Draupad Draupada Dugarendra - Gambhir Ganapatideva Gandadeva Gangeya Ghatamdeva Gopal Gopala Govindachandra Govindapala Govindaraja Govindraj - Hamir Hammiravarman Harpal Harsa Harshapala Hirapal Hirapala Indrapal Indrapala Ishtpala - Jaganpal Jaganpala Jagatpal Jagatpala Jagdev Jagdeva Jaidas Jaipal Jaitugideva Jasapala - Jaspal Jatanpal Jatanpala Jayapala Jayasakti Jayasimha Jayavarman Jhetpal Jhetpala Junpala - Kailaspal Kailaspala Kalkurna Kalyanachandra Kakhopal Kakhopala Kamal Kanhad Kanvarpal - Kanvarpala Karnpal Keeratdeva Khadag Khetrapal Khetrapala Kiratpal Kiratpala Krishnray - Krsnapa Kumarapala Kunwar Kunwarpal Ladahachandra Lakshmandeva Lokpala Madanapala Madanavarman Maharana Mahendrapal - Mahendrapala Mahipal Mahipala Mahipata Mahlakadeva Mandandeva Mangaldeva Margdeva Mihira Nagapala Nagdeo Nannuka - Naravarman Narayanapala Narpal Nayapala Nihaal Nihalray Paramardideva Pavak Peepalraj Popatraj Pritampal Pritampala Prithipala - Prithvi Prithvipal Prithviraj Prithviraja Prithvivarman Rahila Rajapala Rajyapala Ramabhadra Ramachandra - Rampal Rampala Rana Rangraj Rangraja Ratnapala Rijhpala Roshandeva Salivaahan Sallaksanavarman Saugandeva Shurapala - Sisupal Sisupala Sohanpal Somasi Someshvara Sonpal Sonpala Srichandra Subhatavarman Sukhinpal - Sukhinpala Sulakshanpal Sultanpal Sultanpala Surajpal Surajpala Traillokyachandra Tejapala - Tejpal Tolpal Trailokyavarman Trilochanpala Udayaditya Udaysangh Uddharandeva Vachhal Vakpati Vapyata Varshapala Varshpal - Vasudev Vidurathpal Vidurathpala Vidyadhara Vigrahapala Vigraharaja Vihangpal Vijayapala Vijayasakti Vinayakapala Vindhyavarman - Viramdeva Viravarman Virsinghadeva Yasovarman - } - female_names = { - Akal Anantadevi Damayanti Dattadevi Dehanagadevi Dhruvadevi Dhruvasvamini Hemavati - Kakanvati Kalayandevi Kanchuka Kanwar Karmavati Kumaradevi Lakshman Maharani Mahidevi Nattadevi - Prabhavati Prabhavatigupta Prasadhanadevi Puppadevi Rajamati Sanyukta Shrimitradevi - } - - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - house_based_map_names = yes - - mercenary_names = { - { name = "mercenary_company_company_of_many_colours" } - { name = "mercenary_company_hindustani_band" } - { name = "mercenary_company_company_of_the_ganges" } - } -} -name_list_gujarati = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Guhilot" - "dynn_Bargujar" - "dynn_Gahadvala" - "dynn_Tomara" - "dynn_Katoch" - "dynn_Chandela" - "dynn_Bhati" - "dynn_Mori" - "dynn_Jadeja" - "dynn_Chudasama" - { "dynn_Bhagat" } - { "dynn_Bhatt" } - { "dynn_Chadhari" } - { "dynn_Chauhan" } - { "dynn_Dani" } - { "dynn_Dave" } - { "dynn_Desai" } - { "dynn_Doshi" } - { "dynn_Jani" } - { "dynn_Jhala" } - { "dynn_Kajal" } - { "dynn_Kandhal" } - { "dynn_Kapadia" } - { "dynn_Lakhani" } - { "dynn_Mahajan" } - { "dynn_Mahi" } - { "dynn_Mehta" } - { "dynn_Paramar" } - { "dynn_Pathak" } - { "dynn_Raja" } - { "dynn_Raval" } - { "dynn_Sahu" } - { "dynn_Shah" } - { "dynn_Shan" } - { "dynn_Shukla" } - { "dynn_Solanki" } - { "dynn_Suchak" } - { "dynn_Thakkar" } - { "dynn_Trivedi" } - { "dynn_Upadhyay" } - { "dynn_Vidhani" } - { "dynn_Yadav" } - } - - dynasty_names = { - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Khanzada" - { "dynn_Bhagat" } - { "dynn_Bhatt" } - { "dynn_Chadhari" } - { "dynn_Chauhan" } - { "dynn_Dani" } - { "dynn_Dave" } - { "dynn_Desai" } - { "dynn_Doshi" } - { "dynn_Jani" } - { "dynn_Jhala" } - { "dynn_Kajal" } - { "dynn_Kandhal" } - { "dynn_Kapadia" } - { "dynn_Lakhani" } - { "dynn_Mahajan" } - { "dynn_Maharaj" } - { "dynn_Mahi" } - { "dynn_Mehta" } - { "dynn_Paramar" } - { "dynn_Pathak" } - { "dynn_Raja" } - { "dynn_Raval" } - { "dynn_Sahu" } - { "dynn_Shah" } - { "dynn_Shan" } - { "dynn_Shukla" } - { "dynn_Solanki" } - { "dynn_Suchak" } - { "dynn_Thaker" } - { "dynn_Thakkar" } - { "dynn_Thakur" } - { "dynn_Trivedi" } - { "dynn_Upadhyay" } - { "dynn_Vidhani" } - { "dynn_Yadav" } - } - - - - male_names = { - Abhayapala Acharya Ahila Ajairaja Ajayapala Ajay-Singh Alhana Allat Amarangeya Ambra-Prasad Amritapala Anahilla - Ari-Singh Arjunavarman Arnoraja Asaraja Asvapala Balaprasada Baliraja Bhatarka Bhert-Patt Bhima Bhimadeva - Bhim-Singh Bhuvan-Singh Bhoja Bhoo-Chand Chachiga Chamundaraja Chandanaraja Chandraraja Chaud-Singh Dadda Dambarisimha - Deopali-Deo Devapala Dharapatta Dharasena Dharmapala Dhruvasena Dinakarn Dronasinha Dungar-Singh Durlabharaja Gajasimha - Gopala Gopendraka Gopendraraja Govinda Govindapala Govindaraja - Guhasena Guvaka Hammira Hammir-Singh Hanspal Hariraja Harischandra Hemachandra Jagadeva Jaitrasimha - Jaitra-Singh Jaitugideva Jasapala Jaskarn Jayapala Jayaraja Jayasimha Jay-Singh - Jay-Singh-Deo Jayat-Singh Jayavarman Jayshikari Jendraraja Jojalla Kalbhoj Kanhadadeva Karandeva Karan-Singh - Karnadeva Katudeva Katukaraja Keerti-Verma Kelhana Kharagraha Khuman Kirtipala Kirtivarman - Kumarapala Kshemraja Kshem-Singh Kshetra-Singh Kumar-Singh Lakhanapala Lakhshaman-Singh Lakshmana - Lakshmanadeva Lakshmivarman Lavanyakarna Lunavarman Luntiga Madanapala Mahap Mahayak Mahendra - Mahendrapala Mahipala Mahlakadeva Maladeva Manavasimha Mathan-Singh Mattat Mihira Mulraja Nagabhata Nagarjuna Nagraja - Naradeva Narapati Naravarman Naravarmandeva Narayanapala Nar-Verma Narwahan Nayapala Padam-Singh - Prahladana Pratapa Prithvipal Prithivipala Prithviraja Purnpala Rahap Rajapala Rajyapala - Ramabhadra Ramapala Ratan-Singh Ratnapala Rayapala Rudrapala Sahajapala Sahanapala Samanta Samant-Singh - Samantasimha Samarasimha Samar-Singh Shakti-Kumar Shaliwahan Shuchi-Verma Shurapala Siladitya - Sindhuraja Singhraja Sinha Sinhad-Deo Siyaka Sohiya Someshwara Subhatavarman Suratrana Tejasimha Tej-Singh - Trailokyavarman Tribhuvanapala Trilochanpala Udayaditya Udayasimha Udayavarman Upendra Vagbhata Vahadiasimha Vairisimha - Vairsingh Vajradeva Vakapati Vakpati Vakpatiraja Valhana Valhanadeva - Vallabharaja Vanraja Vapyata Vasudeva Vatsaraja Vigrahapala Vigraharaja Vigrharaja Vijada-Dasasyandana - Vijai-Singh Vikramaditya Vinaykpala Vindhyavarman Virama Viradeva Viranarayana Virsinh-Deo Viryarama Xemraja Yasovarman - Yograj - } - female_names = { - Annaladevi Bauladevi Bhuyikadevi Candrabhattarikadevi Chachinidevi Dehanagadevi Delhanadevi Desaladevi Hariyadevi Laxmidevi - Madhavi Mahalakshmi Mahidevi Manaladevi Mayanalladevi Namalladevi Padmaladevi Padmini Prasadhanadevi Pratha Rasaladevi - Rudaladevi Rudrani Rupadevi Samyukta Sidhawa Somalladevi Suhava Sundaridevi Tihunaka Udayamati - } - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - house_based_map_names = yes - - mercenary_names = { - { name = "mercenary_company_company_of_the_great_rann" } - { name = "mercenary_company_band_of_the_nilgai" } - { name = "mercenary_company_company_of_the_stone_anchor" } - } -} - -name_list_malvi = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - { "dynn_Bhagat" } - { "dynn_Bhatt" } - { "dynn_Chadhari" } - { "dynn_Chauhan" } - { "dynn_Dani" } - { "dynn_Dave" } - { "dynn_Desai" } - { "dynn_Doshi" } - { "dynn_Jani" } - { "dynn_Jhala" } - { "dynn_Kajal" } - { "dynn_Kandhal" } - { "dynn_Kapadia" } - { "dynn_Lakhani" } - { "dynn_Mahajan" } - { "dynn_Maharaj" } - { "dynn_Mahi" } - { "dynn_Mehta" } - { "dynn_Paramar" } - { "dynn_Pathak" } - { "dynn_Raja" } - { "dynn_Raval" } - { "dynn_Sahu" } - { "dynn_Shah" } - { "dynn_Shan" } - { "dynn_Shukla" } - { "dynn_Solanki" } - { "dynn_Suchak" } - { "dynn_Thaker" } - { "dynn_Thakkar" } - { "dynn_Thakur" } - { "dynn_Trivedi" } - { "dynn_Upadhyay" } - { "dynn_Vidhani" } - { "dynn_Yadav" } - } - - dynasty_names = { - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Guhilot" - "dynn_Bargujar" - "dynn_Gahadvala" - "dynn_Tomara" - "dynn_Katoch" - "dynn_Chandela" - "dynn_Bhati" - "dynn_Mori" - "dynn_Jadeja" - "dynn_Chudasama" - { "dynn_Bhagat" } - { "dynn_Bhatt" } - { "dynn_Chadhari" } - { "dynn_Chauhan" } - { "dynn_Dani" } - { "dynn_Dave" } - { "dynn_Desai" } - { "dynn_Doshi" } - { "dynn_Jani" } - { "dynn_Jhala" } - { "dynn_Kajal" } - { "dynn_Kandhal" } - { "dynn_Kapadia" } - { "dynn_Lakhani" } - { "dynn_Mahajan" } - { "dynn_Maharaj" } - { "dynn_Mahi" } - { "dynn_Mehta" } - { "dynn_Paramar" } - { "dynn_Pathak" } - { "dynn_Raja" } - { "dynn_Raval" } - { "dynn_Sahu" } - { "dynn_Shah" } - { "dynn_Shan" } - { "dynn_Shukla" } - { "dynn_Solanki" } - { "dynn_Suchak" } - { "dynn_Trivedi" } - { "dynn_Upadhyay" } - { "dynn_Vidhani" } - { "dynn_Yadav" } - } - - male_names = { - Achalraj Achalraja Adhandev Adityadeva Ajmal Alsi Amir Anangpal Anangpala Anupapala - Anuppal "Apara_Gangeya" Arjunpal Arjunpala Arjunavarman Bacchdev Bachraj Baghpal - Baghpala Bahadur-Singh Ballala Beejpal Beejpala Bhaadar Bhilpala Bhoj Bhoja Bhojavarman - Bhopal Bhumpal Bhumpala Birpal Birpala Bisaldeva Brahmadeva Brahmapala Brahmdevpal Chand Devapala - Devavarman Dhanga Dhangadeva Dharmapala Dhaulshaya Dilipapala Dilippal Doth Draupad - Draupada Dugarendra Gambhir Ganapatideva Gandadeva Gangeya Ghatamdeva Gopal Gopala Govindachandra Govindapala - Govindaraja Govindraj Hamir Hammiravarman Harpal Harsa Harshapala Hirapal - Hirapala Indrapal Indrapala Ishtpala Jaganpal Jaganpala Jagatpal - Jagatpala Jagdev Jagdeva Jaidas Jaipal Jaitugideva Jasapala Jaspal Jatanpal - Jatanpala Jayapala Jayasakti Jayavarman Jayasimha Jhetpal Jhetpala Junpala Kailaspal Kailaspala - Kalkurna Kalyanachandra Kakhopal Kakhopala Kamal Kanhad Kanvarpal Kanvarpala Karnpal Keeratdeva - Khadag Khetrapal Khetrapala Kiratpal Kiratpala Krishnray Krsnapa Kumarapala Kunwar - Kunwarpal Ladahachandra Lakshmandeva Lokpala Madanapala Madanavarman Maharana Mahendrapal Mahendrapala Munja - Mahipal Mahipala Mahipata Mahlakadeva Mandandeva Mangaldeva Margdeva Mihira Nagapala Nagdeo Nannuka Naravarman - Narayanapala Narpal Nayapala Nihaal Nihalray Paramardideva Pavak Peepalraj Popatraj Pritampal Pritampala Prithipala - Prithvi Prithvipal Prithviraj Prithviraja Prithvivarman Rahila Rajapala Rajyapala Ramabhadra - Ramachandra Rampal Rampala Rana Rangraj Rangraja Ratnapala Rijhpala Roshandeva Salivaahan - Sallaksanavarman Saugandeva Shurapala Sisupal Sisupala Sohanpal Somasi Someshvara Sonpal Sonpala - Srichandra Subhatavarman Sukhinpal Sukhinpala Sulakshanpal Sultanpal Sultanpala Surajpal - Surajpala Traillokyachandra Tejapala Tejpal Tolpal Trailokyavarman Trilochanpala Udayaditya Udaysangh Uddharandeva - Vachhal Vakpati Vapyata Varshapala Varshpal Vasudev Vidurathpal Vidurathpala Vidyadhara - Vigrahapala Vigraharaja Vihangpal Vijayapala Vijayasakti Vinayakapala Vindhyavarman Viramdeva Viravarman Virsinghadeva Yasovarman Abhayapala - Acharya Ahila Ajairaja Ajayapala Ajay-Singh Alhana Allat Amarangeya Ambra-Prasad Amritapala Anahilla Ari-Singh Arnoraja Asaraja - Asvapala Balaprasada Baliraja Bhatarka Bhert-Patt Bhima Bhimadeva Bhim-Singh Bhuvan-Singh Bhoja Bhoo-Chand Chachiga Chamundaraja - Chandanaraja Chandraraja Chaud-Singh Dadda Dambarisimha Deopali-Deo Dharapatta Dharasena Dhruvasena Dinakarn Dronasinha Dungar-Singh - Durlabharaja Gajasimha Gopala Gopendraka Gopendraraja Govinda Govindapala Guhasena - Guvaka Hammira Hammir-Singh Hanspal Hariraja Harischandra Hemachandra Jagadeva Jaitrasimha Jaitra-Singh - Jasapala Jaskarn Jayaraja Jayasimha Jay-Singh Jay-Singh-Deo Jayat-Singh Jayshikari Jendraraja - Jojalla Kalbhoj Kanhadadeva Karandeva Karan-Singh Karnadeva Katudeva Katukaraja Keerti-Verma Kelhana Kharagraha - Khuman Kirtipala Kirtivarman Kshemraja Kshem-Singh Kshetra-Singh Lakhanapala Lakhshaman-Singh Lakshmana - Lakshmanadeva Lakshmivarman Lavanyakarna Lunavarman Luntiga Mahap Mahayak Mahendra Mahendrapala Mahipala Maladeva - Manavasimha Mathan-Singh Mattat Mulraja Nagabhata Nagarjuna Nagraja Naradeva Narapati Naravarman Naravarmandeva Nar-Verma - Narwahan Padam-Singh Prahladana Pratapa Prithvipal Prithivipala Purnpala Rahap Ramapala Ratan-Singh Rayapala Rudrapala - Sahajapala Sahanapala Samanta Samant-Singh Samantasimha Samarasimha Samar-Singh Shaliwahan Shuchi-Verma - Siladitya Sindhuraja Singhraja Sinha Sinhad-Deo Siyaka Sohiya Someshwara Suratrana Tejasimha Tej-Singh Tribhuvanapala Udayadity Udayasimha - Udayavarman Upendra Vagbhata Vahadiasimha Vairisimha Vairsingh Vajradeva Vakapati Vakpati Vakpatiraja - Valhana Valhanadeva Vallabharaja Vanraja Vasudeva Vatsaraja Vigraharaja Vigrharaja Vijada-Dasasyandana - Vijai-Singh Vikramaditya Vinaykpala Virama Viradeva Viranarayana Virsinh-Deo Viryarama Xemraja Yashovarman Yograj - } - female_names = { - Akal Anantadevi Damayanti Dattadevi Dehanagadevi Dhruvadevi Dhruvasvamini Hemavati - Kakanvati Kalayandevi Kanchuka Kanwar Karmavati Kumaradevi Lakshman Maharani Mahidevi Nattadevi - Prabhavati Prabhavatigupta Prasadhanadevi Puppadevi Rajamati Sanyukta Shrimitradevi - Annaladevi Bauladevi Bhuyikadevi Candrabhattarikadevi Chachinidevi Delhanadevi Desaladevi - Hariyadevi Laxmidevi Madhavi Mahalakshmi Manaladevi Mayanalladevi Namalladevi Padmaladevi Padmini - Pratha Rasaladevi Rudaladevi Rudrani Rupadevi Samyukta Sidhawa Somalladevi Suhava Sundaridevi Tihunaka Udayamati - } - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - house_based_map_names = yes - - - mercenary_names = { - { name = "mercenary_company_company_of_the_great_rann" } - { name = "mercenary_company_band_of_the_nilgai" } - { name = "mercenary_company_company_of_the_stone_anchor" } - } -} - -name_list_punjabi = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Vopyadeva" - "dynn_Dakhinpara" - "dynn_Shina" - "dynn_Makpon" - "dynn_Hunza" - "dynn_Oddiyana" - "dynn_Katoch" - "dynn_Kutumbi" - "dynn_Divira" - "dynn_Patola_Sahi" - "dynn_Darel" - { "dynn_Agarwal" } - { "dynn_Ahluwalia" } - { "dynn_Ahuja" } - { "dynn_Anwer" } - { "dynn_Arora" } - { "dynn_Ashiq" } - { "dynn_Bajwa" } - { "dynn_Bakshi" } - { "dynn_Bal" } - { "dynn_Bansal" } - { "dynn_Basra" } - { "dynn_Batra" } - { "dynn_Bawa" } - { "dynn_Begum" } - { "dynn_Bhagat" } - { "dynn_Bhalli" } - { "dynn_Bhasin" } - { "dynn_Bhatti" } - { "dynn_Bhullar" } - { "dynn_Butt" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandia" } - { "dynn_Cheema" } - { "dynn_Chopra" } - { "dynn_Dhaliwal" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Gul" } - { "dynn_Haider" } - { "dynn_Jahangir" } - { "dynn_Kalsi" } - { "dynn_Kapur" } - { "dynn_Kazim" } - { "dynn_Khalsa" } - { "dynn_Landa" } - { "dynn_Madanpotra" } - { "dynn_Mahi" } - { "dynn_Masih" } - { "dynn_Mehta" } - { "dynn_Nakai" } - { "dynn_Nanda" } - { "dynn_Parvez" } - { "dynn_Pervaiz" } - { "dynn_Randhawa" } - { "dynn_Sachdeva" } - { "dynn_Sahni" } - { "dynn_Sandhu" } - { "dynn_Sarai" } - { "dynn_Sawhney" } - { "dynn_Sayal" } - { "dynn_Siddiq" } - { "dynn_Sidhu" } - { "dynn_Tandon" } - { "dynn_Tripathi" } - { "dynn_Uppal" } - { "dynn_Walia" } - } - - dynasty_names = { - "dynn_Vopyadeva" - "dynn_Dakhinpara" - "dynn_Shina" - "dynn_Makpon" - "dynn_Hunza" - "dynn_Oddiyana" - "dynn_Katoch" - "dynn_Kutumbi" - "dynn_Divira" - "dynn_Patola_Sahi" - "dynn_Darel" - "dynn_Varha" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Anwer" } - { "dynn_Arora" } - { "dynn_Ashiq" } - { "dynn_Bajwa" } - { "dynn_Bakshi" } - { "dynn_Bal" } - { "dynn_Bansal" } - { "dynn_Basra" } - { "dynn_Batra" } - { "dynn_Bawa" } - { "dynn_Begum" } - { "dynn_Bhagat" } - { "dynn_Bhalli" } - { "dynn_Bhasin" } - { "dynn_Bhatti" } - { "dynn_Bhullar" } - { "dynn_Butt" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandia" } - { "dynn_Cheema" } - { "dynn_Chopra" } - { "dynn_Dhaliwal" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Kalsi" } - { "dynn_Kapur" } - { "dynn_Kazim" } - { "dynn_Khalsa" } - { "dynn_Landa" } - { "dynn_Madanpotra" } - { "dynn_Mahi" } - { "dynn_Masih" } - { "dynn_Mehta" } - { "dynn_Nakai" } - { "dynn_Nanda" } - { "dynn_Randhawa" } - { "dynn_Sachdeva" } - { "dynn_Sahni" } - { "dynn_Sandhu" } - { "dynn_Sarai" } - { "dynn_Sawhney" } - { "dynn_Sayal" } - { "dynn_Siddiq" } - { "dynn_Sidhu" } - { "dynn_Tandon" } - { "dynn_Tripathi" } - { "dynn_Uppal" } - { "dynn_Walia" } - } - - male_names = { - Ajit Ajitapida Anangapida Ananta Asi Avantivarma - Bag Bhagwant Bhiksacara Bhoja Bhuvana Budh - Cakravarman Chand Chandrapida Charat Cippatajayapida - Damodar Dasu Datu Dayaram Durlabhavardhana - Gopalavarma Govinda Gunga - Haidaracandra Hari Hariraja Harsa - Jagadeva Jahm Jairam Jassaka Jassaraja Jayadeva Jayapida Jayasimha Jetha Amarji Rajpal - Kad Kalasa Kalyan Kehar Kharak Ksitiraja Kuvalayapida - Laksmadeva Lalitaditya-Muktapida Lav Laxman Lothana - Mahadev MahipalMalla Mang Mohan Mohri - NarayanNirjitavarman Nodha - Paramanuka Partha Prithichand Prithvi Prithvyapida - Rajadeva Ramacandra Ramadeva Ranjit RanjorRincana - Sahdev Salhana Samgrama Samgramadeva Samgramapida Simhadeva Simharaja Srichand Suhadeva Sukhavaraman Sukhavarma Suravarman Surgandha Sussala - Tarapida Thakur Tribhuvanapida - Uccala Udayanadeva Udayaraja Unmattavanti Uppa Utpalaka Utpalapida - Vajraditya Vantideva Vigraha Vuppadeva - } - female_names = { - Aadhya Aarna Amro Anjali Anokhi Anu Anup - Bhama Bhani - Chakrika Chara Chhaya - Dani Darika Devi Didda Durga - Edha Estaa - Falak - Gayathri Geetika GitikaGujri Gulika - Indira Ishani - Jeevika Jiera Jodhabai - Kalyanadevi Khivi Kishan Kotadevi - Lachmi Lavanthika Lavi Liyana - Maira Mihika - Nanaki - Padma Pallavi Parnika Parvati Pihu Priya - Ramo Ridhi - Sabhirai Sahaja Saira Sangiya Suji Sulakhni Sundari Surgandha - Thitiksha Tripta Turvi - Ullupi Utara Utkarsha - Veda Venya Vidya Vimala - Yashica - } - - house_based_map_names = yes - - - - mercenary_names = { - { name = "mercenary_company_company_of_the_punjab" } - { name = "mercenary_company_host_of_sangala" } - } -} -name_list_rajput = { - - house_based_map_names = yes - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Khanzada" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Arora" } - { "dynn_Bai" } - { "dynn_Bansal" } - { "dynn_Batra" } - { "dynn_Bhagat" } - { "dynn_Bhasin" } - { "dynn_Bhatnagar" } - { "dynn_Bhatt" } - { "dynn_Bhuiyan" } - { "dynn_Chakravarti" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandra" } - { "dynn_Chaudhary" } - { "dynn_Chauhan" } - { "dynn_Chetri" } - { "dynn_Chohan" } - { "dynn_Chourey" } - { "dynn_Daima" } - { "dynn_Dass" } - { "dynn_Dayal" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Dewi" } - { "dynn_Dikshit" } - { "dynn_Dogra" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Goswami" } - { "dynn_Jahan" } - { "dynn_Jha" } - { "dynn_Kamat" } - { "dynn_Kapoor" } - { "dynn_Kapur" } - { "dynn_Khare" } - { "dynn_Kumari" } - { "dynn_Lahot" } - { "dynn_Lal" } - { "dynn_Mahajan" } - { "dynn_Mahato" } - { "dynn_Mahto" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Mehta" } - { "dynn_Nanda" } - { "dynn_Narayan" } - { "dynn_Nath" } - { "dynn_Natikar" } - { "dynn_Nimavat" } - { "dynn_Pandey" } - { "dynn_Pandit" } - { "dynn_Pathak" } - { "dynn_Pradhan" } - { "dynn_Pramanik" } - { "dynn_Rahaman" } - { "dynn_Rai" } - { "dynn_Raj" } - { "dynn_Rajabian" } - { "dynn_Ram" } - { "dynn_Rastogi" } - { "dynn_Rathor" } - { "dynn_Sachan" } - { "dynn_Sachdeva" } - { "dynn_Sahoo" } - { "dynn_Sanjay" } - { "dynn_Sethi" } - { "dynn_Shakya" } - { "dynn_Shan" } - { "dynn_Shankar" } - { "dynn_Shrivastava" } - { "dynn_Shukla" } - { "dynn_Sinha" } - { "dynn_Solanki" } - { "dynn_Sologar" } - { "dynn_Soni" } - { "dynn_Suresh" } - { "dynn_Tandon" } - { "dynn_Thakur" } - { "dynn_Thapa" } - { "dynn_Trikha" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Uniyal" } - { "dynn_Upadhyaya" } - { "dynn_Vaid" } - { "dynn_Varadarajan" } - { "dynn_Varma" } - { "dynn_Vinda" } - } - - dynasty_names = { - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Guhilot" - "dynn_Bargujar" - "dynn_Gahadvala" - "dynn_Tomara" - "dynn_Katoch" - "dynn_Chandela" - "dynn_Bhati" - "dynn_Mori" - "dynn_Jadeja" - "dynn_Chudasama" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Arora" } - { "dynn_Bai" } - { "dynn_Bansal" } - { "dynn_Batra" } - { "dynn_Bhagat" } - { "dynn_Bhasin" } - { "dynn_Bhatnagar" } - { "dynn_Bhatt" } - { "dynn_Bhuiyan" } - { "dynn_Chakravarti" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandra" } - { "dynn_Chaudhary" } - { "dynn_Chauhan" } - { "dynn_Chetri" } - { "dynn_Chohan" } - { "dynn_Chourey" } - { "dynn_Daima" } - { "dynn_Dass" } - { "dynn_Dayal" } - { "dynn_Deva" } - { "dynn_Dogra" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Goswami" } - { "dynn_Jahan" } - { "dynn_Jha" } - { "dynn_Kamat" } - { "dynn_Kapoor" } - { "dynn_Kapur" } - { "dynn_Khare" } - { "dynn_Kumari" } - { "dynn_Lahot" } - { "dynn_Mahajan" } - { "dynn_Mahato" } - { "dynn_Mahto" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Mehta" } - { "dynn_Nanda" } - { "dynn_Narayan" } - { "dynn_Nath" } - { "dynn_Natikar" } - { "dynn_Nimavat" } - { "dynn_Pathak" } - { "dynn_Pradhan" } - { "dynn_Pramanik" } - { "dynn_Rahaman" } - { "dynn_Ram" } - { "dynn_Rastogi" } - { "dynn_Rathor" } - { "dynn_Sachan" } - { "dynn_Sachdeva" } - { "dynn_Sethi" } - { "dynn_Shakya" } - { "dynn_Shan" } - { "dynn_Shukla" } - { "dynn_Sinha" } - { "dynn_Solanki" } - { "dynn_Sologar" } - { "dynn_Soni" } - { "dynn_Suresh" } - { "dynn_Tandon" } - { "dynn_Thakur" } - { "dynn_Thapa" } - { "dynn_Trikha" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Uniyal" } - { "dynn_Upadhyaya" } - { "dynn_Vaid" } - { "dynn_Varadarajan" } - { "dynn_Varma" } - { "dynn_Vinda" } - } - - male_names = { - Achalraj Achalraja Adhandev Adityadeva Ajmal Alsi Amir Anangpal Anangpala Anupapala - Anuppal "Apara_Gangeya" Arjunpal Arjunpala Arjunavarman Bacchdev Bachraj Baghpal - Baghpala Bahadur-Singh Beejpal Beejpala Bhaadar Bhilpala Bhoj Bhoja Bhojavarman - Bhopal Bhumpal Bhumpala Birpal Birpala Bisaldeva Brahmadeva Brahmapala Brahmdevpal Chand Devapala - Devavarman Dhanga Dhangadeva Dharmapala Dhaulshaya Dilipapala Dilippal Doth Draupad - Draupada Dugarendra Gambhir Ganapatideva Gandadeva Gangeya Ghatamdeva Gopal Gopala Govindachandra Govindapala - Govindaraja Govindraj Hamir Hammiravarman Harpal Harsa Harshapala Hirapal - Hirapala Indrapal Indrapala Ishtpala Jaganpal Jaganpala Jagatpal - Jagatpala Jagdev Jagdeva Jaidas Jaipal Jaitugideva Jasapala Jaspal Jatanpal - Jatanpala Jayapala Jayasakti Jayasimha Jhetpal Jhetpala Junpala Kailaspal Kailaspala - Kalkurna Kalyanachandra Kakhopal Kakhopala Kamal Kanhad Kanvarpal Kanvarpala Karnpal Keeratdeva - Khadag Khetrapal Khetrapala Kiratpal Kiratpala Krishnray Krsnapa Kumarapala Kunwar - Kunwarpal Ladahachandra Lakshmandeva Lokpala Madanapala Madanavarman Maharana Mahendrapal Mahendrapala - Mahipal Mahipala Mahipata Mahlakadeva Mandandeva Mangaldeva Margdeva Mihira Nagapala Nagdeo Nannuka Naravarman - Narayanapala Narpal Nayapala Nihaal Nihalray Paramardideva Pavak Peepalraj Popatraj Pritampal Pritampala Prithipala - Prithvi Prithvipal Prithviraj Prithviraja Prithvivarman Rahila Rajapala Rajyapala Ramabhadra - Ramachandra Rampal Rampala Rana Rangraj Rangraja Ratnapala Rijhpala Roshandeva Salivaahan - Sallaksanavarman Saugandeva Shurapala Sisupal Sisupala Sohanpal Somasi Someshvara Sonpal Sonpala - Srichandra Subhatavarman Sukhinpal Sukhinpala Sulakshanpal Sultanpal Sultanpala Surajpal - Surajpala Traillokyachandra Tejapala Tejpal Tolpal Trailokyavarman Trilochanpala Udayaditya Udaysangh Uddharandeva - Vachhal Vakpati Vapyata Varshapala Varshpal Vasudev Vidurathpal Vidurathpala Vidyadhara - Vigrahapala Vigraharaja Vihangpal Vijayapala Vijayasakti Vinayakapala Vindhyavarman Viramdeva Viravarman Virsinghadeva Yasovarman Abhayapala - Acharya Ahila Ajairaja Ajayapala Ajay-Singh Alhana Allat Amarangeya Ambra-Prasad Amritapala Anahilla Ari-Singh Arnoraja Asaraja - Asvapala Balaprasada Baliraja Bhatarka Bhert-Patt Bhima Bhimadeva Bhim-Singh Bhuvan-Singh Bhoja Bhoo-Chand Chachiga Chamundaraja - Chandanaraja Chandraraja Chaud-Singh Dadda Dambarisimha Deopali-Deo Dharapatta Dharasena Dhruvasena Dinakarn Dronasinha Dungar-Singh - Durlabharaja Gajasimha Gopala Gopendraka Gopendraraja Govinda Govindapala Guhasena - Guvaka Hammira Hammir-Singh Hanspal Hariraja Harischandra Hemachandra Jagadeva Jaitrasimha Jaitra-Singh - Jasapala Jaskarn Jayaraja Jayasimha Jay-Singh Jay-Singh-Deo Jayat-Singh Jayshikari Jendraraja - Jojalla Kalbhoj Kanhadadeva Karandeva Karan-Singh Karnadeva Katudeva Katukaraja Keerti-Verma Kelhana Kharagraha - Khuman Kirtipala Kirtivarman Kshemraja Kshem-Singh Kshetra-Singh Lakhanapala Lakhshaman-Singh Lakshmana - Lakshmanadeva Lakshmivarman Lavanyakarna Lunavarman Luntiga Mahap Mahayak Mahendra Mahendrapala Mahipala Maladeva - Manavasimha Mathan-Singh Mattat Mulraja Nagabhata Nagarjuna Nagraja Naradeva Narapati Naravarman Naravarmandeva Nar-Verma - Narwahan Padam-Singh Prahladana Pratapa Prithvipal Prithivipala Purnpala Rahap Ramapala Ratan-Singh Rayapala Rudrapala - Sahajapala Sahanapala Samanta Samant-Singh Samantasimha Samarasimha Samar-Singh Shaliwahan Shuchi-Verma - Siladitya Sindhuraja Singhraja Sinha Sinhad-Deo Siyaka Sohiya Someshwara Suratrana Tejasimha Tej-Singh Tribhuvanapala Udayasimha - Udayavarman Upendra Vagbhata Vahadiasimha Vairisimha Vairsingh Vajradeva Vakapati Vakpati Vakpatiraja - Valhana Valhanadeva Vallabharaja Vanraja Vasudeva Vatsaraja Vigraharaja Vigrharaja Vijada-Dasasyandana - Vijai-Singh Vikramaditya Vinaykpala Virama Viradeva Viranarayana Virsinh-Deo Viryarama Xemraja Yograj - } - female_names = { - Akal Anantadevi Damayanti Dattadevi Dehanagadevi Dhruvadevi Dhruvasvamini Hemavati - Kakanvati Kalayandevi Kanchuka Kanwar Karmavati Kumaradevi Lakshman Maharani Mahidevi Nattadevi - Prabhavati Prabhavatigupta Prasadhanadevi Puppadevi Rajamati Sanyukta Shrimitradevi - Annaladevi Bauladevi Bhuyikadevi Candrabhattarikadevi Chachinidevi Delhanadevi Desaladevi - Hariyadevi Laxmidevi Madhavi Mahalakshmi Manaladevi Mayanalladevi Namalladevi Padmaladevi Padmini - Pratha Rasaladevi Rudaladevi Rudrani Rupadevi Samyukta Sidhawa Somalladevi Suhava Sundaridevi Tihunaka Udayamati - } - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - - - mercenary_names = { - { name = "mercenary_company_rajaputra_band" } - { name = "mercenary_company_company_of_the_exile" } - { name = "mercenary_company_followers_of_the_priest_king" } - } -} -name_list_sindhi = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Khanzada" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Arora" } - { "dynn_Bai" } - { "dynn_Bansal" } - { "dynn_Batra" } - { "dynn_Bhagat" } - { "dynn_Bhasin" } - { "dynn_Bhatnagar" } - { "dynn_Bhatt" } - { "dynn_Bhuiyan" } - { "dynn_Chakravarti" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandra" } - { "dynn_Chaudhary" } - { "dynn_Chauhan" } - { "dynn_Chetri" } - { "dynn_Chohan" } - { "dynn_Chourey" } - { "dynn_Daima" } - { "dynn_Dass" } - { "dynn_Dayal" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Dewi" } - { "dynn_Dikshit" } - { "dynn_Dogra" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Goswami" } - { "dynn_Jahan" } - { "dynn_Jha" } - { "dynn_Kamat" } - { "dynn_Kapoor" } - { "dynn_Kapur" } - { "dynn_Khare" } - { "dynn_Kumari" } - { "dynn_Lahot" } - { "dynn_Lal" } - { "dynn_Mahajan" } - { "dynn_Mahato" } - { "dynn_Mahto" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Mehta" } - { "dynn_Nanda" } - { "dynn_Narayan" } - { "dynn_Nath" } - { "dynn_Natikar" } - { "dynn_Nimavat" } - { "dynn_Pandey" } - { "dynn_Pandit" } - { "dynn_Pathak" } - { "dynn_Pradhan" } - { "dynn_Pramanik" } - { "dynn_Rahaman" } - { "dynn_Rai" } - { "dynn_Raj" } - { "dynn_Rajabian" } - { "dynn_Ram" } - { "dynn_Rastogi" } - { "dynn_Rathor" } - { "dynn_Sachan" } - { "dynn_Sachdeva" } - { "dynn_Sahoo" } - { "dynn_Sanjay" } - { "dynn_Sethi" } - { "dynn_Shakya" } - { "dynn_Shan" } - { "dynn_Shrivastava" } - { "dynn_Shukla" } - { "dynn_Sinha" } - { "dynn_Solanki" } - { "dynn_Sologar" } - { "dynn_Soni" } - { "dynn_Tandon" } - { "dynn_Thakur" } - { "dynn_Thapa" } - { "dynn_Trikha" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Uniyal" } - { "dynn_Upadhyaya" } - { "dynn_Vaid" } - { "dynn_Varadarajan" } - { "dynn_Varma" } - { "dynn_Vinda" } - } - - dynasty_names = { - "dynn_Chand" - "dynn_Vaghela" - "dynn_Vagada" - "dynn_Jadeja" - "dynn_Sanchore" - "dynn_Sisodia" - "dynn_Rathore" - "dynn_Hada" - "dynn_Khanzada" - { "dynn_Agarwal" } - { "dynn_Ahuja" } - { "dynn_Arora" } - { "dynn_Bai" } - { "dynn_Bansal" } - { "dynn_Batra" } - { "dynn_Bhagat" } - { "dynn_Bhasin" } - { "dynn_Bhatnagar" } - { "dynn_Bhatt" } - { "dynn_Bhuiyan" } - { "dynn_Chakravarti" } - { "dynn_Chand" } - { "dynn_Chander" } - { "dynn_Chandra" } - { "dynn_Chaudhary" } - { "dynn_Chauhan" } - { "dynn_Chetri" } - { "dynn_Chohan" } - { "dynn_Chourey" } - { "dynn_Daima" } - { "dynn_Dass" } - { "dynn_Dayal" } - { "dynn_Deva" } - { "dynn_Devi" } - { "dynn_Dewi" } - { "dynn_Dikshit" } - { "dynn_Dogra" } - { "dynn_Gautam" } - { "dynn_Gopal" } - { "dynn_Goswami" } - { "dynn_Jahan" } - { "dynn_Jha" } - { "dynn_Kamat" } - { "dynn_Kapoor" } - { "dynn_Kapur" } - { "dynn_Khare" } - { "dynn_Kumari" } - { "dynn_Lahot" } - { "dynn_Mahato" } - { "dynn_Mahto" } - { "dynn_Majhi" } - { "dynn_Mandal" } - { "dynn_Mehta" } - { "dynn_Nanda" } - { "dynn_Narayan" } - { "dynn_Nath" } - { "dynn_Natikar" } - { "dynn_Nimavat" } - { "dynn_Pathak" } - { "dynn_Pradhan" } - { "dynn_Pramanik" } - { "dynn_Rahaman" } - { "dynn_Ram" } - { "dynn_Rastogi" } - { "dynn_Rathor" } - { "dynn_Sachan" } - { "dynn_Sachdeva" } - { "dynn_Sahoo" } - { "dynn_Sanjay" } - { "dynn_Sethi" } - { "dynn_Shukla" } - { "dynn_Sinha" } - { "dynn_Solanki" } - { "dynn_Sologar" } - { "dynn_Soni" } - { "dynn_Thapa" } - { "dynn_Trikha" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Uniyal" } - { "dynn_Upadhyaya" } - { "dynn_Vaid" } - { "dynn_Varadarajan" } - { "dynn_Varma" } - { "dynn_Vinda" } - } - - house_based_map_names = yes - - male_names = { - Abdul_Adheem Abdul_Mubdee Abdul_Mueid Abdul_Mutaalee Abdul_Noor Abdul_Qaiyoum Abdullah Abdur_Rauf Abdurrahman Alauddin Ali_Sher Amir Arnel Asamuddin Asbagh Aseed Azraq - Bahhath Bahlawan Bajala Bakhtari Bakkar Baleel Banhbina Bhoongar - Chanesar Changaz Chavdar Chawish - Dadu_Phattu Daghfal Dalu_Rai Dameer Damurah Dawlah Deva_Rai Devidas Dhiya Dhul Doda Dodo - Ebadaah Ebi Edhem Ehan Erfa - Faeq Fateh_Khan Feruzuddin - Gafur Gamal Genhra Gunero - Hafif Hamir Hasnain Hassam - Ibrar Iesa Iffaan Ifran Ismail - Jawad Junaid Junah - Kahah Karan Khafif Khaira Khinrah Koshi - Laeeq Laham Lahiah Laiq Laraib - Mahmud Mubarak Muhammad_Tur Mukesh Munzir Muzaffar - Nadhir Nafasat Nangar Naseeruddin Navid Nayab Nizamuddin - Omran Otar Owais - Pahtu Pasoon Punhun - Qaabeel Qabis - Rabbi Rafan Rabbi - Sabar Salahuddin Sanghar Sanjar Shabban Shah_Nawaz Shahabuddin Shamsher Sher Sikandar Somdutt Sonu Soomar Sumrah Syed - Taghlak Tai Tamachi Tauqeer - Ukkashah Ulfat Unar - Waasiq Waathiq Wabisah - Yahya Yala Yamak - Zabrij Zaheeruddin Zaid Zaigham Ziyauddin - } - female_names = { - Aamilah Aaminah Aani Abqurah Afeerah Akifah - Badiyah Barzah Basbas Begum Bhagi Bunanah Buqayrah Busrah - Caria Chanduni - Daliyah Dameetha Diqrah Dujanah - Eiman Eira Erfana - Fakhtah Fakihah Fusaylah Fuseelah - Ghalibah Ghareebah Ghitbah Gulfeshan - Haboos Hajjah Hajna Hakimah Hamide Hamnah Hamun Himu - Ibthaj Ibtihal Ibtisam Iffah Imtihal - Jahan_Aara Jaimala Jasrah Jumaymah Juwariyah - Kahkashan Kaif Koshi - Lafiza Lahifa Laiba Laiha - Maajida Maali Maeen Maeena Mah_Jabin Mah_Nur - Navida Nazneen Nazriya Noor - Ola Onima Ozza - Pakeezah Parghunda Parigul Pramda - Qabool Qadira Qadr - Raazia Rabab Rabita - Saadat Sabburah Sad Saimah Sehrish - Tari Taslima Tamadur Tamazur - Ufaq Ugay Uhee Uhud - Waahida Wabisa Wadad Waddia - Yaani Yameena Yelda - Zainab_Tari Zoyna Zuha - } - - mercenary_names = { - { name = "mercenary_company_company_of_the_dead_men" } - { name = "mercenary_company_harappan_band" } - } -} -name_list_marathi = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Kamadeva" - { "dynn_Aavhad" } - { "dynn_Acharya" } - { "dynn_Ahuja" } - { "dynn_Bhagat" } - { "dynn_Chakravarti" } - { "dynn_Desai" } - { "dynn_Deshmukh" } - { "dynn_Deshpande" } - { "dynn_Doshi" } - { "dynn_Gautam" } - { "dynn_Golelwar" } - { "dynn_Goswami" } - { "dynn_Ingle" } - { "dynn_Jadhav" } - { "dynn_Kamble" } - { "dynn_Kari" } - { "dynn_Karkhanis" } - { "dynn_Khare" } - { "dynn_Mehendale" } - { "dynn_Powale" } - { "dynn_Pradhan" } - { "dynn_Prasad" } - { "dynn_Roy" } - { "dynn_Sachdev" } - { "dynn_Shinde" } - { "dynn_Shrivastava" } - { "dynn_Solanki" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Upadhyay" } - { "dynn_Verma" } - } - - dynasty_names = { - "dynn_Kamadeva" - { "dynn_Aavhad" } - { "dynn_Acharya" } - { "dynn_Ahuja" } - { "dynn_Bhagat" } - { "dynn_Chakravarti" } - { "dynn_Desai" } - { "dynn_Deshmukh" } - { "dynn_Deshpande" } - { "dynn_Doshi" } - { "dynn_Gautam" } - { "dynn_Golelwar" } - { "dynn_Goswami" } - { "dynn_Ingle" } - { "dynn_Jadhav" } - { "dynn_Kamble" } - { "dynn_Kari" } - { "dynn_Karkhanis" } - { "dynn_Khare" } - { "dynn_Mehendale" } - { "dynn_Powale" } - { "dynn_Pradhan" } - { "dynn_Prasad" } - { "dynn_Roy" } - { "dynn_Sachdev" } - { "dynn_Shinde" } - { "dynn_Shrivastava" } - { "dynn_Solanki" } - { "dynn_Tripathi" } - { "dynn_Trivedi" } - { "dynn_Upadhyay" } - { "dynn_Verma" } - } - - male_names = { - Abaji Amutrao Bahadur Bahiroji Balaji Bajirao Chimnaji Dattaji Daulatrao Dhanaji Dhondu - Ekoji Fatehsinh Gopalrao Hambirao Harirao Jayajirao Jayappa Janakappa Jivajirao - Khanderao Krishnarao Madhavrao Mahadji Malerao Malharrao Mankoji Martandrao - Moropant Murarirao Nanasaheb Narayanrao Pandurangrao Pratapsinh - Raghunathrao Rajaram Ramaswami Ramchandrapant Ramshastri Ranojirao - Sadashivrao Sambhaji Sayajirao Serfoji Shahuji Shivaji Shivajirao - Tryambakrao Tukkoji Tukojirao Tulojirao Venkatrao Vishwanathpant Yashwantrao - Adityavarman Aiyaparaja Anantadeva Aparaditya Aparajita Arikesarin Arthapathi Avasara - Bhavadatta Bhima Bhoja Bijjala Chandra Chandraditya Chhadvaideva Chhittaraja - Daharasena Dhammayira Gandaraditya Goggiraja Gonka Guhala Guhalladeva Haripaladeva - Indradatta Indraraja Jatiga Jayakeshi Jhanjha Kamadeva Kapardin Keshideva Kirtiraja - Mallikarjuna Marsimha Mummuniraja Nagarjuna Nagavarma Naivarman Pullashakti Rattaraja - Sanaphulla Shashthadeva Shivachitta Skandavarman Soddhala Someshvara Sovideva Suketuvarman - Taila Tejahkantha Vappuvanna Vijayaditya Viravarmadeva Vishnuchitta Vyaghrasena - } - female_names = { - Ahilyabai Ambikabai Anandibai Anubai Bhiubai Deepabai Durgabai Gangabai Gunvantibai - Jankibai Jijibai Kamlabai Kashibai Laxmibai Mahadik Mastani Putalabai - Rajasbai Rajkunvarbai Ramabai Ranubai Saibai Sagunabai Sakavaarbai Sayeebai Soyarabai Sujanbai Tarabai Yesubai - Anjanibai Anuradha Durga Kamadevi Kamaladevi Kesarbai Kishori Kundaladevi Lasthiyavva - Maya Mogubai Radhabai Radhika Shevanti Shudhamati Sovidevi Sudha Sumati Sunita - } - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - - - mercenary_names = { - { name = "mercenary_company_company_of_four_kings" } - { name = "mercenary_company_servants_of_the_vatandar" } - { name = "mercenary_company_badami_companions" } - } -} -name_list_kashmiri = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Karkota" - "dynn_Utpala" - "dynn_Lohara" - "dynn_Maqpon" - "dynn_Vuppadeva" - { "dynn_Dhar" } - { "dynn_Gul" } - { "dynn_Shaikh" } - { "dynn_Kichlu" } - { "dynn_Sopuri" } - { "dynn_Mala" } - { "dynn_Poot" } - { "dynn_Mirakhur" } - { "dynn_Kadlabaju" } - { "dynn_Kokru" } - { "dynn_Bangru" } - { "dynn_Bakaya" } - { "dynn_Khashu" } - { "dynn_Kichlu" } - { "dynn_Misri" } - { "dynn_Lone" } - { "dynn_Mattoo" } - { "dynn_Mir" } - { "dynn_Sapru" } - { "dynn_Vani" } - { "dynn_Kesarwani" } - { "dynn_Talwani" } - { "dynn_Puiwani" } - { "dynn_Baandwani" } - { "dynn_Baswani" } - { "dynn_Tarangarwani" } - { "dynn_Kakarwani" } - { "dynn_Parwani" } - } - - dynasty_names = { - "dynn_Karkota" - "dynn_Utpala" - "dynn_Lohara" - "dynn_Maqpon" - "dynn_Vuppadeva" - { "dynn_Dhar" } - { "dynn_Gul" } - { "dynn_Shaikh" } - { "dynn_Kichlu" } - { "dynn_Sopuri" } - { "dynn_Mala" } - { "dynn_Poot" } - { "dynn_Mirakhur" } - { "dynn_Kadlabaju" } - { "dynn_Kokru" } - { "dynn_Bangru" } - { "dynn_Bakaya" } - { "dynn_Khashu" } - { "dynn_Kichlu" } - { "dynn_Misri" } - { "dynn_Lone" } - { "dynn_Mattoo" } - { "dynn_Mir" } - { "dynn_Sapru" } - { "dynn_Vani" } - { "dynn_Kesarwani" } - { "dynn_Talwani" } - { "dynn_Puiwani" } - { "dynn_Baandwani" } - { "dynn_Baswani" } - { "dynn_Tarangarwani" } - { "dynn_Kakarwani" } - { "dynn_Parwani" } - } - - male_names = { - Aaditya Abhimanyu Abhinanda Aditya Amit Anandhavardana Ananta Anil Arun Avantivarman Bansi Bharat Bhaskar Bhimagupta Birbal Braj Brij - Chakravarman Chandrakanta Chandrapida Charanpal Damodara Dinanath Dipak Durlabhaka Durlabhvardhana Eshin Ganga Gangaram Gautam Giridhari - Gotum Gul Gulhana Hariraja Harsa Jagadeva Jassaka Jayasimha Jivan Kailash Kalasa Kanak Kanaka Kanhaiya Karan Kashyap Khayaal Khushnaseeb - Kisan Kishan Krishan Ksemagupta Kshemendra Kuldip Kuvalayapida Lakshman Laksmandadeva Lalit Lalitaditya Madan Manohar Maruti Mohan Moti - Motilal Muktapida Mustafa Nanda Nandigupta Narain Naraindas Nidhi Niraj Omprakash Pamposh Paramanuka Pawan Phalunga Pran Pratapaditya - Purushottam Pushkar Radda Rahim Rahul Rajadeva Rajinder Rajiv Ramadeva Ramchandra Rameshwar Ratnakara Ravinder Rohit Salhana Samgramadeva - Samgramaraja Sandip Sankaravarman Satish Satyen Shakti Shambhu Shuhul Siddharth Sidhesh Simhadeva Simharaja Somnath Srivar Subhash Sudhir - Suhadeva Sussala Suresh Swaroop Tejbahadur Tribhuvanagupta Triloki Trilokanath Trilokinath Tunga Uccala Udayaraja Upendra Utkarsa Utpal - Vajraditya Vamana Vantideva Vasudev Vasudeva Vigraharaja Vijayapal Vir Vuppadeva Acalamangala Vidhyadhara - } - female_names = { - Aarati Aarti Aasa Aasha Abha Ambikaputrika Amritlekha Anangalekha Anjana Asamati Asha Bappika Bappatadevi Bhinna Bhuvanamati Bijala Bijja - Bimba Candala Candri Chakramardika Chandravati Chandri Chither Devalekha Didda Durga Ganga Girija Girja Gunadevi Gunalekha Hamsi Hiposh Indra - Indradevi Iravati Ishika Ishnadevi Jaishri Jaya Jayadevi Jayalakshmi Jayamati Kalhanika Kalphana Kalyana Kamala Kamaladevi Kamalavati Kamalesh - Kamla Kamlesh Kanjarika Kapila Kashi Kavita Kavya Kaya Kishori Kongposh Kota Kshma Kumudalekha Lalita Lothita Maghavati Mala Manjarika Manju - Meghavali Menila Mrigavati Nagalata Nagalekha Nanda Narendraprabha Nirupama Nonika Omadevi Padmalekha Padmasri Padmavati Parakasa Priti Punim - Radha Rajalakshmi Rajyasri Ramamya Rameshwari Ranarambha Ratna Ratnaprabha Ratnavali Sahja Sambavati Samma Sarada Saraswati Sharadaa Sharda - Shashi Shin Shirin Shradha Shweta Smriti Somala Sonia Sonth Srilekha Subhata Sugala Sugandha Sulla Surendravati Suryamati Susala Sushma Suyya - Sweta Syamala Tilaka Udda Vallabha Vasu Vimala Vina Yasomati Zoon Zoongash - } - - - mercenary_names = { - { name = "mercenary_company_company_of_kashmir" } - { name = "mercenary_company_host_of_kashmir" } - } -} -name_list_sinhala = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Moriya" - "dynn_Kalinga" - "dynn_Siri_Sanga_Bo" - "dynn_Chandravansha" - "dynn_Suryavansha" - "dynn_Kalinga_Lanka" - { "dynn_Amarasekara" } - { "dynn_Amarashinghe" } - { "dynn_Bandara" } - { "dynn_Cassim" } - { "dynn_Chandima" } - { "dynn_Dissanayake" } - { "dynn_Gunasekera" } - { "dynn_Herath" } - { "dynn_Jayalath" } - { "dynn_Jayarathna" } - { "dynn_Jayasinghe" } - { "dynn_Jayasundera" } - { "dynn_Karunaratne" } - { "dynn_Kulasekara" } - { "dynn_Kumara" } - { "dynn_Kumarasinghe" } - { "dynn_Liyanage" } - { "dynn_Madushanka" } - { "dynn_Potuhera" } - { "dynn_Rajapakse" } - { "dynn_Ranasinghe" } - { "dynn_Rathnayake" } - { "dynn_Ratnayake" } - { "dynn_Samantha" } - { "dynn_Senanayake" } - { "dynn_Siva" } - { "dynn_Suraweera" } - { "dynn_Thirimanne" } - { "dynn_Weerasekara" } - { "dynn_Weerasinghe" } - } - - dynasty_names = { - "dynn_Moriya" - "dynn_Kalinga" - "dynn_Siri_Sanga_Bo" - "dynn_Chandravansha" - "dynn_Suryavansha" - "dynn_Kalinga_Lanka" - "dynn_Kariyar" - { "dynn_Amarasekara" } - { "dynn_Amarashinghe" } - { "dynn_Bandara" } - { "dynn_Cassim" } - { "dynn_Chandima" } - { "dynn_Dissanayake" } - { "dynn_Gunasekera" } - { "dynn_Herath" } - { "dynn_Jayalath" } - { "dynn_Jayarathna" } - { "dynn_Jayasinghe" } - { "dynn_Jayasundera" } - { "dynn_Karunaratne" } - { "dynn_Kulasekara" } - { "dynn_Kumara" } - { "dynn_Kumarasinghe" } - { "dynn_Liyanage" } - { "dynn_Madushanka" } - { "dynn_Potuhera" } - { "dynn_Rajapakse" } - { "dynn_Ranasinghe" } - { "dynn_Rathnayake" } - { "dynn_Ratnayake" } - { "dynn_Samantha" } - { "dynn_Senanayake" } - { "dynn_Siva" } - { "dynn_Suraweera" } - { "dynn_Thirimanne" } - { "dynn_Weerasekara" } - { "dynn_Weerasinghe" } - } - - male_names = { - Agabala Aggabodhi Agibuti Ananda Anikanga Apaya Arittha Avirada Ayasmantha Bhuvanekabahu Butisamana Chodaganga Dahamsena - Danamitta Dappula Dathappabhuti Dathopatissa Dharmapala Dharmasena Dharmasoka Dhatusena Digakassapa Diganaguli - Digasumana Gajabahu Hadaka Hadana Hujata Jayabahu Jetthatissa Jhotisena Kashyapa Kassapa Kitti Kittisena Kittivarma - Magamitta Mahadeva Mahanaga Mahasattha Mahasena Mahasiva Mahinda Manavanna Mihidala Mihindala Mitta Moggallana - Nandamitta Narendra Narendrasinha Nirmala Padita Parakkamabahu Parakramabahu Rajasinha Rakasala Ratana Rohaka - Sadhatissa Sagala Saliya Sanghamitta Sanghatissa Sankha Sena Senarat Sidata Sigaratissa Silameghavanna Sinhabahu - Siva Sobana Sobika Sudata Sumana Surakita Suratissa Tissa Udaya Upatissa Vassaba Vebeliya Vepali Vijayabahu - Vikrama Vikramabahu Vimaladharma Vimaladharmasuriya Virabahu Viranarendra - } - female_names = { - Abijliguta Ahali Anula Anurada Anuradi Anuridi Asadaguta Asali Aselaya Ata Barani Bodhideva Bohodevi Butadata - Cadana Citadevi Citaguta Damadina Damaguta Damarajha Damarakita Damaruci Damasena Damati Damika Damutara - Devanakata Devanapiya Devarakita Dhamarajha Dhamika Jhita Jhotisena Jhotiya Kalyanavati Kanadasika Kanaguta - Kanatissa Kitaka Kituka Kubira Kumara Kumaradata Kumaratiha Lasani Lilavati Maga Magha Maka Maki Mita Nagadina - Narayaguta Nuga Nugaya Paduma Palikada Pamatissa Purushadata Pusamitta Rajhita Ramadata Ramajhata Ramani - Rasumiliya Reva Sagara Samidata Samudaguta Savera Seneya Silmini Siriguta Siripali Sivala Sivanabuti Somali Sugula - Sujhata Sumanadevi Suri Suriguta Tisi Tissabuti Tissadata Tissadevi Tissamita Tissaraka Tissarakita Yahasaya Yahasini - } - - pat_grf_name_chance = 35 - mat_grf_name_chance = 20 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 5 - - - - mercenary_names = { - { name = "mercenary_company_company_of_the_staff" } - { name = "mercenary_company_rice_grain_band" } - } -} -name_list_nepali = { # (Newar, Garwhali, Kuamoni, Khasa, Gorkha, Tamangic, etc.) - - dynasty_names = { - "dynn_Licchavi" - "dynn_Malla" - "dynn_Khas_Malla" - "dynn_Thakuri" - "dynn_Nuwakot_Thakuri" - "dynn_Suryavamsa" - "dynn_Katyuri" - "dynn_Chand" - "dynn_Parmar" - "dynn_Khasiya" - "dynn_Newari" - "dynn_Gorkha" - "dynn_Tamang" - "dynn_Gurung" - "dynn_Manang" - "dynn_Thakali" - "dynn_Chantyal" - "dynn_Ghale" - "dynn_Kutang" - "dynn_Kaike" - } - - male_names = { - Aadarsh Aadesh Aadi Aadinath Aadishankar Aaditya Aahlaad Aakaash Aakanksha Aakar Aakarshan Aalok Aamod Aanga Aashish Aastik Aatish Abhaya Abhayananda Abhichandra Abhidi Abhijat Abhijaya Abhijit Abhik Abhilash Abhimand Abhimani Abhimanyu Abhimoda Abhinabhas Abhinanda Abhinandana Abhinatha Abhinava Abhiraj Abhirath Abhirup Abhishek Abhisoka Abhisumat Abhisyanta Abhivira Abhyagni Abhyudaya Abhyudita Abinash Achalendra Achanda Acharya Achindra Achintya Achyut Adesh Adhik Adhikara Adhipa Adhiraj Adhita Adikavi Adil Adinath Adit Aditya Adityanandana Adripathi Advay Adwaita Agastya Agharna Aghat Agneya Agni Agrim Agriya Ainesh Ajamil Ajatashatru Ajaya Ajendra Ajit Ajitabh Ajitesh Ajmal Akash Akhil Akhilesh Akshan Akshar Akshaya Akshit Akshyat Akul Alaap Alhad Alok Amaanat Amal Amalendu Amalesh Aman Amar Amartya Ambar Ambarish Ambuj Ameya Amil Amir Amish Amit Amitabh Amitesh Amitiyoti Amiya Amod Amogh Amoha Amol Amrish Amrit Amshu Amshuvarma Amul Anadi Anagh Ananda Ananga Ananta Anek Angad Anil Animesh Anirudh Anirvan Anish Aniteja Ankit Ankur Ankush Anmol Anniruddha Anshul Anshuman Anshumat Anubhav Anugya Anuj Anup Anupam Anurag Anuttam Aramudi Aranab Archan Archit Ardhendu Arghya Arhant Ari Arijit Arindam Arjit Arjuna Arjunadeva Arnav Arnesh Arokya Arpan Arul Arun Arvind Arya Aryaman Asav Ashank Ashesh Ashis Ashoka Ashu Ashutosh Ashwin Asim Aslesh Atal Atanu Athiya Atma Atmajyoti Atman Atmanand Atreya Atul Avadhesh Avanindra Avanish Avatar Avikshit Ayush - Babu Badal Badri Badrinath Baikuntha Bala Baladeva Baladitya Balaji Balaraja Balaram Balbir Balchandra Baldeva Balgopal Balgovind Balkrishan Balmani Balmohan Balraja Balram Balwant Bama Bamadeva Bandhu Bandhul Bankim Bankimchandra Bansi Bansilal Barindra Barun Basanta Basu Basudeva Bhadrak Bhagat Bhagirath Bhagwan Bhairab Bhairaja Bhajan Bharadwaj Bharat Bhargava Bhaskar Bhaswar Bhaumik Bhavesh Bhavya Bhim Bhishma Bhooshit Bhrigu Bhudeva Bhupal Bhupat Bhupen Bhupendra Bhushan Bhuvan Bhuwanesh Bhuwaneshwar Bibek Bibhaakar Bibhas Bibhu Bidur Bidwan Bidyut Bihan Bijanyendra Bijaya Bijendra Bikash Bikesh Bikram Bilas Bimal Binaya Binayak Bindusar Binesh Binit Binod Bipin Biplav Bipra Bipul Bir Biraja Biral Birat Birbal Birendra Bishal Bishnu Bishwa Bishwambhar Bishwas Bishweshwar Biswa Biswajit Biswas Bodhan Brajesh Bramha Bratindra Brijesh Brijmohan Buddha Buddhi Byas - Chaap Chaitanya Chaitya Chakor Chakra Chakrapani Chakshu Chaman Champak Chanakya Chanchal Chandan Chandra Chandrachur Chandrahas Chandrak Chandrashekhar Chandresh Chapal Chapilla Charan Charanjit Chatura Chetan Chhandak Chidambar Chidananda Chinmaya Chintak Chintamani Chintan Chirag Chiranjeev Chirantan Chirayu Chitta Chittaprasad Chittaranjan Chittesh Chudamani - Dakshesh Dakshi Daman Damodar Danbir Darpak Darpan Darshan Dasharath Dattatreya Dayanand Deva Devabrata Devaj Devajit Devajyoti Devak Devanand Devang Devarsi Devashish Devdarsh Devdas Devendra Devesh Deveshwar Devrat Dhairya Dhana Dhananjay Dhanesh Dharanidhar Dharma Dharmadeva Dharmapal Dharmendra Dharmendu Dharmesh Dharuna Dhatri Dhawal Dhiman Dhimant Dhir Dhiraja Dhiren Dhirendra Dhritiman Dhruba Dhruvadeva Dhyan Dhyanesh Dhyaneshwar Digambar Dilawar Dilip Dinabandhu Dinakar Dinendra Dinesh Dinkar Dip Dipak Dipan Dipankar Dipendra Dipendu Dipesh Dipit Diptanshu Dipendra Divya Divyesh Diwakar Durgesh Durjaya Dushyanta Dwaipayan Dwarika Dwijaraja Dwijendra Dwijesh - Ekachakra Ekagrah Ekalavya Ekambar Ekanath Ekansh Ekaraja Ekavir Eknath Ekraja Fanindra Fanish Fanishwar Fateh Finjo Firaja - Gagan Gajanand Gajendra Gambhir Ganapati Ganaraja Gandharva Gandhi Gandhik Ganesh Gangadeva Gangadhar Gangadutt Gangesh Gaurang Gaurav Gautam Ghanashyam Giri Giridhar Girija Girindra Giriraja Girish Git Gokul Gopal Gopan Gopesh Gopi Gorakh Goral Gourishankar Govinda Grishma Gulzarilal Guna Gunakama Gunakamadeva Gunaratna Gurudas Gurudutt Gyan Gyaneshwar Gyani - Hanuman Hardik Harendra Haresh Hari Harigopal Harihar Harinarayan Harindra Harish Harishankar Harishchandra Harmendra Harsha Harshadeva Harshad Harshil Harshit Hasan Hasit Hem Hemachandra Hemanga Hemant Hemendra Hemendu Hemish Heramba Himachal Himadri Himaghna Himal Himanshu Himmat Hira Hiranmay Hiranya Hirendra Hiresh Hiten Hitendra Hitesh Hridaya Hridayesh Hrishikesh - Ilesh Iman Indivar Indra Indrajit Indranil Indubhushan Indushekhar Ishan Ishat Ishayu Ishwar Jag Jagadip Jagadish Jagajit Jagan Jagannath Jagat Jalendu Janak Janardan Janu Japa Japendra Jaswant Jatan Jatin Jawahar Jaya Jayabhima Jayadeva Jayananada Jayanta Jayaraja Jayarjuna Jayari Jayarudra Jayasimha Jayavarma Jaysha Jishnu Jitari Jitendra Jivan Jyotindra - Kabir Kailash Kalash Kalidas Kalyana Kamadeva Kamal Kamalesh Kamlesh Kanak Kanan Kanhaiya Kapil Karna Kartik Kartikeya Karunakar Kashi Kashyap Kaushal Kaushik Kavi Kavin Kedar Kesar Keshav Ketak Ketan Kewal Khagendra Khem Kiran Kirtan Kishor Krachalla Kradhichalla Krashichalla Kripal Krishna Kuber Kuldip Kumar Kunal Kundan Kusha - Labh Lagan Lahar Lakshman Lalit Lava Layak Lekh Lila Lochan Lokesh Loknath Madan Madhav Madhukar Madhup Madhur Madhusudan Magan Mahadev Mahant Mahavir Mahendra Mahesh Maheshwar Mahideva Maitreya Malkit Manadeva Manas Manav Manavendra Mandar Manendra Mangal Mangesh Mani Manik Manindra Manish Manishankar Manit Manjit Manjul Manmohan Manohar Manoj Manoranjan Manu Mathura Matsendra Maulik Mayur Megh Mihir Milan Milap Milind Mit Mitesh Mithila Mithilesh Mithun Mitra Mitul Mohak Mohan Mohit Mohnish Mridul Mrigendra Mrigesh Mrityunjay Mukesh Mukti Mukul Mukunda Mukut Muni Munindra Murali Murari Murti - Nabendu Nabin Nagaraja Nagendra Nagesh Nakshatra Nakul Nalin Nanak Nandakishor Nandan Nandin Nanyadeva Narahari Narasimha Narayan Narendra Narendradeva Naresh Narottam Narsinghdeva Natesh Natraja Natwar Navanit Navin Navnit Navrang Nawal Nayan Netra Ngodup Nhu Nhuchhe Nhuja Nibodh Nidhish Nigam Nihal Nihar Nikash Niket Niketan Nikhil Nikhilesh Nikkon Nikunja Nil Nilambar Nilesh Nimesh Nipun Nirad Niraja Nirajit Niranjan Nirav Nirbhaya Nirjhar Nirmal Nirmay Nirupam Nirvan Nischal Nishad Nishanta Nishesh Nishit Nishok Nitesh Nrideva Nripa Nripendra Nripesh NugaH_ - Oja Om Omkar Omprakash Paavan Padam Padmanabha Palash Pallav Pankaj Parag Parakram Paramananda Paramesh Parameshwar Paramjeet Paranjay Paras Parashar Paresh Parijat Parikshit Parimal Paritosh Parmesh Partha Parul Parvat Parvesh Pathik Pavan Pavitra Pawan Phalgun Phanindra Pitambar Piyush Poojan Poojit Prabal Prabhakar Prabhas Prabhat Prabhav Prabhu Prabir Prabodh Prabuddha Pradip Pradyot Pradyumna Prafulla Pragun Prahalad Prajesh Prajit Prajun Prakash Prakat Prakrit Prakul Pramesh Pramit Pramod Pran Pranav Pranay Pranit Prasad Prasanna Prasata Prashanta Prasun Pratapa Pratik Pratit Pratosh Praval Pravin Pravir Prayag Prem Premal Pritam Prithu Prithvi Pritish Pujit Punit Punya Purna Purnendu Puru Purushottam Pushkar - Raghav Raghu Rahul Raja Rajan Rajarshi Rajendra Rajesh Rajit Rajiv Rajkumar Raju Rajul Rajyeshwar Rakesh Raksha Ram Raman Ramchandra Ramesh Rameshwar Ramkrishna Ranajit Ranasura Randhir Ranjan Ranjiv Rasik Ratish Ratna Ratnakar Ratri Ratul Raunak Ravi Ravikiran Ravindra Resham Riddhiman Rijul Ripu Rishabh Rishi Rishikesh Rochan Rohan Rohit Ronak Roshan Ruchir Rudra Ruhan Rujul Rup Rupal Rupesh Rupin Rushil - Sabal Sabin Sachchit Sachet Sachetan Sachindra Sachit Sadar Sadhan Safal Sagar Sagun Sahadeva Sahaj Saharsh Sahas Sahdeva Sahil Sajal Sajan Sajit Sajiv Sajjan Saket Samar Samarjit Samartha Sambhav Sambit Sambuddha Samir Samiran Sampat Samrat Samudra Sanat Sanchay Sanchit Sangrama Sanjay Sanjit Sanjiv Sanjog Sankalpa Sanket Santosh Sanyog Sapan Saral Sarang Saras Sarasvat Sarat Sarba Sarbagya Sarbajit Sarish Sarthak Sarup Sarvesh Satindra Satish Satruijt Satyajit Satyanarayan Satyavan Satyavrat Satyavrata Satyendra Saubhagya Saumya Saunak Saurav Savir Savit Sawa Sevak Shaan Shahid Shailendra Shailesh Shambhu Shamindra Shamit Shankara Shankaradeva Shanta Shantanu Sharad Sharadchandra Sharan Shardul Shashank Shashwat Shatrughna Shatrujit Shekhar Shesh Shikhar Shirish Shishir Shiva Shivadeva Shivesh Shobhan Shravan Shreshta Shreyas Shridhar Shrigopal Shrihari Shrish Shrikanta Shrikrishna Shripad Shrish Shulabh Shyam Shyamsundar Siddha Siddhanta Siddhartha Siddhi Smaran Sohan Sohil Som Sourabh Sridhar Srijan Subal Subarna Subas Subhan Subhas Subodh Subrat Sudarshan Sudi Sudip Sudesh Sudeva Sudhakar Sudhanshu Sudhindra Sudhir Sugandha Suhas Sujan Sujash Sujaya Sujit Sukanta Sukesh Sukrit Sukumar Sulabh Sulekh Sulochan Suman Sumangal Sumant Sumantu Sumedh Sumit Sunand Sundar Sundip Sunil Sunirmal Sunit Suprakash Suprit Sur Suraja Suranjan Suras Surendra Suresh Surit Surya Suryavansi Sushanta Sushil Sushobhan Sutej Suvan Suvrata Suyash Suyog Swagat Swami Swapan Swapnil Swarup Swayambhu - Tanuj Tapan Tapas Tarak Taral Taran Tarang Tarini Tarun Tej Tejas Tenzin Thakur Tika Tilak Tiray Tirtha Tirtha Tribhuvan Trilochan Trilok Trishanku Tufan Tulasi Tushar Tyag Udar Udaya Udayadeva Uddhav Udgam Udit Ujesh Ujjala Ujwal Ulban Ullash Umanga Umesh Unnabh Unnat Upendra Utkarsh Utkrishta Utpal Utsang Utsarg Utsav Uttam Uttar - Vaibhav Vajra Vajradeva Vajraraja Vajrarata Vallabh Varun Vasant Vasava Vasu Vasudeva Vasuraja Vatsa Vatsal Ved Vibhu Vijaya Vijaykama Vijaykamadeva Vikesh Vikram Vimal Vipin Vishal Vishvadeva Yadav Yadunath Yagya Yalamber Yama Yamaraja Yash Yatindra Yatish Yogendra Yogesh Yogita Yougal Yubin Yubraja Yuddha Yuvaraja - } - - female_names = { - Aanchal Aapti Aarati Aastha Aayushi Abha Abhaya Abhijita Abhilasha Achal Achala Adarsh Adarshini Adishree Aditi Adrika Agrata Agrima Ahalya Ahladita Aishwarya Ajala Ajanta Ajita Akanksha Akriti Akshita Akuti Alisha Alka Aloki Alpa Alpana Amba Ambi Ambika Ambu Ambuja Amina Amisha Amita Amodini Amolika Amrita Amshula Amulya Anahita Anamika Anandi Anandini Anandita Ananta Ananya Anasuya Anchal Anchita Angana Anika Anima Anindita Anisha Anita Anjali Anjana Anjika Anjini Anju Anjuli Anjushri Ankita Annapurna Anshu Anshula Antara Anu Anuhya Anuja Anumati Anupama Anuprabha Anupriya Anuradha Anusha Anushri Apala Aparajita Aparna Apsara Apurva Aradhana Arati Archa Archana Archisha Archita Arpana Arpita Aruna Arundhati Aruni Arunima Aryaa Asha Ashima Ashrita Ashwini Asita Askini Aslesha Asmita Aspru Atasi Atmaja Atreyi Avani Avanti Avantika Avinashi Ayati Ayela Ayushi Ayushmati - Bageshri Baidehi Baijayanti Baisakhi Bala Banamala Bandana Bandita Banhi Banita Barnali Barsha Baruna Baruni Basabi Basanta Basanti Basudha Basundhara Bela Bhadra Bhadraa Bhagirathi Bhagwanti Bhagya Bhagyashri Bhairavi Bhakti Bhamini Bhanu Bhanuja Bhanumati Bhanuni Bharani Bharati Bhargavi Bhavana Bhavini Bhavya Bhawani Bhintuna Bhrikuti Bhrikutidevi Bhumi Bhumika Bhuvana Bhuvi Bibha Bidya Bimala Bina Binata Binaya Bindhya Bindiya Bindu Binita Binodini Bipasha Birsha Bishakha Bishnu Brinda - Chaand Chahana Chaitali Chaitan Chameli Champa Chanchala Chandaa Chandana Chandani Chandika Chandni Chandra Chandraleksha Chandrani Chandrika Chapala Charu Charulata Cheshtaa Chetana Chhabi Chhaya Chintan Chitra Chitralekha Chitrali Chitrani Chitrarekha Chitrita - Damayanti Damini Darpana Darshana Darshita Daya Dayanita Dayita Debika Deeba Deekshya Deepa Deepali Deepamala Deepaprabha Deepika Deepta Devaki Devangana Devangi Devashree Deveshi Devi Devika Devyani Dhanashri Dhanishta Dhanya Dhanyata Dhara Dharana Dharani Dharini Dharti Dhavalaa Dhriti Dhwani Dibya Dikshya Dina Dipali Dipashri Dipti Dipkisha Dishita Diti Divisha Drashtaa Draupadi Drisana Dristi Durga Dolma Doma Dooma - Ekata Ela Elina Enakshi Esha Eshita Eyrum Falguni Fathi Gajra Gandhali Ganga Gargi Garima Gauri Gaurika Gautami Gayatri Geeti Geetika Girija Girisha Girwani Gita Gitanjali Godavari Gopika Govindi Gulab Gunjana Gunjita Gyanada Gyani - Hansa Hansika Hansini Harhsa Harini Harita Harshini Harshita Hasina Hasita Heena Hema Hemaadri Hemakshi Hemangi Hemangini Hemani Hemanti Hena Hima Himaadri Himani Hira Hiral Hisi Hisila Hita Hiya Huma Iha Ikshu Ila Indira Indrani Indrayani Indu Induja Indumati Inu Ipsa Ipsita Ira Isha Ishana Ishani Ishika Ishita Ishorya Ishwari Ita - Jagadamba Jagatee Jagrati Jagriti Jahnavi Jala Jalaja Jamuna Janaki Janani Janhavi Jass Jaya Jayahree Jayani Jayanti Jayaprada Jayashree Jayati Jayita Jaysha Jhankar Jharna Jiwan Joshita Juhi Jyoti Jyotika Jyotsna Kadambari Kadambini Kajal Kala Kalavati Kali Kalika Kalindi Kalpana Kalpita Kalyani Kamakshi Kamala Kamalakshi Kamalika Kamalini Kamana Kanan Kanchan Kanchana Kanta Kanti Kanya Kapila Karishma Karuna Kashika Kashvi Kasturi Katyayani Kaumudi Kaushalya Kaveri Kavita Kesari Keshika Ketaki Ketana Khusbu Khusi Kinjal Kiran Kirtana Kirti Kishori Komal Koyel Kranti Kripa Kriti Kshyama Kshyanika Kukee Kumari Kumkum Kumud Kumudini Kunda Kunja Kunjal Kunjana Kuntal Kuntala Kunti Kushal Kusa Kusum Kusumita Kusumlata - Lajja Lajjawati Lajjita Lakshan Lakshita Lakshmi Lakshya Lalana Lalima Lalita Lasta Lata Latika Leela Leena Lekha Lipi Lipika Lochana Lumanti Luniva Luswaa Maanika Madhavi Madhu Madhubala Madhul Madhulata Madhumati Madhumita Madhuri Madhurima Madhushri Magana Mahi Mahika Mahima Maina Maitreyi Maiya Mala Malati Malavika Maliha Malika Malina Malini Mamata Manasa Manasi Mandakini Mandara Mandeep Mandira Mangala Manika Manisha Manishi Manjari Manjira Manju Manjula Manjulika Manjusha Manjushri Manna Manorama Manshree Manushri Marisa Matina Matrika Mausam Mausami Maya Mayuri Medha Medhaavi Medini Meenakshi Meera Megha Meghana Meha Mehal Mela Menaka Menkhu Mhichaa Mihsa Mina Minal Mira Mita Mohana Mohini Mohita Monal Moti Mridu Mridula Mrinal Mrinalini Mudita Mudrika Mugdha Mukta Mukti Muna Munira - Nagina Naina Nalika Nalini Namita Namrata Nanda Nandana Nandi Nandika Nandini Nandita Narayani Narmada Nashita Navanita Navina Nayana Nayantara Neela Neelanjana Neeraja Neeva Neha Nehal Nheela Niba Nibha Nidhi Niharika Nikhita Nila Nilam Nilasha Nilaya Nileen Nilima Nimisha Niranjana Nirmala Nirmayi Nirupa Nirupama Nirvana Nischita Nisha Nishita Nishtha Nita Niti Nitu Nivedita Nivriti NugaH_ Nutan Oashni - Ojal Ojasvi Oma Oshika Padma Padmavati Padmini Palisha Pallavi Pampha Pankaja Panna Parameshwari Parimitaa Parinita Parnita Parvati Pavana Pavitraa Payal Piya Poonam Prabha Prachi Pradipta Pragati Pragya Prakriti Prama Pramila Pramiti Pranati Prapti Prarthana Prashansa Prashanti Pratibha Pratigya Pratikshya Pratima Pratishtha Pratiti Preetal Prekshya Prema Premala Prerana Prisha Prita Priti Pritika Priya Priyanka Priyasha Pujita Puja Punam Punita Punya Purnima Pushpa Pushpanjali Pushpita - Raakhi Rachana Rachita Radha Radhika Ragini Rajalakshmi Rajani Rajashri Rajeshwari Rajkumari Rakhi Rakshita Rakshya Rama Rambha Rameshwari Rangana Rani Ranjana Ranjini Ranjita Rashmi Rasika Rati Ratna Reena Reena Rekha Renu Renuka Reshma Reva Revati Richa Riddhi Riju Rijuta Rima Rishika Rita Riti Ritika Ritu Rochana Rohana Rohini Rohita Rojita Roma Romila Roshni Ruchi Ruchika Ruchira Ruchita Rudrani Rukmini Ruma Rupa Rupali Rupashi Rupashi - Sabita Sabitri Sachi Sachita Sadhana Sadhika Sadhvi Sagarika Saguna Sahana Saheli Sainyukta Sajala Sajani Sajita Sakhi Salila Salouni Samata Samhita Samidha Samina Samita Samixya Samyukta Sananda Sanchita Sandhya Sang Sangita Sanjana Sanjna Sanju Sanjula Sanoja Sanskriti Santoshi Sapana Sarala Saranya Saraswati Sarayu Sarbani Sarita Sarjana Sarmistha Saroja Sarojini Sashi Sasmita Sati Satya Savarna Savita Savitri Sevati Sevita Shabana Shaila Shailaja Shaili Shakti Shakuntala Shalini Shama Shameena Shamitaa Shanta Shanti Sharada Sharika Sharini Sharmila Sharmistha Shashi Shaswati Sheela Sheetal Shefali Shibani Shikha Shila Shilpa Shilpita Shirisha Shristi Shivani Shobha Shobhana Shraddha Shree Shreela Shreya Shreyashi Shridevi Shrijani Shristi Shruti Shubha Shubhadra Shubhangi Shubhra Shuchita Shukla Shukti Shushma Shweta Shyama Shyamala Shyamali Sibani Sichu Siddhi Simma Sindhu Sita Sitara Situ Smirti Smita Smriti Sneh Sneha Snehal Snigdha Sohini Sona Sonal Sonali Sonia Sonika Soniya Sourabhi Sraddha Sridevi Srijana Sristi Stuti Subhadra Subhagya Subhashini Subhi Sucheta Suchi Suchira Suchita Suchitra Sudeepa Sudeepta Sudeshna Sudevi Sudha Sudhi Sudipta Sudipti Sugita Suhasini Suhina Sujala Sujata Sujaya Sukriti Sulakshana Sulalita Sulekhaa Sulochana Sumana Sumanta Sumati Sumita Sumitra Sunanda Sunandini Sunandita Sunayana Sunayani Sundari Suneeti Sunetra Sunita Suniti Suprabha Supriti Supriya Suraksha Suranjana Surekha Sureshi Suruchi Surupa Sushanti Sushila Sushma Sushmita Sushobhana Susila Susmita Swaa Swapna Swarupa Swasti Swati Sweta Swornima - Taapasee Tamanna Tamasi Tanu Tanuja Tanushri Tanvi Tapani Tapasi Tara Tarana Tarannum Tarika Tarini Tarpana Tarulata Teesa Tejasee Tejaswi Tilottama Timila Tirtha Tripti Trisha Trishna Tulasi Tsamchoe Tshering - Udipti Udita Uditi Ujjwala Uma Unaati Unima Upama Upasana Urjita Urmi Urmila Urvashi Usha Ushna Utsha Vaijayanti Vani Vanita Varuna Vasanti Vedika Vibha Vidya Vijaya Vinaya Vindhya Vinita Vrinda Yamini Yamuna Yasoda Yasodhara Yeju Yogita Yuna Yunisha Yuvani Yuvika - } - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_iranian.txt b/common/culture/name_lists/00_iranian.txt deleted file mode 100644 index b6f9b240..00000000 --- a/common/culture/name_lists/00_iranian.txt +++ /dev/null @@ -1,922 +0,0 @@ -name_list_persian = { - - cadet_dynasty_names = { - "dynn_KA_rawA_n" - "dynn_Jorjani" - "dynn_Samanid" - "dynn_Tahirid" - "dynn_Kartid" - "dynn_Qutlugh-Khan" - "dynn_Nasrid" - "dynn_Mihrabanid" - "dynn_Safavid" - "dynn_Gilani" - "dynn_Sarbadar" - "dynn_Kazeruni" - "dynn_Tahirids" - "dynn_Ummayyads" - "dynn_Samanid" - "dynn_Muqannid" - "dynn_Sunpadh" - "dynn_Khurramites" - "dynn_Khorramdin" - "dynn_Maziar" - "dynn_Mardavij" - "dynn_Ustadh" - "dynn_Saffari" - "dynn_Laith" - "dynn_Ferdowsi" - "dynn_Tamerlane" - "dynn_Hulagu" - "dynn_Ajami" - "dynn_Rumi" - "dynn_Hamadan" - "dynn_Parthi" - "dynn_Kubra" - "dynn_Naqshband" - "dynn_Bukhari" - "dynn_Hanifa" - "dynn_Khaldun" - "dynn_Dinid" - "dynn_Tusid" - "dynn_Khusrawid" - "dynn_Birunid" - "dynn_Maraghid" - "dynn_Muqaffid" - "dynn_Ashkan" - "dynn_KhurA_sA_nI_" - "dynn_MA_zindarA_nI_" - "dynn_TihrA_nI_" - "dynn_ShI_rA_zI_" - "dynn_AhvazI_" - "dynn_RazavI_" - "dynn_MA_shadI_" - "dynn_KermahadI_" - "dynn_Gaznin" - "dynn_Ka_usiya" - { "dynnp_al-" "dynn_Ghazali" } - { "dynnp_al-" "dynn_Qazwini" } - { "dynnp_al-" "dynn_Juwayni" } - { "dynnp_al-" "dynn_Farisi" } - "dynn_Hamadani" - "dynn_Ganjavi" - { "dynnp_al-" "dynn_Amuli" } - "dynn_Balkhi" - "dynn_Bukhari" - "dynn_Suhrawardi" - { "dynnp_al-" "dynn_Abhari" } - { "dynnp_al-" "dynn_Tusi" } - "dynn_Hamadani" - { "dynnp_al-" "dynn_Shirazi" } - "dynn_Gorgani" - "dynn_Mustawfi" - "dynn_Ansari" - { "dynnp_al-" "dynn_Kashi" } - "dynn_Kubra" - "dynn_KhayyA_m" - { "dynnp_al-" "dynn_Razi" } - "dynn_Sina" - { "dynnp_al-" "dynn_Jaldaki" } - "dynn_Ishaqid" - "dynn_Shi" - "dynn_Al-Dawla" - "dynn_Yalavach" - "dynn_Wardanrid" - "dynn_Kakuyid" - "dynn_Sughnan" - "dynn_Mirs" - "dynn_Roshan" - "dynn_Gorno" - "dynn_Guliab" - "dynn_Zulcarnei" - } - - dynasty_names = { - "dynn_KA_rawA_n" - "dynn_Jorjani" - "dynn_Samanid" - "dynn_Tahirid" - "dynn_Kartid" - "dynn_Qutlugh-Khan" - "dynn_Nasrid" - "dynn_Mihrabanid" - "dynn_Safavid" - "dynn_Gilani" - "dynn_Sarbadar" - "dynn_Kazeruni" - "dynn_Tahirids" - "dynn_Ummayyads" - "dynn_Samanid" - "dynn_Muqannid" - "dynn_Sunpadh" - "dynn_Khurramites" - "dynn_Khorramdin" - "dynn_Maziar" - "dynn_Mardavij" - "dynn_Ustadh" - "dynn_Saffari" - "dynn_Laith" - "dynn_Ferdowsi" - "dynn_Tamerlane" - "dynn_Hulagu" - "dynn_Ajami" - "dynn_Rumi" - "dynn_Hamadan" - "dynn_Parthi" - "dynn_Kubra" - "dynn_Naqshband" - "dynn_Bukhari" - "dynn_Hanifa" - "dynn_Khaldun" - "dynn_Dinid" - "dynn_Tusid" - "dynn_Khusrawid" - "dynn_Birunid" - "dynn_Maraghid" - "dynn_Muqaffid" - "dynn_Ashkan" - "dynn_KhurA_sA_nI_" - "dynn_MA_zindarA_nI_" - "dynn_TihrA_nI_" - "dynn_ShI_rA_zI_" - "dynn_AhvazI_" - "dynn_RazavI_" - "dynn_MA_shadI_" - "dynn_KermahadI_" - "dynn_Gaznin" - "dynn_Ka_usiya" - { "dynnp_al-" "dynn_Ghazali" } - { "dynnp_al-" "dynn_Qazwini" } - { "dynnp_al-" "dynn_Juwayni" } - { "dynnp_al-" "dynn_Farisi" } - "dynn_Hamadani" - "dynn_Ganjavi" - { "dynnp_al-" "dynn_Amuli" } - "dynn_Balkhi" - "dynn_Bukhari" - "dynn_Suhrawardi" - { "dynnp_al-" "dynn_Abhari" } - { "dynnp_al-" "dynn_Tusi" } - "dynn_Hamadani" - { "dynnp_al-" "dynn_Shirazi" } - "dynn_Gorgani" - "dynn_Mustawfi" - "dynn_Ansari" - { "dynnp_al-" "dynn_Kashi" } - "dynn_Kubra" - "dynn_KhayyA_m" - { "dynnp_al-" "dynn_Razi" } - "dynn_Sina" - { "dynnp_al-" "dynn_Jaldaki" } - "dynn_Ishaqid" - "dynn_Shi" - "dynn_Al-Dawla" - "dynn_Yalavach" - "dynn_Wardanrid" - "dynn_Kakuyid" - "dynn_Sughnan" - "dynn_Mirs" - "dynn_Roshan" - "dynn_Gorno" - "dynn_Guliab" - "dynn_Zulcarnei" - } - - male_names = { - Abbas Abolhassan Afshar Ahmad Akbar Ali Allahyar Amin Anushirvan Aram Ardahan Ardavan Ardeshir Assad Aurang Ayeshah Babak Bahman - Bahram Bakhtiar Behrad Behrouz Bozorg Danush Darab Dariush Davud Djamasp Ebrahim Ehsan Esfandiar Eskander Esma_il Faramarz Faraz Fareed Farhad Fariborz - Farroukh Farrukhzad Farzad Fath Ferdows Fereedun Ghobad Gholam Godarz Goshtasb Hafez Hassan Hazarasp Hedayat Hooshyar Hormazd Hormoz Hossein - Humayun Jahandar Jahangir Jahanshah Jamshid Javeed Kambiz Kamran Kavoos Keyghobad Keykhosrau Kharmandar Khashayar Kavadh Khodadad Khosrau - Khudayar Khurshid Kurush Mahmud Manuchihr Manushihr Marzuban Mashad Maziar Mehrab Mehrzad Mohammed Morad Morteza Mozaffar Nard Naveed Nawid Nezam Parviz Pashang Peroz - Pujman Reza Rostam Ruhollah Sadri Salman Shahab Shahbaz Shahin Shahram Shahrokh Shahruz Shahryar Shapur Shayan Sina Tahmasb Vahhab Vahid - Vali Vandad Varshasb Vishtasb Yazdegerd Yousef Zahak Zakaria Zand Zartosht Zia - } - female_names = { - Afsaneh Ahu Arghavan Azarmidokht Asa Azadeh Bahar Banafsheh Behnaz Burandokht Darya Delaram Delbar Dinah Donya Elham Elnaz Farah Fareedeh Farnaz Farrin Farva - Furuzan Ghamze Ghazal Ghoncheh Golbahar Golnaz Golpari Golshan Hamdam Hurmat Irandokht Jamileh Javaneh Leila Mahdokht Mahtab Mariam - Navvaba Nazgol Nazilla Noor Parvaneh Parvin Pertevniyal Pourandokht Roshanora Roxana Salomeh Shahrzad Shahzadeh Shirin Soraya Touran - Tourandokht Yasaman Yekta Zarrindokht Zeynab Zohreh - } - - founder_named_dynasties = yes - house_based_map_names = yes - - patronym_suffix_male = "dynnpat_suf_zade" - patronym_suffix_female = "dynnpat_suf_dokht" - - - - mercenary_names = { - { name = "mercenary_company_band_of_medes" } - { name = "mercenary_company_immortals_of_place" } - } -} - -name_list_sogdian = { - - cadet_dynasty_names = { - "dynn_Kang" - "dynn_Maymurg" - "dynn_Kesh" - "dynn_Namdar" - "dynn_Lushan" - "dynn_Tuhun" - "dynn_Calmandana" - "dynn_Kayani" - "dynn_Muqannid" - "dynn_Al-Barm" - } - - dynasty_names = { - "dynn_Kang" - "dynn_Maymurg" - "dynn_Kesh" - "dynn_Namdar" - "dynn_Lushan" - "dynn_Tuhun" - "dynn_Calmandana" - "dynn_Kayani" - "dynn_Muqannid" - "dynn_Al-Barm" - } - - male_names = { - Gurak Divashtich Yodkhsetak Tuhun Tarkhun Urak Turghar Lushan Nanaifarn Avyaman Yechi Chaki Mechun Tishifan Wupoyan - Tarxun Wanxanak Nawekat Wiyus Uxushukan Bharxuman Skatch Sheshch Chaxren Ramch Shaw Maxak Ramtish Axushfarn Bhurz Chukshak Fudanyan Dishebo Vandak Khudayfarn Sili Tishrat Chunakk Namdar Xutawch Pisak Karz Nijat Chatfaratsaran Dewastich Varzakk Nanai-thvar Chuzakk Khwatawch Karzh Nizat Nanaikuch Ukhwan Pator Wakhushuvirt Maniakh Watch Shafnoshak - - Akhurmaztakk Akhushfarn Anghatnaw Anghatspadh Anushirvan Ardavan Ardeshir Armatsach Arsach Artikhuvandakh - Artivan Aspandhat Astken Aurang Avyaman-yan Avyaman Avyamanch Avyamanvandak Babak Bahram - Banda Barak Bharkhuman Bhurz Buddhadasa Chakar Chakhapak Chakhren Cher Chetvandak Dariush - Devadasa Dewashtich Dhakh Dhruwaspvandak Esfandiar Eskander Ewakhsh Faramarz Farhad Farn Farnaghat - Farnch Farnkhund Farroukh Farrukhzad Farzad Fatmiwach Ferdows Fereedun Frikhwataw Ghawtus Ghobad - Ghoshfarn Ghotamsach Godarz Goshtasb Hazarasp Hormazd Hormoz Induk Irkin Jamshid Jiamut - Jimatvande Kanak Kanakk Kartir Karzhtik Kavoos Kaway Kharstrang Khosrow Khun Khurshid Khwadhawanakk - Khwarmew Khwasaw Khwasawch Kund Kundakk Kurush Kushan Kushanakanak Makhak Marti Marzuban Maymarghch Methakan Mew Miren - Muqanna Nanai Nanaidhvar Nanaifarn Nanaikhsay Nanaithvar Nanaizanch Nanayakk Nanevante Narisaf Narshakhi Nawchirth - Nibothak Nipak Nithan Ot-tegin Papakk Parsak Parviz Pashang Patrodhan Pekako Peroz Pesakk - Pujman Qishiq Ramtish Rashdhes Razmwanwan Resan Rewdhvar Rokhshan Rostam Rutha Sagharak Sas Sasan Satasp - Sesh Shahbaz Shahin Shahrokh Shans Shapur Shaw Shennu Shirch Sina Spadh Spadhkharsh Srawakk - Stayidh Suryakk Tahmasb Takhsich Takhsichvandak Takut Tarkhun Taw Tir Tishtrya Tishvandak Turghar Ukhushukan - Urak Vagh Vaghrew Vahhab Varshasb Varzak Varzirak Vishtasb Viyus Vuvva Wakhunam Wakhushakk Wakhushu Wanenak - Wankaway Wankhanak Wanrazmak Wanwans Wishaghn Xeykhosrow Y_n Zand Zartosht Zymt - } - female_names = { - Nana Upach An Kang - - Aghatzak Anakhit Arghavan Banafsheh Chat Chatis Chet Chinanch Darya Funa Furuzan Ghamze Ghoncheh - Golbahar Golshan Khansch Makh Mah Mahtab Miwnay Nana Nanai Nanaidhat Navvaba Nazgol - Nazilla Parvaneh Parvin Ranisa Roxana Sanakhram Shahrzad Shahzadeh Shayn Shirin Touran - Yasaman Yena - } - founder_named_dynasties = yes - house_based_map_names = yes - - dynasty_of_location_prefix = "dynnp_m" - patronym_prefix_male = "dynnpat_pre_zk" - patronym_prefix_female = "dynnpat_pre_zk" - - - - mercenary_names = { - { name = "mercenary_company_company_of_sogdiana" } - { name = "mercenary_company_sogdian_warriors" } - } -} - -name_list_tocharian = { - - cadet_dynasty_names = { - "dynn_Kausal" - "dynn_Gank" - "dynn_Tenare" - "dynn_Ytarim" - "dynn_Tripuskar" - "dynn_Dantapur" - "dynn_Baransi" - "dynn_Yurpaska" - "dynn_Rohini" - "dynn_Vaideh" - "dynn_Vaisali" - "dynn_Iksvaku" - "dynn_Kausika" - "dynn_Kausika" - "dynn_Sakke" - "dynn_Kasake" - "dynn_Yarkam" - "dynn_Cadota" - "dynn_Lyam" - "dynn_Kunlyu" - } - - dynasty_names = { - "dynn_Kausal" - "dynn_Gank" - "dynn_Tenare" - "dynn_Ytarim" - "dynn_Tripuskar" - "dynn_Dantapur" - "dynn_Baransi" - "dynn_Yurpaska" - "dynn_Rohini" - "dynn_Vaideh" - "dynn_Vaisali" - "dynn_Iksvaku" - "dynn_Kausika" - "dynn_Kausika" - "dynn_Sakke" - "dynn_Kasake" - "dynn_Yarkam" - "dynn_Cadota" - "dynn_Lyam" - "dynn_Kunlyu" - } - - male_names = { - Airawanta Ajatasatru Ajite Alp Ambare AmprA_tasarme AmrA_taraksite AmrA_todane Anande Anathapindike Aniruddhe Andhave Anktsas Arjune Aranemi Arnyartate Arslam - Arthadarsi Aryamarg Aryaske Aryatewe Aryawarme Aryottame Asokamitre Asokaraksite Asoke AsA_rte Astawi Atakke Atidivakare Atyuccagami Atraikatte - Bimbasare Caitike Caiytiska Cakravar Cakule Candramukhe Candravasu Candre Caracate Cina Cinatyuti Citre Cittaraksite Cowaske - Dandakamal Devarakste Dhanike Dharma Dharmacandre Dharmadase Dharmakame Dharmakamiske Dharmaraksite Dharmasome Dharmatrate Dharmawarme Dipankar Dirghanakhe Dravyasvare Durmukhe - Ekasrinke ErkA_tsole EsmiN_e Etrise Gayakasyape Gayasirs Gaye Gunacamdre Gunasampade Hariscandre Hastake Hetubalike Indradhvaje Indratewe Indre Indriske Issapake - Jatisrone Jetavam JN_anacamndre JN_anaghose JN_anakame JN_anakupte JN_anamokse JN_anasene JN_anasome JN_anasthite JN_anawirye - Kadike Kalodaye Kalyanamokse Kalyanavraddhi Kalyanawartane Kanake Kanaske KanthA_ke Kapilavarne Kapilavastu Kas Kasyap Katakarni Kaundinye - Kauravye Kausal Kemarcune Kentarske Kercampey Kercapiske Kerdipole KereptaN_N_e KimN_e Klenkarako Klpapatre Klyotiska Kotile Koysam Ksemankare Ksmarjune Ksmawarme Ksmate Ksmateworsa Ksmika Kulkera Kumarapunye Kumpante Kunacamttrakau Kunacamttre Kwirapabhadra Lariska - Mahasammate Mahisvare Manisvare Mitrakseme Mitraske Mitre Moksasene Moksasome Moksawarme Molyoke Mukalanti Munkhare Murdhagate - Nandabala Nandake Nande Nandipale Nasme N_atte Naradeve N_irot Nupura Nyagrodhe - Padmakesar Padmottare Pakacandre PaN_casikhi Pawaske Pesane Prabhankare Prabhase Pranada Prasamnake - Pravare Priyadeve Ptompile PuN_aiyse PuN_akame PuN_araksite PuN_icamndre Punyamitre Purtas Rahule Raktadewe Ratnacuda Ratnasikhi Rsivadam Rudramukhe Rudrasarme - Sagare Samantatir Samcite Samghatrate Sanavasi Sanghasarme Sankene Sanum Saputanase Sarasike Sarmacamdre Sarsire Satuma Satyake Satyaraksite Siddharthe Sidhasamgha Siladewe Silamitre Silarakite Silaraksi Silasoma Silavande Silawarne - Silayase Silopake Simpraye SiN_cake Sinke Sinku Skanatatte Skwarle Slacamndre Solarke Some Srestake Sudarse Sudas Suddhodane Sujate Sukase Suklodane Sunaksatre Sunetre Sutasome Sutate Swarnabuspe Swarnatepe - Tarmacandre Tarmaraksite Tenare Tohkem Tonke Tukik Tunka Tusi Udanalankar Udayi Ulkamukhe Uluke Upage Upagupte Upanande - Uposathe Urbilvakasyape Uttaraphalguni Uttare Vaisravane Vaitike Varddhane Vidusake Vimalapuspe Vinaise Visale Wamsok Warwattaske WA_ryaruci WA_ryasene Wasampile Wasave Wiryadewe Wiryamitre Wiryasanti WiryasiN_i Wisikke Wrauske - Yanayase YarpalA_ske Yasa Yasawine Yase Yasonaka Yastare Yiswe Yonge Yonu Ype Yudhisthire Yugaraje - } - female_names = { - AmprA_tasene AmrA_tasene Arjuna Arunavati Aryakose Aryaraksite Ayardhyame Bhadra CaN_ca Dhrtirastre - JN_ati Kolite Kosthile Malika Maya Nagasene Priyasarini Punyasene Purike Purnaya Purohite Putere RA_knaska Revati Roce - Saci Santa Santisene Sari Sthulananda Sudarsane Sumagati Sumaise Sumati Sundari Suwarte - Tarma TarmawirN_e TA_rtvisara Tati Tisye Upatisye Uppal Uppalavarna Vajrapani Vasisthe Vitasake Yasaraksite Yasodhara - } - founder_named_dynasties = yes - house_based_map_names = yes - - dynasty_of_location_prefix = "dynnp_mem" - patronym_prefix_male = "dynnpat_pre_soyA_" - patronym_prefix_female = "dynnpat_pre_tkacer" - - - - mercenary_names = { - { name = "mercenary_company_band_of_tocharoi" } - } -} - -name_list_kurdish = { - - cadet_dynasty_names = { - "dynn_Hazaraspid" - "dynn_Ayyubid" - "dynn_Buyid" - "dynn_Kakuyid" - "dynn_Jafarid" - "dynn_Hasanwayhid" - "dynn_Daisamid" - "dynn_Bitlisid" - "dynn_Ardalanid" - "dynn_Kayusid" - "dynn_Sadakiyanid" - "dynn_Rozeguitid" - "dynn_Fadhilwayhid" - "dynn_Ayyarid" - "dynn_Narseid" - "dynn_Adi" - } - - dynasty_names = { - "dynn_Hazaraspid" - "dynn_Ayyubid" - "dynn_Buyid" - "dynn_Kakuyid" - "dynn_Jafarid" - "dynn_Hasanwayhid" - "dynn_Daisamid" - "dynn_Bitlisid" - "dynn_Ardalanid" - "dynn_Kayusid" - "dynn_Sadakiyanid" - "dynn_Rozeguitid" - "dynn_Fadhilwayhid" - "dynn_Ayyarid" - "dynn_Narseid" - "dynn_Adi" - } - - male_names = { - Abbas Abolhassan Alah-Verdi Allahyar Amin Aram Assad Aurang Ayeshah Azad Babek Bahman Behrad Behram Behrouz BextI_yar Bozorg Cehandar Cehangir - CehanS_ah CemS_I_d Cevid DanU_S_ Darab DaryU_S_ Davud Ebrahim Efrasiyab EfS_er Ehmed Ehsan - Ekber ElI_ EnU_S_irwan Erdehan Erdewan ErdeS_I_r Esfendiyar - Eskander ES_ot Eyyub Feramez Feraz Fath Ferhad Ferhan Ferheng Feriburz FerI_d - FerI_dun Ferux Feruxzad Ferzad Fezl Fezlun Firdews Ghobad Gholam Godarz GoS_tasp Hezarhesp Hafez Hedayat - Hesen HisE_n Hormoz Hosen Humayun Hurmiz I_smaI_l Kambiz Kamran Keyghobad Keyxusrew KA_vus - KU_ruS_E_ Mamlan Mashad MehmU_d Mehrab Mehrzad MensU_r MenU_C_ihr MenU_S_ihr Merwan Merzuban MesU_d - Mihemed MI_rza Mistefa Murad Morteza Mozaffar Nard Naveed Nawid Nesir - Nesr Nezam NoS_I_rwan NE_C_I_rvan Parviz Pujman PE_S_eng PI_roz Revend Reza Ruhollah Rustam Sadri Salman Sina Surxap Tahmasp - Vahhab Vahid Vahusdan Vali VarS_asp VI_S_tap Xarmandar XaS_ayar - XurS_I_d Xusrew XuS_yar Xwedadad Xwedayar YezI_d Yousef Zahak Zakaria Zand ZerdeS_t Zia - S_adI_ S_ahab S_ahbaz S_ahenS_ah S_ahin S_ahram S_ahryar S_ahrux S_ahruz S_apur S_arvin S_awur S_ayan S_I_rkU_h - } - - female_names = { - Adan Adar Ara Ardil Arezo Arezu Ariyan ArE_z ArI_man ArI_n Asan Asteng AsE_ Avan AzadI_ AzrI_n AS_tI_ Badil Bahar BalnexS_I_n BanE_ BarI_n Bawan Baziyan BazE_ Befraw BefrI_n BegI_xan BelalU_k Belqis - BelI_can Benav Benaz BerbijI_n Berdar Berdil BersI_n BerI_can BexS_I_n Beyan BeybI_n BeybU_n BezI_n Bihar BijI_n BilE_se Binar Binav BinefS_ BinevS_ Biyan BiS_koj BiS_kurI_n Bohar BE_naz BE_rI_can BE_rI_van Burandoxt - DengI_n Derav DerzI_n Desmal Devken Dilar Dilaram Dilare Dilawaz Dilber Dilcan Dildar Dilgerm Dilistan DilkanI_ Dilnaz DilvI_n DilxoS_ DilxweS_ DiyarI_ Doman DE_rsim DI_lan DI_ristan Esmercan Esmerxan - EstE_re EvI_n EwrI_n EyS_an Ezcan Felek Fener FeraS_I_n FirmE_sk FI_dan GazI_ GelavE_j Gerdengaz Gozel GozE_ GrI_van Guhtem Gulbehar GulS_en Gulnar Gulnaz GE_las Helez Heliz HelvI_n HemayI_l - KejE_ Keser Kevok KevI_ Kewser KezI_zer KoC_er LeylE_ LeymI_n LezI_n Lolav LorkE_ LorI_ LorI_can LorI_n LE_lav LE_vken LI_lyan LI_za MaS_a Mebest MehrI_ban MehrI_can MehrI_van - MejbI_r Mendal Mercam MerI_van MirarI_xan Miryem MizgI_n Muhabad ME_mE_ ME_rdI_n ME_xek MI_dya MI_ran NarI_man NarI_ncan Navbihar NawxoS_ Naz Nazdar NazenI_n Nazgul Nazik Naznaz NazE_ NermE_ NermI_n NesrI_n Newbohar NexS_I_n - NeS_mI_l NeS_mI_n Norcan NE_rgiz NE_rI_n NE_zI_k NI_dar NI_gar NI_roj NI_S_an NI_S_tI_man PerjI_n PervI_n Perwane PerwI_n PerC_em PerI_ PerI_gul PerI_naz PerI_xan PerI_S_an PexS_an Peyman PirjI_n PirS_eng PirS_ing Pore PorS_eng PE_lI_n PI_roz PI_S_eng - Rana RengI_n RewS_a RewS_en Rihan RindE_ Rojhelat RojE_ RonahI_ Ronak Rondik RE_jI_n RE_zan RI_han RI_ken RU_ciwan RU_geS_ RU_ken RU_zerI_n SarE_ Serbar Sercan Serferaz Serfiraz Sergul SerC_inar Seyran XatU_n - XE_lI_can XonC_e ZernI_S_an Zerya ZerE_ ZerI_ ZerI_xan ZeytI_n ZeytU_n ZilfE_ Zoya Zozan ZE_rI_n ZI_lan ZI_net ZI_nE_ S_ana S_anaz S_ayan S_ehrI_ban S_elal S_emam S_engE_ S_epal S_epirze S_ermI_n S_evba S_evI_n S_E_laz S_I_lan S_I_nI_ S_I_wen - } - - founder_named_dynasties = yes - house_based_map_names = yes - - patronym_prefix_male = "dynnpat_pre_kurE_" - patronym_prefix_female = "dynnpat_pre_kiC_E_" - - - - mercenary_names = { - { name = "mercenary_company_band_of_sermaj" } - } -} - -name_list_afghan = { - - cadet_dynasty_names = { - "dynn_Bahmanid" - "dynn_Langah" - "dynn_Kheshgi" - "dynn_Karrani" - "dynn_Mamluk" - "dynn_Khalji" - "dynn_Tughlaq" - "dynn_Sayyid" - "dynn_Lodi" - "dynn_Adilshahi" - "dynn_Qutb_Shahi" - "dynn_Sangama" - "dynn_Ghurid" - "dynn_Gahadvala" - "dynn_Chandela" - "dynn_Paramara" - "dynn_Deva" - "dynn_Seuna" - "dynn_Vaghela" - "dynn_Yajvapala" - } - - dynasty_names = { - "dynn_Bahmanid" - "dynn_Langah" - "dynn_Kheshgi" - "dynn_Karrani" - "dynn_Mamluk" - "dynn_Khalji" - "dynn_Tughlaq" - "dynn_Sayyid" - "dynn_Lodi" - "dynn_Adilshahi" - "dynn_Qutb_Shahi" - "dynn_Sangama" - "dynn_Ghurid" - "dynn_Gahadvala" - "dynn_Chandela" - "dynn_Paramara" - "dynn_Deva" - "dynn_Seuna" - "dynn_Vaghela" - "dynn_Yajvapala" - } - - male_names = { - Abbas Abolhassan Alah-Verdi Allahyar Amin Aram Assad Aurang Ayeshah Azad Babek Bahman Behrad Behram Behrouz BextI_yar Bozorg Cehandar Cehangir - CehanS_ah CemS_I_d Cevid DanU_S_ Darab DaryU_S_ Davud Ebrahim Efrasiyab EfS_er Ehmed Ehsan - Ekber ElI_ EnU_S_irwan Erdehan Erdewan ErdeS_I_r Esfendiyar - Eskander ES_ot Eyyub Feramez Feraz Fath Ferhad Ferhan Ferheng Feriburz FerI_d - FerI_dun Ferux Feruxzad Ferzad Fezl Fezlun Firdews Ghobad Gholam Godarz GoS_tasp Hezarhesp Hafez Hedayat - Hesen HisE_n Hormoz Hosen Humayun Hurmiz I_smaI_l Kambiz Kamran Keyghobad Keyxusrew KA_vus - KU_ruS_E_ Mamlan Mashad MehmU_d Mehrab Mehrzad MensU_r MenU_C_ihr MenU_S_ihr Merwan Merzuban MesU_d - Mihemed MI_rza Mistefa Murad Morteza Mozaffar Nard Naveed Nawid Nesir - Nesr Nezam NoS_I_rwan NE_C_I_rvan Parviz Pujman PE_S_eng PI_roz Revend Reza Ruhollah Rustam Sadri Salman Sina Surxap Tahmasp - Vahhab Vahid Vahusdan Vali VarS_asp VI_S_tap Xarmandar XaS_ayar - XurS_I_d Xusrew XuS_yar Xwedadad Xwedayar YezI_d Yousef Zahak Zakaria Zand ZerdeS_t Zia - S_adI_ S_ahab S_ahbaz S_ahenS_ah S_ahin S_ahram S_ahryar S_ahrux S_ahruz S_apur S_arvin S_awur S_ayan S_I_rkU_h - } - - female_names = { - Adan Adar Ara Ardil Arezo Arezu Ariyan ArE_z ArI_man ArI_n Asan Asteng AsE_ Avan AzadI_ AzrI_n AS_tI_ Badil Bahar BalnexS_I_n BanE_ BarI_n Bawan Baziyan BazE_ Befraw BefrI_n BegI_xan BelalU_k Belqis - BelI_can Benav Benaz BerbijI_n Berdar Berdil BersI_n BerI_can BexS_I_n Beyan BeybI_n BeybU_n BezI_n Bihar BijI_n BilE_se Binar Binav BinefS_ BinevS_ Biyan BiS_koj BiS_kurI_n Bohar BE_naz BE_rI_can BE_rI_van Burandoxt - DengI_n Derav DerzI_n Desmal Devken Dilar Dilaram Dilare Dilawaz Dilber Dilcan Dildar Dilgerm Dilistan DilkanI_ Dilnaz DilvI_n DilxoS_ DilxweS_ DiyarI_ Doman DE_rsim DI_lan DI_ristan Esmercan Esmerxan - EstE_re EvI_n EwrI_n EyS_an Ezcan Felek Fener FeraS_I_n FirmE_sk FI_dan GazI_ GelavE_j Gerdengaz Gozel GozE_ GrI_van Guhtem Gulbehar GulS_en Gulnar Gulnaz GE_las Helez Heliz HelvI_n HemayI_l - KejE_ Keser Kevok KevI_ Kewser KezI_zer KoC_er LeylE_ LeymI_n LezI_n Lolav LorkE_ LorI_ LorI_can LorI_n LE_lav LE_vken LI_lyan LI_za MaS_a Mebest MehrI_ban MehrI_can MehrI_van - MejbI_r Mendal Mercam MerI_van MirarI_xan Miryem MizgI_n Muhabad ME_mE_ ME_rdI_n ME_xek MI_dya MI_ran NarI_man NarI_ncan Navbihar NawxoS_ Naz Nazdar NazenI_n Nazgul Nazik Naznaz NazE_ NermE_ NermI_n NesrI_n Newbohar NexS_I_n - NeS_mI_l NeS_mI_n Norcan NE_rgiz NE_rI_n NE_zI_k NI_dar NI_gar NI_roj NI_S_an NI_S_tI_man PerjI_n PervI_n Perwane PerwI_n PerC_em PerI_ PerI_gul PerI_naz PerI_xan PerI_S_an PexS_an Peyman PirjI_n PirS_eng PirS_ing Pore PorS_eng PE_lI_n PI_roz PI_S_eng - Rana RengI_n RewS_a RewS_en Rihan RindE_ Rojhelat RojE_ RonahI_ Ronak Rondik RE_jI_n RE_zan RI_han RI_ken RU_ciwan RU_geS_ RU_ken RU_zerI_n SarE_ Serbar Sercan Serferaz Serfiraz Sergul SerC_inar Seyran XatU_n - XE_lI_can XonC_e ZernI_S_an Zerya ZerE_ ZerI_ ZerI_xan ZeytI_n ZeytU_n ZilfE_ Zoya Zozan ZE_rI_n ZI_lan ZI_net ZI_nE_ S_ana S_anaz S_ayan S_ehrI_ban S_elal S_emam S_engE_ S_epal S_epirze S_ermI_n S_evba S_evI_n S_E_laz S_I_lan S_I_nI_ S_I_wen - } - - founder_named_dynasties = yes - house_based_map_names = yes - - patronym_prefix_male = "dynnpat_pre_kurE_" - patronym_prefix_female = "dynnpat_pre_kiC_E_" - - - - mercenary_names = { - { name = "mercenary_company_khorasan_band" } - { name = "mercenary_company_company_of_shahids" } - } -} - -name_list_baloch = { - - cadet_dynasty_names = { - "dynn_Yeldarid" - "dynn_Feruxid" - "dynn_Qalat" - "dynn_Jiskani" - "dynn_Kalmati" - "dynn_Mugheri" - "dynn_Nutkani" - "dynn_Bhurgari" - "dynn_Dehwar" - "dynn_Gabol" - "dynn_Jakhar" - "dynn_Rind" - "dynn_Kalmati" - "dynn_Langah" - "dynn_Mazari" - "dynn_Mullazai" - "dynn_Mugheri" - "dynn_Sarmastani" - "dynn_Talpur" - "dynn_Wahocha" - } - - dynasty_names = { - "dynn_Yeldarid" - "dynn_Feruxid" - "dynn_Qalat" - "dynn_Jiskani" - "dynn_Kalmati" - "dynn_Mugheri" - "dynn_Nutkani" - "dynn_Bhurgari" - "dynn_Dehwar" - "dynn_Gabol" - "dynn_Jakhar" - "dynn_Rind" - "dynn_Kalmati" - "dynn_Langah" - "dynn_Mazari" - "dynn_Mullazai" - "dynn_Mugheri" - "dynn_Sarmastani" - "dynn_Talpur" - "dynn_Wahocha" - } - - male_names = { - Abbas Abolhassan Alah-Verdi Allahyar Amin Aram Assad Aurang Ayeshah Azad Babek Bahman Behrad Behram Behrouz BextI_yar Bozorg Cehandar Cehangir - CehanS_ah CemS_I_d Cevid DanU_S_ Darab DaryU_S_ Davud Ebrahim Efrasiyab EfS_er Ehmed Ehsan - Ekber ElI_ EnU_S_irwan Erdehan Erdewan ErdeS_I_r Esfendiyar - Eskander ES_ot Eyyub Feramez Feraz Fath Ferhad Ferhan Ferheng Feriburz FerI_d - FerI_dun Ferux Feruxzad Ferzad Fezl Fezlun Firdews Ghobad Gholam Godarz GoS_tasp Hezarhesp Hafez Hedayat - Hesen HisE_n Hormoz Hosen Humayun Hurmiz I_smaI_l Kambiz Kamran Keyghobad Keyxusrew KA_vus - KU_ruS_E_ Mamlan Mashad MehmU_d Mehrab Mehrzad MensU_r MenU_C_ihr MenU_S_ihr Merwan Merzuban MesU_d - Mihemed MI_rza Mistefa Murad Morteza Mozaffar Nard Naveed Nawid Nesir - Nesr Nezam NoS_I_rwan NE_C_I_rvan Parviz Pujman PE_S_eng PI_roz Revend Reza Ruhollah Rustam Sadri Salman Sina Surxap Tahmasp - Vahhab Vahid Vahusdan Vali VarS_asp VI_S_tap Xarmandar XaS_ayar - XurS_I_d Xusrew XuS_yar Xwedadad Xwedayar YezI_d Yousef Zahak Zakaria Zand ZerdeS_t Zia - S_adI_ S_ahab S_ahbaz S_ahenS_ah S_ahin S_ahram S_ahryar S_ahrux S_ahruz S_apur S_arvin S_awur S_ayan S_I_rkU_h - } - - female_names = { - Adan Adar Ara Ardil Arezo Arezu Ariyan ArE_z ArI_man ArI_n Asan Asteng AsE_ Avan AzadI_ AzrI_n AS_tI_ Badil Bahar BalnexS_I_n BanE_ BarI_n Bawan Baziyan BazE_ Befraw BefrI_n BegI_xan BelalU_k Belqis - BelI_can Benav Benaz BerbijI_n Berdar Berdil BersI_n BerI_can BexS_I_n Beyan BeybI_n BeybU_n BezI_n Bihar BijI_n BilE_se Binar Binav BinefS_ BinevS_ Biyan BiS_koj BiS_kurI_n Bohar BE_naz BE_rI_can BE_rI_van Burandoxt - DengI_n Derav DerzI_n Desmal Devken Dilar Dilaram Dilare Dilawaz Dilber Dilcan Dildar Dilgerm Dilistan DilkanI_ Dilnaz DilvI_n DilxoS_ DilxweS_ DiyarI_ Doman DE_rsim DI_lan DI_ristan Esmercan Esmerxan - EstE_re EvI_n EwrI_n EyS_an Ezcan Felek Fener FeraS_I_n FirmE_sk FI_dan GazI_ GelavE_j Gerdengaz Gozel GozE_ GrI_van Guhtem Gulbehar GulS_en Gulnar Gulnaz GE_las Helez Heliz HelvI_n HemayI_l - KejE_ Keser Kevok KevI_ Kewser KezI_zer KoC_er LeylE_ LeymI_n LezI_n Lolav LorkE_ LorI_ LorI_can LorI_n LE_lav LE_vken LI_lyan LI_za MaS_a Mebest MehrI_ban MehrI_can MehrI_van - MejbI_r Mendal Mercam MerI_van MirarI_xan Miryem MizgI_n Muhabad ME_mE_ ME_rdI_n ME_xek MI_dya MI_ran NarI_man NarI_ncan Navbihar NawxoS_ Naz Nazdar NazenI_n Nazgul Nazik Naznaz NazE_ NermE_ NermI_n NesrI_n Newbohar NexS_I_n - NeS_mI_l NeS_mI_n Norcan NE_rgiz NE_rI_n NE_zI_k NI_dar NI_gar NI_roj NI_S_an NI_S_tI_man PerjI_n PervI_n Perwane PerwI_n PerC_em PerI_ PerI_gul PerI_naz PerI_xan PerI_S_an PexS_an Peyman PirjI_n PirS_eng PirS_ing Pore PorS_eng PE_lI_n PI_roz PI_S_eng - Rana RengI_n RewS_a RewS_en Rihan RindE_ Rojhelat RojE_ RonahI_ Ronak Rondik RE_jI_n RE_zan RI_han RI_ken RU_ciwan RU_geS_ RU_ken RU_zerI_n SarE_ Serbar Sercan Serferaz Serfiraz Sergul SerC_inar Seyran XatU_n - XE_lI_can XonC_e ZernI_S_an Zerya ZerE_ ZerI_ ZerI_xan ZeytI_n ZeytU_n ZilfE_ Zoya Zozan ZE_rI_n ZI_lan ZI_net ZI_nE_ S_ana S_anaz S_ayan S_ehrI_ban S_elal S_emam S_engE_ S_epal S_epirze S_ermI_n S_evba S_evI_n S_E_laz S_I_lan S_I_nI_ S_I_wen - } - - founder_named_dynasties = yes - house_based_map_names = yes - - patronym_prefix_male = "dynnpat_pre_kurE_" - patronym_prefix_female = "dynnpat_pre_kiC_E_" - - - - mercenary_names = { - { name = "mercenary_company_company_of_makran" } - { name = "mercenary_company_westwards_band" } - } -} - -name_list_saka = { - - cadet_dynasty_names = { - "dynn_Visha" - "dynn_Hinaza" - "dynn_Kustana" - "dynn_Hvamna" - "dynn_Gaysata" - "dynn_Ustaka" - "dynn_Birgamdara" - "dynn_Phamnaa" - "dynn_Ca" - "dynn_Yuttina" - } - - dynasty_names = { - "dynn_Visha" - "dynn_Hinaza" - "dynn_Kustana" - "dynn_Hvamna" - "dynn_Gaysata" - "dynn_Ustaka" - "dynn_Birgamdara" - "dynn_Phamnaa" - "dynn_Ca" - "dynn_Yuttina" - } - - male_names = { - Alysanna Arsa Aryamgula Asi Baga Bahudhiva Bamdaka Bhadra Bradaysaa Brika Capastaka Ceguti Chika Daisai Dharma Dum Dzatsi Gostana Gulai Harka - Haskadatta Huyi Hvam Hvarda Hvardamaya Hvimdu Ikam Irasamga Jabgu Jajahasa Kamnai Kayam Kharusa Khina Khuradatta Khvarnarse Kimashana Kimashani - Kimatcuna Kirtti Kriti Kunala Kushtana Mamatti Manohara Murlimin Naganpaka Nipandaka Padatcaina Pakyau Phimduka Presamdha Punarrjam Punekula - Purgula Raghu Samgai Samgaka Samgalaka Sangrama Sayausa Sham Shambhava Shikshananda Shinganca Shiresala Shirvamdai Shribhadra Shtrugize Shudamgula - Shura Sidaka Sihya Siladharma Simhyi Skunkha Sthavira Sudarrjam Sudhana Sumauna Sumtharaka Tayasham Tcusyau Vadhaga Vagiti Vaham Vahana - Vardhana Varman Vasudeva Vidakai Vidaram Vijita Vijitasimha Vikrama Virsha Visaram Vishirapumna Visma Ysambasta Zambasta - } - female_names = { - Alsamgya Alyonj Armaiti Dharmadasi Khivyaina Maya Nanda Nirmala Praniyata Safali Shandramata Shri Tisyarakshita Vimala Vimalaprabha Yavalac - } - - founder_named_dynasties = yes - house_based_map_names = yes - - dynasty_of_location_prefix = "dynnp_nava" - - patronym_prefix_male = "dynnpat_pre_puri" - patronym_prefix_female = "dynnpat_pre_duda" - - -} - -name_list_daylamite = { - - cadet_dynasty_names = { - "dynn_Hazaraspid" - "dynn_Ayyubid" - "dynn_Buyid" - "dynn_Kakuyid" - "dynn_Jafarid" - "dynn_Hasanwayhid" - "dynn_Daisamid" - "dynn_Bitlisid" - "dynn_Ardalanid" - "dynn_Kayusid" - "dynn_Sadakiyanid" - "dynn_Rozeguitid" - "dynn_Fadhilwayhid" - "dynn_Ayyarid" - "dynn_Narseid" - "dynn_Adi" - "dynn_Justanid" - "dynn_Gorgani" - "dynn_as_Sabbah" - "dynn_Gilani" - "dynn_Tabarestani" - "dynn_Baduspanid" - "dynn_Mazandarani" - "dynn_Dabuyid" - "dynn_Gavbareh" - "dynn_al_Daylami" - "dynn_Afriduni" - } - - dynasty_names = { - "dynn_Hazaraspid" - "dynn_Ayyubid" - "dynn_Buyid" - "dynn_Kakuyid" - "dynn_Jafarid" - "dynn_Hasanwayhid" - "dynn_Daisamid" - "dynn_Bitlisid" - "dynn_Ardalanid" - "dynn_Kayusid" - "dynn_Sadakiyanid" - "dynn_Rozeguitid" - "dynn_Fadhilwayhid" - "dynn_Ayyarid" - "dynn_Narseid" - "dynn_Adi" - "dynn_Justanid" - "dynn_Gorgani" - "dynn_as_Sabbah" - "dynn_Gilani" - "dynn_Tabarestani" - "dynn_Baduspanid" - "dynn_Mazandarani" - "dynn_Dabuyid" - "dynn_Gavbareh" - "dynn_al_Daylami" - "dynn_Afriduni" - } - - male_names = { - Abbas Abolhassan Afshar Ahmad Akbar Ali Allahyar Amin Anushirvan Aram Ardahan Ardavan Ardeshir Assad Aurang Ayeshah Babak Bahman - Bahram Bakhtiar Behrad Behrouz Bisutun Bozorg Buya Danush Dabuya Dara Dariush_Darius Dadhburzmihr Davud Djamasp Ebrahim Ehsan Esfandiar Eskander Esmail Fakhr Faramarz Faraz Fareed Farhad Fariborz - Farroukh Farrukhzad Farhad Farzad Fath Ferdows Fereedun Gavbarih Ghobad Gholam Gilgavbara Gilanshah Godarz Gorangej Goshtasb Hafez Hassan Hazarsandan Hedayat Hooshyar Hormazd Hormoz Hossein - Humayun Iskandar Ispahdost Istwandad Jahandar Jahangir Jahanshah Jamshid Javeed Justan Kambiz Kamran Keyghobad Keikavus Kharmandar Khashayar Kavadh Khodadad Kharasuya - Khudayar Khurzad Kurkir Kurush Langar Lashkarwarz Makan Mahmud Manadhar Manuchihr Manushihr Mazyar Mihrmardan Mardavij Marzuban Mashad Maziar Mehrab Mehrzad Mohammed Morad Morteza Mozaffar Muta Nard Naveed Namavar Nawid Nezam Paduspan Parviz Pashang Peroz - Pujman Qabus_Kavoos Qarin Rustam Ruhollah Ruzbahan Salar Sadri Salman Shahab Shahragim Shahbaz Shahin Shahrokh Shahruz Shahryar Shapur Shayan Sherzil Siyahchashm Sina Tahmasb Vahhab Vahrez Vahid - Vali Valash Wandad Vardanshah Varshasb Vishtasb Vushmgir Yazdegerd Yousef Zahak Zakaria Zand Zartosht Zia Zoarab Ziyar Zarrinkamar - } - - female_names = { - Afsaneh Ahu Arghavan Azarmidokht Asa Azadeh Bahar Banafsheh Behnaz Burandokht Darya Delaram Delbar Dinah Donya Elham Elnaz Farah Fareedeh Farnaz Farrin Farva - Furuzan Ghamze Ghazal Ghoncheh Golbahar Golnaz Golpari Golshan Hamdam Hurmat Irandokht Jamileh Javaneh Leila Mahdokht Mahtab Mariam - Navvaba Nazgol Nazilla Noor Parvaneh_Parvaneh Parvin Pertevniyal Pourandokht Roshanora Roxana Salomeh Shahrzad Shahzadeh Shirin Soraya Touran - Tourandokht Yasaman Yekta Zarrindokht Zeynab Zohreh - } - - founder_named_dynasties = yes - house_based_map_names = yes - - patronym_suffix_male = "dynnpat_suf_zade" - patronym_suffix_female = "dynnpat_suf_dokht" - - - - mercenary_names = { - { name = "mercenary_company_daylamite_company" } - { name = "mercenary_company_band_of_sermaj" } - } -} - -name_list_khwarezmian = { - - cadet_dynasty_names = { - "dynn_Khwarizmi" - "dynn_Khati" - "dynn_Afrighid" - "dynn_Mamunid" - "dynn_Farighunid" - } - - dynasty_names = { - "dynn_Khwarizmi" - "dynn_Khati" - "dynn_Afrighid" - "dynn_Mamunid" - "dynn_Farighunid" - } - - male_names = { - Abdallah Anushtegin Afrig Arsamuh Arthamukh Askajamuk Azkajwar Bagra Gurak Divashtich Yodkhsetak Tuhun Tarkhun Urak Turghar Lushan Nanaifarn Avyaman Yechi Chaki Mechun Tishifan Wupoyan - Tarxun Wanxanak Nawekat Wiyus Uxushukan Bharxuman Skatch Sheshch Chigan Chaxren Ramch Shaw Maxak Ramtish Axushfarn Bhurz Chukshak Fudanyan Dishebo Vandak Khudayfarn Sili Tishrat Chunakk Namdar Pisak Karz Dewastich - Varzakk Nanai-thvar Chuzakk Khwatawch Karzh Nizat Nanaikuch Ukhwan Pator Wakhushuvirt Maniakh Watch Shafnoshak - Akhurmaztakk Akhushfarn Anghatnaw Anghatspadh Anushirvan Ardavan Ardeshir_Ardeshir Armatsach Arsach Artikhuvandakh - Artivan Aspandhat Astken Aurang_Aurang Avyaman-yan Avyaman Avyamanch Avyamanvandak Babak Bahram - Banda Barak Bharkhuman Bhurz_Bhurz Buzgar Chakar Chakhren Cher Chetvandak Dariush - Devadasa Dewashtich Dhakh Dhruwaspvandak Esfandiar Eskander Eraq Ewakhsh Faramarz Farhad Farn Farnaghat - Farnch Farnkhund Farroukh Farrukhzad Farzad Fatmiwach Ferdows Fereydun Frikhwataw Ghawtus Ghobad - Ghoshfarn Ghotamsach Godarz Goshtasb Hamgari Hazarasp Hormazd Hormoz Induk Irkin Jamshid Jiamut - Jimatvande Kanak Kartir Karzhtik Kavus Kaway Khwarazm Kharstrang Khusrau Khun Khurshid - Khwarmew Khwasaw Khwasawch Kund Kundakk Kurush Kushan Kushanakanak Makhak Mansur Marti Marzuban Methakan Mew Miren - Muqanna Muhammad Nanai Nanaidhvar Nanaifarn Nanaikhsay Nanaithvar Nanaizanch Nanayakk Nanevante Narisaf Narshakhi Nawchirth - Nibothak Nipak Nithan Papakk Parsak Parviz Pashang Patrodhan Pekako Peroz Pesakk - Pujman Qishiq Ramtish Rashdhes Razmwanwan Resan Rewdhvar Rokhshan Rustam Rutha Sabri Sagharak Sas Sasan Satasp Sawashfan - Sesh Shahbaz Sahhasak Shahin Shahrokh Shapur Sahr Shaush Shennu Shirch Sina Spadh Spadhkharsh Srawakk - Stayidh Suryakk Tahmasb Takhsich Takhsichvandak Takut Torkasbatha Tarkhun Taw Tir Tishtrya Tishvandak Turghar Ukhushukan - Urak Vagh Vaghrew Vahhab Varshasb Varzak Varzirak Vishtasb Viyus Vuvva Wakhunam Wakhushakk Wakhushu Wanenak - Wanrazmak Wishaghn Xeykhosrow Zand Zartosht Siyavosh - } - - female_names = { - Nana Upach An Kang Aghatzak Anakhit Arghavan_Arghavan Banafsheh_Banafsheh Chat Chatis Chet Chinanch Darya Funa Furuzan Ghamze Ghoncheh - Golbahar Golshan Khansch Makh Mah Mahtab_Mahtab Miwnay Nana Nanai Nanaidhat Navvaba Nazgol - Nazilla Parvaneh Parvin Ranisa Roxana Sanakhram Shahrzad Shahzadeh Shayn Shirin Touran - Yasaman Yena - } - - founder_named_dynasties = yes - house_based_map_names = yes - - dynasty_of_location_prefix = "dynnp_m" - patronym_suffix_male = "dynnpat_suf_zk" - patronym_suffix_female = "dynnpat_suf_zk" - - - - mercenary_names = { - { name = "mercenary_company_company_of_khwarezm" } - { name = "mercenary_company_khwarezmian_warriors" } - } -} - -name_list_tajik = { - - cadet_dynasty_names = { - "dynn_Samanid" - "dynn_Shahrastani" - "dynn_Dihgani" - "dynn_Ghurid" - "dynn_Kartid" - "dynn_Khorasani" - "dynn_Hamdani" - "dynn_Bukhari" - "dynn_Tusi" - "dynn_Mihranid" - "dynn_Rudaki" - "dynn_Daqiqi" - "dynn_Bahramid" - "dynn_Chaghanid" - } - - dynasty_names = { - "dynn_Samanid" - "dynn_Shahrastani" - "dynn_Dihgani" - "dynn_Ghurid" - "dynn_Kartid" - "dynn_Khorasani" - "dynn_Hamdani" - "dynn_Bukhari" - "dynn_Tusi" - "dynn_Mihranid" - "dynn_Rudaki" - "dynn_Daqiqi" - "dynn_Bahramid" - "dynn_Chaghanid" - } - - male_names = { - Abdallah Ahmad Ali Anoushirvan Arash Ardavan Ardshir Armeen Aryan Arzhang Asad Askhan Atash Awrang Azad Azada Azarkhsh Azerm - Babak Bahman Bahram Bamdad Behnam Behrang Behruz Behzad Buzurgmehr - Dara Darab Daryush Dehqan - Esfandyar Eskandar - Faramarz Faraz Fardad Fardin Farhad Farhang Fariad Fariborz Farrukh Farrukhzad Farshad Farzad Farzam Farzann Farzin Feda Firuz Forood Fraidun Fruhar - Giv Goudarz Gorduya Gordiya Gulab Gushtasb - Hamasa Hoshang Houshmand Housyar Human Humayon Hurmoz Hussein - Ibrahim Ilyas Iraj Ismail - Jahandar Jahangeer Jahanshah Jawid Jotman - Kaiyan Kaikhosrow Kaiqubad Kambiz Kamran Kamshad Kamyar Kasra Kavah Kavoos Khashyar Khoram Khosrow Khuda Khudadad Kia Kianoosh Kiumars Kohyar Kosha Koshan Kourash - Mahyar Mani Manuchehar Mardansina Mehrab Mehrak Mehrang Mehrdad Mehrzad Morad Muhammad - Namdar Namvar Naraiman Nasr Neda Niyoosha Noushzad Noshrad Nuh - Omaid Padshah Paghahan Pagzman Pailan Paiman Parsa Parwaaze Payam Pazhman Pendar Poya - Qiomars Qubad Rastin Rohina Roozbeh Roshan Royan Rozi Rukhshan Rustam - Salar Sam Saman Sasan Sepehr Shadan Shahbaz Shaheen Shahpur Shahram Shahrdad Shahrukh Shahryar Shaya Shayan Shuhab Siamak Siamu Siawash Siavakhsh Sina Soroush Sougand Suhrab - Tahmaseb Toktam Toghmath Tooraj Tora Toramana - Varshasb Vishtasb Yahya Yama Zal Zand Zardusht - } - - female_names = { - Afareen Afsana Afsar Afshan Afsoon Anahita Anoosheh Ara Arezo Arghavan Armaghan Asa Asal Awa Avizeh Azar Azin - Bahar Baharah Baharak Banafshah Banou Behnaz Behrukh Belour Bizhan Boosah - Darya Delaram Delbar Delkash Delruba Dorri - Farahnak Farahnaz Farhana Faranghis Farkhonda Farrin Farrukh Farzaneh Fatima Freshta Fila Firoza Forogh Forozan Forozenda Freba Fruzan - Gawhar Geesou Ghoncheh Giti Golbahar Gulgun Gulnar Gulnaz Gulnessa Gulpari Gulshan Gurdia - Hangahma Hasti Huma Jahan Javaneh - Katayoun Khandan Khaterah Khojasta Khorsheed - Lala Lila Mahasti Mahdukht Mahnaz Mahrukh Mahsa Mahtab Mahwash Manizha Marjan Marmar Mastana Mehranghiz Mehrnaz Mehrnoosh Mehry Mina Minoo Mitra Mona Murwarid Muzghan Muzhdah - Nahal Najela Nargis Nasreen Nastaran Nava Naz Nazgul Nazaneen Nazhin Nazhla Nazy Neelab Neelufar Negar Negeen Negha Niki Nikoo Nousafarin Noushin - Padidah Parand PArastoo Pareeya Pari Pericheher Parirow Parisa Pariwash Parwana Parween Paymaneh Paywand Porandukht - Rasa Roudabeh Rukhshan - Saaman Saghar Sahar Sahba Sapedah Seema Setara Shabnam Shadan Shahla Shahnaz Shahrbano Shahrnaz Shahrzad Shahzadah Shameem Shararah Sheeftah Sheela Sheeba Shervin Shirin Shirinbano Shogofa Shokouh Sholah Simin Soudabah Souzan - Tahminah Tanaz Taneen Tara Tarana Taranum - Yagana Yakta Yalda Yasaman - Zarrin Zarrindukht Zarrina Zeba Zhalah Zheela - } - - founder_named_dynasties = yes - house_based_map_names = yes - - patronym_suffix_male = "dynnpat_suf_zde" - patronym_suffix_female = "dynnpat_suf_dukht" - - - - mercenary_names = { - { name = "mercenary_company_company_of_bukhara" } - { name = "mercenary_company_dehqan_warriors" } - } -} diff --git a/common/culture/name_lists/00_japanese.txt b/common/culture/name_lists/00_japanese.txt deleted file mode 100644 index d834d520..00000000 --- a/common/culture/name_lists/00_japanese.txt +++ /dev/null @@ -1,1428 +0,0 @@ -name_list_yamato = { - - house_based_map_names = yes - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - cadet_dynasty_names = { - "dynn_Abiru" - "dynn_Adachi" - "dynn_Aida" - "dynn_Aihara" - "dynn_AikO_" - "dynn_Akahori" - "dynn_Akamatsu" - "dynn_Akasaka" - "dynn_Akasu" - "dynn_Akata" - "dynn_Akatsuka" - "dynn_Akazawa" - "dynn_Akiyama" - "dynn_Amago" - "dynn_Amenomori" - "dynn_Ano" - "dynn_Anzai" - "dynn_Asaka" - "dynn_Asano" - "dynn_Ashida" - "dynn_Ashikaga" - "dynn_Aso" - "dynn_Atobe" - "dynn_Awataguchi" - "dynn_Chiba" - "dynn_Chichibu" - "dynn_ChO_sokabe" - "dynn_Date" - "dynn_Deura" - "dynn_Doi" - "dynn_Ebata" - "dynn_Ebina" - "dynn_Ema" - "dynn_Fuchie" - "dynn_Fujinami" - "dynn_FurugO_ri" - "dynn_Furuya" - "dynn_GO_do" - "dynn_GojO_" - "dynn_Gosho" - "dynn_Hachisuka" - "dynn_Haga" - "dynn_Hakoda" - "dynn_Hamuro" - "dynn_HanyU_" - "dynn_Hara" - "dynn_Harada" - "dynn_Hasuike" - "dynn_Hatakeyama" - "dynn_Hatano" - "dynn_Hatta" - "dynn_Hattori" - "dynn_Hayami" - "dynn_Hayashi" - "dynn_Henmi" - "dynn_Higuchi" - "dynn_Hiki" - "dynn_Hiraga" - "dynn_Hirako" - "dynn_Hirata" - "dynn_Hirosawa" - "dynn_Hizume" - "dynn_HO_in" - "dynn_HO_jO_" - "dynn_Hokage" - "dynn_Honda" - "dynn_HonjO_" - "dynn_Horikawa" - "dynn_Hoshina" - "dynn_Hosokawa" - "dynn_IchijO_" - "dynn_Iga" - "dynn_Ii" - "dynn_Iida" - "dynn_Iinuma" - "dynn_Ijichi" - "dynn_Ikeda" - "dynn_Ikoma" - "dynn_Ina" - "dynn_Inage" - "dynn_Inazawa" - "dynn_Inomata" - "dynn_Isa" - "dynn_Ishibashi" - "dynn_Ishii" - "dynn_Ishikawa" - "dynn_Isobe" - "dynn_Isshiki" - "dynn_Itakura" - "dynn_ItO_" - "dynn_Itoga" - "dynn_Iwamatsu" - "dynn_Iwata" - "dynn_JikO_ji" - "dynn_JimyO_in" - "dynn_Jinbo" - "dynn_Kagami" - "dynn_Kagawa" - "dynn_Kajiwara" - "dynn_Kamachi" - "dynn_Kamata" - "dynn_Kamone" - "dynn_Kanazu" - "dynn_Kanehara" - "dynn_Kaneko" - "dynn_Karita" - "dynn_Kasai" - "dynn_Kasuga" - "dynn_Kasuya" - "dynn_Katagiri" - "dynn_Kataoka" - "dynn_Kawabata" - "dynn_Kawabe" - "dynn_Kawagoe" - "dynn_Kawasaki" - "dynn_Kawazu" - "dynn_Kayane" - "dynn_Kazusa" - "dynn_Kida" - "dynn_Kikkawa" - "dynn_Kikuchi" - "dynn_Kimotsuki" - "dynn_Kira" - "dynn_Kiso" - "dynn_Kitabatake" - "dynn_Kitahara" - "dynn_Kiyotaki" - "dynn_KO_no" - "dynn_KO_saka" - "dynn_KO_sokabe" - "dynn_Kobayakawa" - "dynn_Kodama" - "dynn_Koga" - "dynn_Kokubu" - "dynn_KondO_" - "dynn_Konoe" - "dynn_KudO_" - "dynn_Kuki" - "dynn_Kumasaka" - "dynn_Kunugi" - "dynn_Kurita" - "dynn_Kuroko" - "dynn_Kutsuki" - "dynn_Maki" - "dynn_Masunari" - "dynn_Matano" - "dynn_Matsudaira" - "dynn_Matsura" - "dynn_Matsuyama" - "dynn_Migata" - "dynn_Mikata" - "dynn_Miki" - "dynn_Mimura" - "dynn_Minase" - "dynn_Misawa" - "dynn_Mitoya" - "dynn_Miura" - "dynn_Miyadera" - "dynn_Mochizuki" - "dynn_Mogami" - "dynn_Momonoi" - "dynn_Murayama" - "dynn_MutO_" - "dynn_Nagae" - "dynn_Nagao" - "dynn_Nakagawa" - "dynn_NakagO_ri" - "dynn_NakajO_" - "dynn_Nakamikado" - "dynn_Nakamura" - "dynn_Nakano" - "dynn_Nakayama" - "dynn_Namba" - "dynn_Namekata" - "dynn_Namezu" - "dynn_Nanbu" - "dynn_NanjO_" - "dynn_Narita" - "dynn_Nasu" - "dynn_Natsume" - "dynn_Nemoto" - "dynn_Nezu" - "dynn_NijO_" - "dynn_Nikaido" - "dynn_Niki" - "dynn_Nitoda" - "dynn_Nitta" - "dynn_Nomoto" - "dynn_Nose" - "dynn_Noyo" - "dynn_O_ba" - "dynn_O_hara" - "dynn_O_i" - "dynn_O_inomikado" - "dynn_O_kawa" - "dynn_O_kubo" - "dynn_O_mi" - "dynn_O_miya" - "dynn_O_shikO_chi" - "dynn_O_suga" - "dynn_O_tawa" - "dynn_O_tera" - "dynn_O_tomo" - "dynn_O_uchi" - "dynn_O_zone" - "dynn_Obata" - "dynn_Obu" - "dynn_Ochi" - "dynn_Oda" - "dynn_Odagiri" - "dynn_Ogasawara" - "dynn_Ogata" - "dynn_Ogawa" - "dynn_Ogura" - "dynn_Okada" - "dynn_Okazaki" - "dynn_Omuro" - "dynn_Onozaki" - "dynn_Osada" - "dynn_Owari" - "dynn_Oyama" - "dynn_Ozo" - "dynn_Rokkaku" - "dynn_RokujO_" - "dynn_Sagae" - "dynn_SaitO_" - "dynn_Sakata" - "dynn_Sanada" - "dynn_SanjO_" - "dynn_Sano" - "dynn_Sasaki" - "dynn_Satake" - "dynn_SatO_" - "dynn_Satomi" - "dynn_Seki" - "dynn_Shiba" - "dynn_Shibuya" - "dynn_Shiga" - "dynn_ShijO_" - "dynn_Shimada" - "dynn_Shimazu" - "dynn_ShimokO_be" - "dynn_ShingU_" - "dynn_Shioda" - "dynn_Shionoya" - "dynn_Shioya" - "dynn_Shiratori" - "dynn_ShO_" - "dynn_ShU_in" - "dynn_SO_" - "dynn_SO_ma" - "dynn_Sogabe" - "dynn_SogO_" - "dynn_Sugihara" - "dynn_Sugime" - "dynn_Sugimoto" - "dynn_Suwabe" - "dynn_Suzuki" - "dynn_Tachibana" - "dynn_Tagawa" - "dynn_Tagaya" - "dynn_Taguchi" - "dynn_Takakura" - "dynn_Takatsukasa" - "dynn_Takayama" - "dynn_Take" - "dynn_Takeda" - "dynn_Takeishi" - "dynn_Tamura" - "dynn_Tana_JP" - "dynn_Tashiro" - "dynn_Taya" - "dynn_TO_" - "dynn_TO_gO_" - "dynn_Togashi" - "dynn_Toida" - "dynn_Tokiwa" - "dynn_Tokuchi" - "dynn_Tokuda" - "dynn_Tokugawa" - "dynn_Tokushuku" - "dynn_Tomita" - "dynn_Tomono" - "dynn_Tomura" - "dynn_Tosaki" - "dynn_Toshima" - "dynn_Toyoda" - "dynn_Tsuchimikado" - "dynn_Tsuchimoto" - "dynn_Tsuchiya" - "dynn_Tsugiura" - "dynn_Tsutsumi" - "dynn_Uji_ie" - "dynn_Unno" - "dynn_Urushima" - "dynn_Usami" - "dynn_Ushimaru" - "dynn_Wada" - "dynn_Washizu" - "dynn_Watanabe" - "dynn_Watari" - "dynn_Yabuki" - "dynn_Yamada" - "dynn_Yamaga" - "dynn_Yamagata" - "dynn_Yamaguchi" - "dynn_Yamamoto" - "dynn_Yamana" - "dynn_Yamashina" - "dynn_Yamauchi" - "dynn_Yashiro" - "dynn_Yasu" - "dynn_Yasuda" - "dynn_Yasuoka" - "dynn_Yasutomi" - "dynn_Yato" - "dynn_Yoda" - "dynn_Yokoyama" - "dynn_Yoshida" - "dynn_YU_ki" - "dynn_Yuasa" - "dynn_Yuri" - } - - dynasty_names = { - "dynn_Abiru" - "dynn_Adachi" - "dynn_Aida" - "dynn_Aihara" - "dynn_AikO_" - "dynn_Akahori" - "dynn_Akamatsu" - "dynn_Akasaka" - "dynn_Akasu" - "dynn_Akata" - "dynn_Akatsuka" - "dynn_Akazawa" - "dynn_Akiyama" - "dynn_Amago" - "dynn_Amenomori" - "dynn_Ano" - "dynn_Anzai" - "dynn_Asaka" - "dynn_Asano" - "dynn_Ashida" - "dynn_Ashikaga" - "dynn_Aso" - "dynn_Atobe" - "dynn_Awataguchi" - "dynn_Chiba" - "dynn_Chichibu" - "dynn_ChO_sokabe" - "dynn_Date" - "dynn_Deura" - "dynn_Doi" - "dynn_Ebata" - "dynn_Ebina" - "dynn_Ema" - "dynn_Fuchie" - "dynn_Fujinami" - "dynn_FurugO_ri" - "dynn_Furuya" - "dynn_GO_do" - "dynn_GojO_" - "dynn_Gosho" - "dynn_Hachisuka" - "dynn_Haga" - "dynn_Hakoda" - "dynn_Hamuro" - "dynn_HanyU_" - "dynn_Hara" - "dynn_Harada" - "dynn_Hasuike" - "dynn_Hatakeyama" - "dynn_Hatano" - "dynn_Hatta" - "dynn_Hattori" - "dynn_Hayami" - "dynn_Hayashi" - "dynn_Henmi" - "dynn_Higuchi" - "dynn_Hiki" - "dynn_Hiraga" - "dynn_Hirako" - "dynn_Hirata" - "dynn_Hirosawa" - "dynn_Hizume" - "dynn_HO_in" - "dynn_HO_jO_" - "dynn_Hokage" - "dynn_Honda" - "dynn_HonjO_" - "dynn_Horikawa" - "dynn_Hoshina" - "dynn_Hosokawa" - "dynn_IchijO_" - "dynn_Iga" - "dynn_Ii" - "dynn_Iida" - "dynn_Iinuma" - "dynn_Ijichi" - "dynn_Ikeda" - "dynn_Ikoma" - "dynn_Ina" - "dynn_Inage" - "dynn_Inazawa" - "dynn_Inomata" - "dynn_Isa" - "dynn_Ishibashi" - "dynn_Ishii" - "dynn_Ishikawa" - "dynn_Isobe" - "dynn_Isshiki" - "dynn_Itakura" - "dynn_ItO_" - "dynn_Itoga" - "dynn_Iwamatsu" - "dynn_Iwata" - "dynn_JikO_ji" - "dynn_JimyO_in" - "dynn_Jinbo" - "dynn_Kagami" - "dynn_Kagawa" - "dynn_Kajiwara" - "dynn_Kamachi" - "dynn_Kamata" - "dynn_Kamone" - "dynn_Kanazu" - "dynn_Kanehara" - "dynn_Kaneko" - "dynn_Karita" - "dynn_Kasai" - "dynn_Kasuga" - "dynn_Kasuya" - "dynn_Katagiri" - "dynn_Kataoka" - "dynn_Kawabata" - "dynn_Kawabe" - "dynn_Kawagoe" - "dynn_Kawasaki" - "dynn_Kawazu" - "dynn_Kayane" - "dynn_Kazusa" - "dynn_Kida" - "dynn_Kikkawa" - "dynn_Kikuchi" - "dynn_Kimotsuki" - "dynn_Kira" - "dynn_Kiso" - "dynn_Kitabatake" - "dynn_Kitahara" - "dynn_Kiyotaki" - "dynn_KO_no" - "dynn_KO_saka" - "dynn_KO_sokabe" - "dynn_Kobayakawa" - "dynn_Kodama" - "dynn_Koga" - "dynn_Kokubu" - "dynn_KondO_" - "dynn_Konoe" - "dynn_KudO_" - "dynn_Kuki" - "dynn_Kumasaka" - "dynn_Kunugi" - "dynn_Kurita" - "dynn_Kuroko" - "dynn_Kutsuki" - "dynn_Maki" - "dynn_Masunari" - "dynn_Matano" - "dynn_Matsudaira" - "dynn_Matsura" - "dynn_Matsuyama" - "dynn_Mikata" - "dynn_Miki" - "dynn_Mimura" - "dynn_Minase" - "dynn_Misawa" - "dynn_Mitoya" - "dynn_Miura" - "dynn_Miyadera" - "dynn_Mochizuki" - "dynn_Mogami" - "dynn_Momonoi" - "dynn_Murayama" - "dynn_MutO_" - "dynn_Nagae" - "dynn_Nagao" - "dynn_Nakagawa" - "dynn_NakagO_ri" - "dynn_NakajO_" - "dynn_Nakamikado" - "dynn_Nakamura" - "dynn_Nakano" - "dynn_Nakayama" - "dynn_Namba" - "dynn_Namekata" - "dynn_Namezu" - "dynn_Nanbu" - "dynn_NanjO_" - "dynn_Narita" - "dynn_Nasu" - "dynn_Natsume" - "dynn_Nemoto" - "dynn_Nezu" - "dynn_NijO_" - "dynn_Nikaido" - "dynn_Niki" - "dynn_Nitoda" - "dynn_Nitta" - "dynn_Nomoto" - "dynn_Nose" - "dynn_Noyo" - "dynn_O_ba" - "dynn_O_hara" - "dynn_O_i" - "dynn_O_inomikado" - "dynn_O_kawa" - "dynn_O_kubo" - "dynn_O_mi" - "dynn_O_miya" - "dynn_O_shikO_chi" - "dynn_O_suga" - "dynn_O_tawa" - "dynn_O_tera" - "dynn_O_tomo" - "dynn_O_uchi" - "dynn_O_zone" - "dynn_Obata" - "dynn_Obu" - "dynn_Ochi" - "dynn_Oda" - "dynn_Odagiri" - "dynn_Ogasawara" - "dynn_Ogata" - "dynn_Ogawa" - "dynn_Ogura" - "dynn_Okada" - "dynn_Okazaki" - "dynn_Omuro" - "dynn_Onozaki" - "dynn_Osada" - "dynn_Owari" - "dynn_Oyama" - "dynn_Ozo" - "dynn_Rokkaku" - "dynn_RokujO_" - "dynn_Sagae" - "dynn_SaitO_" - "dynn_Sakata" - "dynn_Sanada" - "dynn_SanjO_" - "dynn_Sano" - "dynn_Sasaki" - "dynn_Satake" - "dynn_SatO_" - "dynn_Satomi" - "dynn_Seki" - "dynn_Shiba" - "dynn_Shibuya" - "dynn_Shiga" - "dynn_ShijO_" - "dynn_Shimada" - "dynn_Shimazu" - "dynn_ShimokO_be" - "dynn_ShingU_" - "dynn_Shioda" - "dynn_Shionoya" - "dynn_Shioya" - "dynn_Shiratori" - "dynn_ShO_" - "dynn_ShU_in" - "dynn_SO_" - "dynn_SO_ma" - "dynn_Sogabe" - "dynn_SogO_" - "dynn_Sugihara" - "dynn_Sugime" - "dynn_Sugimoto" - "dynn_Suwabe" - "dynn_Suzuki" - "dynn_Tachibana" - "dynn_Tagawa" - "dynn_Tagaya" - "dynn_Taguchi" - "dynn_Takakura" - "dynn_Takatsukasa" - "dynn_Takayama" - "dynn_Take" - "dynn_Takeda" - "dynn_Takeishi" - "dynn_Tamura" - "dynn_Tana_JP" - "dynn_Tashiro" - "dynn_Taya" - "dynn_TO_" - "dynn_TO_gO_" - "dynn_Togashi" - "dynn_Toida" - "dynn_Tokiwa" - "dynn_Tokuchi" - "dynn_Tokuda" - "dynn_Tokugawa" - "dynn_Tokushuku" - "dynn_Tomita" - "dynn_Tomono" - "dynn_Tomura" - "dynn_Tosaki" - "dynn_Toshima" - "dynn_Toyoda" - "dynn_Tsuchimikado" - "dynn_Tsuchimoto" - "dynn_Tsuchiya" - "dynn_Tsugiura" - "dynn_Tsutsumi" - "dynn_Uji_ie" - "dynn_Unno" - "dynn_Urushima" - "dynn_Usami" - "dynn_Ushimaru" - "dynn_Wada" - "dynn_Washizu" - "dynn_Watanabe" - "dynn_Watari" - "dynn_Yabuki" - "dynn_Yamada" - "dynn_Yamaga" - "dynn_Yamagata" - "dynn_Yamaguchi" - "dynn_Yamamoto" - "dynn_Yamana" - "dynn_Yamashina" - "dynn_Yamauchi" - "dynn_Yashiro" - "dynn_Yasu" - "dynn_Yasuda" - "dynn_Yasuoka" - "dynn_Yasutomi" - "dynn_Yato" - "dynn_Yoda" - "dynn_Yokoyama" - "dynn_Yoshida" - "dynn_YU_ki" - "dynn_Yuasa" - "dynn_Yuri" - } - - male_names = { - ### AKI ### - Aki_ie Akichika Akifusa Akihiro Akikiyo Akikuni Akimasa Akimichi Akimitsu Akimori Akimoto Akinaga Akinaka Akinari_2 Akinobu Akinori Akinori_2 Akisada Akishige Akisue Akisuke Akitada Akitaka Akitoki Akitoshi Akitsuna Akitsune Akiyasu Akiyori Akiyoshi Akiyoshi_2 Akiyuki Akizane # 顕 - Aki_ie_2 Akichika_2 Akihiro_2 Akihiro_3 Akimori_2 Akina_JP Akinao Akisada_3 Akisada_4 Akitoshi_3 Akitsuna_3 Akitsune_2 Akiyuki_2 # 章 - Akihira Akikane Akikata Akira Akikuni_2 Akimoto_2 Akinobu_2 Akisuke_2 Akisuke_3 Akitoshi_2 Akitsuna_2 # 明 - Akikage Akimichi_2 Akitsugu Akitsune_3 Akiyori_2 # 秋 - ### ARI ### - Ari_ie Ariakira Ariakira_2 Ariakira_3 Arichika Arifumi Arifusa Ariharu Arihiro Arikage Arikane Arikata Arikata_2 Arikata_3 Arikazu Arimasa Arimasa_3 Arimichi Arimitsu Arimori Arimoto Arimoto_2 Arimune Arimune_2 Arinaga Arinao Arinari Arinobu Arinobu_2 Arinori Arisada Arisada_2 Arisato Arishige Arisue Arisuke Arisuke_2 Arisuke_3 Arisuke_4 Arisuke_5 Aritada Aritaka Aritomo Aritoshi Aritoshi_2 Aritsugu Aritsuna Aritsune Aritsune_2 Ariyasu Ariyo Ariyori Ariyoshi Ariyoshi_3 Ariyoshi_4 Ariyoshi_5 Ariyuki Arizane # 有 - Arihira Arimasa_2 Arioki Ariyoshi_2 # 在 - ### ATSU ### - Atsuakira Atsufumi Atsufusa Atsuhira Atsuhira_2 Atsuie Atsukane Atsukata Atsukata_2 Atsumichi Atsumichi_2 Atsumitsu Atsumori Atsumoto Atsumoto_2 Atsumune Atsunaga Atsunobu Atsunori Atsunori_2 Atsusada Atsusuke Atsutaka Atsutada Atsutoshi Atsutsune_2 Atsuyasu Atsuyoshi Atsuyuki # 敦 - Atsukuni Atsunaka Atsushige Atsutsune Atsuyuki_2 # 淳 - ### CHIKA ### - Chika_akira Chikafusa Chikaharu Chikahiro Chikahiro_2 Chikahiro_3 Chikaie Chikakane Chikakata_2 Chikakiyo Chikakuni Chikamasa Chikamasa_2 Chikamichi Chikamitsu Chikamitsu_2 Chikamori Chikamori_2 Chikamoto Chikamune Chikamune_2 Chikanaga Chikanaka Chikanari Chikanobu Chikanobu_3 Chikanori Chikasada Chikashige_2 Chikasue Chikasuke Chikasuke_2 Chikataka Chikataka_2 ChikatO_ Chikatsuna Chikatsune Chikayori_2 Chikayoshi Chikayoshi_2 Chikayoshi_3 Chikayoshi_4 Chikazane # 親 - Chikamitsu_3 Chikanari_2 Chikanobu_2 Chikanushi Chikasada_2 Chikashige Chikatsuna_2 Chikauji Chikayasu Chikayo Chikazumi # 近 - Chikafusa_2 Chikaie_2 Chikatoki Chikayori # 周 - ### FUMI ### - Fumiaki Fumikuni Fumimasa Fumimi Fumimine Fumimitsu Fumimasa_2 Fumimori Fumimoto Fuminaga Fuminaga_2 Fuminao Fuminari Fuminori Fumio Fumisada Fumisuke Fumitoki Fumitoshi Fumiyama Fumiyoshi Fumiyuki Fumizane # 文 - ### FUSA ### - Fusa_akira Fusamori Fusanori Fusanori_2 Fusao Fusasaki Fusaura Fusayo # 房 - ### HARU - Harukage Harukami Harukaze Harumochi Harumitsu Harunari Haruo Harutsugu Haruyuki Haruzane Haruzumi # 春 - ### HIDE ### - Hidehira Hidehisa Hidekiyo Hidemichi Hidemichi_2 Hidemoto Hidesato Hidetaka Hidetake Hidetane HidetO_ HidetO__2 Hideyasu Hideyo Hideyoshi Hideyoshi_2 # 秀 - ### HIRO ### - Hiroe Hirofusa Hirohama Hirohira Hirokane Hirokata Hirokoto Hiromichi Hiromori Hiromori_2 Hiromoto Hiromoto_2 Hiromune Hirona Hironaga Hironaka Hironari Hironiwa Hirosue Hirosuke Hirotada Hirotaka_2 Hirotoshi Hirotsugu Hirotsuna Hirotsune Hirotsune_3 Hiroyo Hirozumi Hirozumi_2 # 広 - Hirochika Hirokage Hirokata_2 Hirokuni Hiromitsu Hiromori_3 Hiromoto_3 Hiromu Hironobu Hirosada Hirotada_2 Hirotaka Hirotsune_2 Hiroyori Hiroyuki Hirozane # 弘 - ### HISA ### - Hisa_akira Hisafusa Hisakiyo Hisakuni Hisahiro Hisamasa Hisamichi Hisamori Hisamune Hisamura Hisanaga Hisanaka Hisanao Hisanori Hisanori_2 Hisasada Hisatada HisatO_ Hisatoshi Hisatsune Hisasuke Hisauji Hisayuki Hisazane # 久 - ### IE ### - Ieakira Iechika Iechika_2 Iefusa Iehira Iehira_2 Iehiro Iehiro_2 Iekane Iekata Iekuni Iemasa Iemichi Iemitsu Iemori Iemoto Iemoto_2 Iemoto_3 Iemune Ienaga Ienao Ienari Ienari_2 Ienari_3 Ienobu Ienori Iesada Iesada_2 Ieshige Iesue Iesuke Ietada Ietaka Ietaka_2 IetO_ IetO__2 Ietoki Ietomo Ietoshi Ietsugu Ietsugu_2 Ietsuna Ietsune Ietsura Ieyasu Ieyori Ieyori_2 Ieyoshi Ieyuki Iezane # 家 - Ieyoshi_2 # 宅 - ### KAGE ### - Kageakira Kagechika Kagefusa Kagehide Kagehira Kagehiro Kagehisa Kageie Kagekado Kagekane Kagekazu Kagekiyo Kagemasa Kagemasa_2 Kagemichi Kagemichi_2 Kagemitsu Kagemochi Kagemori Kagemune Kagemune_2 Kagemura Kagenaga Kagenari Kagenari_2 Kagenobu_2 Kagenori Kagesada Kageshige Kagesue Kagetaka KagetO_ Kagetoki Kagetomo Kagetoshi Kagetsugu Kagetsuna Kagetsune Kagetsura Kageyasu Kageyori Kageyoshi Kageyuki Kagezumi # 景 - ### KANE ### - Kaneakira Kanefuji Kanefumi Kanefusa Kanehira Kanehira_2 Kanehira_4 Kanehiro Kanehiro_2 Kaneie Kanekazu Kanekiyo Kanemasa Kanemasu Kanemichi Kanemitsu Kanemori Kanemoto Kanemune Kanenaga Kanenaga_2 Kanenaka Kanenari Kanenobu Kanenori Kanenori_2 Kanesada Kaneshige Kanesue Kanesue_2 Kanesuke Kanesuke_2 Kanesuke_3 Kanetada Kanetaka Kanetaka_2 Kanetaka_3 KanetO_ KanetO__2 Kanetomo Kanetoshi Kanetsuna Kanetsune Kanetsura Kaneuji Kaneyasu Kaneyasu_2 Kaneyasu_3 Kaneyori Kaneyoshi Kaneyoshi_2 Kaneyoshi_3 Kaneyuki Kaneyuki_2 Kanezane Kanezumi # 兼 - Kanehira_3 Kanetada_2 Kanetada_3 # 懐 - Kanenobu_2 # 包 - ### KATSU ### - Katsunaga Katsuyoshi # 勝 - Katsutada # 克 - ### KAZU ### - Kazunori # 数 - ### KIN ### - Kin_aki Kin_akira Kin_hiro Kin_hisa Kin_ie Kin_naga Kin_naka Kin_nari Kin_nari_2 Kin_nobu Kin_nobu_2 Kin_nori Kin_nori_2 Kin_nori_2 Kin_yasu Kin_yori Kin_yoshi_2 Kin_yuki Kin_aki Kin_chika Kin_fusa Kin_hira Kin_kado Kin_kage Kin_kane Kin_kazu Kin_kiyo Kin_kuni Kin_kuzu Kin_masa Kin_michi Kin_mitsu Kin_mori Kin_mori_2 Kin_moto Kin_moto_2 Kin_mune Kin_sada Kin_sada_2 Kin_sato Kin_shige Kin_sue Kin_suke Kin_suke_2 Kin_suke_3 Kin_suke_4 Kin_tada Kin_taka Kin_tO_ Kin_tO__2 Kin_toki Kin_toshi Kin_toshi_2 Kin_tsugu Kin_tsuna Kin_tsune Kin_tsura Kin_yasu Kin_yori Kin_yoshi Kin_yoshi_2 Kin_yuki Kin_zane Kin_zumi # 公 - ### KIYO ### - Kiyoaki Kiyoakira Kiyoakira_2 Kiyochika Kiyofusa Kiyoharu Kiyohira Kiyohira_2 Kiyoie Kiyokage Kiyokane Kiyokaze Kiyokimi Kiyokoto Kiyokuni Kiyomasa Kiyomasa_2 Kiyomasa_3 Kiyomichi Kiyomitsu Kiyomizu Kiyomochi Kiyomori Kiyomoto Kiyomoto_2 Kiyomune Kiyonaga Kiyonaka Kiyonari Kiyonatsu Kiyonobu Kiyonobu_2 Kiyonori Kiyosada Kiyosada_2 Kiyoshi Kiyoshige Kiyosue Kiyosuke Kiyotada Kiyotada_2 Kiyotaka KiyotO_ Kiyotoki Kiyotomo Kiyotoshi Kiyotoshi_2 Kiyotsuna Kiyotsune Kiyotsune_2 Kiyotsune_3 Kiyotsura Kiyotsura_2 Kiyoyasu Kiyoyoshi Kiyoyoshi_2 Kiyoyuki Kiyoyuki_2 Kiyozane Kiyozane_2 # 清 - ### KORE ### - Koreaki Korechika Korechika_2 Korefusa_3 Korehide Korehiko Korehira_4 Korehira_5 Korehiro Korehisa_2 Koreie Korekata Korekata_2 Korekaze Korekiyo Korekuni Koremasa Koremine Koremitsu Koremitsu_2 Koremochi_3 Koremori_2 Koremori_4 Koremoto Korenaga Korenaka Korenao Korenari Korenobu_4 Korenori Korenori_2 Koresada_2 Koreshige_3 Koresue Koretaka Koretaka_2 Koretaka_3 KoretO__3 Koretoki_2 Koretsuna Koretsune Koretsune_2 Koretsune_3 Koreyo Koreyori Koreyoshi Koreyoshi_3 Koreyoshi_4 Koreyuki Korezumi # 惟 - Koreakira_2 Korehira Korehira_2 Korehiro_2 Korehisa Korekage Korekane Korekata_3 Korekiyo_2 Koremasa_2 Koremichi_2 Koremitsu Koremochi Koremochi_2 Koremori Koremori_3 Koremoto_2 Koremoto_3 Koremune Korenaka_2 Korenobu Korenobu_2 Koresada_3 Koreshige_2 Koresuke_4 Koretada_4 KoretO_ Koretoki Koretoshi Koretoshi_2 Koretsugu Koretsuna_4 Koreyasu Koreyori_2 Koreyoshi_2 Koreyuki_2 Korezane Korezane_3 # 維 - Korechika_3 Korefusa_2 Korehira_3 Koreie_2 Koremichi Koremochi_4 Korenari_2 Korenobu_3 Koresuke Koresuke_2 Koresuke_3 KoretO__2 Koretada Koretada_2 Koretsuna_2 Koretsune_4 Koreyuki_3 Korezane_2 # 伊 - Koreakira Korefusa Korekimi Korenori_3 Korenori_4 Korenori_5 Koresada Koreshige Koretada_3 Koretsuna_3 Koretsune_5 Koreyoshi_5 # 是 - ### KUNI ### - Kuniakira_2 Kunifusa Kunihira Kunihira_2 Kunihiro Kunikane Kunikata Kunimasa Kunimasu Kunimichi Kunimichi_2 Kunimitsu Kunimori Kunimori_2 Kunimoto Kunimoto_2 Kunimune Kuninaga Kuninaka Kuninao Kuninari Kuninobu Kuninori Kuninori_2 Kunisada Kunishige Kunisuke Kunisuke_2 Kunitada Kunitaka Kunitaka_2 Kunitaka_3 Kunitoshi Kunitsuna Kunitsune Kuniyasu Kuniyoshi Kuniyoshi_2 Kuniyori Kunizane Kunizumi # 国 - Kuniakira Kunimasa_2 Kunimasa_3 Kunimitsu_2 Kunimoto_3 Kunitsune_2 # 邦 - ### MASA ### - Masa_akira Masafumi Masahira Masahiro Masahiro_2 Masaie Masakane Masakiyo Masami Masamichi Masamichi_2 Masamine Masamitsu Masamochi Masamori Masamoto_6 Masanari Masanori Masanori_2 Masanori_7 Masashige Masasue_2 Masatada Masataka Masataka_5 MasatO_ Masatoki_2 Masatomo Masatsugu Masatsugu_2 Masatsuna Masatsuna_3 Masayo Masayori Masayoshi Masayoshi_4 Masayuki Masazane # 正 - Masa_akira_4 Masachika Masamitsu_3 Masamochi_2 Masamori_2 Masamune Masanaga_2 Masanaka Masanari_3 Masanobu Masanori_4 Masanori_5 Masanori_6 Masasada Masashige_3 Masatada_2 Masataka_2 Masataka_3 Masatoshi Masatsune Masayasu Masayori_2 Masayuki_3 Masazane # 雅 - Masa_akira_3 Masafumi_3 Masafusa Masahira_6 Masaie_2 Masakiyo_2 Masamitsu_2 Masamoto Masamoto_4 Masamoto_5 Masanaga Masanari_2 Masanori_3 Masashige_2 Masakage Masatsugu_4 Masatsuna_2 Masatsune_4 Masayoshi_2 Masayuki_2 # 政 - Masakage_2 Masamichi_3 Masamoto_2 Masamoto_3 Masamune_2 Masasue Masasuke Masatoki Masatoshi_2 Masatsugu_3 Masayo_2 Masazumi # 当 - Masahira_2 Masakado Masakuni Masatake Masatame Masatsune_2 Masayori_3 # 将 - Masa_akira_2 Masakane_2 Masakata Masatsuna_4 # 理 - ### MICHI ### - Michi_ie Michichika Michifusa Michiharu Michihira Michikane_2 Michikata_2 Michikazu Michikiyo Michikuni Michimasa Michimori Michimoto Michimune Michinaga Michinao Michinari Michinari_3 Michinobu Michinobu_2 Michinori Michisada Michisada_2 Michisada_4 Michishige Michisue Michisuke Michisuke_2 Michisuke_3 Michitada MichitO_ Michitoki_2 Michitomo Michitomo_2 Michitoshi Michitoshi_2 Michitsugu Michitsuna_2 Michitsune Michiuji Michiyori Michiyoshi Michiyoshi_2 # 通 - Michi_ie_2 Michiaki Michifumi Michifusa_2 Michihira_2 Michikane Michikata Michikaze Michimasa_2 Michimori_2 Michinaga_2 Michinaka Michinari_2 Michinobu_3 Michisada_3 Michitaka Michitoki Michitsugu_2 Michitsuna Michitsune_2 Michiyasu Michiyori_2 Michiyoshi_3 Michiyoshi_4 Michiyoshi_5 Michiyoshi_6 Michizane # 道 - ### MITSU ### - Mitsuaki Mitsuakira Mitsuakira_2 Mitsuari Mitsuchika Mitsufusa Mitsuhira Mitsuhira_2 Mitsuhiro Mitsuhiro_2 Mitsuie Mitsukage Mitsukage_2 Mitsukata Mitsukiyo Mitsukuni Mitsumasa Mitsumasa_2 Mitsumori Mitsumoto Mitsumoto_2 Mitsumune Mitsumune_2 Mitsunaga Mitsunari Mitsunari_2 Mitsunobu Mitsunobu_3 Mitsunori Mitsunori_2 Mitsusada Mitsusato Mitsushige Mitsusue Mitsusuke Mitsusuke_2 Mitsusuke_3 Mitsusuke_4 Mitsusune Mitsutada Mitsutada_2 Mitsutaka Mitsutaka_2 MitsutO_ Mitsutoki Mitsutomo Mitsutoshi Mitsutsuna Mitsutsune Mitsuyasu Mitsuyo Mitsuyori Mitsuyoshi Mitsuyoshi_2 Mitsuyuki Mitsuzaku # 光 - Mitsuharu Mitsuie_2 Mitsukage_3 Mitsukuni_2 Mitsumasa_3 Mitsumori_2 Mitsunaka Mitsunari_3 Mitsunobu_2 Mitsushige_2 Mitsusue_2 Mitsusue_3 Mitsutsuna_2 Mitsuyori_2 Mitsuyoshi_3 Mitsuzane # 満 - ### MOCHI ### - Mochifusa Mochihiro Mochimasa Mochinaga Mochinari Mochisuke Mochitada Mochitoki Mochitsuna Mochitsune Mochiyasu Mochiyori Mochiyoshi Mochizane # 以 - Mochimoto Mochimura Mochinori Mochinori_2 Mochisuke_2 Mochiyuki # 茂 - Mochimasa_2 Mochimasu Mochimoto_2 Mochiyuki_2 # 望 - ### MORI ### - Moriakira Morichika_2 Mori_ie Morifusa Morihira_2 Morihiro Morihisa Morikage Morikane Morikata Morikata_2 Morikiyo Morikuni Morimasa Morimichi Morimichi_2 Morimitsu Morimoto Morimoto_2 Morimune Morinaga Morinaka Morinari Morinobu Morinori Morinori_2 Morisada Morishige Morisue Morisuke_2 Moritaka Moritaka_2 Moritaka_3 Moritoshi Moritsugu Moritsuna Moritsune Moritsura Moriyasu Moriyasu_2 Moriyori Moriyoshi Morizane # 盛 - Morichika Morihira Morikiyo_2 Morimasa_2 Morinaga_2 Morisada_2 Moritaka_4 Moritoki Moritoshi_2 Moriyoshi_2 Morizane_2 # 守 - ### MORO ### - Moroakira Morochika Morofumi Morofusa Moroharu Morohira Morohira_2 Morohiro Morohisa Moroie Morokane Morokata Morokiyo Morokuni Moromasa Moromichi Moromitsu Moromochi Moromori Moromoto Moromoto_2 Moronaga Moronaka Moronao Moronari Moronari_3 Moronobu Moronori Morosada Moroshige Morosue Morosuke Morotada Morotada_2 Morotaka Morotaka_2 MorotO_ MorotO__2 Morotoki Morotoshi Morotsugu Morotsuna Morotsune Morotsune_2 Morouji Moroyasu Moroyo Moroyori Moroyoshi Moroyoshi_2 Moroyuki Morozane # 師 - Morofuji Morofusa_2 Morokazu Morokiyo_2 Moronari_2 Morotaka_3 MorotO__3 # 諸 - ### MOTO ### - Motoakira Motoakira_2 Motoakira_3 Motochika Motofusa Motoharu Motohira Motohira_2 Motohiro Motohiro_2 Motoie Motokage Motokane Motokaze Motokazu Motokiyo Motokiyo_2 Motokoto Motokuni Motokuni_2 Motomichi Motomitsu Motomori Motomune Motomune_2 Motona Motonaga Motonaga_3 Motonaka Motonari Motonari_2 Motonari_3 Motonobu Motonori Motosada Motosada_2 Motosuke_2 Mototada Mototaka Mototaka_2 Mototoshi Mototsuna Mototsune Motoyasu_3 Motoyo Motoyori Motoyoshi Motoyoshi_2 Motoyuki Motozane # 基 - Motoakira_4 Motoharu_2 Motohira_3 Motokata Motomitsu_2 Motomune_3 Motonaga_2 Motosuke Mototada_2 Mototada_3 MototO_ Mototoshi_2 Mototoshi_3 Motoyasu Motoyoshi_3 Motozane_2 # 元 - Motoari Motomichi_2 Motoyasu_2 # 本 - ### MUNE ### - Muneakira Muneakira_2 Munechika Munechika_2 Munefusa Munehira Munehisa Muneie Munekage Munekane Munekata Munekata_2 Munekiyo Munekuni Munemasa Munemasa_2 Munemichi Munemitsu Munemori Munemoto Munemoto_3 Munemura Munenaga Munenaga_2 Munenaka Munenao Munenari Munenobu Munenobu_2 Munenori Munenori_2 Munenori_3 Munesada Munesada_3 Muneshige Muneshige_2 Munesue Munesuke Munesuke_2 Munesuke_3 Munetada Munetada_2 Munetaka Munetaka_2 Munetaka_3 MunetO_ MunetO__2 Munetoki Munetoshi Munetsuna Munetsune Muneuji Muneyasu Muneyasu_2 Muneyasu_3 Muneyori Muneyoshi Muneyoshi_2 Muneyoshi_3 Muneyoshi_5 Muneyuki Muneyuki_2 Muneyuki_3 Munezane Munezane_2 # 宗 - Munehira_2 Munekata_3 Munemitsu_2 Munemoto_2 Munenao_2 Munenari_2 Munenobu_3 MunetO__3 Munetoki_2 Munetoshi_2 Munetsune_2 Muneyori_2 Muneyoshi_4 # 致 - Munenaga_3 Munenaka_2 Munesada_2 Muneuji # 棟 - ### NAGA ### - Naga_akira Nagachika Nagafusa Nagaie Nagakane Nagakata Nagakiyo Nagakuni Nagamasa Nagamatsu Nagamichi Nagamitsu Nagamochi Nagamori Nagamori_2 Nagamoto Nagamune Nagamune_2 Naganari Naganari_2 Naganobu Naganobu_2 Naganori_2 Nagasue Nagasuke Nagasuke_2 Nagatada Nagataka NagatO_ Nagatoki Nagatoshi Nagatsuna Nagatsune Nagayasu Nagayori Nagayori_2 Nagazane # 長 - Nagahira Nagakawa_2 Nagakazu Nagakiyo_2 Nagamichi_2 Nagamori_3 Nagamoto_2 Naganao Naganori Nagasada Nagasuke_3 Nagatsugu Nagatsuna_2 Nagatsune_2 Nagayasu_2 Nagayasu_3 Nagazane_2 # 永 - Nagamasa_2 Naganori_3 Nagayuki # 脩 - ### NAKA ### - Naka_akira Nakachika Nakafumi Nakafusa Nakahira Nakaie Nakakane Nakakata Nakakata_2 Nakakiyo Nakakuni Nakamasa Nakamitsu Nakamune Nakamune_2 Nakamune_3 Nakanao Nakanari Nakanobu Nakanobu_2 Nakanori Nakashige Nakasuke Nakataka NakatO_ NakatO__2 Nakatoshi Nakatsuna Nakatsune Nakayasu Nakayori Nakazane # 仲 - Nakamasa_2 Nakatada Nakatsune_2 # 中 - ### NAO ### - Naoie Naokage Naokata Naokatsu Naomasa Naomichi Naomoto Naomoto_2 Naomoto_3 Naomune Naonori Naosada Naoshi Naotsune Naoyo Naozane # 直 - Naomori # 尚 - ### NARI ### - Nari_ie Nariakira Nariakira_2 Narichika Narifusa Narihide Narihira Narihira_3 Narikuni Narimasa Narimasa_2 Narimasa_3 Narimichi Narimichi_2 Narimitsu Narimoto Narimune Narinaga Narinao Narinobu Narisada Narisue Narisue_2 Narisuke Naritada Naritada_3 Naritaka Naritane NaritO_ Naritoki Naritoshi Naritoshi_4 Naritsuna Naritsuna_3 Naritsune Nariyasu Nariyasu_2 Nariyasu_3 Nariyo Nariyori Nariyoshi Nariyoshi_2 Nariyoshi_4 Nariyuki # 成 - Narifusa_2 Narihira_2 Narikane Narimori Naritada_2 NaritO__2 Naritoshi_2 Naritoshi_3 Naritsuna_2 Naritsune_2 Nariyoshi_3 # 業 - Nariakira_3 Narikane_2 Narimitsu_2 # 斉 - ### NOBU ### - Nobuchika Nobufusa Nobuharu Nobuhira Nobuhira_2 Nobuhiro Nobuhiro_2 Nobuie Nobukage Nobukage_2 Nobukane Nobukata Nobukiyo Nobukuni Nobumasa Nobumasa_2 Nobumasa_4 Nobumasa_8 Nobumichi Nobumichi_2 Nobumitsu Nobumochi Nobumori Nobumoto Nobumune Nobunaga Nobunari Nobunori Nobunori_2 Nobunori_3 Nobunori_4 Nobusada Nobushige Nobusue Nobusuke Nobutada Nobutada_4 Nobutaka Nobutaka_2 Nobutoki Nobutoshi Nobutsuna Nobutsune Nobutsura Nobuyori Nobuyoshi Nobuyoshi_2 Nobuyuki Nobuzane # 信 - Nobuakira Nobuchika_2 Nobufusa_2 Nobukata_2 Nobukiyo_2 Nobumasa_5 Nobumasa_7 Nobumoto_2 Nobumune_2 Nobunori_5 Nobushige_2 Nobusuke_2 Nobutada_2 Nobutaka_3 Nobutoki_2 Nobutoshi_2 Nobuyasu Nobuyoshi_3 Nobuzane_3 Nobuzumi # 宣 - Nobumasa_6 Nobumitsu_2 Nobumoto_3 Nobuyuki_2 Nobuzane_2 # 延 - Nobumasa_3 Nobumura Nobutada_3 # 陳 - ## NORI ### - Nori_ie Norifusa Norikane Norikazu Norikuni Norimasa Norimasa_2 Norimasa_3 Norimitsu Norimoto Norimoto_2 Norinaga Norinaga_3 Norinobu Norishige Norisue Noritada Noritaka Noritaka_2 NoritO__2 Noritoki Noritomo Noritomo_2 Noritsuna Noritsuna_3 Noriyori Noriyoshi_2 Noriyoshi_3 Noriyuki Norizane # 範 - Noriakira Norihiro Norikage Norikiyo Norimasa_4 Norimichi Norimitsu_2 Norimura Norinaga_2 Norisada Norishige_2 Norisue_2 Noritaka_3 Noritaka_4 Noritaka_5 NoritO_ Noritomo_4 Noritsune Noriyuki_2 Norizane_2 # 則 - Norimichi_2 Norimori Norinari Norishige_3 NoritO__3 Noritada_2 Noritsuna_2 Noritsune_2 Noriyoshi # 教 - Noriakira_4 Norifusa_2 Norihira Norikata Norisada_2 Norisuke Noritomo_3 Noritoshi # 憲 - Norichika Norimasa_5 Norimitsu_3 Norimochi Norinaga_4 Norisada_3 # 奉 - ### OKI ### - Okifusa Okikata Okikuni Okimichi Okimoto Okinori Okisada Okisuke Okitsugu Okiuji Okiyo Okiyuki # 興 - Okitsugu_2 # 息 - ### SADA ### - Sada_akira Sada_atsu Sadachika Sadachika_2 Sadafumi Sadahira Sadahira_2 Sadahiro Sadakata Sadakazu Sadakiyo Sadamasa Sadamasa_2 Sadamasa_4 Sadamichi Sadamiki Sadamitsu Sadamochi Sadamochi_3 Sadamori Sadamori_2 Sadamoto Sadamoto_2 Sadamoto_3 Sadamoto_4 Sadamu Sadamune Sadamune_3 Sadanaga Sadanaka Sadanao Sadanari Sadanori Sadanori_2 Sadanori_3 Sadanari_4 Sadanobu_2 Sadanori_5 Sadanushi Sadasue Sadasuke_2 Sadasuke_4 Sadataka_3 SadatO_ Sadatoki Sadatoki_2 Sadatoshi Sadatsugu Sadatsugu_2 Sadatsuna_2 Sadatsura Sadayasu Sadayo Sadayori Sadayoshi Sadayoshi_5 Sadayuki Sadayuki_3 Sadazane Sadazumi # 貞 - Sada_ari Sadafumi_2 Sadafusa Sadahira_3 Sadaie Sadakage Sadakane Sadakata_2 Sadakiyo_2 Sadakuni Sadamasa_3 Sadamichi_2 Sadamichi_3 Sadamitsu_2 Sadamune_2 Sadanaga_2 Sadanaka_2 Sadanari_2 Sadanobu Sadanori_4 Sadashige Sadashige_2 Sadasue_2 Sadasuke Sadasuke_3 Sadatada Sadataka Sadataka_2 SadatO__2 Sadatoki_3 Sadatoshi_2 Sadatsuna Sadatsune Sadayasu_2 Sadayori_2 Sadayoshi_2 Sadayoshi_3 Sadayoshi_6 Sadayuki_2 Sadazane_2 # 定 - ### SANE ### - Saneakira Saneakira_2 Sanechika Sanefusa Saneharu Sanehide Sanehira Sanehira_2 Sanehiro Saneie Sanekage Sanekane Sanekata Sanekiyo Sanekuni Sanemasa Sanemasa_2 Sanemichi Sanemitsu Sanemori Sanemoto Sanemoto_2 Sanemune Sanenaga Sanenari Sanenobu Sanenobu_2 Sanenori Sanenori_2 Sanesada Saneshige Sanesue Sanesuke Sanetada_2 Sanetaka Sanetaka_2 SanetO_ SanetO__3 Sanetoki Sanetomo Sanetoshi Sanetsuna Sanetsune Sanetsura Saneyasu Saneyasu_2 Saneyo Saneyori Saneyoshi Saneyuki Saneyuki_2 # 実 - Sanefusa_2 Sanehira_3 Sanekuni_2 Sanemasa_3 Sanenori_3 Sanesada_2 Sanesuke_2 # 真 - ### SHIGE ### - Shigeakira Shigechika Shigechika_2 Shigefumi Shigefusa Shigehide Shigehira Shigehira_2 Shigehiro Shigeie Shigekane Shigekata Shigekatsu Shigekazu Shigekiyo Shigekuni Shigekuni_2 Shigemasa Shigemichi Shigemitsu Shigemitsu_2 Shigemochi Shigemori Shigemoto Shigemoto_2 Shigemoto_3 Shigemune Shigenaga Shigenaka Shigenao Shigenari Shigenobu Shigenobu_2 Shigenori Shigenori_2 Shigesada Shigesada_2 Shigesato Shigeshi Shigesue Shigesuke Shigesuke_2 Shigetada Shigetada_2 Shigetaka Shigetaka_2 Shigetane ShigetO_ ShigetO__2 Shigetoki Shigetomo Shigetomo_2 Shigetomo_3 Shigetoshi Shigetsugu Shigetsugu_2 Shigetsuna Shigetsune Shigetsune_2 Shigeyori Shigeyoshi Shigeyoshi_2 Shigeyoshi_3 Shigeyuki Shigeyuki_3 Shigezane # 重 - Shigeharu Shigemochi_3 Shigemoto_4 Shigezane_2 # 滋 - Shigehira_3 Shigeie_2 Shigemochi_2 Shigemori_2 Shigetoki_2 Shigeyuki_2 # 繁 - Shigechika_3 Shigemitsu_3 Shigenari_2 Shigenori_3 Shigeyo # 茂 - ### SUE ### - Suefusa Suehira Suehiro Suehiro_2 Sueie Suekane Suekata Suekiyo Suekuni Suemichi Suemichi_2 Suemitsu Suemochi Suemori Suemune Suenaga Suenaka Suenao Suenari Suenobu Suenori Suenori_2 Suesada Suesada_2 Sueshige Suetaka Suetaka_2 Suetaka_3 SuetO_ SuetO__2 Suetoki Suetoshi Suetsuna Suetsune Sueyori Sueyoshi Sueyuki # 季 - Suemochi_2 Suetsugu Sueyuki_2 # 末 - ### SUKE ### - Sukechika_3 Sukefusa Sukehira Sukehiro Sukeie Sukeie_3 Sukekane Sukekata Sukekata_3 Sukekiyo_4 Sukekuni Sukemichi Sukemitsu Sukemochi_2 Sukemori Sukemoto_3 Sukemoto_4 Sukemune Sukemura Sukenaga Sukenaga_2 Sukenaka Sukenao Sukenari Sukenari_2 Sukenobu Sukenori Sukesada Sukesada_2 Sukeshige Sukesue Suketada Suketaka Suketoki Suketsugu_5 Suketsuna Suketsune Sukeyasu_4 Sukeyori Sukeyori_3 Sukeyoshi Sukeyoshi_2 Sukeyuki Sukeyuki_2 Sukezane # 資 - Sukechika Sukeie_2 Sukekiyo_2 Sukemitsu_2 Sukemochi Sukemoto Sukenaga_3 Sukenari_3 Sukenobu_3 Suketaka_3 Suketoki_2 Suketoshi Suketsugu Suketsuna_2 Suketsune_2 Sukeyasu Sukeyasu_2 Sukeyori_4 Sukeyoshi_4 Sukeyuki_4 # 祐 - Sukechika_2 Sukekane_2 Sukekuni_4 Sukemasa Sukemasa_4 Sukemichi_2 Sukenari_4 Sukenori_3 Sukesada_3 Suketada_3 Suketada_4 Suketaka_4 SuketO__2 Suketoki_4 Suketsugu_4 Suketsune_3 Sukeyo_2 # 輔 - Sukekata_2 Sukekuni_2 Sukemasa_3 Sukemoto_2 Suketsugu_2 Sukeyasu_3 Sukeyuki_3 # 相 - Sukeakira_2 Sukekiyo_3 Sukemune_2 Sukenobu_2 Suketada_5 Suketsune_4 Sukeyoshi_3 # 助 - Sukeakira Sukemasa_2 Suketada_2 Suketaka_2 SuketO_ Sukeyo # 亮 - Sukeakira_3 Sukekuni_3 Sukemasa_2 Suketada_2 Suketoki_3 Sukeyori_2 # 佐 - Sukehira_2 Sukemitsu_3 Sukenori_2 Suketsugu_3 # 扶 - ### SUMI ### - Suminori Sumitomo Sumiyuki # 純 - Sumiakira Sumikiyo # 澄 - ### TADA ### - Tada_akira Tada_akira_3 Tada_ari Tadachika Tadafumi Tadafusa Tadahira Tadahira_2 Tadahiro Tadahisa Tadaie Tadakane Tadakata Tadakata_2 Tadakimi Tadakiyo Tadakuni Tadamasa Tadamasa_2 Tadamasa_3 Tadamasa_4 Tadamichi Tadamine Tadamitsu Tadamochi Tadamori Tadamoto Tadamoto_2 Tadamoto_4 Tadamune Tadamune_2 Tadanao Tadanari Tadanari_2 Tadanobu Tadanobu_2 Tadanobu_4 Tadanori Tadanori_2 Tadanori_3 Tadanori_4 Tadanushi Tadasada Tadashige Tadasu Tadasu_2 Tadasue Tadasuke Tadasuke_2 Tadataka Tadataka_2 Tadataka_3 TadatO_ TadatO__2 Tadatoki_2 Tadatomo Tadatoshi Tadatsuna Tadatsune Tadatsune_2 Tadayasu Tadayori Tadayori_2 Tadayoshi Tadayoshi_2 Tadayoshi_3 Tadayoshi_4 Tadayuki Tadayuki_2 Tadazane # 忠 - Tada_akira_2 Tadafumi_2 Tadafusa_2 Tadanari_3 Tadanobu_3 Tadatoki # 尹 - Tadakuni_2 Tadamasa_5 # 正 - Tadamori_2 Tadanari_4 # 三 - Tadatoki_3 Tadatoshi_2 # 斉 - ### TAKA ### - Taka_akira Taka_akira_2 Takafuji Takafusa_2 Takahira_2 Takahisa_2 Takaie Takaie_2 Takakane_2 Takakaze Takaki Takakiyo_2 Takamasa_2 Takamasa_3 Takamatsu Takamitsu_2 Takamochi_2 Takamochi_3 Takamoto_2 Takamoto_3 Takamune_2 Takanaga_2 Takanari Takanari_2 Takanari_3 Takanori_2 Takanori_4 Takasada_2 Takashige Takasuke TakatO_ Takatoshi_2 Takatsugu Takatsuna_2 Takatsune_2 Takayori_2 Takayoshi_3 Takayuki_2 Takazane_2 # 高 - Taka_akira_3 Takachika Takafusa Takahira Takahisa Takahira_4 Takaie_3 Takakane Takakata Takakiyo Takakuni Takamasa Takamichi Takamitsu Takamochi Takamori Takamoto Takamune Takanaga Takanaka Takanao Takanobu Takanori Takasada Takashige_3 Takasue Takasuke_2 Takasuke_3 Takatada Takatoki Takatoshi Takatsuna Takatsune Takayasu_2 Takayori Takayoshi Takayoshi_2 Takayuki Takazane # 隆 - Takachika_2 Takahisa_2 Takakane_3 Takakiyo_3 Takakoto Takanobu_2 Takanori_3 Takasada_3 Takasue_2 TakatO__2 Takayasu Takayoshi_4 # 孝 - Takachika_3 Takakata_2 Takanao_2 # 挙 - Takahira_3 Takamitsu_3 Takatada_2 TakatO__3 # 尊 - ### TAKE ### - Takehira Takemasa Takemichi Takemoto Takemoto_2 Takemune Takenori Takesada Taketada Taketoki Taketsuna Taketsune Takeyori # 武 - ### TAME ### - Tameaki Tameakira Tameari Tamechika Tamefusa Tamehira Tamehira_2 Tamehiro Tameie Tamekata Tamekiyo Tamekuni Tamemasa Tamemasa_2 Tamemichi Tamemitsu Tamemitsu_2 Tamemori Tamemori_2 Tamemoto Tamemoto_2 Tamemune Tamenaga Tamenaga_2 Tamenaka Tamenao Tamenari Tamenari_2 Tamenobu Tamenobu_2 Tamenori Tamenori_2 Tamenori_3 Tamesada Tameshige Tamesuke Tamesuke_2 Tamesuke_3 Tamesuke_4 Tametada Tametada_2 Tametaka Tametaka_2 TametO_ TametO__2 Tametoki Tametomo Tametomo_2 Tametoshi Tametsugu Tametsuna Tametsune Tametsura Tameuji Tameyasu Tameyasu_2 Tameyori Tameyoshi Tameyoshi_2 Tameyuki Tamezane # 為 - ### TANE ### - Tanehira Tanekage Tanemasa Tanemichi Tanemitsu Tanemori Tanemoto Tanemune Tanenaga Tanenobu Tanesada Taneshige Tanesue Tanetaka Tanetaka_2 Tanetomo Taneyori Tanezumi # 胤 - Tanehide Tanemasu Tanenao Tanetsugu Taneyasu # 種 - ### TO ### - TO_akira TO_kane TO_kazu TO_masa TO_mitsu TO_moto TO_moto_2 TO_nari TO_nori TO_nori_2 TO_nori_3 TO_sada TO_shige TO_tada TO_tsune TO_yasu TO_yo TO_yoshi # 遠 - ### TOKI ### - Toki_ie Tokiakira Tokiakira_2 Tokichika Tokifumi Tokifusa Tokihide Tokihira Tokihira_2 Tokihiro Tokihiro_2 Tokikage Tokikane Tokikata Tokikata_2 Tokikazu Tokikiyo Tokikuni Tokimasa Tokimasa_2 Tokimichi Tokimitsu Tokimochi Tokimochi_2 Tokimoto Tokimoto_2 Tokimune Tokimune_2 Tokinaga Tokinaka Tokinari Tokinobu Tokinobu_2 Tokinori Tokisada Tokishige Tokisue Tokisuke Tokisuke_2 Tokitada Tokitaka Tokitoshi Tokitsugu Tokitsuna Tokitsune Tokiyasu Tokiyori Tokizane # 時 - Tokimasa_3 Tokitaka # 説 - Tokinaka_2 # 斉 - Tokinao # 晨 - ### TOMO ### - Tomofusa Tomohide Tomokage Tomokata Tomomasa Tomomasa_2 Tomomitsu Tomomune Tomonaga Tomonobu Tomonori_5 Tomoshige Tomosuke Tomosada Tomotada_2 Tomotaka Tomotoki_2 Tomotsuna Tomotsune Tomouji Tomoyoshi Tomoyuki Tomozane_3 # 朝 - Tomoakira_2 Tomoakira_3 Tomohisa Tomoie_2 Tomoie Tomomasa_3 Tomomichi Tomomitsu_2 Tomomori Tomomoto Tomomune_2 Tomonao Tomonobu_2 Tomonori Tomosuke_2 Tomotsuna_3 Tomoyasu Tomoyoshi_3 # 共 - Tomofusa_2 Tomohira_2 Tomohiro Tomokage_2 Tomokane Tomokuni Tomomoto_2 Tomonaka Tomonari Tomonori_3 Tomotsune_2 Tomozane_2 Tomozumi # 友 - Tomoakira Tomofusa_3 Tomokuni_2 Tomonori_2 Tomosada_2 Tomoshige_2 Tomotada Tomotsuna_2 Tomoyoshi_2 Tomozane # 知 - Tomochika Tomohira Tomonori_4 # 具 - ### TOSHI ### - Toshifumi Toshi_ie Toshiakira Toshichika Toshifusa Toshiharu Toshihide Toshihira Toshihiro Toshikage Toshikane Toshikata Toshikiyo Toshimasa_2 Toshimichi Toshimitsu Toshimori Toshimoto Toshimune Toshina Toshinaga Toshinaga_2 Toshinao Toshinari Toshinari_2 Toshinari_3 Toshinari_4 Toshinari_5 Toshinobu Toshinori Toshinori_2 Toshinori_3 Toshisada_4 Toshishige Toshisuke Toshisuke_3 Toshitada Toshitaka Toshitane ToshitO_ Toshitomo Toshitsuna Toshitsune Toshitsune_2 Toshiyasu Toshiyasu_2 Toshiyo Toshiyori Toshizane # 俊 - Toshimasa Toshimichi_2 Toshinao Toshisada_3 Toshisuke_2 Toshitada_2 Toshiyuki # 敏 - Toshiakira_2 Toshimitsu_2 Toshimoto_2 Toshinori_4 Toshisada ToshitO__2 Toshiyo_2 # 利 - ### TOYO ### - Toyokado Toyomochi Toyomune Toyonari Toyosuke Toyotane Toyotoshi Toyotsugu Toyoyoshi # 豊 - ### TSUGU ### - Tsugukage Tsugumune Tsugunari Tsugunobu Tsugutada # 継 - ### TSUNE ### - Tsuneakira Tsuneakira_2 Tsunechika_3 Tsunefusa Tsunehide Tsunehira Tsunehira_2 Tsunehira_3 Tsunehiro Tsuneie Tsunekane Tsunekata Tsunekiyo Tsunekuni Tsunekuni_2 Tsunemasa Tsunemasa_4 Tsunemichi Tsunemichi_2 Tsunemitsu Tsunemori Tsunemoto Tsunemoto_2 Tsunemune Tsunenaga Tsunenaka Tsunenaga_5 Tsunenao Tsunenari Tsunenari_2 Tsunenari_4 Tsunenobu Tsunenori Tsunesada Tsuneshige Tsunesue Tsunesuke Tsunesuke_3 Tsunetada Tsunetaka Tsunetaka_2 TsunetO_ TsunetO__2 Tsunetomo Tsunetomo_2 Tsunetoshi Tsunetoshi_2 Tsuneyasu Tsuneyo Tsuneyo_2 Tsuneyori Tsuneyoshi Tsuneyoshi_3 Tsuneyuki Tsunezane # 経 - Tsuneaki Tsuneakira_3 Tsunechika Tsunechika_2 Tsunefusa_2 Tsuneharu Tsunehide_2 Tsunehisa Tsuneie_2 Tsunekage Tsunekage_2 Tsunekane_2 Tsunekiyo_2 Tsunemasa_2 Tsunemasa_3 Tsunemasu Tsunemori_2 Tsunemune_2 Tsunenaga_2 Tsunenaga_3 Tsunenaka_3 Tsunenao_2 Tsunenari_3 Tsunenobu_2 Tsunenori_2 Tsunenori_5 Tsuneshige_2 Tsuneshige_3 Tsunetane TsunetO__3 TsunetO__4 Tsunetoki Tsunetomo_2 Tsunetomo_3 Tsunetsugu Tsunetsugu_2 Tsuneyasu_2 Tsuneyasu_3 Tsuneyoshi_2 Tsunezumi # 常 - Tsunehira_4 Tsunekage_3 Tsunemune_3 Tsunenaga_4 Tsunenori_3 Tsunenori_4 Tsunesada_2 Tsunesuke_2 # 恒 - ### UJI ### - Ujihira Ujihiro Ujikage Ujikatsu Ujikimi Ujimine Ujimune Ujinaga Ujinori Ujisuke Ujitaka Ujiyoshi # 氏 - ### YASU ### - Yasuakira_2 Yasufusa Yasuhira_2 Yasuhira_3 Yasuhiro_3 Yasuie_2 Yasukage Yasukata Yasumasa_2 Yasumitsu_2 Yasumori Yasumoto Yasunari_2 Yasunobu_2 Yasunori_2 Yasusue Yasusuke Yasusuke_3 Yasutada_2 Yasutaka_3 Yasutsuna Yasutsune_2 Yasu_uji Yasuyori Yasuyoshi Yasuzane # 保 - Yasuakira Yasuchika Yasuharu Yasuhira Yasuhira_5 Yasuie Yasukiyo Yasumasa Yasumichi Yasumitsu Yasumochi Yasumochi_2 Yasumoto_2 Yasunaga Yasunaga_2 Yasunaka Yasunari Yasunori Yasusada Yasushige Yasutada Yasutada_4 Yasutaka Yasutaka_2 Yasutsune Yasuyuki # 泰 - Yasuchika_2 Yasuhira_4 Yasuhiro_2 Yasuhito_3 Yasuie_4 Yasukuni Yasumoto_3 Yasumune Yasusada_2 Yasutada_3 YasutO_ Yasutsugu Yasutsuna_4 Yasutsune_3 Yasuyo # 安 - Yasuhide Yasuhiro Yasuie_3 Yasumune_2 Yasunaka_2 Yasunobu Yasunobu_3 Yasusuke_2 Yasutaka_4 Yasutoshi Yasutsuna_2 # 康 - Yasuchika_3 Yasutada_4 # 寧 - Yasuyori_2 # 慶 - ### YORI ### - Yori_ie Yoriaki Yoriakira Yorichika Yorifusa Yoriharu Yorihira Yorihira_2 Yorihiro Yorihiro_2 Yorikage Yorikane Yorikata Yorikaze Yorikiyo Yorikuni Yorimasa Yorimichi Yorimitsu Yorimochi Yorimori Yorimoto Yorimoto_2 Yorimune Yorinaga Yorinaka Yorinari Yorinari_2 Yorinobu Yorinobu_2 Yorinori Yorinori_2 Yorisada Yorisada_2 Yorisato Yorishige Yorisue Yorisuke Yorisuke_2 Yorisuke_3 Yoritada Yoritaka Yoritaka_2 Yoritane YoritO_ YoritO__2 Yoritoki Yoritoki_2 Yoritomo Yoritoshi Yoritoshi_2 Yoritsugu Yoritsugu_2 Yoritsugu_3 Yoritsuna Yoritsune Yoritsune_2 Yoritsura Yoriuji Yoriyoshi Yoriyuki Yorizane Yorizumi Yorizumi_2 # 頼 - ### YOSHI ### - Yoshi_ie Yoshiaki Yoshiakira Yoshichika Yoshichika_2 Yoshifusa Yoshiharu Yoshihide Yoshihira Yoshihiro Yoshihiro_2 Yoshihiro_5 Yoshihisa Yoshikado Yoshikage Yoshikage_2 Yoshikage_4 Yoshikane Yoshikata Yoshikata_2 Yoshikatsu Yoshikimi Yoshikiyo Yoshikuni Yoshimasa Yoshimasa_9 Yoshimichi Yoshimitsu Yoshimochi Yoshimori Yoshimoto Yoshimoto_2 Yoshimoto_3 Yoshimune Yoshimura Yoshinaga Yoshinaka Yoshinao Yoshinari Yoshinari_2 Yoshinobu Yoshinobu_2 Yoshinori Yoshisada Yoshisada_2 Yoshisada_4 Yoshishige Yoshisue Yoshisuke Yoshisuke_2 Yoshitada Yoshitaka Yoshitaka_2 Yoshitaka_3 Yoshitane YoshitO_ YoshitO__2 Yoshitoki Yoshitoki_2 Yoshitomo Yoshitoshi Yoshitsugu Yoshitsugu_2 Yoshitsuna Yoshitsune Yoshitsune_2 Yoshitsura Yoshiuji Yoshiyasu Yoshiyori_4 Yoshizane Yoshizumi Yoshizumi_2 # 義 - Yoshi_ie_2 Yoshiakira_2 Yoshichika_3 Yoshifumi Yoshifusa_2 Yoshiharu_2 Yoshihiro_3 Yoshihisa_2 Yoshikado_2 Yoshikane_2 Yoshikata_3 Yoshimasa_2 Yoshimasa_5 Yoshimichi_2 Yoshimichi_3 Yoshimochi_2 Yoshimochi_3 Yoshimoto_4 Yoshimoto_7 Yoshimune_2 Yoshinari_3 Yoshinobu_9 Yoshinori_2 Yoshisada_3 Yoshisue_2 Yoshisuke_3 Yoshitada_4 Yoshitada_6 Yoshitane_2 YoshitO__2 YoshitO__4 Yoshitsugu_3 Yoshitsuna_2 Yoshitsune_3 Yoshitsune_6 Yoshiyo Yoshiyori Yoshiyori_2 Yoshiyuki Yoshizane_2 # 良 - Yoshiakira_6 Yoshiari Yoshihiro_4 Yoshikane_3 Yoshikata_6 Yoshikazu Yoshimasa_8 Yoshimichi_4 Yoshimori_2 Yoshimoto_6 Yoshimoto_8 Yoshimune_3 Yoshinaga_2 Yoshinao_2 Yoshinari_4 Yoshinobu_3 Yoshinobu_4 Yoshishige_2 Yoshisue_3 Yoshitada_2 Yoshitaka_4 YoshitO__5 Yoshitoshi_2 Yoshitsune_4 Yoshiyasu_2 Yoshiyori_3 Yoshizane_3 # 能 - Yoshihisa_3 Yoshikata_4 Yoshimasa_4 Yoshimasa_7 Yoshimitsu_2 Yoshimochi_6 Yoshimori_3 Yoshinobu_7 Yoshinobu_8 Yoshiyuki_3 Yoshiyuki_4 # 淑 - Yoshimasa_9 Yoshimune_5 Yoshinori_4 Yoshisato Yoshitada_3 Yoshitomo_2 Yoshitsune_5 Yoshiyuki_2 # 善 - Yoshifusa_3 Yoshihira_2 Yoshimasa_3 Yoshimune_4 Yoshinari_5 Yoshinobu_5 Yoshitaka_5 # 吉 - Yoshiakira_3 Yoshimochi_4 Yoshimochi_5 Yoshinori_3 Yoshitada_5 # 令 - Yoshikage_3 Yoshimasa_6 Yoshikaze Yoshimitsu_3 YoshitO__3 # 好 - ### YUKI ### - Yuki_ie Yukiari Yukichika Yukifumi Yukifusa Yukihira Yukihiro Yukikage Yukikata Yukikiyo Yukikuni Yukimasa Yukimasa_2 Yukimasa_3 Yukimichi Yukimitsu Yukimori Yukimoto Yukimoto_2 Yukimoto_3 Yukimoto_4 Yukimune Yukimura Yukinaga Yukinaka Yukinao Yukinari Yukinari_3 Yukinobu Yukinobu_2 Yukinori Yukisada Yukisada_2 Yukishige Yukisuke Yukisuke_2 Yukitada Yukitaka Yukitaka_2 Yukitaka_3 YukitO_ YukitO__2 Yukitoki Yukitoshi Yukitsuna Yukitsune Yukitsune_2 Yukiyori Yukiyoshi Yukizane # 行 - Yukichika_2 Yukihiro_2 Yukimichi_2 Yukinaga_2 Yukinari_2 Yukiuji # 幸 - } - female_names = { - ### AKE ### - Akeko # 暁 - ### AKI ### - Akiko Akirakeiko # 明 - Akiko_2 # 昭 - Akiko_3 # 章 - Akiko_4 # 彰 - Akiko_5 # 詮 - Akiko_6 # 顕 - Akiko_7 # 秋 - Akiko_8 # 韶 - ### AMA ### - Amaneiko # 洽 - ### ARI ### - Ariko # 有 - Ariko_2 # 在 - ### ASA ### - Asako # 朝 - ### ATSU ### - Atsuko # 敦 - Atsuko_2 # 惇 - Atsuko_3 # 篤 - Atsuko_4 # 穆 - Atsuko_5 # 淳 - Atsuko_6 # 緝 - ### A ### - Awa_JP # 阿 - ### CHIKA ### - Chikako # 親 - Chikako_2 # 懐 - Chikako_3 # 周 - ### FUMI ### - Fumiko # 簡 - Fumiko_2 # 文 - ### FUSA ### - Fusako # 房 - Fusako_2 # 封 - ### HARU ### - Haruko # 春 - ### HIDE ### - Hideko # 秀 - ### HIRA - Hirako # 平 - ### HIRO ### - Hiroko # 寛 - Hiroko_2 # 煕 - Hiroko_3 # 弘 - Hiroko_4 # 衍 - Hiroko_5 # 広 - ### HISA ### - Hisako # 久 - ### IE ### - Ieko # 家 - ### ISA ### - Isako # 功 - ### KAGE ### - Kageko # 景 - Kageko_2 # 影 - ### KANE ### - Kaneko # 兼 - Kaneko_2 # 包 - ### KAO ### - Kaoruko # 馨 - Kaoruko_2 # 香 - ### KARA - Karako # 柄 - ### KATA - Kataiko # 賢 - Katako # 方 - Katako_2 # 姿 - ### KAZU ### - Kazuko # 数 - Kazuko_2 # 計 - Kazuko_3 # 佳 - Kazuko_4 # 和 - ### KIMI ### - Kimiko # 君 - Kimiko_2 # 公 - Kimiko_3 # 官 - ### KIYO ### - Kiyoko # 清 - Kiyoko_2 # 潔 - Kiyoko_3 # 妍 - Kiyoko_4 # 聖 - ### KORE - Koreko # 伊 - Koreko_2 # 惟 - Koreko_3 # 維 - ### KUSU ### - Kusuko # 薬 - ### MAMI ### - Mamiko # 覲 - ### MARI ### - Mariko # 鞠 - ### MARU ### - Maruko # 丸 - ### MASA ### - Masako # 正 - Masako_2 # 政 - Masako_3 # 雅 - Masako_4 # 昌 - Masako_5 # 理 - Masako_6 # 真 - Masako_7 # 当 - Masako_8 # 儇 - Masako_9 # 諟 - Masako_10 # 祇 - Masako_11 # 方 - Masako_12 # 匡 - ### MATA ### - Matako # 全 - Matako_2 # 又 - ### MICHI ### - Michiko # 通 - Michiko_2 # 道 - Michiko_3 # 倫 - ### MI ### - Mi_iko Miko # 御 - ### MITSU ### - Mitsuko # 光 - Mitsuko_2 # 美 - Mitsuko_3 # 満 - ### MORI ### - Moriko # 盛 - Moriko_2 # 守 - ### MORO ### - Moroko # 師 - Moroko_2 # 諸 - ### MOTO ### - Motoko # 元 - Motoko_2 # 基 - Motoko_3 # 原 - Motoko_4 # 幹 - ### MUNE ### - Muneko # 宗 - Muneko_2 # 統 - Muneko_3 # 育 - Muneko_4 # 領 - Muneko_5 # 致 - ### MUTSU ### - Mutsuko # 睦 - ### NAGA ### - Nagako # 長 - Nagako_2 # 良 - Nagako_3 # 脩 - Nagako_5 # 永 - ### NAGI ### - Nagiko # 諾 - ### NAKA ### - Nakako # 仲 - Nakako_2 # 班 - ### NAO ### - Naoko # 直 - ### NARI ### - Nariko # 成 - Nariko_2 # 業 - Nariko_3 # 斉 - Nariko_4 # 生 - Nariko_5 # 登 - Nariko_6 # 得 - Nariko_7 # 済 - ### NOBU ### - Nobuko # 信 - Nobuko_2 # 延 - Nobuko_3 # 順 - Nobuko_4 # 頌 - Nobuko_5 # 選 - Nobuko_6 # 悦 - Nobuko_7 # 恂 - Nobuko_8 # 述 - Nobuko_9 # 遵 - Nobuko_10 # 陳 - Nobuko_11 Nobukiko # 宣 - ### NORI ### - Noriko # 範 - Noriko_2 # 規 - Noriko_3 # 則 - Noriko_4 # 徳 - Noriko_5 # 教 - Noriko_6 # 式 - Noriko_7 # 憲 - Noriko_8 # 仁 - Noriko_9 # 度 - ### OKI ### - Okiko # 興 - Okiko_2 # 居 - ### SADA ### - Sadako # 貞 - Sadako_2 # 定 - Sadako_3 # 禎 - Sadako_4 # 完 - ### SANE ### - Saneko # 実 - Saneko_2 # 真 - ### SATO ### - Satoko # 恵 - Satoko_2 # 聡 - Satoko_3 # 識 - ### SAWA ### - Sawako # 沢 - ### SHIGE ### - Shigeko # 重 - Shigeko_2 # 繁 - Shigeko_3 # 茂 - Shigeko_4 # 滋 - Shigeko_5 # 苡 - ### SHIME ### - Shimeko # 呈 - ### SHIZU ### - Shizuko # 静 - ### SUE ### - Sueko # 季 - ### SUKE ### - Sukeko # 資 - Sukeko_2 # 祐 - Sukeko_3 # 亮 - Sukeko_4 # 輔 - Sukeko_5 # 相 - Sukeko_6 # 娍 - Sukeko_7 # 佐 - ### SUMI ### - Sumiko # 澄 - ### TADA ### - Tadako # 忠 - Tadako_2 # 尹 - Tadako_3 # 禔 - Tadako_4 # 均 - ### TAKA ### - Takako # 高 - Takako_2 # 隆 - Takako_3 # 尊 - Takako_4 # 恭 - Takako_5 # 貴 - Takako_6 # 荘 - Takako_7 # 厳 - Takako_8 # 孝 - Takako_9 # 敬 - ### TAKE ### - Takeko # 武 - Takeko_2 # 威 - Takeko_3 # 儼 - Takeko_4 # 孟 - ### TAMA ### - Tamako # 璋 - Tamako_2 # 列 - ### TAME ### - Tameko # 為 - ### TANE ### - Taneko # 胤 - Taneko_2 # 種 - Taneko_3 # 殖 - ### TO ### - TO_ko # 超 - TO_ko_2 # 遠 - ### TOKI ### - Tokiko # 時 - ### TOMO ### - Tomoko # 朝 - Tomoko_2 # 等 - Tomoko_3 # 知 - Tomoko_4 # 友 - Tomoko_5 # 類 - ### TOSHI ### - Toshiko # 俊 - Toshiko_2 # 叡 - Toshiko_3 # 敏 - ### TOYO ### - Toyoko # 豊 - ### TSUGU ### - Tsuguko # 承 - Tsuguko_2 # 継 - ### TSUNA ### - Tsunako # 綱子 - ### TSUNE ### - Tsuneko # 経 - Tsuneko_2 # 常 - Tsuneko_3 # 恒 - ### UJI ### - Ujiko # 氏 - ### YASU ### - Yasuko # 保 - Yasuko_2 # 泰 - Yasuko_3 # 康 - Yasuko_4 # 安 - Yasuko_5 # 休 - Yasuko_6 # 楽 - Yasuko_7 # 媞 - Yasuko_8 # 綏 - Yasuko_9 # 穏 - Yasuko_10 # 廉 - Yasuko_11 # 寧 - Yasuko_12 # 晏 - Yasuko_13 # 簾 - Yasuko_14 # 靖 - ### YO ### - Yoko_JP # 世 - ### YORI ### - Yoriko # 頼 - ### YOSHI ### - Yoshiko # 義 - Yoshiko_2 # 良 - Yoshiko_3 # 美 - Yoshiko_4 # 幸 - Yoshiko_5 # 佳 - Yoshiko_6 # 令 - Yoshiko_7 # 麗 - Yoshiko_8 # 好 - Yoshiko_9 # 芳 - Yoshiko_10 # 善 - Yoshiko_11 # 吉 - Yoshiko_12 # 淑 - Yoshiko_13 # 能 - Yoshiko_14 # 慶 - Yoshiko_15 # 姝 - Yoshiko_16 # 娟 - Yoshiko_17 # 徽 - Yoshiko_18 # 柔 - Yoshiko_19 # 宜 - Yoshiko_20 # 嬉 - Yoshiko_21 # 歓 - Yoshiko_22 # 怤 - Yoshiko_23 # 温 - Yoshiko_24 # 褒 - Yoshiko_25 # 忻 - Yoshiko_26 # 嫥 - Yoshiko_27 # 怡 - Yoshiko_28 # 栄 - Yoshiko_29 # 懿 - ### YUKI ### - Yukiko # 行 - } - - # Keep names changing - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} - -name_list_emishi = { - - house_based_map_names = yes - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - cadet_dynasty_names = { - "dynn_Agita" - "dynn_Fukae" - "dynn_Hei" - "dynn_Isawa" - "dynn_Iwagu" - "dynn_Kazuno" - "dynn_Kimikobe" - "dynn_Koreharu" - "dynn_Michishima" - "dynn_Momunofu" - "dynn_Nisana" - "dynn_Nisattai" - "dynn_Nitoroshi" - "dynn_Nushiro" - "dynn_Nutari" - "dynn_Oga" - "dynn_Okachi" - "dynn_Orashibetsu" - "dynn_Osatsu" - "dynn_Sarugaeshi" - "dynn_Shiwa" - "dynn_Tamatsukuri" - "dynn_Tamo" - "dynn_TO_da" - "dynn_TO_tsu_Isawa" - "dynn_Tokisara" - "dynn_Tokutan" - "dynn_Tsumo" - "dynn_Tsuwaribetu" - "dynn_Ukame" - "dynn_Urata" - "dynn_Usori" - "dynn_Waga" - } - - dynasty_names = { - "dynn_Agita" - "dynn_Fukae" - "dynn_Hei" - "dynn_Isawa" - "dynn_Iwagu" - "dynn_Kazuno" - "dynn_Kimikobe" - "dynn_Koreharu" - "dynn_Michishima" - "dynn_Momunofu" - "dynn_Nisana" - "dynn_Nisattai" - "dynn_Nitoroshi" - "dynn_Nushiro" - "dynn_Nutari" - "dynn_Oga" - "dynn_Okachi" - "dynn_Orashibetsu" - "dynn_Osatsu" - "dynn_Sarugaeshi" - "dynn_Shiwa" - "dynn_Tamatsukuri" - "dynn_Tamo" - "dynn_TO_da" - "dynn_TO_tsu_Isawa" - "dynn_Tokisara" - "dynn_Tokutan" - "dynn_Tsumo" - "dynn_Tsuwaribetu" - "dynn_Ukame" - "dynn_Urata" - "dynn_Usori" - "dynn_Waga" - } - - male_names = { - Afuribe - Ahaso Ahito Akeru Akeshi Aketo Anushiko Asamaro Atanamaro Atera Aterui # 阿 - Akio - Aohiru - Arashima - Ashiyamamori - Ayakasu - Azamaro - Azumahitomaro - Dokki - Ekimaro - Erayu - Etako - Idemaro - Ikako Ikokina Inarimushi Isashiko # 伊 - Ikashima - Ikusamaro - Kakenabe - Kamoi - Kanaori - Kanaya - Kanemaro - Katsumaro - Kearui - Kiumi - Ko_oi - Kogane - Kohitsuji - Komahiru - Kuhaji - Kunimasu - Maho Mamaro # 真 - Maiko - Mamu - Masu - More Moshi # 母 - Morokuri - Nagako - Nagiu - O_hafuribe O_kuni O_takamaru O_takemaru O_tate # 大 - Oga - Ohito_2 - Oihito - Okaho - Okuie - Onga - Otoshiro - Oyashibe - Ozukimaro - Rasabe - Sakamaru - Sakatamaro - Sanaguna Saniguna # 沙 - Satsuko - Shiina - Shiko_o - Shikona - Shimako - Shiraso - Shiriko_omaro - Sukunamaro - Tachi - Takaki_2 - Takamaru - Takemaro - Tamaki - Tatsumaro - Teshina - Tohashiko - Toshiko_3 - Tsuhoro Tsuruki # 都 - Ubasa Ukanu Ukuhau Unako Usomina # 宇 - Uhona - Yamahito - Yashiromaro Yasoshima Yatsurina # 八 - Yoshimaro - } - female_names = { - Akime - Aneme - Asame - Chiyome - Hirome - Iime - Ikeme - Imame - Iwame - Kasame - Kazume - Kiyome - Kunime - Kurome - Kushime - Makime - Masume - Matarime - Menoko - Michime - Michitarime - Momome - Morime - Morome - Mushime - Nagame - Nakame - Okame - Otome - Otomushime - Oyasu - Rume - Rushime - Sadame - Shimame - Shiome - Shirome - Sugame - Tadame - Takakaime Takame - Takarime - Tojime - Tokome - Torikaime Torime - Toyome - Tsugume - Ujime - Umakaime Umame - Ushikaime Ushime - Wakame - Watame - Yakame - Yasume - Yoneko - } - - # Keep names changing - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_khmer.txt b/common/culture/name_lists/00_khmer.txt deleted file mode 100644 index a351c125..00000000 --- a/common/culture/name_lists/00_khmer.txt +++ /dev/null @@ -1,69 +0,0 @@ -name_list_khmer = { - - dynasty_names = { - "dynn_Varman" - "dynn_Kaundinya" - "dynn_Mahidharapura" - "dynn_Lovek" - "dynn_Sivakaivalya" - "dynn_Kavindrapandita" - "dynn_Vyadhava" - "dynn_Bhimaraja" - "dynn_Bhavasura" - "dynn_Jalayita" - "dynn_Sapamasti" - "dynn_Bhamakangara" - "dynn_Shulaman" - "dynn_Dramuksava" - "dynn_Asantnadi" - "dynn_Amoghanirmata" - "dynn_Gayanam" - "dynn_Dyanam" - "dynn_Nirmatam" - "dynn_Ibisi" - "dynn_Mudgara" - "dynn_Pitamparna" - "dynn_Hastasarman" - "dynn_Sapnadi" - } - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_Varman" - "dynn_Kaundinya" - "dynn_Mahidharapura" - "dynn_Lovek" - "dynn_Sivakaivalya" - "dynn_Kavindrapandita" - "dynn_Vyadhava" - "dynn_Bhimaraja" - "dynn_Bhavasura" - "dynn_Jalayita" - "dynn_Sapamasti" - "dynn_Bhamakangara" - "dynn_Shulaman" - "dynn_Dramuksava" - "dynn_Asantnadi" - "dynn_Amoghanirmata" - "dynn_Gayanam" - "dynn_Dyanam" - "dynn_Nirmatam" - "dynn_Ibisi" - "dynn_Mudgara" - "dynn_Pitamparna" - "dynn_Hastasarman" - "dynn_Sapnadi" - } - - male_names = { - Kaundinya Jayavarman Srutavarman Sresthavarman Citrasena Mahendravarman Bhavavarman Paramesvara Jayavardhana Indravarman Yasovardhana Isanavarman Rajendravarman Jayaviravarman Nirvanapada Udayadityavarman Harsavarman Dharamindravarman Suryavarman Dharanindravarman Yasovarman Tribhuvanadityavarman Srindravarman Srindrajayavarman Jayavarmadiparamesvara - - Abhimanya Aksgupta Amarananta Anantyasiva Anasraya Ansadeva Aravindahrada Arimathana Astrasiva Asvadiva Atmasiva Balapandita Bhadrananda Bhadrasiva Bhagindra Bhaktivikhyata Bhaktivikrama Bhakumara Bhanudeva Bhaskarapala Bhasmasiva Bhavaditya Bhavakirti Bhavakumara Bhavanaditya Bhavaraksa Bhimapura Bhimaturya Bhupativarman Bhupendravarman Bhupendravira Bhuvanadhipativarman Bhuvanaditya Brahmasinha Brhaspati Cakripura Candraditya Candrakumara Candrapura Candrasena Candravira Dasagrama Devasena Dhananjaya Dhanyalaya Dharadevapura Dharadharavarman Dharanendravira Dharanindraditya Dharanindraparakrama Dharanindravallabha Dharapatindravarman Dharmacarya Dharmadeva Dharmadhipati Dharmapala Dharmapandita Dharmaraksa Dharmatma Dharmavardhana Dhiraja Dhiranandana Drdhabhaktisura Drdhabhaktivallabha Dvijendravallabha Dvijendravarman Gadakesa Ganadhiraja Gauripura Gunabhaktivira Gunadeva Gunapativarman Gunavijaya Gunavirasinha Gurudeva Hansa Haradharma Harighosa Haripala Harisarman Harivaha Harivala Harivarman Hiranya Hitagata Indrayuddha Isanagupta Isanasiva Isvarajna Isvarakumara Isvaranivasa Jataveda Jayapura Jayasangrama Jayasinhavarman Jayayudha Jayayudhavarman Jayedravira Jayendradhipativarman Jayendravallabha Jayendravarman Jayendravikhyata Jinendracarya Jinendrananda Jnanakumara Jyesthapura Kamadeva Kansaripura Kanthapasa Kavindrarimathana Kavisvaravarman Kirtidharma Kongavarman Krsnaguna Krtajnavallabha Krtajnavikhyata Krtajnavira Ksetrajna Ksitindravallabha Ksitindravarman Kularaksa Laksmindrarimathana Laksmindravarman Laksmipativarman Lingapura Mahanukrtavikhyata Mahendradhipativarman Mahendraparakrama Mahendrasinha Mahendravallabha Mahendravira Mahesvari Mahidhara Mahidharavarman Mahipatindravarman Mahipativarman Mitranandna Muktisiva Nagapala Naradhipativarman Narapatindravarman Narapativiravarman Narasinhagupta Narendradhipativarman Narendraditya Narendraparakrama Narendrarimathana Narendravallabha Narendravijaya Narendravira Narendravraman Narendrayuddha Nrpabhaktisura Nrpabhaktivallabha Nrpabhaktivikrama Nrpabhaktivira Nrpabhaktivirasinha Nrpabhaktiviravarman Nrpatindradhipativarman Nrpatindraditya Nrpatindrakumara Nrpatindrarimathana Nrpatindravardhana Nrpatindrayuddha Nrpavikhyata Nrpendraditya Nrpendraparakrama Nrpendrarimathana Nrpendravallabha Nrpendravarman Nrpendravijaya Nrpendravikhyata Nrpendravikrama Nrpendravira Padmanabhi Padmapura Panditacarya Panditankura Parakramasinha Parakramavira Parakramaviravarman Paramacarya Paramarthanandana Paramarthasiva Paramarthavairoca Paramesvaravallabha Pavitrakumara Pavitraruci Pitranandana Pitryajna Prabhasita Pradyumna Prajnakirti Prthivinarendra Prthivindravallabha Prthivindravijaya Punnagavarman Purasapala Purvadisa Rajadasa Rajakulamahamantri Rajapatindravarman Rajapativarman Rajaprabha Rajasinhavarman Rajavallabha Rajendradhipativarman Rajendraditya Rajendrarimathana Rajendrasinha Rajendravallabhavarman Rajendravira Rajendrayuddha Ramabhagavata Ramapala Ranabhaktivira Ranakesari Ranaparakrama Ranarajasinha Ranavikhyata Ranaviravarman Ratipura Ratnasinha Ratnatisaya Ripumathana Rsipratyaya Rucibhava Rudrasanti Sadasiva Saktisiva Samadeva Samaradhipativarman Samaradhivikrama Samarasinhavarman Samaravikrama Samaravira Samaraviravarman Samarendravarman Samarendravijaya Samarendravira Samarthaparakrama Samarthavikrama Sammadukumara Samudragupta Sangramadaruna Sankaragupta Sankaratma Sannidhana Santikirti Sarvagupta Sarvajna Sasinaya Satyadhipativarman Satyavarman Satyayuddha Satypala Siddhikirti Sikhavrahma Siladeva Sinhadeva Sinhavira Sinhaviravarman Sivacarya Sivadasa Sivadeva Sivagupta Sivalaksmi Sivaputra Sivaraksa Sivatman Sivavrahma Sivavrahmana Sivavyapi Somaditya Somakirti Somavajra Soryavarman Sresthapura Sribarddha Sridhara Srimanjaya Srindrakumara Srinekta Srinivasa Srirajaka Srutabhaktivikhyata Subhakirti Sucisat Sudeva Sukrtavardhana Suradhipativarman Suraparakrama Surendravarman Suryakumara Tapahsanti Tapomaya Tsvaravarman Uddhatakesari Uddhataparakama Uddhatasinha Uddhatavira Uddhataviraparakama Uddhatavirasinha Uddhataviravarman Unabhutasangrama Vagisvara Vagisvaradhipativarman Vajrapandita Vajravarman Varahasena Vastrapala Vasudeva Videsvara Vidyadharadeva Vidyakirti Vidyakumara Vidyamaya Vidyananta Vidyasiva Vijayaditya Vijayakesari Vijayavardhana Vijayendradhipativarman Vijayendravarman Vijayendravira Vikramaditya Vikramavallabha Vikramavarman Vikramavira Vikramayuddha Vinayakirti Virakumara Viransangrama Viraparakrama Viraparakramasinha Virasamartha Virasinhavarman Viravardhana Viravarman Viravijaya Viravikhyata Virayudhavarman Virendradhipativarman Virendraparakrama Virendrarimathana Virendrasinha Virendravarman Virendravijaya Virendravikhyata Virendravira Visesagupta Visnukirti Visnukumara Vrahaspati Vrahmaguna Vrahmakumara Vrahmanapas Vrahmanarasi Vrahmaputra Vrahmarasika Vrahmasiva Vratanjaya Vrhaspati Yajnadeva Yasodharavarman Yodhapati Yogisvaravarman - - # Brahmin names - Indrapandita Kanthapandita Kavindrapandita Kavisvarapandita Kirtipandita Kulapandita Krtindrapandita Ksitindrapandita Ganitendrapandita Gunapanditapandita Gaurisvarapandita Jayakirtipandita Jayendrapandita Tapasvindrapandita Tapasvisvarapandita Trailokyarapandita Divakarapandita Dharanindrapandita Dharmasenapatindrapandita Prthivindrapandita Bhupatindrapandita Bhupendrapandita Madhurendrapandita Madhurendrarajapandita Madhurendrasuripandita Mahidharapandita Mahidharendrapandita Mahendrapandita Yasodharapandita Yogindrapandita Yogisvara Yogisvaradeva Yogisvarapandita Rajendrapandita Laksmindrapandita Vagindrapandita Vagindrakavi Vagisvarapandita Vidyesvarapandita Sankarapandita Siddhesvarapandita Suryapandita Somesvarapandita Jayadisuri Dharanindrasuri Nisakarasuri Nisakarabhatta Srindrasekhara Bhupendrasuri Madhurendrasuri Madhurendrajapandita Vijayendrasuri Suryasuri Kesavabhatta Ramabhatta Divasakarabhatta Divakarabhatta Dvivedabhatta Suryabhatta Samabhatta Somesvarabhatta Kavindracarya Dhirendracarya Nandikacarya Paramasivacarya Mangalacarya Vajrendracarya Sikhantaracarya Hrdayacarya Acaryavyapi Isanavyapi Isvaravyapi Nityavyapi Devasarma Somasarman Indradatta Isanadatta Isvaradatta Krsnadatta Brahmadatta Vrahmanadatta Sucidatta Sinhadatta Haridatta Anantasvami Adityasvami Amaratakesvarasvami Kumarasvami Durgasvamin Devasvami Dhanasvami Dharasvami Rajyasthalasvami Sakrasvami Srisvami Upakalpa Kavindropakalpa Ksitindropakalpa Jayendropakalpa Dharanindropakalpa Narendropakalpa Nrpatindropakalpa Mahendropakalpa Rajasamkalpa Rajendropakalpa Rajopakalpa Laksmindropakalpa Isvaravindu Candravindu Jativindu Nagavindu Medhavindu Rudravindu Vidyavaravindu Vidyavindu Sankaravindhu Sikhavindu Sivavindu Sivavinduka Suksmavindu Isvarasanti Kumarasanti Pravarasanti Bhadrasanti Bhasanti Vinayasanti Sikhasanti Kumarasakti Brahmasakti Bhadrasakti Bhasakti Matisakti Vidyasakti Vindusakti Sivasakti Kulabhakti Rudrabhakti Sankarabhakti Isanamurti Gangadhara Caitanyasiva Jivasoma Namassivaya Paramasiva Bhasmesa Bhisanavasa Bhutapati Manassiva Mahesvara Vaktrasiva Varmasiva Vamasiva Vindudeva Vidyesavid Vidyesadhimanta Sikhasiva Sivakaivalya Sivadhama Sivapada Sankarakirti Somapala Somabhava Somasiva Subhadrapandita Murdhasivapandita Hiranyadama Hiranyaruci Hrdayasiva Govinda Janardana Trivikrama Narayana Praduymna Naravira Baladeva Madhava Yajnavaraha Ramadeva Valadeva Visvarupa Visnudeva Visnupada Visnuvala Laksmindra Vaisnava Sankarsana Harigana Hrsikesa Jayamahapradhana Krsnahara Vikramarudra Visnusoma Sivacyuta Kumaravandha Kumaravisesa Prabhakara Bhanuvara Candragana Amarabhava Amarendra Tribhuvanavrahmendra Padmavairocana Sarvajnamuni Sumedha Akasalinga Aryamaitri Kavindrapada Kavindravijaya Kavindralaya Kirtivara Gunaratnasindhu Gunadhyaksa Candrasila Janghala Jayamangalartha Jnanapriya Tejorasi Tribhuvanavajra Dharmasuddha Dharmavasa Dhulivarsa Prathivinarendra Purvasramadhipati Bhupatindravallabha Yasodharabrahmana Ratnabhanu Rajasiddhaya Rajanivasa Ramadhamma Vajradharma Vidyapuspa Vidyavinaya Vidyavisesa Visesagana Vidyahipa Vidyavasa Vidyaspada Vrahmanapala Silabhadra Srindramaulideva Siddharsi - } - - female_names = { - Bhadra Bhadrani Bhagavati Bhatari Bhavani Bhimalaya Candra Devaki Devalaksmi Dharaindrarajalaksmi Dharma Indralaksmi Indrani Jahnavi Janapada Jayamahesvari Jayendradevi Karpura Kirtilaksmi Konti Kunti Laksmindradevi Madyadesa Mahendralaksmi Mahendrani Mahipatindralaksmi Maliniratnalaksmi Mallika Mani Mera Narendra Padma Pavitra Pinsvangramavati Prabhavati Prthivindralaksmi Rajaguha Rajendralaksmi Rudrani Santilaksmi Sarasvati Sat Satyavati Savitri Sivalaksmi Sobhajaya Sriprabha Sriteja Sthiralaksmi Surendralaksmi Tilaka Uma Vagisvari Vasanta Vasumati Vedavati - } -} diff --git a/common/culture/name_lists/00_korean.txt b/common/culture/name_lists/00_korean.txt deleted file mode 100644 index 3e828ebe..00000000 --- a/common/culture/name_lists/00_korean.txt +++ /dev/null @@ -1,196 +0,0 @@ -name_list_korean = { - - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - dynasty_names = { - "dynn_An_694A" - "dynn_Baek_767D" - "dynn_Bak_6734" - "dynn_Chae_8521" - "dynn_Cheok_62D3" - "dynn_Choe_5D14" - "dynn_Gang_59DC" - "dynn_Gang_5EB7" - "dynn_Gim_91D1" - "dynn_Go_53E4" - "dynn_Go_9AD8" - "dynn_Gyeong_6176" - "dynn_Han_97D3_KO" - "dynn_Heo_8F09" - "dynn_Hong_6D2A" - "dynn_Hwangbo" - "dynn_I_5DF2" - "dynn_I_674E" - "dynn_Im_4EFB" - "dynn_Jeong_912D" - "dynn_Jo_8D99" - "dynn_Min_9594" - "dynn_Mun_6587" - "dynn_Mun_9580" - "dynn_Myeong_660E" - "dynn_Pyeong_5E73" - "dynn_Seok_C11D" - "dynn_Song_5B8B_KO" - "dynn_Wang_738B_KO" - "dynn_Yeon_6DF5" - "dynn_Yun_5C39" - } - - cadet_dynasty_names = { - "dynn_An_694A" - "dynn_Baek_767D" - "dynn_Bak_6734" - "dynn_Chae_8521" - "dynn_Cheok_62D3" - "dynn_Choe_5D14" - "dynn_Gang_59DC" - "dynn_Gang_5EB7" - "dynn_Gim_91D1" - "dynn_Go_53E4" - "dynn_Go_9AD8" - "dynn_Gyeong_6176" - "dynn_Han_97D3_KO" - "dynn_Heo_8F09" - "dynn_Hong_6D2A" - "dynn_Hwangbo" - "dynn_I_5DF2" - "dynn_I_674E" - "dynn_Im_4EFB" - "dynn_Jeong_912D" - "dynn_Jo_8D99" - "dynn_Min_9594" - "dynn_Mun_6587" - "dynn_Mun_9580" - "dynn_Myeong_660E" - "dynn_Pyeong_5E73" - "dynn_Seok_C11D" - "dynn_Song_5B8B_KO" - "dynn_Wang_738B_KO" - "dynn_Yeon_6DF5" - "dynn_Yun_5C39" - } - - male_names = { - # Bo - 보 - Bo_dang Bo_go Bo_jeon - # Cheon - 천 - Cheon_sang Cheon_won - # Chung - 충 - Chung_gong Chung_gyeong Chung_heon Chung_hyeon Chung_ji Chung_min Chung_seung Chung_su Chung_sun - # Don - 돈 - Don_jung Don_si Don_sin Don_ui - # Dong - 동 - Dong_jeong Dong_ryun - # Eon - 언 - Eon_i Eon_min Eon_seung Eon_sik Eon_sun Eon_ui Eon_wi Eun_yeol - # Eung - 응 - Eung_cheong Eung_chu Eung_gu Eung_si Eung_ui - # Gong - 공 - Gong_gyu Gong_in Gong_ui Gong_won Gong_yu - # Gwang - 광 - Gwang_chan Gwang_hui Gwang_hwa Gwang_jeong Gwang_jin Gwang_jong Gwang_won Gwang_yun - # Gyeong - 경 - Gyeong_ae Gyeong_deok Gyeong_eung Gyeong_hwi Gyeong_jik Gyeong_jong Gyeong_ju Gyeong_mok Gyeong_mun Gyeong_myeong Gyeong_su Gyeong_suk Gyeong_sun Gyeong_yeong - # Heon - 헌 - Heon_an Heon_chang Heon_deok Heon_gang Heon_jeong Heon_jong Heon_suk - # Hyeon - 현 - Hyeon_bang Hyeon_jong Hyeon_seok - # In - 인 - In_8AF2 In_cheom In_gyeom In_gyeong In_gyu In_jong In_mun In_pyeong In_ro In_su In_tae In_wi In_yun - # Ja - 자 - Ja_bi Ja_chung Ja_deok Ja_go Ja_gyeom Ja_gyeon Ja_ham Ja_hyeon Ja_hyo Ja_in Ja_ji Ja_jo Ja_rim Ja_ryang Ja_rye Ja_sa Ja_sang Ja_su Ja_ui Ja_won Ja_yang Ja_yeon - # Jeong - 정 - Jeong_bo Jeong_gan Jeong_gong Jeong_gyo Jeong_hyeon Jeong_ik Jeong_jong Jeong_jun Jeong_myeong Jeong_yeo - # Ji - 지 - Ji_bo Ji_eon Ji_gwang Ji_hwa Ji_hyo Ji_jeong Ji_ma Ji_mi Ji_nam Ji_so Ji_sun Ji_un Ji_won Ji_yeong Ji_yu Ji_yun - # Jip - 집 - Jip_hyeong - # Jo - 조 - Jo_bun Jo_chung Jo_gi Jo_myeong Jo_yeong - # Jong - 종 - Jong_ak Jong_beon Jong_gang Jong_gi Jong_ham Jong_hoe Jong_jae Jong_won Jong_yang - # Ju - 주 - Ju_haeng Ju_mul Ju_won - # Mok - 목 - Mok_jong - # Mun - 문 - Mun_do Mun_hye Mun_jong Mun_jun Mun_mok Mun_mu Mun_seon Mun_seong Mun_ui Mun_wang Mun_yu - # Myeong - 명 - Myeong_660E Myeong_chung Myeong_gil Myeong_jong Myeong_sin - # Pyeong - 평 - Pyeong_5E73 Pyeong_dal - # Sa - 사 - Sa_7D72 Sa_in Sa_je Sa_mun Sa_so Sa_suk Sa_wi Sa_yun - # Seon - 선 - Seon_deok Seon_gwang Seon_jong Seon_ju - # Seong - 성 - Seong_bang Seong_dae Seong_deok Seong_gan Seong_hae Seong_jin Seong_jong Seong_u - # Sin - 신 - Sin_7533 Sin_deok Sin_gwang Seon_ji Sin_jong Sin_mu Sin_mun Sin_yeong Sin_yun - # Sun - 순 - Sun_deok Sun_jong Sun_pil Sun_san - # Ui - 의 - Ui_bang Ui_bu Ui_gwan Ui_hyeok Ui_ja Ui_jang Ui_jeong Ui_jo Ui_jong Ui_jun Ui_min Ui_mun Ui_won Ui_yeong - # Wi - 위 - Wi_eung Wi_gong Wi_mun - # Won - 원 - Won_deok Won_gi Won_gwang Won_gyeong Won_hu Won_hwang Won_hye Won_jeong Won_jil Won_jun Won_jung Won_mok Won_pyeong Won_seong Won_suk Won_ui Won_yu - # Yeon - 演 (연) - Yeon_6F14 Yeon_chang Yeon_deok Yeon_hwa Yeon_jin Yeon_jeong Yeon_jun Yeon_rim - # Yeong - 영 - Yeong_82F1 Yeong_chang Yeong_gil Yeong_gyeon Yeong_gwang Yeong_gyu Yeong_gwan Yeong_hwan Yeong_jae Yeong_jin Yeong_in Yeong_nang - # Yu - 유 - Yu_cheong Yu_chung Yu_gil Yu_gyeong Yu_in Yu_jeong Yu_jik Yu_on Yu_pil Yu_ri Yu_rye Yu_seon Yu_ui Yu_wi Yu_yang - } - - female_names = { - # A - 아 - A_ji A_yeong - # Al - 알 - Al_yeong - # Bo - 보 - Bo_hui - # Bok - 복 - Bok_chang - # Byeok - 벽 - Byeok_hwa - # Deok - 덕 - Deok_gyo Deok_man - # Gwi - 귀 - Gwi_gang - # Gyeong - 경 - Gyeong_ae - # Hwon - 훤 - Hwon_yeong - # Jeong - 정 - Jeong_ran - # Ji - 지 - Ji_eun Ji_so Ji_ui - # Jun - 준 - Jun_jeong - # Man - 만 - - # Mun - 문 - Mun_hui - # Nam - 남 - - # Sa - 사 - - # Seon - 선 - Seon_gang - # Seung - 승 - Seung_gyeong Seung_man - # Yu - 유 - Yu_hwa - } - - # Keep names changing - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_malay.txt b/common/culture/name_lists/00_malay.txt deleted file mode 100644 index 5caef4f3..00000000 --- a/common/culture/name_lists/00_malay.txt +++ /dev/null @@ -1,419 +0,0 @@ -name_list_malay = { - - #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - cadet_dynasty_names = { - dynn_Mauli - dynn_Shailendra - dynn_Sanjaya - dynn_Ishana - dynn_Warmadewa - dynn_Rajasa - dynn_Bendahara - } - - dynasty_names = { - dynn_Mauli - dynn_Shailendra - dynn_Sanjaya - dynn_Ishana - dynn_Warmadewa - dynn_Rajasa - dynn_Bendahara - } - - male_names = { - Cahaya Putera Wira Bongsu Demang Embun Hijau Itam Jati Mahathir Mahadzir Megat Murni Pendekar Perak - Pura Putih Ramlan Rentap Sulung Suria Suriana Tombiruo Tuah Adi Aditya Agung Agus Bagus Bima Buana - Budi Darma Dian Dwi Eka Guntur Harta Krisna Mega Purnama Putra Ratna Susila Tirta Tri Wahyu Yuda - Adiputra Adit Aditya Andika Angkasa Anindita Anindya Anugrah Asa Asmara Atma Awan Bayu Budiman - Candra Catur Cipta Damar Darmawan Dhana Dharmawangsa Gunawan Heri Kemas Kurnia Mahardika Merdeka - Meuligoe Meurah Nirwan Nugraha Panca Panji Prawira Ratnacandra Sapta Saputra Sudirman Sumitra - Suryawan Tjandra Wijaya Wirawan Wiryadi - Sri_Jayanasa Sri_Indravarman Rudravarman Dharmasetu Dharanindra Samaragrawira Samaratungga - Balaputra Cudamani Mara Sangrama Deva - Samara Tribhuwana Akarendra Adwaya Anangga - Bijayendra Vikramavira Ranavikrama - Udayaditya Sumatrabhumi Maravijayottungavarman - #Javanese chars - Kesari Ugrasena Tabanendra Indrajayasingha Janasadhu Marakata_Pangkaja Walaprabhu Suradhipa - Ragajaya Jayapangus Pancapana Panaraban Manara Garung Gula Saladu Lokapala Dewendra Jbang Balitung Mpu_Daksa - Samarawijaya Mapanji Garasakan Samarotsaha Jebang Wawa Tulodong Mpu_Sindok Makutawangsa Bameswara - Jayabhaya Sarweswara Aryeswara Tagwas Wulung_Gadung Brajawisesa Dewa_Sanghyang Sanghyang_Ageung - Sanghyang Jayabhupati Darmaraja Langlangbhumi Darmanagara Wirayuda Jayagiri Darmakusuma Darmasiksa - Purana Ragasuci Tariwulan Welengsa Linggabhumi Harimurtii Darmastyadewa Arya_Tunggalningrat - Tamperan Manarah Banga Hulukujang Gilingwesi Darmeswara Wuwus Darmaraksu Dewageng Kamuning_Gading - Kamuning Gading Atmayadarma_Hariwangsa Atmayadarma Hariwangsa Limbur_Kancana Kancana Mundig_Ganawirya Ganawirya - } - female_names = { - Cahaya Intan Kasih Mawar Melati Puteri Siti Sitti Wangi Wati Bunga Embun Hijau Juwita Mahsuri Melur - Murni Mutiara Pura Puspawati Putih Rahayu Raya Rentap Sayang Suminundu Suria Suriana Suryani Teratai - Tombiruo Batari Bulan Cinta Citra Dewi Dian Dwi Eka Indah Kusuma Lestari Mega Nirmala Purnama Putri - Ratna Ratu Sari Sri Tirta Tri Vina Anggrek Anggun Anindita Anindya Asa Asmara Atma Awan Candra Catur - Cipta Damar Dara Darmawati Delima Dhana Eti Falya Hartini Indri Kemala Kurnia Laksmi Mahardika Masayu - Megawati Merdeka Meuligoe Meurah Nanik Ndari Nilawati Panca Permata Pratiwi Ratnacandra Rindu Sapta - Sriwati Sumiati Sumitra Suryawati Susilawati Sustri Suwati Tjandra Utami Wijaya Winda Yanti - Dewi_Tara Dara_Jingga Dara_Petak Nila_Panjadi - #Javanese chars - Mahadewi Mahendradatta Ajnadewi Batari_Mandul Laksmidhara Arjayadengjayaketana - Sanggramawijaya Tunggadewi Dewi_Sara Jaya_Amijaya Dewi_Pramesti Dewi_Pramuni Dewi_Sasanti - Layang Parameswari Dharmaprasadottungadewi Dewi_Puspawati Saunggalah Darmageng - Suprabha Wisuddha Jayadrata Yuddhanagara Linggasakti Purnawijaya Janawati Samatha Dewi_Somya - Somya Ajnadewi Sara Amijaya Pramesti Pramuni Sasanti - - } -} - -name_list_senoi = { - - #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - cadet_dynasty_names = { - "dynn_Semai" - "dynn_Chewong" - "dynn_Temiar" - "dynn_Ple" - "dynn_Jah_Hut" - "dynn_Semaq_Beri" - "dynn_Semelai" - "dynn_Temoq" - "dynn_Mah_Meri" - } - - dynasty_names = { - "dynn_Semai" - "dynn_Chewong" - "dynn_Temiar" - "dynn_Ple" - "dynn_Jah_Hut" - "dynn_Semaq_Beri" - "dynn_Semelai" - "dynn_Temoq" - "dynn_Mah_Meri" - } - - male_names = { - Atok_Balu Chekedoi Rintang Bei_Luus Berchanggi_Besi Camut Cawog Cencog Chekedoi Churog Curas Grcang Hang_Tuah Jelondong Jeludang Jerangong Kalib Kang Kemaleg Klip Lang Lud Luhj Ly Mamak Mara_Semae Mat Meneh Minoor Mrlooh Nenek_Kerbau Ngah Ngah_Hari Nyenang_Raq Pagar Pegpeg Penjel Pl_iiimnh Planken Puntum Rintang Risan Rmpent Ruwek Samad Segandi Serani Seri_Alam Tangge Tenggang Tkooy - } - female_names = { - Andak_Jameah Busuw_Dmeet_Long Cacat Han_Luj Inak Judah Ken_Pri Kning_Ledn Manoij Merja Simin Taman Tatau Tawal Uni Wa_Rhii Yam - } -} - - -name_list_cham = { - #Cadet Names - #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - #Cham Pattern: Barony + Dynasty Name - cadet_dynasty_names = { - dynn_Bhrgu - dynn_Vicitrasagara - dynn_Uroja - dynn_Pralayeshvara - dynn_Krung - dynn_Ktul - dynn_Chru - dynn_Varman - dynn_Harivarman - dynn_Nagavamsi - dynn_Dua - dynn_Cau - dynn_Narikelavamsa - dynn_Kramukavamsa - dynn_Isanabhada - dynn_Vikranta - dynn_Panduranga - dynn_Vrsu - } - - dynasty_names = { - dynn_Bhrgu - dynn_Vicitrasagara - dynn_Uroja - dynn_Pralayeshvara - dynn_Krung - dynn_Ktul - dynn_Chru - dynn_Varman - dynn_Harivarman - dynn_Nagavamsi - dynn_Dua - dynn_Cau - dynn_Narikelavamsa - dynn_Kramukavamsa - dynn_Isanabhada - dynn_Vikranta - dynn_Panduranga - dynn_Vrsu - } - - male_names = { - Angsaraja Bhadresvaravarman Bhumisvara Binasuor Cei_Bunga Devatamurti Devavarman Dobatasuar Ehklang - Ganuhpatih Gramasvamin Harideva Harijit Harijitatmaja Harivarmadeva Harivarman Hrivarmadeva - Indravarman Isvaramurti Jatamah Kabih Kabrah Kandarpadharmavarman Karutdrak Kasit Ke_Tong Klan_Thu - Klaong_Mah_Nai Ko_Cheng Krei_Brei Kunarai La_Khai Ladhuanpuguh Laksmindra Madhavamurti Maha_Sajan - Maha_Sarak Maha_Sawa Maha_Saya Maha_Vijaya Mahasenapati Manorathavarman Naravahanavarman Nraup - Pang Paramabhodhisatva Paramesvaravarman Parican Patarsuar Phaok_The Prabhasadharma Prakasadharma - Prithindravarman Putik Ratnabhumivijaya Rattiraydaputao Rudravarman Saktiraydapatih Saktivarman - Sambhuvarman Samsaramurti Saot Satyavarman Simhavarmadeva Simhavarman Sivanandana Sulika Sundaradeva - Suryajaya Suryavarmadeva Suryavarman Thang Thuntiraidaputih Tisundimahrai Tisuntiraidapuran - Tisuntiraydapaghoh Uwaluah Vak Vidyanandana Vidyanandana Vikrantavarman Virabhadra - Vishnumurti Vyu Yang_Pu_Ku - } - female_names = { - Bhagyavati Bhaskaradevi Gaurendraksmi Haradevi Isanavarman Jinnyan Kulaprabhavati Mahadevi - Paramaratnastri Paramesvari Rajakula Raya Sudaksina Sumitra Surendradevi Suryadevi - Suryalaksmi Tapasi Tribhuvanadevi - } -} - -name_list_dayak = { - - cadet_dynasty_names = { - dynn_Kinabatangan dynn_Bakula dynn_Melawiyah dynn_Kayanyah dynn_Bolei - dynn_Kubahau dynn_Akayan dynn_Kaduyah dynn_Sarawak dynn_Ibanulu dynn_Rajangyah dynn_Kapuadyah dynn_Bandar dynn_Maanyan dynn_Selatalun - dynn_Seruyanyah - } - - dynasty_names = { - dynn_Kinabatangan dynn_Bakula dynn_Melawiyah dynn_Kayanyah dynn_Bolei - dynn_Kubahau dynn_Akayan dynn_Kaduyah dynn_Sarawak dynn_Ibanulu dynn_Rajangyah dynn_Kapuadyah dynn_Bandar dynn_Maanyan dynn_Selatalun - dynn_Seruyanyah - } - - male_names = { - Adin Ading Agun Alan Along Amar Ansor - Babat Bangkong Bantan Bauk Biat - Chelum - Demang - Entirong - Garing Giligar - Ikok - Jaya Jimbau Jukat - Kamba Kubu - Lansa Limai Lugo Lusing - Majau Majin Mangum Mawang Melaka Merum - Ngeging Nisi Nyala Nyang Nyat Nyaui Nyoh - Pioh - Saban Sanggau Sating Semada Sikau Sinau - Tabo - Ubong Ukit Una - - #Based on Kutai rulers names - Aswa - Cendera - Gadingga Gajayana - Indra Indradewa - Lanka Lankadewa - Marawi Marawijaya Mayang Mula Mulawarni Mulia - Nala Naladewa - Perana Prabu Prabu_Mula - Singa - Tungga Tungganaga - Wijaya Wirama Wirgala - - #Based on Sulawesi characters - Anakaji Dendeangi Guru Lakilaponto Lattu Ririsao Roro Manjawari Nungkulangi Sangaji - Sattumpugi Sawerigading Simpurusia Tampabalasu Tanrabalasu Toramalang Wonua - #Based kings of Suwawa/Gorontalo (1350-1800) - Aibugia Aidugia Biini Bobigi Bomboluawo Bouwa Bumbulo Buruali Dagutanga Dulandimo Dulanoali - Gintaelangi Gulanguma Gulimbala Ige Luadu Maindoa Moluadu Mooduto Mooludao Ohito - Pongoliu Pulubulawan Pulumoduyo Purubulawan Tilagunde Tilombe Walango - } - - female_names = { - Anjing Arai - Belulo Bojik Bungio Buron - Chandut Chondut Changkir - Dawe Demi Dambok - Embeng Ensima - Gayar Gadu Godu - Igong Indun - Jelium Jelo Jumau - Kipun Kroi - Langi Lingo Limou Lindan Lindon Luli - Madu Mayeng Men Menun - Nelidai Nonti - Punai Punoi - Rame Rimbor Riman Rukat - Salin Sipu Sinoh Sube Sumbok Sulah - Tipong - Ulum Ungang Unsai - - #Based on Sulawesi characters - Wekoila Tenrirawe Wetendriaben We_Cudai Indaulu Tina_Sio - } -} - -name_list_tagalog = { - - cadet_dynasty_names = { - dynn_Pilapil dynn_Tundok dynn_Mait dynn_Baltog - } - - dynasty_names = { - dynn_Pilapil dynn_Tundok dynn_Mait dynn_Baltog - } - - male_names = { - Abucay Alab Apolaki Araw - Babui Bacal Balingit Banaag Banog Bantuan Bantugan Batongbakal Bayani Biag Bishruta Bituin Bituon - Bondoc Buhag Bunao Buwan Calao Calapati Chulan Daan Dakila Dalisay Dambana Damo Dapo Dimayuga - Gambang Ganashakti Gat Gubaton Habagat Halili Himig Hiraya Ilog Inag Jayadewa - Kalangitan Kalaw Kanda Kapulong Kidlat Kiling Lakan Lawin Lontok - Magbanua Maglente Makatunaw Makisig Malacas Maliuag Manalastas Mandigma Manug Maya Mutya - Namwaran Olan Panganiban Pira Pitongatan Puno Puti - Salalila Seri Shaja Tahimik Tala Tanashiri Tanglao - } - - female_names = { - Amihan Amohan Angkatan Bait Binuangan Binuyac Bukah Buwan Caliao Canipila Capala - Dalisay Dayang Diwata Doyong Duhali Gumamela Guna Hanan Hiraya Hiyas Ilogin - Kalangitan Labao Lahat Ligaya Ligot Liwayway Lualhati Luwalhati - Macaslin Mahal Mahalen Maligaya Malyag Manalo Manansam Manimbang Maquinso Marayag Marikit Mati - Mayari Mayumi Mutya Pagylagan Paihto Pangilagan Panguilinan Panginoan Paraluman Punay Puri Puti - Salamat Sasaban Sinag Solitan Suayan Tala Tanan Tanashiri Tibai Tibay Timbang Toling - } -} - -name_list_bisayan = { - - cadet_dynasty_names = { - dynn_Kalanay dynn_Lagben dynn_Tulopulo - dynn_Salotulo dynn_Mamayla dynn_Dapita - dynn_Leyte dynn_Ibabao dynn_Maranao - dynn_Kutanao dynn_Samboang dynn_Sanmalan - dynn_Katutua dynn_Lupasu dynn_Makki - dynn_Bantuan dynn_Kalag dynn_Davohoho - dynn_Malita dynn_Madyaas - } - - dynasty_names = { - dynn_Kalanay dynn_Lagben dynn_Tulopulo - dynn_Salotulo dynn_Mamayla dynn_Dapita - dynn_Leyte dynn_Ibabao dynn_Maranao - dynn_Kutanao dynn_Samboang dynn_Sanmalan - dynn_Katutua dynn_Lupasu dynn_Makki - dynn_Bantuan dynn_Kalag dynn_Davohoho - dynn_Malita dynn_Madyaas - } - - male_names = { - Bangkaya Bantug Bato Batumay Binidayan Botod Bualan Bubong Buisan - Cabon Catipan Catunao Dagang Dailisan Dani Dayao Dimasangkay Dolangan - Galawan Gamhanan Hari Horohan Humabon Huna Kaalam Kabungsuan Kalawi Kanor Katchil Kusgano - Lapu Lapulapu Lilo Linampas Lubay Lumasa Lunti Luntian - Madalum Maguing Makaalang Makan Malalis Malambing Malungun Mangal Mangubat - Maquio Marantao Marawi Matampay Matikas - Padas Padohinog Pagbuaya Paiburong Parang Pitakes Po Pualas Pula Puti Ragayan - Salikula Siagu Sigala Sikatuna Silongan Sipad Sumakwel - Talagian Taluan Timbab Tugaya Tupas Uto Wato - } - - female_names = { - Adhika Angintabo Bulak Bulakna Dayaw Daylinda Gihay Gugma Gumamela - Hara Himaya Humamay Huna Imbog Inaguinid Inday Lalahon Laya Liloana - Maaya Maayo Mahinhin Malambing Mampey Maroan Matahom Matahum - Pula Putri Sula Toyaga Tunina Una - } -} - -name_list_iloko = { - - cadet_dynasty_names = { - dynn_Batan dynn_Ifugao dynn_Tagay dynn_Tagalao - dynn_Haringasin - } - - dynasty_names = { - dynn_Batan dynn_Ifugao dynn_Tagay dynn_Tagalao - dynn_Haringasin - } - - male_names = { #mostly based on current traditional surnames - Abaya Agani Agatep Agbayani Agbulos Agbunag Aglipay Agpangan Agpaoa Agsalud Agtarap Ayo - Bagaoisan Bakiran Baruga Bukaneg Bulusan Dancel Dukusin Gaffud Gakutan Isem Kaday Lipay - Madamba Madarang Malong Mamaklay Nasudi Pagaduan Sudi Taer Takder Takderan Taraki - } - - female_names = { - Biag Bulalayaw Darisay Diaya Isem Kaasi Liway Liwliwa Puti Putri Sagaysay Saniata Talna Ulep - } -} - -name_list_amis = { - - cadet_dynasty_names = { - #based on Taiwanese indigeneous peoples - dynn_Seejiq - dynn_Seediq - dynn_Bunun - dynn_Sakizaya - dynn_Pinuyumayan - dynn_Rukai - dynn_Cou - dynn_Saisiyat - dynn_Yami - dynn_Thao - dynn_Kavalan - dynn_Truku - dynn_Hlalua - dynn_Kanakanavu - } - - dynasty_names = { - #based on Taiwanese indigeneous peoples - dynn_Seejiq - dynn_Seediq - dynn_Bunun - dynn_Sakizaya - dynn_Pinuyumayan - dynn_Rukai - dynn_Cou - dynn_Saisiyat - dynn_Yami - dynn_Thao - dynn_Kavalan - dynn_Truku - dynn_Hlalua - dynn_Kanakanavu - } - - male_names = { - #AMIS TAIWANESE INDIGENEOUS GROUP - Afalian Ayal Icyang Kolas Lifok Mayaw Maysang Ngayaw Safulo Talukus Yosifu - - #ATAYAL GROUP... - Behuy Bu Buyung Hayung Iban Neban Nokan Payen Poqueing Qawil Sasan Taruu Temu Ton Watan - - #SEEJIQ GROUP... - Dakis Piho Pihu - - #PAIWAN GROUP... - Balai Calivat Celalaq Cemelesai Djaikung Kuljelje Ljegeay Sakinu Skulilu Tapiwulan Uliw Utjung - - #BUNUN GROUP... - Aliman Aziman Bukun Bukut Husluman Tahai Tulbus - - #SAKIZAYA GROUP... - Daranse Kumud Mayaw Nuwa Tiway - } - - female_names = { - #AMIS TAIWANESE INDIGENEOUS GROUP - Ado Ilid Kawlo Kolas Lisang Sawmah Usay - - #ATAYAL GROUP... - Amuy Asun Cisal Ciwas Ipay Pitay Qiway Rimuy Yoaqai Yokuy - - #SEEJIQ GROUP... - Bakan Rabay - - #PAIWAN GROUP... - Aljenljeng - - #BUNUN GROUP... - Dahu Ival Lahu - - #SAKIZAYA GROUP... - Icep Lisin Sayun Siku - } -} diff --git a/common/culture/name_lists/00_mongolic.txt b/common/culture/name_lists/00_mongolic.txt deleted file mode 100644 index f1519619..00000000 --- a/common/culture/name_lists/00_mongolic.txt +++ /dev/null @@ -1,403 +0,0 @@ -name_list_mongol = { - - dynasty_names = { - "dynn_Sartaq" - "dynn_Mengu-Timur" - "dynn_Timurid" - "dynn_Uriankhai" - "dynn_Bujakhin" - "dynn_Besud" - "dynn_Noyan" - "dynn_Jochid" - "dynn_Chagatayid" - "dynn_Borjigin" - "dynn_Chupanid" - "dynn_Injuid" - "dynn_Toluid" - "dynn_Ganbold" - "dynn_Bolormaa" - "dynn_Otgonbayar" - "dynn_Enkhtuyaa" - "dynn_Gantulga" - "dynn_LkhagvasU_ren" - "dynn_Enkhjargal" - "dynn_Ganzorig" - "dynn_Narantsetseg" - "dynn_PU_revsU_ren" - "dynn_Ganbaatar" - "dynn_MO_nkhtsetseg" - "dynn_MO_nkhbat" - "dynn_MO_nkh-Erdene" - "dynn_Jalair" - "dynn_Sartuul" - "dynn_Olkhunut" - "dynn_Khatagin" - "dynn_Iljigin" - "dynn_Tsookhor" - "dynn_Onggirat" - "dynn_Onggirat" - "dynn_Khunggirad" - "dynn_Mergid" - "dynn_Telingid" - "dynn_Borjigin" - "dynn_Aralkum" - "dynn_Dana" - "dynn_AqtO_be" - "dynn_Bailjar" - "dynn_Kaztal" - "dynn_Pecha" - "dynn_Kangly" - "dynn_Jadaran" - "dynn_Baarin" - "dynn_Bargujin" - "dynn_Borogchin" - "dynn_Mongoljin" - "dynn_Quralas" - #"dynn_Uvas_Mergid" - "dynn_Tatar" - "dynn_ZU_bU_" - "dynn_Ikheres" - "dynn_Eljigin" - "dynn_Bairam" - "dynn_Orduk" - "dynn_Arpardi" - "dynn_Barlas" - "dynn_Khorchi" - "dynn_Qaraunas" - "dynn_Arlat" - "dynn_Dughlat" - "dynn_Kereyit" - "dynn_Begchik" - "dynn_Sunit" - "dynn_Keshmiti" - "dynn_Uduyid" - "dynn_Uvas" - "dynn_Khaad" - "dynn_Khalka" - } - - male_names = { - Abagha Abika Abingga Abitu Achigh Aguchu Aitu Aituka Aitungga Ajai Ajinai Akhutai Alagh Alchi Alchidai Alingga Altan Ambaghai Anu Arkhai Arasen Asu Asuka Asungga - Baaridai Babur Badai Bagaridai Bage Baishinkhor_Dogshin Bajin Bala Barghujin Bartan Batu Bedugun Begter BegU_nU_tei Belgutei Belgunutei BelgU_nU_tei Berke Bilge - Bodonchar Bodonchar_Munkhag Bogen Bogorchu Bolkhadar Booju Borjigidai Boroghul Bughu Bugidai Bugunutei Bujeg Bukha Bukha_Khatagi Bukhatu_Salji Bulughan Buri Burkhan Burundai - Chagatai Chaghagan Chanai Chaujin_Ortagai Chigu Chidukhul Chilagun Chiledu Chirhya_Lynhua Chormakhan Chulgetei Dagun Daritai Daru Daruka Darungga Dayir Dehingge Dibage Dodai Duua - Eljigedei Erge Fuju Ghazan Ghunan Godan Guchu Gughlug Guyug Habich_Baghatur Hachi_HU_lU_g Harghasun Horkhudagh Hulegu Husun Inalchi Inancha Iturgen - Jajiradai Jamugha Jebe Jeguredei Jiuge Jiujin Jochi Jurchedei Kadan Khabichi Khabul Khachi Khachigun Khadagh Khagatai Khaidu Khal Khorchi Khorilartai Khubilai Khudu Khutula Khuyildar Kogsegu Kokochu - Langju Lioju Liuge Liujin Maiju Megetu Megujin Menen_TU_dU_n Menggei Modahuo Mongke Morokha Munglig Nakhu Narin Nata Natabu Nataha Natahai Nataka Nayaga Nogai NU_gu - Odchigin Ogodei Okhotur Oljaitu Oronartai Qijin Qingge Sangge Sanju Semsochule Sengun_Bilge Shige Shiraghul Shirgugetu Shuge Subetei Suyiketu - Taghai Tamachi Targhutai Temuge Temujin Temur Todogen Toghoril Toghtoga Tokhtamis Tolui Torolchi Tumbinai_Setsen Tumen Uighurtai Ukhuna Usun - Wuge Wugezhi Wujin Wujun Yedi Yegu Yeke Yesugei Yesunge Yokhunan - - - } - female_names = { - Aigiarn Al-Alta Alan Alan_Gua Altani Borte Botokhui Bulughan Chabi Chagur Chakha Checheyigen Chotan Conchaka Dokez Doregene Doquz Ebegei Goland Gurbesu Hogelun Holuikhan Ibakha - Khadagan Khogaghchin Khojin Khorijin Khugurchin Khulan Khutulan Khutulun Kokachin Mandukhai Mongoljin Nomolun Oghul Orbei Orqina Sokhatai Sorkhaghatani Tekine Temulun TO_regene Yesugun Yesui Hoelun - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_buryat = { - dynasty_names = { - "dynn_Buryat" - "dynn_Barga" - "dynn_Yrkhu" - "dynn_Irgit" - "dynn_Khori_Tumed" - "dynn_Galzuud" - "dynn_Hengelder" - "dynn_Abazaj" - "dynn_Sono" - "dynn_Bajandaj" - "dynn_Bulagad" - "dynn_Khongodor" - "dynn_Khori_Buryat" - "dynn_Ekhirid" - "dynn_Sartuul_Buryat" - "dynn_Songol" - "dynn_Tabunud" - "dynn_Alair" - "dynn_Ashibagad" - "dynn_Atagan" - "dynn_Ikinat" - "dynn_Segenuud" - "dynn_Khora" - "dynn_Tayanid" #fictional - "dynn_Baataran" #fictional - } - - male_names = { - Adai Adyan Agbarjin Agvan Aldar Altan Amgalan Arigaba Ariq Arugtai Arya Azarga Baatar Badma Badmazhap Bahamu Bair Baldan Balzhinima Bars Bashiila Batu Bavasan Bayan Bazar Bek Belikto - Bidia Bodi Bolot Boroghson Buda Bukha Bulgan Buyan Damba Darayisung Dashi-Dorzho Dashinima Dayan Delbeg Dondok Dorzho Ejei Elbeg Eljigidei Engke Erdenebal Eshegen Eshi Galsan Geleg - Gombozab Gulichi Guluun Gunga Innokentii Irinchibal Joichi Jorightu Khermen Khotsa Kublai Ligdan Manduulun Mergen Mulan Namzil Osor Oyiradai Qayshan Qoshila Rinchin Sambuu Sayn Shono - Sodnom Solbon Suddhipala Tayisung Tekhe Toghun Tolui Toq Tseden Tsokto Tsydenzap Tsydyp Tsyren Tsyrendashi Urzin Uskhal Yeshinhorlo Zamso Zorikto - } - female_names = { - Adyana Altana Ariuna Bairma Bilduu Byorte Darima Dulma Erdeni Erzhena Gerelma Khanda Mandukhai Medegma Namgar Namzilma Samar Sanzima Saran Seseg Soyolma - Temyulen Tsymzidma Tsypelma Tsyrendulma Tsyrma Tuyana Zaufishan Zargalma Zhimba - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_oirat = { - dynasty_names = { - "dynn_Oirat" - "dynn_DO_rbet" #Dörbet - "dynn_Chonos" - "dynn_Koshut" - "dynn_O_lO_t" #Ölöt - "dynn_Torghut" - "dynn_Buzava" - "dynn_Khoid" - "dynn_Bayad_OIRAT" - "dynn_Myangad" - "dynn_Zakhchin" - "dynn_Baatud" - "dynn_Jakachin" - "dynn_O_geled" #Ögeled - "dynn_Qoyid" - "dynn_Qoshud" - "dynn_Galdaanut" #fictional - "dynn_Seggoid" #fictional - "dynn_Dubo" #fictional - "dynn_Azasid" #fictional - "dynn_Arjhag" #fictional - "dynn_Yenimit" #fictional - "dynn_Kolyokod" #fictional - "dynn_O_mO_red" #fictional Ömöred - "dynn_MU_renig" #fictional Mürenig - } - - male_names = { - Abai_Khatan Adyan Agbarjin Alag Altn Altzkhuta Angarak Arghun Arghun_Agha Arkhan Amasanj Ayuka Bahamu Batur Bata Batula Bayn Bayr BembO_ Buinta Bukha_TemU_r Chon Choqur_Ubashi - Dalantai Dayan Donduk Dorje Dzhav Dzhirgan Elduchi Elistina Elya Erdeni_Batur Esen Galdan Galdan_Bosugtu Gulichi Gunbu_Chuhun GU_shi Hurimashi IshtO_mO_r - Kitbugha Kharkhul Khishig Khongor Khontr Khutugaitu Kolor Konchok Kundelung Mergen Mingian Monchak MO_nkhtO_mO_r Nokha Notan Nowruz Ochirtu O_rU_g Quduqa - Sanggaerzha_Yiledeng Sanal Sants Savr Sengge Septen_Bailsur Shukhur Targhai_Khurgen Taisun Tavn Tenzin Toghon Togoon Torobaikhu Tsetsen Tsewang_Rabdan Tsodba Tzayatr Tzeren Ulan Ytsl Zurtan - } - female_names = { - Adyana Altana Amin_Dara Ariuna Bairma Bilduu Byorte Darima Dulma Duya Erdeni Erzhena Gerelma Khanda Mandukhai Medegma Namgar Namzilma Samar Sanzima Saran Seseg SO_O_khlO - Soyolma Temyulen Tsymzidma Tsypelma Tsyrendulma Tsyrma Tuyana TeztzgO_ Zaufishan Zargalma Zhimba - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_naiman = { - dynasty_names = { - "dynn_Naiman" - "dynn_GU_chU_gU_d" #Güchügüd - "dynn_Betegin" - "dynn_Buku" - "dynn_Karakalpaks" - "dynn_Baqi" - "dynn_Dorben" - "dynn_Qataqin" - "dynn_Hatarin" #fictional - "dynn_U_lO_gU_r" #fictional Ülögür - "dynn_Arghak" #fictional - "dynn_ChU_reg" #fictional Chüreg - "dynn_U_U_mO_rU_g" #fictional Üümörüg - "dynn_Khorinik" #fictional - "dynn_MO_ntek" #fictional Möntek - "dynn_Bulagun" #fictional - "dynn_Onoreg" #fictional - "dynn_Choren" #fictional - "dynn_QU_lagU_" #fictional Qülagü - "dynn_Tairag" #fictional - "dynn_Bonreg" #fictional - "dynn_DO_O_gO_ir" #fictional Döögöir - "dynn_EgU_ir" #fictional Egüir - "dynn_Ijigiak" #fictional - "dynn_Jamanig" #fictional - } - - male_names = { - Altan Arin_Taiz Bukha_Timur Buyimur Buyuruk Ciriac Daaritai Erke_kara Elkutur Gur Ilqa_Sangun Inanch Jagambu Jakha Jamuqa Javanqad Kereyidei Ketbugha Kitbuqa - Koksegu Korchi Kuchluk Kuchuguden Kulbur Kurchakus Marguz Qatarqa Qorisubachi Qorisu_Dayir Quchar Qurdjaquz Saryk Taibuka Tai_Timur Tayan Togrul Toqto_a Tooril Yula_Mangus - } - female_names = { - Aigiarn Al-Alta Alan Altani Borte Botokhui Bulughan Chabi Chagur Chakha Chaur_Baqi Checheyigen Chotan Conchaka Dokez Doregene Doquz Ebegei Goland Gurbesu Hogelun Holuikhan Ibakha - Khadagan Khatun Khogaghchin Khojin Khorijin Khugurchin Khulan Khutulan Khutulun Kokachin Mandukhai Mongoljin Nomolun Oghul Orbei Orqina Sokhatai Sorkhaghatani Tekine Temulun TO_regene Ussun_Kulan Yesugun Yesui Hoelun - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_kerait = { - - dynasty_names = { - "dynn_Kerait" - "dynn_Jirkin" - "dynn_Konkant" - "dynn_Sukait" - "dynn_Tumaut" - "dynn_Albat" - "dynn_Khonkoid" - "dynn_Kirkh" - "dynn_Dunghaid" - "dynn_TU_men_TU_begU_n" #Tümen Tübegün - "dynn_Dongoid" - "dynn_Ubchikh" - "dynn_Jirgin" - "dynn_Ongchijid" - "dynn_SU_U_gaad" #fictional Süügaad - "dynn_Moronig" #fictional - "dynn_Khalakh" #fictional - "dynn_Tajurin" #fictional - "dynn_Altarusig" #fictional - "dynn_Kuldurugid" #fictional - "dynn_Kuchorig" #fictional - "dynn_Bukhatad" #fictional - "dynn_Gurdugusid" #fictional - "dynn_Esorig" #fictional - "dynn_NO_O_gemir" #fictional Nöögemir - } - - male_names = { - Altan Arin_Taiz Bukha_Timur Buyimur Buyuruk Ciriac Daaritai Erke_kara Elkutur Gur Ilqa_Sangun Inanch Jagambu Jakha Jakha_Gambhu Jamuqa Javanqad Kereyidei Ketbugha Kitbuqa - Koksegu Korchi Kuchluk Kuchuguden Kulbur Kurchakus Marguz Oghuul Qatarqa Qorisubachi Qorisu_Dayir Quchar Qurdjaquz Saryk Taibuka Tai_Timur Tayan Togrul Toqto_a Tooril Yula_Mangus - } - female_names = { - Aigiarn Al-Alta Alan Altani Borte Botokhui Bulughan Chabi Chagur Chakha Chaur_Baqi Checheyigen Chotan Conchaka Dokez Doregene Doquz Ebegei Goland Gurbesu Hogelun Holuikhan Ibakha - Khadagan Khatun Khogaghchin Khojin Khorijin Khugurchin Khulan Khutulan Khutulun Kokachin Mandukhai Mongoljin Nomolun Oghul Orbei Orqina Sokhatai Sorkhaghatani Tekine Temulun TO_regene Ussun_Kulan Yesugun Yesui Hoelun - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_khitan = { - - dynasty_names = { - "dynn_Kara-Khitai" - "dynn_Xiaokhitai" - "dynn_Wanyan" - "dynn_Yuwen" - "dynn_Qudug" - "dynn_Jau" - "dynn_Mori" - "dynn_Udur" - "dynn_Sen" - "dynn_Daurun" - "dynn_Nair" - "dynn_Uul" - "dynn_Taulia" - "dynn_Suni" - "dynn_Murong" - "dynn_Unkut" - } - - male_names = { - Abaoji Aguzhi Ala Alian Anduan Aoluwo Bali Banse Baonu Baoxin Bei Biegute Bishe Chage Chonggude Chun - Daoyin Dashi_5927_77F3 Deguang Dewen Dianni Diela Dilie Ding Duden Duhe Dukun Duolu Erxuan Fuguzhi Gaojiu Geli Gou_er Gu Gudi - Helu Heluwo Hengde Hongbian Hongji Houabu Hougu Hudugu Hui Jing Jixian Jun Ketuyu Kujin Kulie - Lage Lian Lihu Lishou Liufu Liuge Longqing Louguo Longxian Longxu Longyou Lufen Malu Ning Nugua Nulisi Paiya Pendu Pidi Pili Pogu Pugu Ruan - Saibao Salade Saladi Sange Sangu Shao Sheni Shennu Shenxing Shilu Shuanggu Shulan Shuli Shura Shusi Shuzhe Siduan Siwen Suige Suogu - Taboye Talu Tansi Taokai Tiande Tiebu Tieli Tubote Tuyu Wan Wangi Wangliu Wenshunu Wolila Wuchang Wuge Wuluba Wuyu - Xian Xiamo Xiaomu Xiaonian Xijian Xinilie Xiuge Xiyin Yali Yaliguo Yanchege Yange Yangliu Yanhu Yanmu Yansi Yanxi Yelu Yide Yilie_5937_5217 Yindi Yixin Yuliye Yundeshi - Zhilie_76F4_5217 Zhilugu Zhimo Zongjian Zongwei Zongxun Zongyuan Zongzhen - } - female_names = { - Abuli Bage Baishi Baqin Bin Changshou Chaogui Chen Cuiba Cuibi Dali Dulyin Fengdi Giufei Guanyin Guyu Hegudian Heyi Hunian Huquan - Jiuge Jiuli Lijiu LU_bugu Nerigun Noujin Qi Qin Pade Ping Piri Pusage Pusuwan - Saba Saga Sage Sagezhi Saige Sala Sani Sanqian Sanyin Shi Shige Shuge Shuogu Shuyi Shuyin Siliu Siyin - Tabuyan Taige Tali Tailin Taoge Temei Teri Tianni Wanyin Wen Woletai Wolitai Xingge - Yange Yangliyin Yanmujin Yanmuqin Yanshou Yanyan Yaoshinu Yileilan Zhaoyi Zhigu - } - - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes - - dynasty_name_first = yes - - -} - -name_list_tuyuhun = { - - dynasty_names = { - "dynn_Murong" - "dynn_Tuoba" - "dynn_Suhe" - "dynn_Ni" - "dynn_Gong" - "dynn_Helian" - "dynn_An" - "dynn_Yao" - "dynn_Bai" - "dynn_Dugu" - "dynn_Yuchi" - "dynn_Su" - "dynn_Zhangsun" - "dynn_Qutu" - "dynn_Yu" - "dynn_Di" - "dynn_Duan" - "dynn_Fu" - "dynn_Lan" - "dynn_Gao" - "dynn_Shi" - "dynn_Yue" - "dynn_Li" - "dynn_Mi" - "dynn_Yuwen" - "dynn_Poliuhan" - "dynn_Heba" - "dynn_Wei" - "dynn_Xianyu" - "dynn_Houmochen" - "dynn_Guo" - "dynn_Cui" - "dynn_Liu" - "dynn_Yan" - "dynn_Cao" - "dynn_Erzhu" - "dynn_Moqi" - "dynn_Daxi" - "dynn_Heruo" - "dynn_Zhu" - "dynn_Wang" - "dynn_Huangfu" - "dynn_Chen" - "dynn_Yang" - "dynn_Zheng" - "dynn_Feng" - "dynn_Kuhan" - "dynn_Xue" - "dynn_Baba" - "dynn_Poyetou" - } - - male_names = { - Achai Anye Ba Baling Bao Baolin Baoqi Bi Cang Ce Chan Changqing Changshou Chong Chounu Chui Chun Da Dai Dana Dayan De Di Ding Du Duba - Dui Dun Duo Duyihou Fulianchou Fuyun Gai Gang Gong Gu Gui Han Hao Heng_an Hong Hongye Hu Huan Huang Hui Ji Jia Jian Jin Jiong Jixun - Jun Juyudun Kan Ke Kegu Kuala KualU_ Kunlun Lang Li Liang Lin Ling Long Lou Luo Luozhou Manu Min Mo Mu Mugui Muliyan Na Nong Nuohebo - Ping Qian Qidou Qifu Quan Rong Rou Ruyuan Shan Shaozong She Shegui Sheng Shifu Shilian Shipi Shiyin Shou Shu Shun Sudumomo Suixi Tai - Talumomo Tandouba Tianguang Tong Tuo Tuyan Wan Wei Wen Wonu Wu Wugeti Wuji Xi Xian Xiandao Xiang Xianshou Xin Xingbu Xiu Xiuli Xuandao - Yanchao Ye Yeyan Yi Yichen Yicheng You Yu Yuan Yuchi Yue Yun Zan Zhangru Zhao Zhen Zheng Zhi Zhining Zhong Zhongxiang - } - female_names = { - Awu Changle Chengchao Chengyang Cheng_ai Chifan Dabugan Daowu Deguang E Eying Fang Fengyi Guanghua Guangping Guangxian Hongdao Honghua - Huiguang Huihua Jialuo Jingshou Jinyang Kezuhun Leshang Lihua Lingji Lize Manyue Mingda Mingjing Pingyuan Poduoluo Qiang Qieluo Qingdou - Shiping Shunyang Song_e Taiwu Tong_an Wen Wende Wenzhao Wu Wuwei Wuxiao Wuxuan Wuyuan Xiangguo Xiangyang Xianlie Xianrong Xianyou - Xihe Xincheng Xingping Xuan Xuanming Xubujuciyun Xunying Yanzhi Yi_an Yidu Yigui Ying Yiyang Yongfu Yuanfei Yuanzhen Yueguang Yuehua - Yueyi Zhaocheng Zhong - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} diff --git a/common/culture/name_lists/00_nakkavaram.txt b/common/culture/name_lists/00_nakkavaram.txt deleted file mode 100644 index 692d3990..00000000 --- a/common/culture/name_lists/00_nakkavaram.txt +++ /dev/null @@ -1,61 +0,0 @@ -name_list_nakkavaram = { - - cadet_dynasty_names = { - "dynn_Onge" - "dynn_Jangil" - "dynn_Jarawa" - "dynn_Akabea" - "dynn_Akarbale" - "dynn_Apuckiwar" - "dynn_Akakol" - "dynn_Akajeru" - "dynn_Akakora" - "dynn_Akacari" - "dynn_Akabo" - "dynn_Akakede" - "dynn_Okojuwoi" - "dynn_Holchu" - } - - dynasty_names = { - "dynn_Onge" - "dynn_Jangil" - "dynn_Jarawa" - "dynn_Akabea" - "dynn_Akarbale" - "dynn_Apuckiwar" - "dynn_Akakol" - "dynn_Akajeru" - "dynn_Akakora" - "dynn_Akacari" - "dynn_Akabo" - "dynn_Akakede" - "dynn_Okojuwoi" - "dynn_Holchu" - } - - male_names = { - Sulu Nao Bea Irep Phoro Lephai Moroko Buli Bui Jirake Meo Iloe Nyaramo Kanmo Buluba Dec Golat - Biala Riala Wullaga Biowaya Bira Desh Ballaga Bulub Rege Woicha Wolak Irap Pungyar Kalwar Woi - Bouei Mura Tautal Ingo Bobe Jero Wol Yega Botei Dori Weutoma - } - female_names = { - Boa Neo Tong Kaba Kobo Lephe Beno Belei Gulab Sharda Surmai Renge Buro Tango Reya Lico Boro Loka Meba - Bia Woicha Irap Yegat Poli Bercha Bele Tura Golat Keti Burinya Baura Lipaia Noali Chaurmila Lat - Mura Rima Wutoma Nonga Tautal Ingo Bobe Jero Wol - - } - - founder_named_dynasties = yes - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 - - dynasty_of_location_prefix = "dynnp_of" -} diff --git a/common/culture/name_lists/00_nivkh.txt b/common/culture/name_lists/00_nivkh.txt deleted file mode 100644 index d8d84e41..00000000 --- a/common/culture/name_lists/00_nivkh.txt +++ /dev/null @@ -1,121 +0,0 @@ -name_list_nivkh = { - - dynasty_name_first = yes - - dynasty_names = { - "dynn_Adiul" - "dynn_Agna" - "dynn_Akhtamak" - "dynn_Aksik" - "dynn_Alvali" - "dynn_Burgumi" - "dynn_Dyaluncha" - "dynn_Eldan" - "dynn_Garpancha" - "dynn_Gudeikon" - "dynn_Gugdaul" - "dynn_Ka_cheda" - "dynn_Kepele" - "dynn_Khadiul" - "dynn_Kilim" - "dynn_Saltyk" - "dynn_Sebeda" - "dynn_Songolik" - "dynn_Tykulcha" - "dynn_Tymancha" - "dynn_Vadyo" - "dynn_Vankho" - "dynn_Vavlya" - } - - cadet_dynasty_names = { - "dynn_Adiul" - "dynn_Agna" - "dynn_Akhtamak" - "dynn_Aksik" - "dynn_Alvali" - "dynn_Burgumi" - "dynn_Dyaluncha" - "dynn_Eldan" - "dynn_Garpancha" - "dynn_Gudeikon" - "dynn_Gugdaul" - "dynn_Ka_cheda" - "dynn_Kepele" - "dynn_Khadiul" - "dynn_Kilim" - "dynn_Saltyk" - "dynn_Sebeda" - "dynn_Songolik" - "dynn_Tykulcha" - "dynn_Tymancha" - "dynn_Vadyo" - "dynn_Vankho" - "dynn_Vavlya" - } - - male_names = { - Atvuk - Azmun Azrun - Chalun Changin - Chuner - Ezdanok - Itkun - Kaskazik - Kekhan Kelin Kenran - Khaylin - Kokin - Lants - Lergan - Longun - Luzgin - Memzgun - Mufchik - Napuin - Nyengun Nyunkin - Ochan - Palgun Parkizin - Pilgun - Pulychkh - Pungat - Rsholin - Smedun - Tavtugin - Tolvin - Tynvin - Ukrin - Urkayn Uryam - Vadun - Vyskan - Ykylak - Yudin - Zarun - } - female_names = { - Anguk Anyuk - Azuk - Chamuk Chavlik - Efkuk - Esavura - Ezguk - Iglik - Khivchuk - Liskit - Lushkura - Lykhtkk - Niftyuk - Okhnik - Panko - Pineyk - Ponashk - Pygsk Pygzyk Pylymk - Tatuk - Tymguk - Ulita - Umkhun - Velk - Yazik - Yurik - Zuyuk - } -} diff --git a/common/culture/name_lists/00_north_germanic.txt b/common/culture/name_lists/00_north_germanic.txt deleted file mode 100644 index 9e9cf16d..00000000 --- a/common/culture/name_lists/00_north_germanic.txt +++ /dev/null @@ -1,872 +0,0 @@ -name_list_norse = { - - cadet_dynasty_names = { - "dynn_StO_rr" - "dynn_Borg" - "dynn_KrA_ka" - "dynn_Mikli" - "dynn_SmiD_r" - "dynn_MO_ring" - "dynn_GA_rdske2" - "dynn_Trolli" - "dynn_Kven" - "dynn_Toki" - "dynn_HA_rde" - "dynn_Eyjing" - "dynn_Orming" - "dynn_GoD_i" - "dynn_AustmaD_r" - "dynn_HA_vi" - "dynn_Rakki" - "dynn_Skrauti" - "dynn_Snarfari" - "dynn_Strangi" - "dynn_Snjalli" - "dynn_SU_rr" - "dynn_SkA_ld" - "dynn_Viss" - "dynn_T_rymr" - "dynn_T_vari" - "dynn_O_lfU_ss" - "dynn_O_rn" - "dynn_HvI_ti" - "dynn_Sterki" - "dynn_AuD_gi" - "dynn_RauD_i" - "dynn_Spaki" - "dynn_Svarti" - "dynn_Rammi" - "dynn_MjO_vi" - "dynn_RI_ki" - "dynn_Lambi" - "dynn_Skarfr" - "dynn_SkA_l" - "dynn_Sleggja" - "dynn_SmjO_r" - "dynn_Stjarna" - "dynn_StrU_gr" - "dynn_SA_lendingr" - "dynn_SU_rr" - "dynn_SA_lingr" - "dynn_Trausti" - "dynn_VeD_r" - "dynn_VA_mU_li" - "dynn_VA_ni" - "dynn_T_istill" - "dynn_T_jO_fi" - "dynn_T_ynning" - { "dynnp_of" "dynn_Bebbanburg" } - "dynn_Byrrnesson" - { "dynnp_af" "dynn_Raumariki" } - { "dynnp_af" "dynn_Raumariki" } - { "dynnp_af" "dynn_Dovre" } - { "dynnp_af" "dynn_Dovre" } - "dynn_VeO_y" - { "dynnp_af" "dynn_Raumsdalr" } - "dynn_Eirikson" - "dynn_Sognsdal" - "dynn_Gunarrson" - "dynn_Firdi" - { "dynnp_af" "dynn_Aarhus" } - { "dynnp_af" "dynn_Aarhus" } - { "dynnp_af" "dynn_Aalborg" } - { "dynnp_af" "dynn_Aalborg" } - { "dynnp_af" "dynn_Varde" } - { "dynnp_af" "dynn_Varde" } - { "dynnp_af" "dynn_Skagen" } - { "dynnp_af" "dynn_Skagen" } - } - - dynasty_names = { - "dynn_StO_rr" - "dynn_Borg" - "dynn_KrA_ka" - "dynn_Mikli" - "dynn_SmiD_r" - "dynn_MO_ring" - "dynn_GA_rdske2" - "dynn_Trolli" - "dynn_Kven" - "dynn_Toki" - "dynn_HA_rde" - "dynn_Eyjing" - "dynn_Orming" - "dynn_GoD_i" - "dynn_AustmaD_r" - "dynn_HA_vi" - "dynn_Rakki" - "dynn_Skrauti" - "dynn_Snarfari" - "dynn_Strangi" - "dynn_Snjalli" - "dynn_SU_rr" - "dynn_SkA_ld" - "dynn_Viss" - "dynn_T_rymr" - "dynn_T_vari" - "dynn_O_lfU_ss" - "dynn_O_rn" - "dynn_HvI_ti" - "dynn_Sterki" - "dynn_AuD_gi" - "dynn_RauD_i" - "dynn_Spaki" - "dynn_Svarti" - "dynn_Rammi" - "dynn_MjO_vi" - "dynn_RI_ki" - "dynn_Lambi" - "dynn_Skarfr" - "dynn_SkA_l" - "dynn_Sleggja" - "dynn_SmjO_r" - "dynn_Stjarna" - "dynn_StrU_gr" - "dynn_SA_lendingr" - "dynn_SU_rr" - "dynn_SA_lingr" - "dynn_Trausti" - "dynn_VeD_r" - "dynn_VA_mU_li" - "dynn_VA_ni" - "dynn_T_istill" - "dynn_T_jO_fi" - "dynn_T_ynning" - { "dynnp_of" "dynn_Bebbanburg" } - "dynn_Byrrnesson" - { "dynnp_af" "dynn_Raumariki" } - { "dynnp_af" "dynn_Raumariki" } - { "dynnp_af" "dynn_Dovre" } - { "dynnp_af" "dynn_Dovre" } - "dynn_VeO_y" - { "dynnp_af" "dynn_Raumsdalr" } - "dynn_Eirikson" - "dynn_Sognsdal" - "dynn_Gunarrson" - "dynn_Firdi" - { "dynnp_af" "dynn_Aarhus" } - { "dynnp_af" "dynn_Aarhus" } - { "dynnp_af" "dynn_Aalborg" } - { "dynnp_af" "dynn_Aalborg" } - { "dynnp_af" "dynn_Varde" } - { "dynnp_af" "dynn_Varde" } - { "dynnp_af" "dynn_Skagen" } - { "dynnp_af" "dynn_Skagen" } - } - - male_names = { - Anundr Arnfast A_li A_lfr A_lfgeir AndrE_s ArnbjO_rn ArngrI_mr A_rni A_sbjO_rn A__ke A_skell - Baldr Bersi BjO_rn Bragi BuT_li BA_rD_r Birgir BU_i BO_D_var BO_tO_lfr BrynjO_lfr BergT_O_r - Dan Dagr DY_ri - Egill Einarr EilI_fr Emundr EirI_kr Eysteinn Einar - Freyr Fasti FriT_rI_kr FrIrekr FrO_T_i FO_lki Flosi - Geirr GuT_mundr GuT_rO_T_r Gunnarr GandA_lfr GnU_pa Gormr GrI_mr GuT_frI_T_r Grettir - Haraldr Haukr Helgi Hrafn HA__kon Hallsteinn Hemingr HO_lmgeirr HrO_lfr Hrani HA_steinn HjA_lmar HrO_T_geirr HrO_D_O_lfr HrE_rekr HY_singr HalfdA_n HerjO_lfr HO_rD_r HO_gni HU_nT_jO_fr Hordaknutr - IngO_lfr Ingimar Ingjaldr I_var - JA_tvarD_r JO_rundr - Karl Kjartan KolbjO_rn Ketill Ketilmundr KnU_tr Kollr KA_ri Kolbeinn - LjO_tr - MagnU_s - NjA_ll - Oddr Ormr O_rvar O_nundr O_feigr O_lafr O_ttar O_lvir O_gmundr - Refr Ragnarr RO_gnvaldr Refill RI_kU_lfr - Snorri SigurT_r StarkaT_r Steinn Sturla StyrbjO_rn SumarliT_i Suni Sveinn Sverker SE_mundr SO_lvi SkU_li SigrbjO_rn Sigtryggr StyrkA_r SO_rkvir SkarphE_D_inn SkjO_ldr - Tolir T_orbjO_rn T_orbrandr T_orsteinn Tyke T_iO_D_mundr TO_ki T_orfinnr T_orD_r T_orgils T_O_rO_lfr TO_sti T_jO_stO_lfr Tryggvi - U_lfr U_lfhE_D_inn U_lfkell - Vagn VE_mundr Valdemar VigfU_s ValT_jO_fr - Yngvar - } - female_names = { - A_lfrhildr AlfrI_D_r A_lvO_r A__sa A_slaug A__sta A_strI_D_r AuT_r - BjO_rg Bodil BO_thildr BergT_O_ra - CecilI_a - DrI_fa Dalla - ED_la - Freyja Freydi_s - GerT_r GlO_D_ GrI_ma Gunnhildr Gurli GuD_rU_n GrY_la GyrI_D_r GyT_a - HafrI_D_r Halla HO_lmfrI_D_r Huld - Iliana Inga IngfrI_D_r IngibjO_rg IngjerT_r IngirI_D_r - JO_runn - KrA_ka - ME_r MA_lmfrI_D_r - RI_kiza RO_gnfrI_D_r Ragnhildr - SA_ga SI_g Sif SigrI_D_r Skuld Svanhildr SignY_ SkjaldvO_r - T_O_ra T_O_rdI_s T_yri T_O_runn T_uriD_r - U_lfhildr Unnr - VigdI__s - Ylva Yrsa Y_r - } - - dynasty_of_location_prefix = "dynnp_af" - - patronym_suffix_male = "dynnpat_suf_sson" - patronym_suffix_female = "dynnpat_suf_sdottir" - always_use_patronym = yes - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 50 - mat_grf_name_chance = 0 - father_name_chance = 0 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 10 - mat_grm_name_chance = 50 - mother_name_chance = 0 - - -} -name_list_swedish = { - - cadet_dynasty_names = { - { "dynnp_af" "dynn_Palatinate_Zweibrucken" } - { "dynnp_af" "dynn_Holstein_Gottorp" } - "dynn_GA_rdske" - "dynn_Grip" - "dynn_Svarte" - "dynn_Skancke" - "dynn_Thornberg" - "dynn_Ribbing" - "dynn_BA_A_t" - "dynn_Ulv" - "dynn_Sparre" - "dynn_FA_rla" - "dynn_Brahe" - { "dynnp_af" "dynn_Rumby" } - { "dynnp_af" "dynn_Brunnsholm" } - { "dynnp_af" "dynn_UlvA_sa" } - "dynn_SjO_blad" - "dynn_Skarsholm" - "dynn_BlA_" - "dynn_Natt_och_Dag" - "dynn_Griphuvud" - "dynn_Lejon" - "dynn_Bielke" - "dynn_Erik" - "dynn_Horn" - "dynn_Bjering" - "dynn_RothE_n" - "dynn_LA_ma" - "dynn_Rumby" - "dynn_DjA_kn" - "dynn_SvA_rd" - "dynn_Bagge" - "dynn_Borg" - "dynn_Bese" - "dynn_Boberg" - "dynn_Bragde" - "dynn_Bure" - "dynn_Eka" - "dynn_Fargalt" - { "dynnp_af" "dynn_FA_nO_" } - "dynn_Forsa" - "dynn_Get" - "dynn_Gedda" - { "dynnp_af" "dynn_Hafrid" } - "dynn_Hatt" - { "dynnp_af" "dynn_HA_lbonA_s" } - "dynn_HA_sthuvud" - "dynn_Knoppe" - "dynn_Kraam" - "dynn_Lake" - "dynn_Lejonansikte" - "dynn_Lejonbalk" - "dynn_Marsvin" - "dynn_Oxhufvud" - "dynn_Oxpanna" - "dynn_Pik" - "dynn_Svan" - "dynn_Svinhufvud" - "dynn_Tott" - "dynn_Tre_Rosor" - "dynn_Tre_Rutor" - "dynn_Trolle" - "dynn_Vasa" - "dynn_Vinstorpa" - "dynn_Virske" - "dynn_Vingad_Pil" - "dynn_Vingad_Lilja" - "dynn_HA_stesko" - "dynn_O_rnsparre" - "dynn_Snedbielke" - "dynn_LA_ma" - "dynn_Fluga" - "dynn_Guldtupp" - "dynn_Ulfsax" - "dynn_Tre_SjO_blad" - "dynn_Stjerne" - "dynn_Bratt" - "dynn_Munk" - "dynn_Bjelke" - "dynn_Bonde" - "dynn_Pilhufvud" - "dynn_Haraldsson" - "dynn_Gera" - "dynn_Soop" - "dynn_Gylta" - "dynn_KA_rling" - { "dynnp_af" "dynn_Finsta" } - "dynn_Leijonhufvud" - { "dynnp_af" "dynn_AspenA_s" } - { "dynnp_af" "dynn_Hammersta" } - "dynn_LilliehO_O_k" - "dynn_A_ngel" - "dynn_Fleming" - "dynn_Bidz" - "dynn_Diekn" - "dynn_Stiernkors" - "dynn_VillnA_s" - "dynn_Fincke" - "dynn_Dufva" - "dynn_JA_gerhorn_af_Spurila" - "dynn_Gesterby" - "dynn_BA_A_t" - "dynn_Cronstedt" - } - - dynasty_names = { - "dynn_GA_rdske" - "dynn_Grip" - "dynn_Svarte" - "dynn_Skancke" - "dynn_Thornberg" - "dynn_Ribbing" - "dynn_BA_A_t" - "dynn_Ulv" - "dynn_Sparre" - "dynn_FA_rla" - "dynn_Brahe" - { "dynnp_af" "dynn_Rumby" } - { "dynnp_af" "dynn_Brunnsholm" } - { "dynnp_af" "dynn_UlvA_sa" } - "dynn_SjO_blad" - "dynn_Skarsholm" - "dynn_BlA_" - "dynn_Natt_och_Dag" - "dynn_Griphuvud" - "dynn_Lejon" - "dynn_Bielke" - "dynn_Erik" - "dynn_Horn" - "dynn_Bjering" - "dynn_RothE_n" - "dynn_LA_ma" - "dynn_Rumby" - "dynn_DjA_kn" - "dynn_SvA_rd" - "dynn_Bagge" - "dynn_Borg" - "dynn_Bese" - "dynn_Boberg" - "dynn_Bragde" - "dynn_Bure" - "dynn_Eka" - "dynn_Fargalt" - { "dynnp_af" "dynn_FA_nO_" } - "dynn_Forsa" - "dynn_Get" - "dynn_Gedda" - { "dynnp_af" "dynn_Hafrid" } - "dynn_Hatt" - { "dynnp_af" "dynn_HA_lbonA_s" } - "dynn_HA_sthuvud" - "dynn_Knoppe" - "dynn_Kraam" - "dynn_Lake" - "dynn_Lejonansikte" - "dynn_Lejonbalk" - "dynn_Marsvin" - "dynn_Oxhufvud" - "dynn_Oxpanna" - "dynn_Pik" - "dynn_Svan" - "dynn_Svinhufvud" - "dynn_Tott" - "dynn_Tre_Rosor" - "dynn_Tre_Rutor" - "dynn_Trolle" - "dynn_Vasa" - "dynn_Vinstorpa" - "dynn_Virske" - "dynn_Vingad_Pil" - "dynn_Vingad_Lilja" - "dynn_HA_stesko" - "dynn_O_rnsparre" - "dynn_Snedbielke" - "dynn_LA_ma" - "dynn_Fluga" - "dynn_Guldtupp" - "dynn_Ulfsax" - "dynn_Tre_SjO_blad" - "dynn_Stjerne" - "dynn_Bratt" - "dynn_Munk" - "dynn_Bjelke" - "dynn_Bonde" - "dynn_Pilhufvud" - "dynn_Haraldsson" - "dynn_Gera" - "dynn_Soop" - "dynn_Gylta" - "dynn_KA_rling" - { "dynnp_af" "dynn_Finsta" } - "dynn_Leijonhufvud" - { "dynnp_af" "dynn_AspenA_s" } - { "dynnp_af" "dynn_Hammersta" } - "dynn_LilliehO_O_k" - "dynn_A_ngel" - "dynn_Fleming" - "dynn_Bidz" - "dynn_Diekn" - "dynn_Stiernkors" - "dynn_VillnA_s" - "dynn_Fincke" - "dynn_Dufva" - "dynn_JA_gerhorn_af_Spurila" - "dynn_Gesterby" - "dynn_BA_A_t" - "dynn_Cronstedt" - } - - male_names = { - Albrikt Alf Algot Anders Anund ArnbjO_rn Arne Arnfast AsbjO_rn Astrad Azur Bagge Balder Bengt Bertil Birger BjO_rn Bo Borkvard Botulf Brage Bror - Brynjolf Dag Dan Dyre Egil Einar Emund Erik Eskild Faste Fredrik Filip Folke Frej Georg Greger Grim GudrO_d Gunnar Gustav Halsten Hans Harald - Helgi Henrik Hjalmar Holmger HA_kan Inge Ingemar Ingvar Jedvard Johan Karl Kettil Kettilmund Klas Knut Kol KolbjO_rn Lars Magnus Markus - Mats Nils Niklas Odd Olaf Orvar Peder Ragnar Rolf RO_rek Ragnvald SA_mund SO_rkver SigbjO_rn Sigtrygg Sigurd Starkad Sten StyrbjO_rn Sune Sven - Sverker SO_lvi Thomas Tjudmund Toke Tolir TorbjO_rn Tord Torbrand Torfinn Torkel Torolf Torsten Toste Totil Tyke Ulf Valdemar A_ke O_sten - Adalvard Rodulvard StyrbjO_rn _Odgrim Jaerpulf Stenar Brynolf - } - female_names = { - Aleta Alfhild Alfridh Anna Asta Astrid Beata Birgitta Bothild Cecilia Edla Elin Elisabet Freja Gunhild Gyla Gurli Gytha Hafrid - Helena Holmfrid Iliana Inga Ingeborg Ingegerd Ingfrid Ingrid Karin Katarina Kristina Linda Maer Malmfrid - Margareta MAErta Ragnfrid Ragnhild Rikissa Saga Sara Sigrid Sofia Svanhild Thordis Ulvhilde Ylva A_sa - } - - dynasty_of_location_prefix = "dynnp_af" - - patronym_suffix_male = "dynnpat_suf_sson" - patronym_suffix_female = "dynnpat_suf_sdotter" - always_use_patronym = yes - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 80 - mat_grf_name_chance = 0 - father_name_chance = 0 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 10 - mat_grm_name_chance = 50 - mother_name_chance = 0 - - - - mercenary_names = { - { name = "mercenary_company_gota_band" } - } -} -name_list_norwegian = { - cadet_dynasty_names = { - { "dynnp_of" "dynn_Viken" } - { "dynnp_of" "dynn_Vestfold" } - { "dynnp_of" "dynn_HardrA_de" } - { "dynnp_of" "dynn_Gille" } - { "dynnp_of" "dynn_Sverre" } - "dynn_Brusastad" - "dynn_Bolt" - "dynn_Giske" - "dynn_Raud" - "dynn_Gullbjelke" - "dynn_Hesby" - { "dynnp_av" "dynn_Sudreim" } - { "dynnp_av" "dynn_Norge" } - "dynn_Ulfhilde" - { "dynnp_av" "dynn_Aurland" } - "dynn_KormA_kur" - "dynn_Gautur" - "dynn_Kvaran" - "dynn_EldjA_rn" - "dynn_MjO_ll" - "dynn_NO_tt" - "dynn_BlO_ndal" - "dynn_Finne" - "dynn_Orri" - "dynn_GrO_nske" - "dynn_Nordal" - "dynn_TrA_tte" - "dynn_KjA_rnested" - "dynn_BjO_rk2" - "dynn_Dosenrode" - "dynn_Haarde" - "dynn_A_sbrning" - "dynn_Oddaverjar" - "dynn_Ormslev" - "dynn_Gnarr" - "dynn_Holmsen" - "dynn_Benkestokk" - "dynn_Handingmann" - "dynn_Aspa" - "dynn_Aurland" - "dynn_BjarkO_y" - "dynn_Andenes" - "dynn_Blakar" - "dynn_Blindheim" - "dynn_Asdal" - "dynn_Hudfat" - "dynn_HA_rd" - "dynn_Kane" - "dynn_Losna" - "dynn_Ringnes" - "dynn_Semeleng" - "dynn_SpA_nheim" - "dynn_Gjesling" - "dynn_Sudrheim" - "dynn_Talgje" - "dynn_Teiste" - "dynn_O_stby" - "dynn_O_strA_t" - "dynn_Rein" - "dynn_Giske" - "dynn_Kamp" - "dynn_Nordhagen" - "dynn_Bolt" - "dynn_Galle" - "dynn_Galtung" - "dynn_Hjerne" - "dynn_Kamp" - "dynn_RO_mer" - "dynn_Skanke" - "dynn_SmO_r" - "dynn_Staur" - "dynn_Skjegge" - "dynn_Gunn" - "dynn_Helmehytte" - "dynn_Akeleye" - "dynn_Brockenhuus" - "dynn_Kamban" - "dynn_Somerled" - "dynn_MO_re" - "dynn_Krabbe" - "dynn_Lodehat" - "dynn_Pagh" - "dynn_Vedel" - "dynn_Rosenkrantz" - "dynn_Kaas" - "dynn_Juel" - "dynn_Bildt" - "dynn_Galte" - "dynn_Drotning" - "dynn_Kjarval" - "dynn_Ekeh" - "dynn_LO_ve" - "dynn_Ormstunga" - "dynn_GoD_i" - "dynn_Gautur" - "dynn_Eyfells" - "dynn_A_sgeir" - "dynn_Kamban" - "dynn_Braghde" - "dynn_BanE_r" - "dynn_Wrede" - "dynn_Balk" - "dynn_Taube" - "dynn_Creutz" - "dynn_Wrangel" - "dynn_Sporre" - "dynn_EhrensvA_rd" - "dynn_Aldersparre" - "dynn_AdelswA_rd" - "dynn_Hlidarendi" - "dynn_UI__I_mair" - "dynn_O_stman" - { "dynnp_av" "dynn_Rogen" } - { "dynnp_av" "dynn_Bergen" } - { "dynnp_av" "dynn_Eidsborg" } - { "dynnp_av" "dynn_Finnmark" } - { "dynnp_av" "dynn_RO_st" } - { "dynnp_af" "dynn_Romerike" } - "dynn_Dovre" - } - - dynasty_names = { - "dynn_Brusastad" - "dynn_Bolt" - "dynn_Giske" - "dynn_Raud" - "dynn_Gullbjelke" - "dynn_Hesby" - { "dynnp_av" "dynn_Sudreim" } - { "dynnp_av" "dynn_Norge" } - "dynn_Ulfhilde" - { "dynnp_av" "dynn_Aurland" } - "dynn_KormA_kur" - "dynn_Gautur" - "dynn_Kvaran" - "dynn_EldjA_rn" - "dynn_MjO_ll" - "dynn_NO_tt" - "dynn_BlO_ndal" - "dynn_Finne" - "dynn_Orri" - "dynn_GrO_nske" - "dynn_Nordal" - "dynn_TrA_tte" - "dynn_KjA_rnested" - "dynn_BjO_rk2" - "dynn_Dosenrode" - "dynn_Haarde" - "dynn_A_sbrning" - "dynn_Oddaverjar" - "dynn_Ormslev" - "dynn_Gnarr" - "dynn_Holmsen" - "dynn_Benkestokk" - "dynn_Handingmann" - "dynn_Aspa" - "dynn_Aurland" - "dynn_BjarkO_y" - "dynn_Andenes" - "dynn_Blakar" - "dynn_Blindheim" - "dynn_Asdal" - "dynn_Hudfat" - "dynn_HA_rd" - "dynn_Kane" - "dynn_Losna" - "dynn_Ringnes" - "dynn_Semeleng" - "dynn_SpA_nheim" - "dynn_Gjesling" - "dynn_Sudrheim" - "dynn_Talgje" - "dynn_Teiste" - "dynn_O_stby" - "dynn_O_strA_t" - "dynn_Rein" - "dynn_Giske" - "dynn_Kamp" - "dynn_Nordhagen" - "dynn_Bolt" - "dynn_Galle" - "dynn_Galtung" - "dynn_Hjerne" - "dynn_Kamp" - "dynn_RO_mer" - "dynn_Skanke" - "dynn_SmO_r" - "dynn_Staur" - "dynn_Skjegge" - "dynn_Gunn" - "dynn_Helmehytte" - "dynn_Akeleye" - "dynn_Brockenhuus" - "dynn_Kamban" - "dynn_Somerled" - "dynn_MO_re" - "dynn_Krabbe" - "dynn_Lodehat" - "dynn_Pagh" - "dynn_Vedel" - "dynn_Rosenkrantz" - "dynn_Kaas" - "dynn_Juel" - "dynn_Bildt" - "dynn_Galte" - "dynn_Drotning" - "dynn_Kjarval" - "dynn_Ekeh" - "dynn_LO_ve" - "dynn_Ormstunga" - "dynn_GoD_i" - "dynn_Gautur" - "dynn_Eyfells" - "dynn_A_sgeir" - "dynn_Kamban" - "dynn_Braghde" - "dynn_BanE_r" - "dynn_Wrede" - "dynn_Balk" - "dynn_Taube" - "dynn_Creutz" - "dynn_Wrangel" - "dynn_Sporre" - "dynn_EhrensvA_rd" - "dynn_Aldersparre" - "dynn_AdelswA_rd" - "dynn_Hlidarendi" - "dynn_UI__I_mair" - "dynn_O_stman" - { "dynnp_av" "dynn_Rogen" } - { "dynnp_av" "dynn_Bergen" } - { "dynnp_av" "dynn_Eidsborg" } - { "dynnp_av" "dynn_Finnmark" } - { "dynnp_av" "dynn_RO_st" } - { "dynnp_af" "dynn_Romerike" } - "dynn_Dovre" - } - - male_names = { - Arnfast A_li A_lfr A_lfgeir AndrE_s ArnbjO_rn ArngrI_mr A_rni A_sbjO_rn A__ke A_skell - Baldr Bersi BjO_rn Bragi BuT_li BA_rD_r Birgir BU_i BO_D_var BO_tO_lfr BrynjO_lfr BergT_O_r - Dan Dagr DY_ri - Egill Einarr EilI_fr Emundr EirI_kr Eysteinn Einar - Freyr Fasti FriT_rI_kr FrIrekr FrO_T_i FO_lki Flosi Filippus Georgius Gregorius - Geirr GuT_mundr GuT_rO_T_r Gunnarr GandA_lfr GnU_pa Gormr GrI_mr GuT_frI_T_r Grettir - Haraldr Haukr Helgi Hrafn HA__kon Hallsteinn Hemingr HO_lmgeirr HrO_lfr Hrani HA_steinn HjA_lmar HrO_T_geirr HrO_D_O_lfr HrE_rekr HY_singr HalfdA_n HerjO_lfr HO_rD_r HO_gni HU_nT_jO_fr - IngO_lfr Ingimar Ingjaldr I_var - JA_tvarD_r JO_rundr JO_n - Karl Kjartan KolbjO_rn Ketill Ketilmundr KnU_tr Kollr KA_ri Kolbeinn - LjO_tr - MagnU_s MarkU_s Mattheus - NjA_ll NikulA_s - Oddr Ormr O_rvar O_nundr O_feigr O_lafr O_ttar O_lvir O_gmundr - Refr Ragnarr RO_gnvaldr Refill RI_kU_lfr - Snorri SigurT_r StarkaT_r Steinn Sturla StyrbjO_rn SumarliT_i Suni Sveinn Sverker SE_mundr SO_lvi SkU_li SigrbjO_rn Sigtryggr StyrkA_r SO_rkvir SkarphE_D_inn SkjO_ldr Sverrir - Tolir T_orbjO_rn T_orbrandr T_orsteinn Tyke T_iO_D_mundr TO_ki T_orfinnr T_orD_r T_orgils T_O_rO_lfr TO_sti T_jO_stO_lfr Tryggvi - U_lfr U_lfhE_D_inn U_lfkell - Vagn VE_mundr Valdemar VigfU_s ValT_jO_fr - Yngvar - } - female_names = { - A_lfrhildr AlfrI_D_r A_lvO_r A__sa A_slaug A__sta A_strI_D_r AuT_r - Birgitta BjO_rg Bodil BO_thildr BergT_O_ra - CecilI_a - DrI_fa Dalla - ED_la Elin ElI_sabet - Freyja Freydi_s - GerT_r GlO_D_ GrI_ma Gunnhildr Gurli GuD_rU_n GrY_la GyrI_D_r GyT_a - HafrI_D_r Halla Helena HO_lmfrI_D_r Huld - Iliana Inga IngfrI_D_r IngibjO_rg IngjerT_r IngirI_D_r - JO_runn - Karin Katarina KrA_ka Kristina - Linda - ME_r MA_lmfrI_D_r Margareta Maria - RI_kiza RO_gnfrI_D_r Ragnhildr - SA_ga Sara SI_g Sif SigrI_D_r Skuld Sofia Svanhildr SignY_ SkjaldvO_r - T_O_ra T_O_rdI_s T_yri T_O_runn T_uriD_r - U_lfhildr Unnr - VigdI__s - Ylva Yrsa Y_r - } - - dynasty_of_location_prefix = "dynnp_av" - - patronym_suffix_male = "dynnpat_suf_sson" - patronym_suffix_female = "dynnpat_suf_sdatter" - always_use_patronym = yes - - mercenary_names = { - { name = "mercenary_company_birchers_of_place" } - } -} -name_list_danish = { - - cadet_dynasty_names = { - { "dynnp_af" "dynn_Glucksburg" } - { "dynnp_af" "dynn_AbelslA_gten" } - { "dynnp_af" "dynn_LO_venbalk" } - "dynn_Porse" - "dynn_Glysing" - { "dynnp_af" "dynn_Danmark" } - { "dynnp_af" "dynn_Viborg" } - "dynn_Sprakalegg" - "dynn_Sturlung" - "dynn_SvI_nfelling" - "dynn_VatnsfirD_ing" - "dynn_Galen" - "dynn_Vogelius" - "dynn_Brock" - "dynn_Banner" - "dynn_Thott" - "dynn_Botner" - "dynn_Darre" - "dynn_Egge" - "dynn_Kusse" - "dynn_Grand" - { "dynnp_af" "dynn_Frondholm" } - "dynn_GO_ye" - "dynn_GrO_n" - "dynn_Friis" - "dynn_Daa" - "dynn_Ryning" - "dynn_Reventlow" - { "dynnp_af" "dynn_Torestorp" } - "dynn_Ulfstand" - "dynn_Hack" - "dynn_Juul" - "dynn_Ulfeldt" - "dynn_Bang" - "dynn_Toll" - "dynn_Vognsen" - "dynn_Juel" - } - - dynasty_names = { - "dynn_Porse" - "dynn_Glysing" - { "dynnp_af" "dynn_Danmark" } - { "dynnp_af" "dynn_Viborg" } - "dynn_Sprakalegg" - "dynn_Sturlung" - "dynn_SvI_nfelling" - "dynn_VatnsfirD_ing" - "dynn_Galen" - "dynn_Vogelius" - "dynn_Brock" - "dynn_Banner" - "dynn_Thott" - "dynn_Botner" - "dynn_Darre" - "dynn_Egge" - "dynn_Kusse" - "dynn_Grand" - { "dynnp_af" "dynn_Frondholm" } - "dynn_GO_ye" - "dynn_GrO_n" - "dynn_Friis" - "dynn_Daa" - "dynn_Ryning" - "dynn_Reventlow" - { "dynnp_af" "dynn_Torestorp" } - "dynn_Ulfstand" - "dynn_Hack" - "dynn_Juul" - "dynn_Ulfeldt" - "dynn_Bang" - "dynn_Toll" - "dynn_Vognsen" - "dynn_Juel" - } - - male_names = { - Abel Anders Anund Asger Balder Benedikt BjOErn Bo Christian Christoffer Edvard Einar Erik Ernst Esben Fredrik Frej Frode Glum Gnupa Gorm Gotfred Gregers Grim Gunnar - HA_rik Halfdan Halvor Hans Harald Helge Hemming Henrik Hjalmar Holger Ingolf JO_rgen JO_rn Jakob Jens Joakim Johann Karl Knud - Kristian Leif Lennart Ludvig Malthe Mads Mikkel Mogens Niels Odd Olav Oluf Peder Poul PridbjO_rn Ragnar Ragnvald Rolf Rune RO_rik Severin Sigfred Sigtryg Sigurd - Sivard Steen Svend SA_mund Thorolf Thorvald Torben TorbjOErn Tord Torfinn Torgils Ture Ubbe Uffe Ulf Valdemar Valentin Vilfred Yngvar - } - female_names = { - Agnethe Anna Asta Benedikte Birgitta Bodil Cecilie Christina Dagmar Dorothea Elisabeth Ellinor Emilie Erika Ester Estrid Frederikke Freja - Grethe Gudrun Gunhild Gyda Helena Ida Ingeborg Ingegerd Ingrid Johanne Jutta Karin Karoline Katarina Katrine Kirsten Klara Lise Luitgard Lykke - Magdalene Maren Margrethe Maria Martha Ragnfrid Ragnhild Rikissa Runa Sanna Signe Sigrid Silje Sofie Svanhild Thyra Tora Thordis A_se - } - - dynasty_of_location_prefix = "dynnp_af" - - patronym_suffix_male = "dynnpat_suf_sen" - patronym_suffix_female = "dynnpat_suf_sdatter" - always_use_patronym = yes - - # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. - pat_grf_name_chance = 80 - mat_grf_name_chance = 0 - father_name_chance = 0 - - # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. - pat_grm_name_chance = 10 - mat_grm_name_chance = 50 - mother_name_chance = 0 - - - - mercenary_names = { - { name = "mercenary_company_border_reavers_band" } - } -} diff --git a/common/culture/name_lists/00_qiangic.txt b/common/culture/name_lists/00_qiangic.txt deleted file mode 100644 index 2ec1215f..00000000 --- a/common/culture/name_lists/00_qiangic.txt +++ /dev/null @@ -1,213 +0,0 @@ -name_list_tangut = { - - dynasty_name_first = yes - - dynasty_names = { - "dynn_Asha" - "dynn_Bailan" - "dynn_Bailang" - "dynn_Cao" - "dynn_Dangchang" - "dynn_Dangxiang" - "dynn_Duola_591A_62C9" - "dynn_Jiao" - "dynn_Li" - "dynn_Liang_6881" - "dynn_Luo" - "dynn_Meiyi" - "dynn_Mihou" - "dynn_Mikemote" - "dynn_Minyak" - "dynn_Miyao" - "dynn_Mjinja" - "dynn_Momu" - "dynn_Mozang_6C92_85CF" - "dynn_Ngwemi_5D6C_540D" - "dynn_Qitai" - "dynn_Ren" - "dynn_Renduo" - "dynn_Tangwu" - "dynn_Toompea" - "dynn_Tuoba" - "dynn_Wang" - "dynn_Wumi" - "dynn_Xibi" - "dynn_Yangmi" - "dynn_Yeli_91CE_5229" - "dynn_Zhao" - "dynn_Zhuli" - } - - cadet_dynasty_names = { - "dynn_Asha" - "dynn_Bailan" - "dynn_Bailang" - "dynn_Cao" - "dynn_Dangchang" - "dynn_Dangxiang" - "dynn_Duola_591A_62C9" - "dynn_Jiao" - "dynn_Li" - "dynn_Liang_6881" - "dynn_Luo" - "dynn_Meiyi" - "dynn_Mihou" - "dynn_Mikemote" - "dynn_Minyak" - "dynn_Miyao" - "dynn_Mjinja" - "dynn_Momu" - "dynn_Mozang_6C92_85CF" - "dynn_Ngwemi_5D6C_540D" - "dynn_Qitai" - "dynn_Ren" - "dynn_Renduo" - "dynn_Tangwu" - "dynn_Toompea" - "dynn_Tuoba" - "dynn_Wang" - "dynn_Wumi" - "dynn_Xibi" - "dynn_Yangmi" - "dynn_Yeli_91CE_5229" - "dynn_Zhao" - "dynn_Zhuli" - } - - male_names = { - Abaoji Abo Abugu Aguo Aguzhi Ala Anquan_5B89_5168 Awu Baozhong Bingchang_79C9_5E38 Chahan Changyuan Changyun Cheng Chengjun Chengzhen Chixin Chonggui Chongrong - Chucai Chun Chunyou Chuzhi Ci Cite Ciwang Dali Dao Daoyin Dashi Deguang Dejing Deming Dewang Deyuan - Di Diela Dilie Dilu Dorlipun Du Duolubu Duoluo Duomi Eda Epang Fangde Fuguzhi Fuliu Fuyi Gambu Gan Gang Gaoligu - Gongmao Gongzao Guan Guang Guangbi Gui Guochang Guozhe Hao He Hechen Hongben Hongdao Hongfan - Hongji Hongyong Hongzhen Hougu Huaijie Huaixiu Hudujin Hui Huiyuan Hunhe Jie Jin Jing Jingtang - Jingyan Jinzhong Jiqian_7E7C_9077 Jiuli Jiushao Jiyuan Jue Jun Junshi Kaigu Kailuo Keda Keling Kenagan Ketuyu - Keyong Khej Kuan Kuge Kui Kuo Liangzuo Lihu Lin Linggong Lishan Liuge Loguo Longqing Longxian Longxu - Longyou Louguo Lu Luju Luzhi Mada Mai Maozhen Min Ming Mingyi Mohui Naihe Nieli Nielieji Ninglingge Noulisi - Nu Paolu Pedie Pusuwan Qi Qian Qianshun Qinde Quchulu Quju Qulie Qulu Renrong Renxian Renxiao Ruan Sachen Sage Salade - Saladi Sha Shao Sheng Shenmi Shi Shihuo Shilu Shinan Shizhong Shu Shulu Si Sicheng Sidao Side Song - Songrui Suogu Tabuyan Tadun Tai Taishan Taishi Taiyi Temei Thjijpo Tianxiang Tingjian Tong Tuguci Tuyu Waihe - Wangrong_65FA_8363 Wansi Wanxin Wei Wen Wenshunu Wenzao Wolila Wotela Wudubu Wuge Wujun Wumo Wuyi Wuyu Wuzheng Xi Xian - Xiangwen Xiaozheng Xiaozhong Xiazhen Xidi Xinie Xiu Xiuge Xjwa Xunning Xwej Yali Yan Yangxi Yanxi Yanzhang - Yaogu Yaoshinu Yi Yibu Yilie Yiliu Yixinning Yongning Yougui Youqing Youyu Yu Yuanhao Yunching Yundeshi Yuyu - Zanhua Zao Zeduan Zengbo Zhangyuan Zhaosan Zhen Zhengchang Zhengyan Zhibuwu Zhigu Zhilugu Zhixian Zhiyuan - Zhong Zhonggong Zhongji Zhongxuan Zhongyan Zhongyuan Zhulie Zongjiao Zongzhen Zuli Zunxu Zuqian - } - - female_names = { - Ai Ankang Bage Bai Bohai Boshi Cao Chadan Chang Changshou Changshounu Chen Chonghua Chu Chunqin Chuo - Cui Cuiba Cuiluan Cuiping Da Daopo Daosheng Deng Deyao Dezhen Dianni Dong Duan Emei Feishan Fengcheng - Fu Fujin Gao Ge Guang Guanyinnu Guo Han Hanyue He Hongdu Hongfu Honghong Hou Hu Hua Huang Huarui Huiming - Jianchang Jiang Jin Jinfeng Jinluan Jiuge Lanling Li Liang Liao Liu Luanluan Ma Meizhu Meizi Meng Miaoniang - Miaoyin Nalan Neiming Noujin Nuoujin Panpan Ping Pucha Puci Puning Pusage Pusuwan Puwei Qian Qiao Qin Qinai - Qingnu Qingzhao Qungu Ren Renyi Ruishun Ruizhi Saige She Shen Shengtang Shi Shige Shiguang Shishi Shizhen - Shuge Shuiqiu Shuogu Shuzen Shuzheng Siao Song Su Sun Tabuyan Tabuye Taige Taihe Tangqiao Tao Taoge Tian - Tong Tudan Wa Wang Wenji Wu Wulinda Wuniang Xia Xiao Xiaoming Xiaoxiao Xingge Xingguo Xinyue Xu Xuanji - Xuanyi Xueying Xunyang Yan Yange Yaniang Yanmu Yanshounu Yanxiu Yaonian Yaoniang Yaoying Ye Yi Yingtian Yingying - Yongqing Yongxing Yu Yuan Yuanzhen Yuniang Yunying Yushan Zhai Zhang Zhaoyun Zheng Zhenjian Zhong - Zhou Zhu Zhuzhu Zihe Ziye - } - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - -} - -name_list_qiang = { - - dynasty_name_first = yes - - cadet_dynasty_names = { - "dynn_Ran" - "dynn_Mang" - "dynn_Pumi" - "dynn_Baima" - "dynn_Rrma" - "dynn_Diexi" - "dynn_Sungqu" - "dynn_Yao" - "dynn_Rong" - "dynn_Shaodang" - "dynn_Xianlian" - "dynn_Dangxiang" - "dynn_Bi_nan" - "dynn_Goujiu" - "dynn_Qian" - "dynn_Qiang" - "dynn_Zhong" - "dynn_Quhu" - "dynn_Li" - "dynn_Fu" - "dynn_Pang" - } - - dynasty_names = { - "dynn_Ran" - "dynn_Mang" - "dynn_Pumi" - "dynn_Baima" - "dynn_Rrma" - "dynn_Diexi" - "dynn_Sungqu" - "dynn_Yao" - "dynn_Rong" - "dynn_Shaodang" - "dynn_Xianlian" - "dynn_Dangxiang" - "dynn_Bi_nan" - "dynn_Goujiu" - "dynn_Qian" - "dynn_Qiang" - "dynn_Zhong" - "dynn_Quhu" - "dynn_Li" - "dynn_Fu" - "dynn_Pang" - } - - male_names = { - #Historical Kings/Chieftains - Chang Dianlian Dianliang Dianyu Diaoku Dize Erku Hong Jiwu Juzhong Kehui Laiwang Langmo Lianchang Lianger Lilu Lu Midanger Miwang Quhulaiwang - Ruoling Shaodang Xiang Xing Yangdiao Yangyu Yizhong Youfei - #Cultural - Antriung Anzjek Bienh Bit Bjit Buk Cheng Chjangdrieu Chjyo Chjung Ciep Cjiih Cjingx Cjiptriung Cjyn Cjynx Cong Crin Cuungdaux Cuungjynx Cynh - Cynhkhieng Dadbyang Deh Dek Drak Driet Driung_iem Dung Ghang Ghaux Ghranx Ghuangh Ghuanx Ghuehkhieng Gi Gianx Gie Ginh Git Giu Hyoh Hyonh - Hyuk Jenx Jighaux Jiikrenx Jit Ju Junxmyon Jyn Kai Kang Khak Khangprak Khimnjak Khix Khokkra Khraix Khruk Kicjengh Kieng Kioi Kionx Kitriung - Krah Kraih Krungh Kuad Kuang Kuangsjed Kuanh Kue Kuh Kungliangh Kungtriak Kyn Kyungx Lin Lit Lyn Minx Minxtriung Mjinhenx Mo Muh Mungcjengh - Myonkuangx Ngak Ngang Ngeucah Ngioitriung Ngiehlyn Ngienhpak Ngran Ngyox Ngyuk Ngyung Njinphox Phox Piengx Poh Prakngienh Prungchjeng Prungngienh - Pyangx Pyoi Pyox Si Sieuhdriuh Sithuaih Sjang_ieng Sjedtriung Sjik Sjim Sjin Sjinghpyoi Sriidaux Sriijah Sriizjeng Syn Synh Synmyox Tanh - Tasuonh Tengx Thek Thrieng Thrik Thrin Thryn Thungh Tokzsiangx Triebrak Triungngienh Truk Tuan Yk Yoih Yoix Yon Yox Zai Zeghen Ziek Ziemzjenx - Zjex Zjik Zjim Zjitriung Zjynnjin Zjyo Zrix_an Zrixsuonh Zsiang Zsix Zsye Zsyungh - } - - female_names = { - Bauzhai Biyu Bo Changchang Meili Meilin - Ahkum Anchi Chingcjeuh Ghungngyuk Hiangyon Khrauxngyuk Khrauxnje Khrauxyon Kimngyuk Ngyuk Ngyukbuan - Ai Ankang Bage Bai Bohai Boshi Cao Chadan Chang Changshou Changshounu Chen Chonghua Chu Chunqin Chuo - Cui Cuiba Cuiluan Cuiping Da Daopo Daosheng Deng Deyao Dezhen Dianni Dong Duan Emei Feishan Fengcheng - Fu Fujin Gao Ge Guang Guanyinnu Guo Han Hanyue He Hongdu Hongfu Honghong Hou Hu Hua Huang Huarui Huiming - Jianchang Jiang Jin Jinfeng Jinluan Jiuge Lanling Li Liang Liao Liu Luanluan Ma Meizhu Meizi Meng Miaoniang - Miaoyin Nalan Neiming Noujin Nuoujin Panpan Ping Pucha Puci Puning Pusage Pusuwan Puwei Qian Qiao Qin Qinai - Qingnu Qingzhao Qungu Ren Renyi Ruishun Ruizhi Saige She Shen Shengtang Shi Shige Shiguang Shishi Shizhen - Shuge Shuiqiu Shuogu Shuzen Shuzheng Siao Song Su Sun Tabuyan Tabuye Taige Taihe Tangqiao Tao Taoge Tian - Tong Tudan Wa Wang Wenji Wu Wulinda Wuniang Xia Xiao Xiaoming Xiaoxiao Xingge Xingguo Xinyue Xu Xuanji - Xuanyi Xueying Xunyang Yan Yange Yaniang Yanmu Yanshounu Yanxiu Yaonian Yaoniang Yaoying Ye Yi Yingtian Yingying - Yongqing Yongxing Yu Yuan Yuanzhen Yuniang Yunying Yushan Zhai Zhang Zhaoyun Zheng Zhenjian Zhong - Zhou Zhu Zhuzhu Zihe Ziye - } - - - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_ryukyuan.txt b/common/culture/name_lists/00_ryukyuan.txt deleted file mode 100644 index 1380a7b4..00000000 --- a/common/culture/name_lists/00_ryukyuan.txt +++ /dev/null @@ -1,144 +0,0 @@ -name_list_ryukyuan = { - - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - dynasty_names = { - "dynn_Agina" - "dynn_Can" - "dynn_Catan" - "dynn_Cin" - "dynn_Goya" - "dynn_Gusicaa" - "dynn_Gusican" - "dynn_Haniji" - "dynn_Ifa" - "dynn_Iizu" - "dynn_Iribaru" - "dynn_Katcin" - "dynn_Kunjan" - "dynn_Mutubu" - "dynn_Nacijin" - "dynn_Nagu" - "dynn_Nakagusiku" - "dynn_Nakazuni" - "dynn_Sasici" - "dynn_Tamagusiku" - "dynn_Ufugaa" - "dynn_Ufugusiku" - "dynn_Ufusatu" - "dynn_Urasii" - "dynn_Wakugaa" - "dynn_Yeeji" - "dynn_Yuntanza" - } - - cadet_dynasty_names = { - "dynn_Agina" - "dynn_Can" - "dynn_Catan" - "dynn_Cin" - "dynn_Goya" - "dynn_Gusicaa" - "dynn_Gusican" - "dynn_Haniji" - "dynn_Ifa" - "dynn_Iizu" - "dynn_Iribaru" - "dynn_Katcin" - "dynn_Kunjan" - "dynn_Mutubu" - "dynn_Nacijin" - "dynn_Nagu" - "dynn_Nakagusiku" - "dynn_Nakazuni" - "dynn_Sasici" - "dynn_Tamagusiku" - "dynn_Ufugaa" - "dynn_Ufugusiku" - "dynn_Ufusatu" - "dynn_Urasii" - "dynn_Wakugaa" - "dynn_Yeeji" - "dynn_Yuntanza" - } - - male_names = { - Amawari - Bunii - Cinfuku Ciruju - Cuu - Eeji - Furi - Gifun - Gusamaru - Han_anci Haniji - Hasii - Idaru - Iizu - Kamiju - Kanamaru Kanimaci Kanisi - Maci Maciju - Maguji - Maici Maikusa - Makamadu Makatudaru - Mamakaru - Maniusi Manta - Masakai Masanru - Mausi - Mayamatu - Meenu - Min_RK - Ndaru - Sattu - See_i - Shunbajunci Shuntin Shutaru - Siru_RK Sishoo Sitaa - Taci Tafuci - Tama Tamagusiku - Taru_RK Tarumui - Teecuu - Teehara - Teesii - Tuku - Tukuju - Tukutaru - Turaju - Ufusatu - Ukuharu - Umiguru Umijira Umikami Umikana Umikani Umikanimaci Umimaci Uminabi Uminio Uminta Umitaru Umitu Umituku Umitukuju Umitukutaru - Uusu - Yafusu - Yeeji - } - - female_names = { - Kamadu - Kuncasa - Maakadu - Maduru - Maguji - Majini - Makadu Makama Makamadu_2 Makami Makatudaru - Mamaci - Maminaku - Manabi Manandaru Mandaru Manyuku - Masiho - Matamatu - Mausi - Meenu_2 - Sasukasa - Ugiyaka - Umiduru Umikami Umikamitaru Umikana Umikani Umimaduru Umimajini Umimanandaru Umimausi Uminabi Umindaru Uminta Umitama Umitu Umiutu - Utumasu Utumi Ututaru - } - - # Keep names changing - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_sahelian.txt b/common/culture/name_lists/00_sahelian.txt deleted file mode 100644 index 3d9d86a2..00000000 --- a/common/culture/name_lists/00_sahelian.txt +++ /dev/null @@ -1,455 +0,0 @@ -name_list_soninke = { - - cadet_dynasty_names = { - "dynn_Cisse" - "dynn_KantE_" - "dynn_Niakhate" - "dynn_Tunkara" - "dynn_BeretE_" - "dynn_TourE_" - "dynn_Saghanogho" - "dynn_Jane" - "dynn_Camara" - "dynn_KhinE_" - "dynn_Camara" - "dynn_Gangara" - "dynn_Masire" - "dynn_Sosso" - "dynn_Diawara" - "dynn_Kalom" - "dynn_Sylla" - "dynn_DiakitE_" - "dynn_Kaloga" - "dynn_DiakhankE_" - "dynn_Diabagate" - "dynn_Garanke" - "dynn_Tyelibele" - "dynn_Jakhanke" - "dynn_Bafour" - "dynn_Suwari" - } - - dynasty_names = { - "dynn_Cisse" - "dynn_KantE_" - "dynn_Niakhate" - "dynn_Tunkara" - "dynn_BeretE_" - "dynn_TourE_" - "dynn_Saghanogho" - "dynn_Jane" - "dynn_Camara" - "dynn_KhinE_" - "dynn_Camara" - "dynn_Gangara" - "dynn_Masire" - "dynn_Sosso" - "dynn_Diawara" - "dynn_Kalom" - "dynn_Sylla" - "dynn_DiakitE_" - "dynn_Kaloga" - "dynn_DiakhankE_" - "dynn_Diabagate" - "dynn_Garanke" - "dynn_Tyelibele" - "dynn_Jakhanke" - "dynn_Bafour" - "dynn_Suwari" - } - - male_names = { - Abubakar Akoi Alayaman BE_rE_tE_ Bathily BadA_ Barri Bamari Bannu Birama Bisi Biyu Bilali Bomou Bunama - Cissi DiobE_ Dabo Dalante Diakhaba Diawara Daffi Dagnokho Doucouri Dalante Dankaran Demba Daoud Diara Dinka Dire - Fissourou Fadiga FA_dazu Fuluku Gane Gassama Gole Jawuru Junkunda - Kaba Kabayo Kalabi Kanafa Kambine Kamo Kassa Kaya Kayna Kinkin Kukuray Kusoy - Marega M_Bali Maghan Majan Mamadi Mamoudou Mari-Djata Masire Musa - NiakhatE_ Nintasanay Wague Wali Wati - Reidja Sy Sylla Sakho Soukhouna Sima SoumarE_ Sakoura Salman Sandaki Soumaba Soumaoro Soundiata Sulayman - Tandian Tunka Tunka-Menin Tabouri Tounkara Touri Tandi Takoi Tib - YansanE_ YatabE_ri Yama Yasiboy Zakoi Zenku - Kiffa Niakhata Biranin Fakoli Niaware Sirman Yerelenko Mana - } - female_names = { - Adja Alima Amita Aoua Aminata Aichata Aissata - Barakissa Bintou Deye Djeneba Djenly Djire - Fatim Fatoumata Gundo Halima Hawa Henda - Ina Kansoleh Kondolon Kadi Kilia Kolonkan - Lorane Mariam NamandjE_ - Nafissa Namiss Nana Newma - SanE_ Sogolon Safiatou Salimata SidibE_ Siya Tekhaye - Youma Zeinab - } - - #founder_named_dynasties = yes - - -} - -name_list_bozo = { - - cadet_dynasty_names = { - "dynn_Jenama" - "dynn_Bangime" - "dynn_Niakhate" - "dynn_Sorogaama" - "dynn_Kelenga" - "dynn_Tieyaxo" - "dynn_Tiema_Ce" - "dynn_Pondori" - "dynn_Kotya" - "dynn_Korondugu" - "dynn_Debo" - "dynn_Konna" - "dynn_Bangande" - "dynn_Namague" - "dynn_Kargue" - "dynn_Bounou" - "dynn_Bara" - } - dynasty_names = { - "dynn_Jenama" - "dynn_Bangime" - "dynn_Niakhate" - "dynn_Sorogaama" - "dynn_Kelenga" - "dynn_Tieyaxo" - "dynn_Tiema_Ce" - "dynn_Pondori" - "dynn_Kotya" - "dynn_Korondugu" - "dynn_Debo" - "dynn_Konna" - "dynn_Bangande" - "dynn_Namague" - "dynn_Kargue" - "dynn_Bounou" - "dynn_Bara" - } - - male_names = { - Abubakar Akoi Alayaman BE_rE_tE_ Bathily BadA_ Barri Bamari Bannu Birama Bisi Biyu Bilali Bomou Bunama - Cissi DiobE_ Dabo Diakhaba Diawara Daffi Dagnokho Doucouri Dalante Dankaran Demba Daoud Diara Dinka Dire - Fissourou Fadiga FA_dazu Fuluku Gane Gassama Gole Jawuru - Kaba Kabayo Kalabi Kanafa Kambine Kassa Kaya Kayna Kinkin Kukuray Kusoy - Marega M_Bali Maghan Majan Mamadi Mamoudou Mari-Djata Musa - NiakhatE_ Nintasanay Wague Wali Wati - Reidja Sy Sylla Sakho Soukhouna Sima SoumarE_ Sakoura Salman Sandaki Soumaba Soumaoro Soundiata Sulayman - Tandian Tunka Tunka-Menin Tabouri Tounkara Touri Tandi Takoi Tib - YansanE_ YatabE_ri Yama Yasiboy Zakoi Zenku - Kiffa Niakhata Biranin Fakoli Niaware Sirman Yerelenko Mana - } - female_names = { - Adja Alima Amita Aoua Aminata Aichata Aissata - Barakissa Bintou Deye Djeneba Djenly Djire - Fadima Fatim Fatoumata Halima Hawa - Ina Kondolon Kadi Kilia Kolonkan - Lorane Mariam NamandjE_ - Nafissa Namiss Nana - SanE_ Sogolon Safiatou Salimata SidibE_ Siya Tekhaye - Youma Zeinab - } - - #founder_named_dynasties = yes - - -} - -name_list_mossi = { - - cadet_dynasty_names = { - "dynn_Mogho" - "dynn_Bawku" - "dynn_Nalerigu" - "dynn_Sankara" - "dynn_Compaore" - "dynn_Kabore" - "dynn_Bance" - "dynn_Rouamba" - "dynn_Dagano" - "dynn_Yennega" - "dynn_Kaya" - "dynn_Nyonyose" - "dynn_Boulsa" - } - - dynasty_names = { - "dynn_Mogho" - "dynn_Bawku" - "dynn_Nalerigu" - "dynn_Sankara" - "dynn_Compaore" - "dynn_Kabore" - "dynn_Bance" - "dynn_Rouamba" - "dynn_Dagano" - "dynn_Yennega" - "dynn_Kaya" - "dynn_Nyonyose" - "dynn_Boulsa" - } - - male_names = { - Ablasse Alfa Alfa_Hano Baaga Baahamma Baalisongi Babatu Bandigoo Bantia Banydoba Banyikuba Baongo Boagri Bogora Boukare Builsa Builsa_Hamaria Bulli - Diaba_Lompo Dulugu Fimba_Onadja Gamambu Gazari Geda Gigma Gima Gmarba Gnounga Gori Gumasida Hamaria Hamicuuri Haminari Hampandi Hanmiliri Hano Huntani - Kalinkuma Kampadi Kampadiboaghi Kanbga Kango Kaongo Karfo Karim Kobga Koom Korogo Korongo Kouka Kourita Kutu - Labi_Diebo Labidiedo Ligidi Lisongi Mabungu Mazi Moogo Nawalagmba Noaga Nonraogo Nyambe Nyambe_Moogo Nyambre - Ouedraogo Pangangri Pataragombe Piiyo Ragongo Raissa Riale Saaga Salam Salma Sambo Sanum Sapilem Sawadogo Saye Sigiri Sorgo - Tantiari Tenin Tidarpo Tigre Tiiga Tokurma Tontuoriba Totebaldbo Tuguri Untani Wedraogo Wendmi Wobgho Wobogoo Wori Wurbendi Wuribiari Wurijuari - Yaaparigu Yadega Yalle Yamba Yamba_Sorgo Yembrima Yembuado Yemde Yempaabu Yendabri Yenhamma Yenkoari Yenkpaari Yensombu Yentagma Yentema Yolomfaogoma - } - female_names = { - Alima Aminata Assita Awa Balkissa Bintou Djeneba Edwige Fatim Fatou - Guessrima Haoua Kadi Kenga Kisswendsida Leila Madina Maimouna Mariam - Nadege Nafi Nafissatou Ouedraogo Pengdwende Pogbi Poko Pokobila Rasmata Relwende Rikki - Salimata Sanpoko Sibiri Solange Tatiana Wamanegdo Wend_Kouni Wenkouni - } - - #founder_named_dynasties = yes - - -} - -name_list_sorko = { - - cadet_dynasty_names = { - "dynn_Sorogaama" - "dynn_Sambere" - "dynn_Jenama" - "dynn_Bangime" - "dynn_Niakhate" - "dynn_Kelenga" - "dynn_Tieyaxo" - "dynn_Tiema_Ce" - "dynn_Pondori" - "dynn_Kotya" - "dynn_Korondugu" - "dynn_Debo" - "dynn_Konna" - "dynn_Bangande" - "dynn_Namague" - "dynn_Kargue" - "dynn_Bounou" - "dynn_Bara" - } - dynasty_names = { - "dynn_Sorogaama" - "dynn_Sambere" - "dynn_Jenama" - "dynn_Bangime" - "dynn_Niakhate" - "dynn_Kelenga" - "dynn_Tieyaxo" - "dynn_Tiema_Ce" - "dynn_Pondori" - "dynn_Kotya" - "dynn_Korondugu" - "dynn_Debo" - "dynn_Konna" - "dynn_Bangande" - "dynn_Namague" - "dynn_Kargue" - "dynn_Bounou" - "dynn_Bara" - } - - male_names = { - Alkamiisa Ammar Ankabi Ar Arabi Aranda - Baba Babba Bada Baki Bani Bano Baru Bay Ber Binta Birma Bisi Biya Biyay Biyo Bonkana Borgo Boumi Buyunbu - Daara Dala Dankataya Dao Dari Dum Dunku Duru - Fadazaw Falaku Far Fari-Mondzo Fay Fi Fodi Hanga Hargani Hin - Igoumou Ikoi Ize Jim - Kaasei Kanafa Kanbu Karaway Karay Karbachi Kayna Keina Kibu_U Kima Kimi Kinba Kinkin Kiray Kisha Kodama Koi Koize Kolon Komi Koy Ku Kukiya Kukura Kuli Kulun Kumay Kun Kur Kusoy Kusur - Laraba Malla Mar Mar_Chindin Mayroumfa Missi Morobani - Nari Nuh Nunta Ouankoy Samsou-Beri Sanay Shinyunbu Silman Sorko_Ije - Takoi Tib Tomo Wunka Yama Yuma Zakoi Zalil Zunku - } - - female_names = { - Adama Aisha Alkamiisa Amina Aminah Azzah - Bilqis Chindi Daara Dangey - Fanta Fatima Fatimah Fitila - Gando Geyka Hassana Hawa Huseina Kouton - Lambu Layla Mecca Medina Nuru Tarifa Teko Zaynab - } - - #founder_named_dynasties = yes - - -} - -name_list_gaw = { - - cadet_dynasty_names = { - "dynn_Sonni" - "dynn_Askiya" - "dynn_Zarma" - "dynn_Djerma" - "dynn_Isawaghen" - "dynn_Koyraboro" - "dynn_Zabarima" - "dynn_Dendi" - "dynn_Korandje" - "dynn_Tadaksahak" - "dynn_Tasawak" - "dynn_Koyra" - "dynn_Keraw" - "dynn_Kudi" - "dynn_Kuru" - "dynn_Tondi" - "dynn_Kaukau" - "dynn_Gawgaw" - } - - dynasty_names = { - "dynn_Sonni" - "dynn_Askiya" - "dynn_Zarma" - "dynn_Djerma" - "dynn_Isawaghen" - "dynn_Koyraboro" - "dynn_Zabarima" - "dynn_Dendi" - "dynn_Korandje" - "dynn_Tadaksahak" - "dynn_Tasawak" - "dynn_Koyra" - "dynn_Keraw" - "dynn_Kudi" - "dynn_Kuru" - "dynn_Tondi" - "dynn_Kaukau" - "dynn_Gawgaw" - } - - male_names = { - Alkamiisa Ammar Ankabi Ar Arabi Aranda - Baba Babba Bada Baki Bani Bano Baru Bay Ber Binta Birma Bisi Biya Biyay Biyo Bonkana Borgo Boumi Buyunbu - Daara Dala Dankataya Dao Dari Dum Dunku Duru - Fadazaw Falaku Far Fari-Mondzo Fay Fi Fodi Hanga Hargani Hin - Igoumou Ikoi Ize Jim - Kaasei Kanafa Kanbu Karaway Karay Karbachi Kayna Keina Kibu_U Kima Kimi Kinba Kinkin Kiray Kisha Kodama Koi Koize Kolon Komi Koy Ku Kukiya Kukura Kuli Kulun Kumay Kun Kur Kusoy Kusur - Laraba Malla Mar Mar_Chindin Mayroumfa Missi Morobani - Nari Nuh Nunta Ouankoy Samsou-Beri Sanay Shinyunbu Silman Sorko_Ije - Takoi Tib Tomo Wunka Yama Yuma Zakoi Zalil Zunku - } - - female_names = { - Adama Aisha Alkamiisa Amina Aminah Azzah - Bilqis Chindi Daara Dangey - Fanta Fatima Fatimah Fitila - Gando Geyka Hassana Hawa Huseina Kouton - Lambu Layla Mecca Medina Nuru Tarifa Teko Zaynab - } - - #founder_named_dynasties = yes - - -} - -name_list_songhai = { - - cadet_dynasty_names = { - "dynn_Sonni" - "dynn_Askiya" - "dynn_Zarma" - "dynn_Djerma" - "dynn_Isawaghen" - "dynn_Koyraboro" - "dynn_Zabarima" - "dynn_Dendi" - "dynn_Korandje" - "dynn_Tadaksahak" - "dynn_Tasawak" - "dynn_Koyra" - "dynn_Keraw" - "dynn_Kudi" - "dynn_Kuru" - "dynn_Tondi" - "dynn_Kaukau" - "dynn_Gawgaw" - "dynn_Sorogaama" - "dynn_Sambere" - "dynn_Jenama" - "dynn_Bangime" - "dynn_Niakhate" - "dynn_Kelenga" - "dynn_Tieyaxo" - "dynn_Tiema_Ce" - "dynn_Pondori" - "dynn_Kotya" - "dynn_Korondugu" - "dynn_Debo" - "dynn_Konna" - "dynn_Bangande" - "dynn_Namague" - "dynn_Kargue" - "dynn_Bounou" - "dynn_Bara" - } - - dynasty_names = { - "dynn_Sonni" - "dynn_Askiya" - "dynn_Zarma" - "dynn_Djerma" - "dynn_Isawaghen" - "dynn_Koyraboro" - "dynn_Zabarima" - "dynn_Dendi" - "dynn_Korandje" - "dynn_Tadaksahak" - "dynn_Tasawak" - "dynn_Koyra" - "dynn_Keraw" - "dynn_Kudi" - "dynn_Kuru" - "dynn_Tondi" - "dynn_Kaukau" - "dynn_Gawgaw" - "dynn_Sorogaama" - "dynn_Sambere" - "dynn_Jenama" - "dynn_Bangime" - "dynn_Niakhate" - "dynn_Kelenga" - "dynn_Tieyaxo" - "dynn_Tiema_Ce" - "dynn_Pondori" - "dynn_Kotya" - "dynn_Korondugu" - "dynn_Debo" - "dynn_Konna" - "dynn_Bangande" - "dynn_Namague" - "dynn_Kargue" - "dynn_Bounou" - "dynn_Bara" - } - - male_names = { - Abi Abu Adamu Ahmad Al-Hajj Alayaman Ali Alkamiisa Ammar Ankabi Ar Arabi Aranda - Baba Babba Bada Baki Bakr Bani Bano Baru Bassarou Bay Ber Binta Birma Bisi Biya Biyay Biyo Bonkana Borgo Boumi Bukar Buyunbu - Daara Dala Dankataya Dao Daouda Dari Dawud Dum Dunku Duru - Fadazaw Falaku Far Fari-Mondzo Fay Fi Fodi - Hanga Hargani Harun Hassan Hin Huseini - Ibrahim Igoumou Ikoi Ishaq Is_mail Ize Jim - Kaasei Kanafa Kanbu Karaway Karay Karbachi Kayna Keina Kibu_U Kima Kimi Kinba Kinkin Kiray Kisha Kodama Koi Koize Kolon Komi Koy Ku Kukiya Kukura Kuli Kulun Kumay Kun Kur Kusoy Kusur - Laraba Maammarou Mahmud Malla Mar Mar_Chindin Mayroumfa Missi Morobani Moussa Muhammed Musa - Nari Nuh Nunta Ouankoy - Samsou Samsou-Beri Sanay Shams Shinyunbu Silman Sorko_Ije Sulayman Sunni - Takoi Tib Tomo Uthman Wunka Yama Yaqub Yasiboy Yuma Zakoi Zalil Zunku - } - - female_names = { - Adama Aisha Alkamiisa Amina Aminah Azzah - Bilqis Chindi Daara Dangey - Fanta Fatima Fatimah Fitila - Gando Geyka Hassana Hawa Huseina Kouton - Lambu Layla Mecca Medina Nuru Tarifa Teko Zaynab - } - - #founder_named_dynasties = yes - - -} diff --git a/common/culture/name_lists/00_senegambian.txt b/common/culture/name_lists/00_senegambian.txt deleted file mode 100644 index f58874cc..00000000 --- a/common/culture/name_lists/00_senegambian.txt +++ /dev/null @@ -1,80 +0,0 @@ -name_list_pulaar = { - dynasty_names = { - "dynn_Diarisso" - "dynn_BeretE_" - "dynn_KE_djou" - "dynn_Moussa" - "dynn_Sonni" - "dynn_Askiya" - "dynn_Gurmanche" - "dynn_Nungu" - "dynn_Mossi" - } - - male_names = { - Amar Bakar Biram Boukar Brak Caaka Djillakh Fanaan Gejopal Gnilane Godomat Jegan Jogo Jom - Kumba Laasuk Maane Maha Mahecor Maysa Mbanyik Mbar Mbooj Mbouna Ndoffene Niokhobaye Njekeh - Pateh Sanjan Sanmoon Semou Tasse Tening Waagaan Waali Yandeh Yerim - } - - female_names = { - Awo Demba Doye Faaduma Fatim Fatoumata Malado Maram Mbodj Ndate Ndieumbeutt Ndoung Ndoye Sall Yalla Yumeyga - } - - #founder_named_dynasties = yes - - -} - -name_list_serer = { - dynasty_names = { - "dynn_Diarisso" - "dynn_BeretE_" - "dynn_KE_djou" - "dynn_Moussa" - "dynn_Sonni" - "dynn_Askiya" - "dynn_Gurmanche" - "dynn_Nungu" - "dynn_Mossi" - } - - male_names = { - Amar Bakar Biram Boukar Brak Caaka Djillakh Fanaan Gejopal Gnilane Godomat Jegan Jogo Jom - Kumba Laasuk Maane Maha Mahecor Maysa Mbanyik Mbar Mbooj Mbouna Ndoffene Niokhobaye Njekeh - Pateh Sanjan Sanmoon Semou Tasse Tening Waagaan Waali Yandeh Yerim - } - - female_names = { - Awo Demba Doye Faaduma Fatim Fatoumata Malado Maram Mbodj Ndate Ndieumbeutt Ndoung Ndoye Sall Yalla Yumeyga - } - - #founder_named_dynasties = yes - - -} - -name_list_wolof = { - dynasty_names = { - "dynn_Ndyabe" - "dynn_Jolof" - "dynn_Kayor" - "dynn_Silla" - "dynn_Namandiru" - "dynn_Jowol" - } - - male_names = { - Amar Bakar Biram Boukar Brak Caaka Djillakh Fanaan Gejopal Gnilane Godomat Jegan Jogo Jom - Kumba Laasuk Maane Maha Mahecor Maysa Mbanyik Mbar Mbooj Mbouna Ndoffene Niokhobaye Njekeh - Pateh Sanjan Sanmoon Semou Tasse Tening Waagaan Waali Yandeh Yerim - } - - female_names = { - Awo Demba Doye Faaduma Fatim Fatoumata Malado Maram Mbodj Ndate Ndieumbeutt Ndoung Ndoye Sall Yalla Yumeyga - } - - #founder_named_dynasties = yes - - -} diff --git a/common/culture/name_lists/00_somalian.txt b/common/culture/name_lists/00_somalian.txt deleted file mode 100644 index 7e9221c0..00000000 --- a/common/culture/name_lists/00_somalian.txt +++ /dev/null @@ -1,295 +0,0 @@ -name_list_somali = { - - cadet_dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - "dynn_Benaadir" - "dynn_Muqri" - "dynn_Garen" - "dynn_Jid_ati" - "dynn_Ajuraan" - "dynn_Kaariye" - "dynn_Gidir" - "dynn_Sixaawle" - "dynn_Murusade" - "dynn_Reewin" - "dynn_Majerteen" - "dynn_Darwiish" - "dynn_Geledi" - "dynn_Hiraab" - "dynn_Sabti" - "dynn_Foorculus" - "dynn_Abgal" - "dynn_Hawadle" - "dynn_Galjaal" - "dynn_Bimal" - "dynn_Siwakron" - "dynn_Deshishie" - "dynn_Wabeneya" - "dynn_Kaptanle" - "dynn_Makahil" - "dynn_Dolbahante" - "dynn_Maalim" - "dynn_Helai" - "dynn_Ogaadeen" - "dynn_Leelkase" - } - - dynasty_names = { - "dynn_Warsangali" - "dynn_Darod" - "dynn_Dir" - "dynn_Hawiye" - "dynn_Isaaq" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Marehan" - "dynn_Bartire" - "dynn_Rahanweyn" - "dynn_Benaadir" - "dynn_Muqri" - "dynn_Garen" - "dynn_Jid_ati" - "dynn_Ajuraan" - "dynn_Kaariye" - "dynn_Gidir" - "dynn_Sixaawle" - "dynn_Murusade" - "dynn_Reewin" - "dynn_Majerteen" - "dynn_Darwiish" - "dynn_Geledi" - "dynn_Hiraab" - "dynn_Sabti" - "dynn_Foorculus" - "dynn_Abgal" - "dynn_Hawadle" - "dynn_Galjaal" - "dynn_Bimal" - "dynn_Siwakron" - "dynn_Deshishie" - "dynn_Wabeneya" - "dynn_Kaptanle" - "dynn_Makahil" - "dynn_Dolbahante" - "dynn_Maalim" - "dynn_Helai" - "dynn_Ogaadeen" - "dynn_Leelkase" - } - - male_names = { - Abadir Abdale Abdirahman Abdulah Abram Abu-Bakr Adan Adeer Ahmed Ali Amlale Aul Awe - Aydahis Balad Baraka Barakat Ciise Dagale Dhidhin Hamalmal Hamar Hamid Hantale Haqq Harire - Ibrahim Irir Isman Jamal Kadhafo Kedafu Khalaf Liban Mahammad Mahamed - Mahamud Mansur Nahwi Naleye Nassir Nur Omer Sa_ad Sa_adaddin Sabir Sabr Sabraddin - Sadiq Salah Siciid Talha Umar Umardin Yayyo Yusuf Zuber - } - female_names = { - Aasha Adey Alaso Ambro Amburo Asha Asli Astur Awa Awrala Ayaan Barni Basr Beydaan - Billan Canab Cawo Deeqa Delombira Dobira Faadumo Fathia Fawzia Geesi Haweeya Hibaaq - Hodan Hoodo Iftiin Jiinow Khadra Ladan Leyla Libin Luula Magol Maka Mariam - Mulki Nasteexo Sagal Sahra Sufia Ubah Ubax Waris Xalwo - } - - #founder_named_dynasties = yes - - - - mercenary_names = { - { name = "mercenary_company_company_of_the_leopard" } - { name = "mercenary_company_gondershe_band" } - { name = "mercenary_company_guardians_of_almnara" } - } -} - -name_list_beja = { - - cadet_dynasty_names = { - "dynn_Zanafij" - "dynn_Dabaniya" - "dynn_Shakira" - "dynn_Artegia" - "dynn_Ashraf" - "dynn_Shih" - "dynn_Souh" - "dynn_Hajar" - "dynn_Dherbe" - "dynn_Hejer" - "dynn_Dujn" - "dynn_Gash" - "dynn_Haffara" - "dynn_Karakinab" - "dynn_Halenga" - "dynn_Bisharin" - "dynn_Amarar" - "dynn_Almada" - "dynn_Hadarat" - "dynn_Hijab" - "dynn_Ama_ir" - "dynn_Manasa" - "dynn_Arbab_a" - "dynn_Balliyin" - } - - dynasty_names = { - "dynn_Zanafij" - "dynn_Dabaniya" - "dynn_Shakira" - "dynn_Artegia" - "dynn_Ashraf" - "dynn_Shih" - "dynn_Souh" - "dynn_Hajar" - "dynn_Dherbe" - "dynn_Hejer" - "dynn_Dujn" - "dynn_Gash" - "dynn_Haffara" - "dynn_Karakinab" - "dynn_Halenga" - "dynn_Bisharin" - "dynn_Amarar" - "dynn_Almada" - "dynn_Hadarat" - "dynn_Hijab" - "dynn_Ama_ir" - "dynn_Manasa" - "dynn_Arbab_a" - "dynn_Balliyin" - } - - male_names = { - Abad Abdal-Aziz Abdallah Adara Aderob Ali Ali-Baba Ali-Nabit Amar Amer Amil Anakw Angrun Aqib - Barakwin Barik Birka Bishara Bosh Elagai Fadil Ghol Gwilai Hadab Hadat Hamad Hassai Hilal - Kahil Kanun Kuka Kurb Mohammed Nur Olbab Otman Qol Rayaneit Shai_a Sheib Sina_eif Sinder - Telu Wailali Zanaf Zubeyr - - } - - female_names = { - Aaliyah Aamina Aamira Aaqila Aarifa Aazzi Adelah Adiba Adilah Adilia Adiva Adjan Aeesha Aesha Aisha Amira Badeea Badia Badra Bahac - Bahiyya Bajila Bakka Baraah Barakah Baria Bashira Basilie Basima Basimah Bghnat Bibya Bilqis Cala Canh_a Cantara D_r_ifa Daisha Dalal Dasin - Dema Dimah Dinara Dua Durra Durriyya Edza Eleonorka Faghissa Fahriya Fariza Fedada Fer_r_udja Gedduda Ghida Ghnima Guraya Gwejda H_edda - Hadiya Hawwa Hemu Herru Iija Iiju IttU_ Izza Jaida Jdira Jeddjiga Kahina Kamila Kanimana Kella Kenwa Kisa Kulla Kwella Lalla Laysa Lem_an Lemta - Lumsi Lunja Lwiza Lyaqut Mamma Massa Meghighda Melek Menna Menza Mernissa Monica Myassa Najiba R_uza Ra_isa Rahima Randja Rula Sadiqa - Salaama Sekkura Siddiqa Silya Siman T_awes T_item Tadefi Tadla Tadmut Tafrara Tafsut Tagwillult Taheyyatt Takama Taklit Talalit Taljat Tament - Tamimunt Tamrust Tanaszart Tanebdatt Tanefzawit Tanest Taninna Tarifa Tariwelt Tasa Tasa_fut Taszellayt Tatbirt Tati Taweckint Tawenza Tawnat - Tawzalt Tayri Tayyurt Tazdayt Tazenkwedt Tazirit Tazrurt Tella Temzi Tfit Tigmi Tikinas Tilelli Timmi Tinhinan Tintadefi Tintifawin Tinzert Tisent - Tislit Titbirt Titrit Tizemt Tiziri Triya Tudert Tuh_r_ict Tureght Ultafa Wenza Wnissa Wrina Z_diant Z_ergha Zaghwa Zahida Zamba Zibba Zilgum Zubayda - Zunagha Zwina Zwira - } - - dynasty_of_location_prefix = "dynnp_mn" - - patronym_prefix_male = "dynnpat_pre_ibn" - patronym_prefix_female = "dynnpat_pre_bint" - - #founder_named_dynasties = yes - - pat_grf_name_chance = 60 - mat_grf_name_chance = 20 - father_name_chance = 10 - - pat_grm_name_chance = 40 - mat_grm_name_chance = 20 - mother_name_chance = 30 - - - - mercenary_names = { - { name = "mercenary_company_army_of_the_crossing" } - { name = "mercenary_company_beja_place_band" } - { name = "mercenary_company_riders_of_the_mountains" } - } -} - -name_list_afar = { - - cadet_dynasty_names = { - "dynn_Sabti" - "dynn_Foorculus" - "dynn_Abgal" - "dynn_Hawadle" - "dynn_Galjaal" - "dynn_Bimal" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - dynasty_names = { - "dynn_Sabti" - "dynn_Foorculus" - "dynn_Abgal" - "dynn_Hawadle" - "dynn_Galjaal" - "dynn_Bimal" - "dynn_Digil" - "dynn_Mirifle" - "dynn_Gadabuursi" - "dynn_Akishe" - "dynn_Biyomaal" - "dynn_Surre" - "dynn_Gurgura" - "dynn_Issa" - "dynn_Harti" - "dynn_Bartire" - "dynn_Rahanweyn" - } - - male_names = { - Abadir Abdale Abdirahman Abdulah Abram Abu-Bakr Adan Adeer Ahmed Ali Amlale Aul Awe - Aydahis Balad Baraka Barakat Ciise Dagale Dhidhin Hamalmal Hamar Hamid Hantale Haqq Harire - Ibrahim Irir Isman Jamal Kadhafo Kedafu Khalaf Liban Mahammad Mahamed - Mahamud Mansur Nahwi Naleye Nassir Nur Omer Sa_ad Sa_adaddin Sabir Sabr Sabraddin - Sadiq Salah Siciid Talha Umar Umardin Yayyo Yusuf Zuber - } - - female_names = { - Aasha Adey Alaso Ambro Amburo Asha Asli Astur Awa Awrala Ayaan Barni Basr Beydaan - Billan Canab Cawo Deeqa Delombira Dobira Faadumo Fathia Fawzia Geesi Haweeya Hibaaq - Hodan Hoodo Iftiin Jiinow Khadra Ladan Leyla Libin Luula Magol Maka Mariam - Mulki Nasteexo Sagal Sahra Sufia Ubah Ubax Waris Xalwo - } - - #founder_named_dynasties = yes - - - - mercenary_names = { - { name = "mercenary_company_company_of_the_leopard" } - { name = "mercenary_company_gondershe_band" } - { name = "mercenary_company_guardians_of_almnara" } - } -} diff --git a/common/culture/name_lists/00_tai.txt b/common/culture/name_lists/00_tai.txt deleted file mode 100644 index a4db91dc..00000000 --- a/common/culture/name_lists/00_tai.txt +++ /dev/null @@ -1,73 +0,0 @@ -name_list_tai = { - - cadet_dynasty_names = { #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - "dynn_MO_ng_Pai" - } - - dynasty_names = { - "dynn_lu" - "dynn_yuan" - "dynn_Ahom" - "dynn_phuan" - "dynn_phu" - "dynn_tho" - "dynn_saen" - "dynn_Lao" - "dynn_Mangrai" - "dynn_Vorovangsa" - "dynn_phra" - } - - cadet_dynasty_names = { - "dynn_lu" - "dynn_yuan" - "dynn_Ahom" - "dynn_phuan" - "dynn_phu" - "dynn_tho" - "dynn_saen" - "dynn_Lao" - "dynn_Mangrai" - "dynn_Vorovangsa" - "dynn_phra" - } - - male_names = { - Arthit Arun Kamon Klahan Mongkut Prasert Preecha Sakchai Somboon Somchai Somporn Somsak - Suchart Sunan Suriya Thaksin Adichai Adisai Adisak Adithep Aekkachai Aekkarat - Aekkasit Itthichai Itthikon Itthiphon Akhom Alongkon Amnat Amnuai Anan Anantachai Angkhan - Annop Anucha Anuson Anuthat Anuthin Anuwat Aphai Aphichai Aphichat Aphinan Aphirat Aphisak Aphisit - Aphiwat Arawan Arunchai Arunsak Athip Athon Atsawin Atthachai Awut Bandit - Boribun Bunchai Bunchu Bunkoet Bunloet Bunma Bunmi Bunrit Bunsi Chai Chaichan Chaimongkhon - Chaisak Chaiya Chaiyot Chakhon Chakkraphan Chakraphat Chakkrit Chaloemchai Chaloemphon - Chamnan Chanchai Channarong Charat Charoensak Charun Chatri Chet Chira Chirawat Choetchai - Chuchai Chusak Damri Damrong Danaisak Decha Direk Dusit Ekkachai Ekkaphon Heyiyw Itsara - Kamphon Kanok Kasem Kawin Ket Khamron Khomsan Khwanchai Kiat Kirati Kitti Kokiat Kowit Kriang Kritsana - Kunpimook Loetchai Mana Manit Methi Mongkhon Montri Nakhon Narit Narong Nawin Nimit Niran - Ongat Ophat Pawin Phachoen Phairot Phaisit Phaithun Phanudet Phanuphat Phatsakon Phibun - Phichit Phira Phiraphon Phisit Phondet Phuri Piti Piya Plaek Pongphon Prachak Prakan Praphat - Prasit Prasop Prawit Premanan Rachan Rakphong Rawi Rungrot Saenchai Samat Sanchai Sangwan - Sansoen Santhat Saranyu Sarathoon Sarut Siri Sith Siwa Somdet Somkiat Somyot Songkhram Suchai - Sud Supphachai Sura Suradet Suriyasak Suthon Sutthisak Suwan Thanat Thanong Thawi Thep Thira - Thong Thotsaphon Thuanthong Ubom Ukrit Vira Wachira Wanlop Watchara Wayu Wichai Wikrom Winai - Wirat Yai Yothin - } - - female_names = { - Amporn Among Intira Kanchana Kanda Kanya Kulap Lalita Lawan Malai Mali Pakpao Porntip Pranee - Ratree Sasithorn Siriporn Sukhon Ubon Wattana Achariya Ahnatchaya Amara Amarin - Ampha Amphawan Amphon Anchali Angkhana Anongrat Anongwan Anothai Anulek Anuthida Anya Aphinya - Aphiradi Apichaya Apson Aranya Arirat Aritsara Aruni Arunrat Arunwan Archara Bangon - Bannarasee Benchamat Bencharat Bua Bunga Bunrat Buppha But Chaba Chailai Chaluai Chanthana - Chinda Chiraphon Chonthicha Chutharat Daorueang Darika Daruni Dokmai Duangduean Duangphon Duangrat - Emon Fah Fon Gam Houng Kamonrat Kanlaya Kanlayani Kannika Kelaya Khwanchai Kluaimai Kritsana Kusuman - Lakkhana Laksami Lamai Lamun Maew Maladee Mangkhut Mathawi Metta Mukda Naiyana Namfon Namphueng - Nanthiya Napha Naruemon Natthaya Nicha Nisa Nittaya Onuma Onwan Orathai Pasuta Patcharin Patthama - Phailin Phanthittra Phatchara Phen Piya Pranpriya Prapha Pratthana Rada Rampha Rungrat Saengarun - Saengduean Saichai Saifon Sairung Salisa Sangwan Sasikan Sawini Sawitri Somsuda Sopha Suangsuda - Suchitra Sudarat Sukanda Sunthari Surang Suwilai Tanshi Thanya Thatsani Urai Usa Wandi Wannapha - Wanni Warali Watsana Wilai Wimon Yanin Yiwa Yupha - } -} - - diff --git a/common/culture/name_lists/00_tibetan.txt b/common/culture/name_lists/00_tibetan.txt deleted file mode 100644 index 0413f794..00000000 --- a/common/culture/name_lists/00_tibetan.txt +++ /dev/null @@ -1,878 +0,0 @@ -name_list_bodpa = { - - cadet_dynasty_names = { - "dynn_Adro" #(a gro) - "dynn_Akyong" #(a skyong) - "dynn_Apang" #(a phang) - "dynn_Arik" #(a rig) - "dynn_Azha" #('a zha) - "dynn_Ba" #(sba) - "dynn_Ber" #(ber) - "dynn_Bitsa" #(sbi tsha) - "dynn_Bochung" #(bo chung) - "dynn_ChakdU__Nyarong" #(lcags mdud nyag rong) - "dynn_Chakgong" #(lcag gong) - "dynn_Chakhung" #(lcag khung) - "dynn_ChE_" #(lce) - "dynn_Chim" #(mchims) - "dynn_Cho" #(mcho) - "dynn_Chungpa" #(gcung pa) - "dynn_Dak" #(dwags) - "dynn_Dawa" #(zla ba) - "dynn_Den_Atub_Tsang" #('dan a thub tshang) - "dynn_Denma" #(ldan ma) - "dynn_DE_pa_TO_npo" #(de pa ton po) - "dynn_Dilgo" #(dil mgo) - "dynn_Dong" #(ldong) #Great Ancestral Clan - "dynn_Doring" #(rdo ring) - "dynn_Dra" #(sbra) #Great Ancestral Clan - "dynn_Drangti" #(drang ti) - "dynn_DrE_" #('bre) - "dynn_Drenka" #(bran ka) - "dynn_Dro" #(gro) - "dynn_Drokmi" #('brog mi) - "dynn_Drom" #('brom) - "dynn_Dru" #('bru) - "dynn_Dru_2" #('dru) #also zhangzhung - "dynn_Dzeng" #('dzeng) - "dynn_Ga" #(dga') - "dynn_Ga_2" #(rgwa) - "dynn_Gar" #(mgar) - "dynn_Gar_Ratsang" #(mgar ra tsang) - "dynn_Gazi" #(ga zi) - "dynn_Ger" #(sger) - "dynn_GE_tsE_" #(dge rtse) - "dynn_GO_" #('gos) - "dynn_Go" #(sgo) #Great Ancestral Clan - "dynn_Gung" #(gung) #also tsangpa - "dynn_Gurib" #(gu rib) #also zhangzhung - "dynn_Gya" #(rgya) #also tsangpa - "dynn_Gyakong_ShE_drubtsang" #(rgya kong bshad sgrub tshang) - "dynn_Gyamo" #(rgya mo) - "dynn_Gyanak_Rawa" #(rgya nag ra ba) - "dynn_Gyangkhar" #(gyang khar) - "dynn_Gyer" #(dgyer) - "dynn_GyU_" #(rgyus) - "dynn_Ja" #(bya) - "dynn_Jadra" #(ja sbra) - "dynn_Janak" #(bya nag) - "dynn_Ju" #('ju) - "dynn_Khangsar" #('khang gsar) #also tsangpa - "dynn_Kharchen" #(mkhar chen) - "dynn_KhE_mE_" #(khe smad) - "dynn_KhO_n" #('khon) #also tsangpa - "dynn_Khyungpo" #(khyung po) - "dynn_Kyasu" #(skya su) - "dynn_Kyi" #(kyi) - "dynn_KyO_" #(skyod) - "dynn_Kyuchok" #(khyu mchog) - "dynn_Kyura" #(skyu ra) - "dynn_Lang" #(rlangs) - "dynn_Lasum" #(la gsum) - "dynn_Len" #(glan) - "dynn_Lhalung" #(lha lung) - "dynn_Ling" #(gling) - "dynn_LingmO_" #(gling mod) - "dynn_Lingtsang" #(gling tshang) - "dynn_Lomi" #(lo mi) - "dynn_Ma" #(rma) - "dynn_ME_" #(me) - "dynn_MengE_" #(man dge) - "dynn_Meu" #(rme'u) #also tsangpa - "dynn_Mu" #(rmu) #Great Ancestral Clan - "dynn_Mukpo" #(smug po) - "dynn_Naktso" #(nag tsho) - "dynn_NamsE_ling" #(rnam sras gling) - "dynn_Nanam" #(sna nam) - "dynn_Ngen" #(rngan) - "dynn_Ngenlam" #(ngan lam) - "dynn_NgojE_" #(ngor rje) - "dynn_Ngok" #(rngog) - "dynn_NgU_lchu" #(dngul chu) #also tsangpa - "dynn_Ngupa" #(rngu pa) - "dynn_Nup" #(gnubs) #also tsangpa - "dynn_Nya" #(gnya') - "dynn_Nyak" #(gnyags) - "dynn_NyakrE_" #(nyag ras) - "dynn_NyakshU_l" #(nyag shul) - "dynn_Nyang" #(myang) - "dynn_NyO_" #(gnyos) - "dynn_Odren" #('o bran) - "dynn_Pugyel" #(spu rgyal) - "dynn_Ra" #(dbra) - "dynn_Rakar_Khyungpo" #(dbra kar khyung po) - "dynn_Ram" #(ram) - "dynn_Rok" #(rog) - "dynn_SE_" #(bse) #Great Ancestral Clan - "dynn_Sha" #(gsha) - "dynn_Shar" #(shar) #also tsangpa - "dynn_Sharkhapa" #(shar kha pa) #also tsangpa - "dynn_Shen" #(gshen) #also tsangpa - "dynn_Shingkhamga" #(shing khams sga) - "dynn_ShU_pu" #(shud phu) - "dynn_Sumpa" #(sum pa) #also sumpa - "dynn_Tati_Zhamar" #(ta ti zha mar) - "dynn_Tong" #(stong) #Great Ancestral Clan #also sumpa - "dynn_TO_nmi" #(thon mi) - "dynn_Trokho_NumE__PelshU_l" #(khro kho nu ma'i dpal shul) - "dynn_Trotsik" #(spro tshig) - "dynn_TsE_dong" #(rtse gdong) - "dynn_TsongpO_n" #(tshong dpon) - "dynn_Tukwan" #(thu'u bkwan) - "dynn_Tum" #(gtum) #also tsangpa - "dynn_Wangda" #(dbang mda') - "dynn_WelshU_l" #(dbal shul) - "dynn_Yi" #(g.yi) - "dynn_Yu" #(g.yu) - "dynn_Yudra" #(g.yu sgra) - "dynn_Yungok" #(g.yu rngog) - "dynn_Zamtsa_Ngorang" #(zam tsha ngo rang) - "dynn_Zeu" #(ze'u) - "dynn_Zhak" #(bzhag) - "dynn_Zhangpa" #(zhang pa) - "dynn_Zhiwatsang" #(zhi ba tshang) - "dynn_Zi" #(gzi/zi) - "dynn_Zira" #(bzi ra) - "dynn_Zur" #(zur) - } - - dynasty_names = { - "dynn_Adro" #(a gro) - "dynn_Akyong" #(a skyong) - "dynn_Apang" #(a phang) - "dynn_Arik" #(a rig) - "dynn_Azha" #('a zha) - "dynn_Ba" #(sba) - "dynn_Ber" #(ber) - "dynn_Bitsa" #(sbi tsha) - "dynn_Bochung" #(bo chung) - "dynn_ChakdU__Nyarong" #(lcags mdud nyag rong) - "dynn_Chakgong" #(lcag gong) - "dynn_Chakhung" #(lcag khung) - "dynn_ChE_" #(lce) - "dynn_Chim" #(mchims) - "dynn_Cho" #(mcho) - "dynn_Chungpa" #(gcung pa) - "dynn_Dak" #(dwags) - "dynn_Dawa" #(zla ba) - "dynn_Den_Atub_Tsang" #('dan a thub tshang) - "dynn_Denma" #(ldan ma) - "dynn_DE_pa_TO_npo" #(de pa ton po) - "dynn_Dilgo" #(dil mgo) - "dynn_Dong" #(ldong) #Great Ancestral Clan - "dynn_Doring" #(rdo ring) - "dynn_Dra" #(sbra) #Great Ancestral Clan - "dynn_Drangti" #(drang ti) - "dynn_DrE_" #('bre) - "dynn_Drenka" #(bran ka) - "dynn_Dro" #(gro) - "dynn_Drokmi" #('brog mi) - "dynn_Drom" #('brom) - "dynn_Dru" #('bru) - "dynn_Dru_2" #('dru) #also zhangzhung - "dynn_Dzeng" #('dzeng) - "dynn_Ga" #(dga') - "dynn_Ga_2" #(rgwa) - "dynn_Gar" #(mgar) - "dynn_Gar_Ratsang" #(mgar ra tsang) - "dynn_Gazi" #(ga zi) - "dynn_Ger" #(sger) - "dynn_GE_tsE_" #(dge rtse) - "dynn_GO_" #('gos) - "dynn_Go" #(sgo) #Great Ancestral Clan - "dynn_Gung" #(gung) #also tsangpa - "dynn_Gurib" #(gu rib) #also zhangzhung - "dynn_Gya" #(rgya) #also tsangpa - "dynn_Gyakong_ShE_drubtsang" #(rgya kong bshad sgrub tshang) - "dynn_Gyamo" #(rgya mo) - "dynn_Gyanak_Rawa" #(rgya nag ra ba) - "dynn_Gyangkhar" #(gyang khar) - "dynn_Gyer" #(dgyer) - "dynn_GyU_" #(rgyus) - "dynn_Ja" #(bya) - "dynn_Jadra" #(ja sbra) - "dynn_Janak" #(bya nag) - "dynn_Ju" #('ju) - "dynn_Khangsar" #('khang gsar) #also tsangpa - "dynn_Kharchen" #(mkhar chen) - "dynn_KhE_mE_" #(khe smad) - "dynn_KhO_n" #('khon) #also tsangpa - "dynn_Khyungpo" #(khyung po) - "dynn_Kyasu" #(skya su) - "dynn_Kyi" #(kyi) - "dynn_KyO_" #(skyod) - "dynn_Kyuchok" #(khyu mchog) - "dynn_Kyura" #(skyu ra) - "dynn_Lang" #(rlangs) - "dynn_Lasum" #(la gsum) - "dynn_Len" #(glan) - "dynn_Lhalung" #(lha lung) - "dynn_Ling" #(gling) - "dynn_LingmO_" #(gling mod) - "dynn_Lingtsang" #(gling tshang) - "dynn_Lomi" #(lo mi) - "dynn_Ma" #(rma) - "dynn_ME_" #(me) - "dynn_MengE_" #(man dge) - "dynn_Meu" #(rme'u) #also tsangpa - "dynn_Mu" #(rmu) #Great Ancestral Clan - "dynn_Mukpo" #(smug po) - "dynn_Naktso" #(nag tsho) - "dynn_NamsE_ling" #(rnam sras gling) - "dynn_Nanam" #(sna nam) - "dynn_Ngen" #(rngan) - "dynn_Ngenlam" #(ngan lam) - "dynn_NgojE_" #(ngor rje) - "dynn_Ngok" #(rngog) - "dynn_NgU_lchu" #(dngul chu) #also tsangpa - "dynn_Ngupa" #(rngu pa) - "dynn_Nup" #(gnubs) #also tsangpa - "dynn_Nya" #(gnya') - "dynn_Nyak" #(gnyags) - "dynn_NyakrE_" #(nyag ras) - "dynn_NyakshU_l" #(nyag shul) - "dynn_Nyang" #(myang) - "dynn_NyO_" #(gnyos) - "dynn_Odren" #('o bran) - "dynn_Pugyel" #(spu rgyal) - "dynn_Ra" #(dbra) - "dynn_Rakar_Khyungpo" #(dbra kar khyung po) - "dynn_Ram" #(ram) - "dynn_Rok" #(rog) - "dynn_SE_" #(bse) #Great Ancestral Clan - "dynn_Sha" #(gsha) - "dynn_Shar" #(shar) #also tsangpa - "dynn_Sharkhapa" #(shar kha pa) #also tsangpa - "dynn_Shen" #(gshen) #also tsangpa - "dynn_Shingkhamga" #(shing khams sga) - "dynn_ShU_pu" #(shud phu) - "dynn_Sumpa" #(sum pa) #also sumpa - "dynn_Tati_Zhamar" #(ta ti zha mar) - "dynn_Tong" #(stong) #Great Ancestral Clan #also sumpa - "dynn_TO_nmi" #(thon mi) - "dynn_Trokho_NumE__PelshU_l" #(khro kho nu ma'i dpal shul) - "dynn_Trotsik" #(spro tshig) - "dynn_TsE_dong" #(rtse gdong) - "dynn_TsongpO_n" #(tshong dpon) - "dynn_Tukwan" #(thu'u bkwan) - "dynn_Tum" #(gtum) #also tsangpa - "dynn_Wangda" #(dbang mda') - "dynn_WelshU_l" #(dbal shul) - "dynn_Yi" #(g.yi) - "dynn_Yu" #(g.yu) - "dynn_Yudra" #(g.yu sgra) - "dynn_Yungok" #(g.yu rngog) - "dynn_Zamtsa_Ngorang" #(zam tsha ngo rang) - "dynn_Zeu" #(ze'u) - "dynn_Zhak" #(bzhag) - "dynn_Zhangpa" #(zhang pa) - "dynn_Zhiwatsang" #(zhi ba tshang) - "dynn_Zi" #(gzi/zi) - "dynn_Zira" #(bzi ra) - "dynn_Zur" #(zur) - } - - male_names = { - Adzom Aglen Ajidamel Akar Aktsom Amoghasiddi Anenmel Asok AsokdE_ Balpo BardE_ BO_nchung BO_ndak BO_ndE_ BO_nden BO_ndrO_ BO_ndU_ BO_ngO_ - BO_ngO_n BO_ngyel BO_ngyen BO_nkyi BO_nnE_ BO_npo BO_npoche BO_npodE_ BO_nsong BO_nsung BO_nten BO_ntok BO_ntsang BO_ntsen BO_ntsun Boshay - Bumdegon BummE_ Chakna Ceba Cepla Cetan Champa Champo Changchub Chatri ChE_chentsa Chenpa ChidE_ ChidE_tsen Chime ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_gyel ChO_kyap ChO_kyi ChO_mden ChO_phel Chukpo Cimba Dache Dachen Daivika Daktri Dampa Dar Dawa Dechen Dedan Degyel Dekyi DenO_l Denpa - Denpo Desho Detrin Detrul DE_tsen DE_tsukgO_n Deu Dhargey Dharmapala Dhondup Diki Dingtri Dompu DO_ndrup DonyO_ Dorje Dorjee Drak Drakpa - DrakpadE_ Draktsen DraktsendE_ Dranga Drigum DrimE_ DrogO_n DromtO_n Drongnyen DruksE_ Drupchok Dujom Dusong Dzamling Esho GakyE_ Gampo Gangkarwa - Garkan Gawa GE_bum Gedun GE_khO_ Geleg Gemang Gephel GE_sar Getong Ghaden Goba GO_dem Golung GO_n Gongpa GO_ngyel GO_npo GO_podE_ Gongru GO_ntsen - GO_sE_ Gunggyel Gungsong Gungtsen Gyagar Gyatso Gyel GyeldE_ Gyelpa Gyelpo GyelsE_ Gyeltore Gyeltsap Gyeltsen Gyeltso GyelwE_ GyurmE_ Isho Jalus - JamgO_n Jamhel Jampa Jampo Jamyang Jangbu Jangchup Jekundag Jetsan Jetsun Jidarmel Jigme Jinpa Jinpo Jodrung Jotok Jotra JotsE_ Jowo JowojE_ Ju - JungnE_ Kaba Kamala Karma KarsE_ Kasa Kelden Keldroma Kelsang Kelyenmel Khadroma Khalama Khandro Khenchok KhorrE_ KhyentsE_ Kipu Kitsi Kona KO_nchok - KongtrU_l Kunchen Kundun Kunga Kungpa Kunsang KU_ntu KU_nzang Kushen KyidE_ Kyipo Langdarma Lek Lekpa Lha Lhachen LhadE_ Lhakpa Lhakyi Lhamo - Lhanang Lhundup Lingpa Lobsang LodrO_ LodrO_senggE_ Longtsen LO_ntsen Lotsen Lozang Luga Lukhong Lutsek Mangban Mangnyen Mangpoje Mangsham MangsO_l - Mangsong Mangtsen Manggyel ME_ ME_aktsom MengO_ ME_rok Mertri Michewa Mida Migmar Mingma Mipam Mipham Miyo MunE_ Mutik Mutri Muzu Muzuk NakdE_ Nakpo Nam - NamchO_ NamdE_ NamdE_tsen Namgyel NamgyeldE_ Namkha Nampo Namri Namzhungtsen Nawang Ngawang Ngodup Ngor Nima Norbu Norzang Nuba Nyandak Nyantsen - Nyasig Nyatri NyigO_n Nyima NyimadE_ NyimagO_n Nyingpo Nytari O_dE_tsen O_gyel O_gyen Omade O_poche O_sung O_zer Pabu Pasang Pel Pelden PeldrO_n - Pelchen PelgO_nsE_ PelgyigO_n PelkhorrE_ Pelkhortsen Pelkye Pelzangpo PE_ma Pemba Penden Phakpa Phuntsok Phurbu Po PodE_ Ponlob PO_nsE_ Popo Poso - Pude Pungse Pungtsen Punimel Rabten Raksita Ramsha Rapsel Razhak Relpachen Rime Rinchen Rinzen Riumel Sachen Sambhota Samdup Samlo Samten - Sangye Sashi Seba Selbar SE_nalek Senge Sengemel SenggE_ SenO_l Seupa Sey Shakya Shang Shanglon Shangnang ShentsO_n Sherab ShidU_ Shok Siptri Skamar - Somba SO_nam SO_namtsE_ SongngE_ Songtsen SO_nnE_ Sotri Sumnang Sung Sutse Tagbu Takdra Taknang Taknye Taktsab Tarjay Taru Tashi Tawen Temba - Tensung Tenzin Tenzing Thamdrin ThayE_ Thekchen Thinley Thokmay ThO_nmi Thothori Thrikhyiding Thubten Tingngezin Tisho Tongtsen Tori Trasel Trashi - TrashidE_ TrashigO_n TrashitsE_ Tratapmel TridE_ Tridra Tridring TridU_ Trikyongdar Trimang TrinlE_ Trinring Trinyen Trisong Trisu Trisumje Tritimel - Tritok Tritsen Tritsuk Trogyelbum Tromo Trongzhi TsamchO_ TsangdE_ Tsangma TsangmochE_ Tsangpo TsE_bartsen TsE_dE_ TsE_mE_ TsE_mo Tsen TsenchukdE_ - TsendrO_ Tsenpo Tsensong Tsentsen Tsenye TsE_phel TsE_ring TsE_ten TsE_undU_ TsE_wang Tsugru Tsuktsen Tsultrim Udumtsen Wangchuk Wangdak WangdE_ - Wangdu Wangpo Wanggyel WO_ser Yaksherpen Yang Yangchen Yangdrin Yanggolung YangtsE_mE_ YE_ YE_lekpo YE_shE_ YE_shE_gyeltsen Yongten Yonten YO_ntsun - YU_lsung Yumten Zanam ZangdE_ Zanggyel Zangpa Zangpo Zangtsa Zangtang Zangtsen Zangwa Zapa Zenji Zhangtsun Zhiwa Zhonnu Zigsa Zimun ZindE_ Zonpa Zopa - Zungtsen - } - - female_names = { - Akar Amala Amrita Belmoza Bhasundara Bhuti BO_nmo Boshay Bumphulwa Bum Busing Ceba Cepla Cham Chesa Chewa Chime Chimza ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_kyi ChO_mden ChO_mo ChO_mo_Lungma ChO_phel ChO_ying Cimba Cogrobza Dakmo Dawa Dechen Dekyi Devitara Dhargey Diki Dohna Dolkar - Dolma Dongkar Dorjne Dorjne_Naljorma Draksinmo Dringma Driza Dro DrO_nma DronmalO_n DrO_nnE_ Droza Dunkyi Dzeden Ekadzati Garkan Garma Gawa Gedun - Geleg GE_maspranglod GE_mathar Gewa Ghaden Gokarmo Gulang Gyatso Gyelmo GyelmotsU_n Gyeltsen Gyelwa Gyelyum Gyimsheng Hariti Jalus Jammo - Jampa Jamyang Jangchup JangchupsagO_n Jangmo Jangmu Jashi Jetsun Jetsunmo Jinmo Jinpa Jomo Jungney Kaba Kamala Karma Kasa Kelsang Kelzang - Ketu Keyuri Khadrobum Khadroma Khalama Khandro Khonma Khribang Khrimalod Khritsun Kipu Kitsi Koboza Kona KO_nchok Kunchen Kunga Kungcho - Kunphel Kunsang Kunzang Kurukulla Kyeden Kyi Kyimsheng Lasya Leki Lenchikma Lha Lhagyel Lhagyen Lhai Lhakee Lhakpa Lhamgonza Lhami Lhamo LhamotsU_n - Lhamu Lhathrimo LhE_ Lhundup Lobsang Lungma Machig Magyel Mangalal Mangmo MangmojE_ MangpojE_ ME_tok Michewa Mida Mongza Mungchang Nagaza Nagzib Naljorma - Namkha Nanamza Nele Ngawang Ngodup Nguntre Nima Ninguerre Norbu Nuba Nyandak Nyendrak Nyima Nyitri O_gyen Opame Pabu Pasang Pelden PeldrO_n - Pelgyimo PelmO_ Pema Pemala Penden Phoyongsa Phuntsok Phurbulcam Pogong Pongza Popo Poso Rabten Rinchen Rinzen Ritikmen Ritvija Sal Samdup - Samlo SanggyE_kha Sangmu Sangye Sashi Seba Sengdroma Sengemo Seupa Shenden Sherab Shonnu Skamar Somba SO_nam Tara Taramo Tashi Temba Tenzin - Tenzing Thekchen Thokmay Thridang Thrisong Thubten Togo Took Torma TO_karma Toktokteng Torma Tricham Tridaka Trikar TrimalO_ Trimonyen TrinlE_ - TritsU_n Tromo TsamchO_ Tsangma Tsangmo Tse Tsenma Tsenmo Tsenmotok Tsephel Tsering Tseten Tsewang TshistO_ng Tsomo Tsogyel TsU_nmo TsU_nmotog - Tubten Wangchuck Wangdak Wangdue Wangmo WO_ser Yangchen Yangmo YE_lekmo YE_shE_ Yon Yongten Yondagmo Yumchenmo Zangmo Zhiting Zhyelmo Zhyelmots_Un - Zigsa Zopa - } - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 - - -} - -name_list_zhangzhung = { - - cadet_dynasty_names = { - "dynn_Zhangzhung" - "dynn_Gurib" - "dynn_Mu" - "dynn_Triwer" - "dynn_Mra" - "dynn_Chakpa" - "dynn_Owo" - "dynn_HO_" - "dynn_Draktsa" - "dynn_Dro" - "dynn_Namthuk" - "dynn_Pa" - "dynn_Zhu" - "dynn_Meu" - "dynn_Bru" - "dynn_Dru" - "dynn_Kong" - "dynn_Dak" - "dynn_Nyang" - "dynn_Tridun" - "dynn_Shang" - "dynn_Phacho" - "dynn_Rawa" - "dynn_Chuktshang" - "dynn_Namru" - "dynn_Se" - "dynn_Ra" - "dynn_Rme_u" - } - - dynasty_names = { - "dynn_Zhangzhung" - "dynn_Gurib" - "dynn_Mu" - "dynn_Triwer" - "dynn_Mra" - "dynn_Chakpa" - "dynn_Owo" - "dynn_HO_" - "dynn_Draktsa" - "dynn_Dro" - "dynn_Namthuk" - "dynn_Pa" - "dynn_Zhu" - "dynn_Meu" - "dynn_Bru" - "dynn_Dru" - "dynn_Kong" - "dynn_Dak" - "dynn_Nyang" - "dynn_Tridun" - "dynn_Shang" - "dynn_Phacho" - "dynn_Rawa" - "dynn_Chuktshang" - "dynn_Namru" - "dynn_Se" - "dynn_Ra" - "dynn_Rme_u" - } - - male_names = { - #Zhangzhung - Atimuwer Berkya ChimetsukphU_ Chirum Chunmardang Dakhor Damitheke Damshe Dangwa Demdruk Denpar - Dokchen Donla Draktsubkye Drenpa Dud Duddul Durshen Dzomar Gawagye GO_war Gurser Guwer - Gyalwa Gyer Gyerme Gyerpung Gyung Gyungyar Harachipar Hrido Hripa Hrista JO_nwa Kalarasa Khyabpa Kuchi - Kunla Kyabpai Kyeshe Kyichuk Kyile Labchen Lakring Lampa Langboche Larje Likmigyal Likmikya Likmur - Liknyashur Liknyikya Liknyirhya Liwergyer Lokpai LO_po LopO_n Ludrub Luje Lurab Lutsen Mabu Mangke Marpo - Martang Mebar Meka Meri Merutse MilU_samlek Mikmar Milwo Mra Mrabon Mranyite Mrawa Mucho MukhO_ Mukhung - Mulakhung Mumar Muwer Muwernor Namdak Namje Namse Nangwa Nangzher Naro Nor Norgyi O_kar - O_sel Pebon Pholha Pung Rabtson Rakhuk Salwa Sangjo Sangpo Sangto Sehrigyer Senggetram Shebu Shele - Shelgyung Shenlha Shenpa Shenrab Sridpa Takla Takma Thenwa Thipang ThokgO_ Thoktse Thuchen Tobchen - Tonggyung TO_npa TraphU_ TrideiO_po Tridem Trimen Triwer Troto Tsepo Wal Werya Yangje Yidring Zache - Zijid Zingkye Zingpa Zutse - #Tibetan Influence - Adzom Aglen Ajidamel Akar Aktsom Amoghasiddi Anenmel Asok AsokdE_ Balpo BardE_ BO_nchung BO_ndak BO_ndE_ BO_nden BO_ndrO_ BO_ndU_ BO_ngO_ - BO_ngO_n BO_ngyel BO_ngyen BO_nkyi BO_nnE_ BO_npo BO_npoche BO_npodE_ BO_nsong BO_nsung BO_nten BO_ntok BO_ntsang BO_ntsen BO_ntsun Boshay - Bumdegon BummE_ Chakna Ceba Cepla Cetan Champa Champo Changchub Chatri ChE_chentsa Chenpa ChidE_ ChidE_tsen Chime ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_gyel ChO_kyap ChO_kyi ChO_mden ChO_phel Chukpo Cimba Dache Dachen Daivika Daktri Dampa Dar Dawa Dechen Dedan Degyel Dekyi DenO_l Denpa - Denpo Desho Detrin Detrul DE_tsen DE_tsukgO_n Deu Dhargey Dharmapala Dhondup Diki Dingtri Dompu DO_ndrup DonyO_ Dorje Dorjee Drak Drakpa - DrakpadE_ Draktsen DraktsendE_ Dranga Drigum DrimE_ DrogO_n DromtO_n Drongnyen DruksE_ Drupchok Dujom Dusong Dzamling Esho GakyE_ Gampo Gangkarwa - Garkan Gawa GE_bum Gedun GE_khO_ Geleg Gemang Gephel GE_sar Getong Ghaden Goba GO_dem Golung GO_n Gongpa GO_ngyel GO_npo GO_podE_ Gongru GO_ntsen - GO_sE_ Gunggyel Gungsong Gungtsen Gyagar Gyatso Gyel GyeldE_ Gyelpa Gyelpo GyelsE_ Gyeltore Gyeltsap Gyeltsen Gyeltso GyelwE_ GyurmE_ Isho Jalus - JamgO_n Jamhel Jampa Jampo Jamyang Jangbu Jangchup Jekundag Jetsan Jetsun Jidarmel Jigme Jinpa Jinpo Jodrung Jotok Jotra JotsE_ Jowo JowojE_ Ju - JungnE_ Kaba Kamala Karma KarsE_ Kasa Kelden Keldroma Kelsang Kelyenmel Khadroma Khalama Khandro Khenchok KhorrE_ KhyentsE_ Kipu Kitsi Kona KO_nchok - KongtrU_l Kunchen Kundun Kunga Kungpa Kunsang KU_ntu KU_nzang Kushen KyidE_ Kyipo Langdarma Lek Lekpa Lha Lhachen LhadE_ Lhakpa Lhakyi Lhamo - Lhanang Lhundup Lingpa Lobsang LodrO_ LodrO_senggE_ Longtsen LO_ntsen Lotsen Lozang Luga Lukhong Lutsek Mangban Mangnyen Mangpoje Mangsham MangsO_l - Mangsong Mangtsen Manggyel ME_ ME_aktsom MengO_ ME_rok Mertri Michewa Mida Migmar Mingma Mipam Mipham Miyo MunE_ Mutik Mutri Muzu Muzuk NakdE_ Nakpo Nam - NamchO_ NamdE_ NamdE_tsen Namgyel NamgyeldE_ Namkha Nampo Namri Namzhungtsen Nawang Ngawang Ngodup Ngor Nima Norbu Norzang Nuba Nyandak Nyantsen - Nyasig Nyatri NyigO_n Nyima NyimadE_ NyimagO_n Nyingpo Nytari O_dE_tsen O_gyel O_gyen Omade O_poche O_sung O_zer Pabu Pasang Pel Pelden PeldrO_n - Pelchen PelgO_nsE_ PelgyigO_n PelkhorrE_ Pelkhortsen Pelkye Pelzangpo PE_ma Pemba Penden Phakpa Phuntsok Phurbu Po PodE_ Ponlob PO_nsE_ Popo Poso - Pude Pungse Pungtsen Punimel Rabten Raksita Ramsha Rapsel Razhak Relpachen Rime Rinchen Rinzen Riumel Sachen Sambhota Samdup Samlo Samten - Sangye Sashi Seba Selbar SE_nalek Senge Sengemel SenggE_ SenO_l Seupa Sey Shakya Shang Shanglon Shangnang ShentsO_n Sherab ShidU_ Shok Siptri Skamar - Somba SO_nam SO_namtsE_ SongngE_ Songtsen SO_nnE_ Sotri Sumnang Sung Sutse Tagbu Takdra Taknang Taknye Taktsab Tarjay Taru Tashi Tawen Temba - Tensung Tenzin Tenzing Thamdrin ThayE_ Thekchen Thinley Thokmay ThO_nmi Thothori Thrikhyiding Thubten Tingngezin Tisho Tongtsen Tori Trasel Trashi - TrashidE_ TrashigO_n TrashitsE_ Tratapmel TridE_ Tridra Tridring TridU_ Trikyongdar Trimang TrinlE_ Trinring Trinyen Trisong Trisu Trisumje Tritimel - Tritok Tritsen Tritsuk Trogyelbum Tromo Trongzhi TsamchO_ TsangdE_ Tsangma TsangmochE_ Tsangpo TsE_bartsen TsE_dE_ TsE_mE_ TsE_mo Tsen TsenchukdE_ - TsendrO_ Tsenpo Tsensong Tsentsen Tsenye TsE_phel TsE_ring TsE_ten TsE_undU_ TsE_wang Tsugru Tsuktsen Tsultrim Udumtsen Wangchuk Wangdak WangdE_ - Wangdu Wangpo Wanggyel WO_ser Yaksherpen Yang Yangchen Yangdrin Yanggolung YangtsE_mE_ YE_ YE_lekpo YE_shE_ YE_shE_gyeltsen Yongten Yonten YO_ntsun - YU_lsung Yumten Zanam ZangdE_ Zanggyel Zangpa Zangpo Zangtsa Zangtang Zangtsen Zangwa Zapa Zenji Zhangtsun Zhiwa Zhonnu Zigsa Zimun ZindE_ Zonpa Zopa - Zungtsen - } - - female_names = { - #Zhangzhung - Atak Ataklumo Atakmo Ba Batsame Bumtsho Cha Changmo Chatsame Chukmo Dangra - Drangma Drablai Dronglek Duk Duktsuk Dzomo Gyi Gyichangmo Gyilumo Gyitsame Kering Khyungza Kyinam Kyidagi - Kyukma Lekyi Lhogyal Liwer Lumo Magyal Menchung Mewar Molha Mracham Nangze Neuchung Nyakchikma - Ongma Ringtsun Semarkar Shenza Silema Takber Takliwer Ting Tingber Tinglumo Tingtsame Trakthung - Tsa Tsadagi Tsame Tsatsame Tshogyal Trinyen Yid Yidongma Yum Yumtsame Yuyi Zamatok Zangza Zazu - #Tibetan Influence - Akar Amala Amrita Belmoza Bhasundara Bhuti BO_nmo Boshay Bumphulwa Bum Busing Ceba Cepla Cham Chesa Chewa Chime Chimza ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_kyi ChO_mden ChO_mo ChO_mo_Lungma ChO_phel ChO_ying Cimba Cogrobza Dakmo Dawa Dechen Dekyi Devitara Dhargey Diki Dohna Dolkar - Dolma Dongkar Dorjne Dorjne_Naljorma Draksinmo Dringma Driza Dro DrO_nma DronmalO_n DrO_nnE_ Droza Dunkyi Dzeden Ekadzati Garkan Garma Gawa Gedun - Geleg GE_maspranglod GE_mathar Gewa Ghaden Gokarmo Gulang Gyatso Gyelmo GyelmotsU_n Gyeltsen Gyelwa Gyelyum Gyimsheng Hariti Jalus Jammo - Jampa Jamyang Jangchup JangchupsagO_n Jangmo Jangmu Jashi Jetsun Jetsunmo Jinmo Jinpa Jomo Jungney Kaba Kamala Karma Kasa Kelsang Kelzang - Ketu Keyuri Khadrobum Khadroma Khalama Khandro Khonma Khribang Khrimalod Khritsun Kipu Kitsi Koboza Kona KO_nchok Kunchen Kunga Kungcho - Kunphel Kunsang Kunzang Kurukulla Kyeden Kyi Kyimsheng Lasya Leki Lenchikma Lha Lhagyel Lhagyen Lhai Lhakee Lhakpa Lhamgonza Lhami Lhamo LhamotsU_n - Lhamu Lhathrimo LhE_ Lhundup Lobsang Lungma Machig Magyel Mangalal Mangmo MangmojE_ MangpojE_ ME_tok Michewa Mida Mongza Mungchang Nagaza Nagzib Naljorma - Namkha Nanamza Nele Ngawang Ngodup Nguntre Nima Ninguerre Norbu Nuba Nyandak Nyendrak Nyima Nyitri O_gyen Opame Pabu Pasang Pelden PeldrO_n - Pelgyimo PelmO_ Pema Pemala Penden Phoyongsa Phuntsok Phurbulcam Pogong Pongza Popo Poso Rabten Rinchen Rinzen Ritikmen Ritvija Sal Samdup - Samlo SanggyE_kha Sangmu Sangye Sashi Seba Sengdroma Sengemo Seupa Shenden Sherab Shonnu Skamar Somba SO_nam Tara Taramo Tashi Temba Tenzin - Tenzing Thekchen Thokmay Thridang Thrisong Thubten Togo Took Torma TO_karma Toktokteng Torma Tricham Tridaka Trikar TrimalO_ Trimonyen Trinle - TritsU_n Tromo TsamchO_ Tsangma Tsangmo Tse Tsenma Tsenmo Tsenmotok Tsephel Tsering Tseten Tsewang TshistO_ng Tsomo Tsogyel TsU_nmo TsU_nmotog - Tubten Wangchuck Wangdak Wangdue Wangmo WO_ser Yangchen Yangmo YE_lekmo YE_shE_ Yon Yongten Yondagmo Yumchenmo Zangmo Zhiting Zhyelmo Zhyelmots_Un - Zigsa Zopa - } - - pat_grf_name_chance = 25 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 25 - - -} - -name_list_sumpa = { - - cadet_dynasty_names = { - "dynn_Nagchu" - "dynn_Sumpa" - "dynn_Tong" - "dynn_Supiya" - "dynn_Sunpo" - "dynn_Supi" - "dynn_Suvarnagotra" - "dynn_Dongkar" - "dynn_Magyal" - "dynn_Ge" - "dynn_Belpa" - "dynn_Sekhor" - "dynn_Kye" - "dynn_Namra" - "dynn_RigO_" - "dynn_Chudmar" - } - - dynasty_names = { - "dynn_Nagchu" - "dynn_Sumpa" - "dynn_Tong" - "dynn_Supiya" - "dynn_Sunpo" - "dynn_Supi" - "dynn_Suvarnagotra" - "dynn_Dongkar" - "dynn_Magyal" - "dynn_Ge" - "dynn_Belpa" - "dynn_Sekhor" - "dynn_Kye" - "dynn_Namra" - "dynn_RigO_" - "dynn_Chudmar" - } - - male_names = { - #Sumpa - Dangraskya Datserhim Dirotiga Dudlutsen Krasnetse Kunhritse Litsakra Ljonlji Mangpu Martaskra Molingzan - Muba Muguni Mugunpu Murkya Nejini Nerkya Nyagdod Nyilni Pantihritse Pantimatso Rangskya Rangwerro Rawerni - Rtseni Sadslungse Sadsrung Shimwerro Skyartse Talsnetse Talwerni Thatseseto Thetsedar Thungni Tigrali - Tigratinsho Tigunyiri Timinrang Tisrang Tsakrani Xinuoluo Zarani Zlaririm - #Zhangzhung Influence - Atimuwer Berkya ChimetsukphU_ Chirum Chunmardang Dakhor Damitheke Damshe Dangwa Demdruk Denpar - Dokchen Donla Draktsubkye Drenpa Dud Duddul Durshen Dzomar Gawagye GO_war Gurser Guwer - Gyalwa Gyer Gyerme Gyerpung Gyung Gyungyar Harachipar Hrido Hripa Hrista JO_nwa Kalarasa Khyabpa Kuchi - Kunla Kyabpai Kyeshe Kyichuk Kyile Labchen Lakring Lampa Langboche Larje Liwergyer Lokpai LO_po LopO_n - Ludrub Luje Lurab Lutsen Mabu Mangke Marpo - Martang Mebar Meka Meri Merutse MilU_samlek Mikmar Milwo Mra Mrabon Mranyite Mrawa Mucho MukhO_ Mukhung - Mulakhung Mumar Muwer Muwernor Namdak Namje Namse Nangwa Nangzher Naro Nor Norgyi O_kar - O_sel Pebon Pholha Pung Rabtson Rakhuk Salwa Sangjo Sangpo Sangto Sehrigyer Senggetram Shebu Shele - Shelgyung Shenlha Shenpa Shenrab Sridpa Takla Takma Thenwa Thipang ThokgO_ Thoktse Thuchen Tobchen - Tonggyung TO_npa TraphU_ TrideiO_po Tridem Trimen Triwer Troto Tsepo Wal Werya Yangje Yidring Zache - Zijid Zingkye Zingpa Zutse - #Tibetan Influence - Adzom Aglen Ajidamel Akar Aktsom Amoghasiddi Anenmel Asok AsokdE_ Balpo BardE_ BO_nchung BO_ndak BO_ndE_ BO_nden BO_ndrO_ BO_ndU_ BO_ngO_ - BO_ngO_n BO_ngyel BO_ngyen BO_nkyi BO_nnE_ BO_npo BO_npoche BO_npodE_ BO_nsong BO_nsung BO_nten BO_ntok BO_ntsang BO_ntsen BO_ntsun Boshay - Bumdegon BummE_ Chakna Ceba Cepla Cetan Champa Champo Changchub Chatri ChE_chentsa Chenpa ChidE_ ChidE_tsen Chime ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_gyel ChO_kyap ChO_kyi ChO_mden ChO_phel Chukpo Cimba Dache Dachen Daivika Daktri Dampa Dar Dawa Dechen Dedan Degyel Dekyi DenO_l Denpa - Denpo Desho Detrin Detrul DE_tsen DE_tsukgO_n Deu Dhargey Dharmapala Dhondup Diki Dingtri Dompu DO_ndrup DonyO_ Dorje Dorjee Drak Drakpa - DrakpadE_ Draktsen DraktsendE_ Dranga Drigum DrimE_ DrogO_n DromtO_n Drongnyen DruksE_ Drupchok Dujom Dusong Dzamling Esho GakyE_ Gampo Gangkarwa - Garkan Gawa GE_bum Gedun GE_khO_ Geleg Gemang Gephel GE_sar Getong Ghaden Goba GO_dem Golung GO_n Gongpa GO_ngyel GO_npo GO_podE_ Gongru GO_ntsen - GO_sE_ Gunggyel Gungsong Gungtsen Gyagar Gyatso Gyel GyeldE_ Gyelpa Gyelpo GyelsE_ Gyeltore Gyeltsap Gyeltsen Gyeltso GyelwE_ GyurmE_ Isho Jalus - JamgO_n Jamhel Jampa Jampo Jamyang Jangbu Jangchup Jekundag Jetsan Jetsun Jidarmel Jigme Jinpa Jinpo Jodrung Jotok Jotra JotsE_ Jowo JowojE_ Ju - JungnE_ Kaba Kamala Karma KarsE_ Kasa Kelden Keldroma Kelsang Kelyenmel Khadroma Khalama Khandro Khenchok KhorrE_ KhyentsE_ Kipu Kitsi Kona KO_nchok - KongtrU_l Kunchen Kundun Kunga Kungpa Kunsang KU_ntu KU_nzang Kushen KyidE_ Kyipo Langdarma Lek Lekpa Lha Lhachen LhadE_ Lhakpa Lhakyi Lhamo - Lhanang Lhundup Lingpa Lobsang LodrO_ LodrO_senggE_ Longtsen LO_ntsen Lotsen Lozang Luga Lukhong Lutsek Mangban Mangnyen Mangpoje Mangsham MangsO_l - Mangsong Mangtsen Manggyel ME_ ME_aktsom MengO_ ME_rok Mertri Michewa Mida Migmar Mingma Mipam Mipham Miyo MunE_ Mutik Mutri Muzu Muzuk NakdE_ Nakpo Nam - NamchO_ NamdE_ NamdE_tsen Namgyel NamgyeldE_ Namkha Nampo Namri Namzhungtsen Nawang Ngawang Ngodup Ngor Nima Norbu Norzang Nuba Nyandak Nyantsen - Nyasig Nyatri NyigO_n Nyima NyimadE_ NyimagO_n Nyingpo Nytari O_dE_tsen O_gyel O_gyen Omade O_poche O_sung O_zer Pabu Pasang Pel Pelden PeldrO_n - Pelchen PelgO_nsE_ PelgyigO_n PelkhorrE_ Pelkhortsen Pelkye Pelzangpo PE_ma Pemba Penden Phakpa Phuntsok Phurbu Po PodE_ Ponlob PO_nsE_ Popo Poso - Pude Pungse Pungtsen Punimel Rabten Raksita Ramsha Rapsel Razhak Relpachen Rime Rinchen Rinzen Riumel Sachen Sambhota Samdup Samlo Samten - Sangye Sashi Seba Selbar SE_nalek Senge Sengemel SenggE_ SenO_l Seupa Sey Shakya Shang Shanglon Shangnang ShentsO_n Sherab ShidU_ Shok Siptri Skamar - Somba SO_nam SO_namtsE_ SongngE_ Songtsen SO_nnE_ Sotri Sumnang Sung Sutse Tagbu Takdra Taknang Taknye Taktsab Tarjay Taru Tashi Tawen Temba - Tensung Tenzin Tenzing Thamdrin ThayE_ Thekchen Thinley Thokmay ThO_nmi Thothori Thrikhyiding Thubten Tingngezin Tisho Tongtsen Tori Trasel Trashi - TrashidE_ TrashigO_n TrashitsE_ Tratapmel TridE_ Tridra Tridring TridU_ Trikyongdar Trimang TrinlE_ Trinring Trinyen Trisong Trisu Trisumje Tritimel - Tritok Tritsen Tritsuk Trogyelbum Tromo Trongzhi TsamchO_ TsangdE_ Tsangma TsangmochE_ Tsangpo TsE_bartsen TsE_dE_ TsE_mE_ TsE_mo Tsen TsenchukdE_ - TsendrO_ Tsenpo Tsensong Tsentsen Tsenye TsE_phel TsE_ring TsE_ten TsE_undU_ TsE_wang Tsugru Tsuktsen Tsultrim Udumtsen Wangchuk Wangdak WangdE_ - Wangdu Wangpo Wanggyel WO_ser Yaksherpen Yang Yangchen Yangdrin Yanggolung YangtsE_mE_ YE_ YE_lekpo YE_shE_ YE_shE_gyeltsen Yongten Yonten YO_ntsun - YU_lsung Yumten Zanam ZangdE_ Zanggyel Zangpa Zangpo Zangtsa Zangtang Zangtsen Zangwa Zapa Zenji Zhangtsun Zhiwa Zhonnu Zigsa Zimun ZindE_ Zonpa Zopa - Zungtsen - } - - female_names = { - #Sumpa - Ataklumo Baninera Bartirkhum Bhardha Brizhalda Delhodshim Delosnyri Dhingtsamed Dhingyose - Dudelos Dunshogs Khikhar Khirnyiri Khizhi Necugni Nelnesla Neltunyose Pantitsamed Racugni Shekhonti - Sherkya Shethetse Shimdhing Shimyose Smarkangshe Smarshibi Smarshim Smartsamed Smaryose Thathurrtse - Thungtsamed Thungyose Tingsho Tiseto Tishekhon Tortseli Tritiga Yutsog Zangsyag Zhamze Zhimzhalsto - #Zhangzhung Influence - Atak Atakmo Ba Batsame Bumtsho Cha Changmo Chatsame Chukmo Dangra - Drangma Drablai Dronglek Duk Duktsuk Dzomo Gyi Gyichangmo Gyilumo Gyitsame Kering Khyungza Kyinam Kyidagi - Kyukma Lekyi Lhogyal Liwer Lumo Magyal Menchung Mewar Molha Mracham Nangze Neuchung Nyakchikma - Ongma Ringtsun Semarkar Shenza Silema Takber Takliwer Ting Tingber Tinglumo Tingtsame Trakthung - Tsa Tsadagi Tsame Tsatsame Tshogyal Trinyen Yid Yidongma Yum Yumtsame Yuyi Zamatok Zangza Zazu - #Tibetan Influence - Akar Amala Amrita Belmoza Bhasundara Bhuti BO_nmo Boshay Bumphulwa Bum Busing Ceba Cepla Cham Chesa Chewa Chime Chimza ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_kyi ChO_mden ChO_mo ChO_mo_Lungma ChO_phel ChO_ying Cimba Cogrobza Dakmo Dawa Dechen Dekyi Devitara Dhargey Diki Dohna Dolkar - Dolma Dongkar Dorjne Dorjne_Naljorma Draksinmo Dringma Driza Dro DrO_nma DronmalO_n DrO_nnE_ Droza Dunkyi Dzeden Ekadzati Garkan Garma Gawa Gedun - Geleg GE_maspranglod GE_mathar Gewa Ghaden Gokarmo Gulang Gyatso Gyelmo GyelmotsU_n Gyeltsen Gyelwa Gyelyum Gyimsheng Hariti Jalus Jammo - Jampa Jamyang Jangchup JangchupsagO_n Jangmo Jangmu Jashi Jetsun Jetsunmo Jinmo Jinpa Jomo Jungney Kaba Kamala Karma Kasa Kelsang Kelzang - Ketu Keyuri Khadrobum Khadroma Khalama Khandro Khonma Khribang Khrimalod Khritsun Kipu Kitsi Koboza Kona KO_nchok Kunchen Kunga Kungcho - Kunphel Kunsang Kunzang Kurukulla Kyeden Kyi Kyimsheng Lasya Leki Lenchikma Lha Lhagyel Lhagyen Lhai Lhakee Lhakpa Lhamgonza Lhami Lhamo LhamotsU_n - Lhamu Lhathrimo LhE_ Lhundup Lobsang Lungma Machig Magyel Mangalal Mangmo MangmojE_ MangpojE_ ME_tok Michewa Mida Mongza Mungchang Nagaza Nagzib Naljorma - Namkha Nanamza Nele Ngawang Ngodup Nguntre Nima Ninguerre Norbu Nuba Nyandak Nyendrak Nyima Nyitri O_gyen Opame Pabu Pasang Pelden PeldrO_n - Pelgyimo PelmO_ Pema Pemala Penden Phoyongsa Phuntsok Phurbulcam Pogong Pongza Popo Poso Rabten Rinchen Rinzen Ritikmen Ritvija Sal Samdup - Samlo SanggyE_kha Sangmu Sangye Sashi Seba Sengdroma Sengemo Seupa Shenden Sherab Shonnu Skamar Somba SO_nam Tara Taramo Tashi Temba Tenzin - Tenzing Thekchen Thokmay Thridang Thrisong Thubten Togo Took Torma TO_karma Toktokteng Torma Tricham Tridaka Trikar TrimalO_ Trimonyen Trinle - TritsU_n Tromo TsamchO_ Tsangma Tsangmo Tse Tsenma Tsenmo Tsenmotok Tsephel Tsering Tseten Tsewang TshistO_ng Tsomo Tsogyel TsU_nmo TsU_nmotog - Tubten Wangchuck Wangdak Wangdue Wangmo WO_ser Yangchen Yangmo YE_lekmo YE_shE_ Yon Yongten Yondagmo Yumchenmo Zangmo Zhiting Zhyelmo Zhyelmots_Un - Zigsa Zopa - } - - pat_grf_name_chance = 20 - mat_grf_name_chance = 30 - father_name_chance = 20 - - pat_grm_name_chance = 20 - mat_grm_name_chance = 25 - mother_name_chance = 30 - - -} - -name_list_tsangpa = { - - cadet_dynasty_names = { - "dynn_Gung" - "dynn_Gya" - "dynn_Khangsar" - "dynn_KhO_n" - "dynn_Meu" - "dynn_NgU_lchu" - "dynn_Nup" - "dynn_Shar" - "dynn_Sharkhapa" - "dynn_Shen" - "dynn_Tum" - "dynn_Glo" - "dynn_Tsang" - "dynn_Kyirong" - "dynn_Kagate" - "dynn_Sharpa" - "dynn_Tsum" - "dynn_Yolmo" - "dynn_Nubri" - "dynn_Gyalsumdo" - "dynn_Langtang" - "dynn_Tsongdu" - "dynn_Shelkar" - "dynn_Bhotia" - "dynn_Thakali" - } - - dynasty_names = { - "dynn_Gung" - "dynn_Gya" - "dynn_Khangsar" - "dynn_KhO_n" - "dynn_Meu" - "dynn_NgU_lchu" - "dynn_Nup" - "dynn_Shar" - "dynn_Sharkhapa" - "dynn_Shen" - "dynn_Tum" - "dynn_Glo" - "dynn_Tsang" - "dynn_Kyirong" - "dynn_Kagate" - "dynn_Sharpa" - "dynn_Tsum" - "dynn_Yolmo" - "dynn_Nubri" - "dynn_Gyalsumdo" - "dynn_Langtang" - "dynn_Tsongdu" - "dynn_Shelkar" - "dynn_Bhotia" - "dynn_Thakali" - } - - male_names = { - Adzom Aglen Ajidamel Akar Aktsom Amoghasiddi Anenmel Asok AsokdE_ Balpo BardE_ BO_nchung BO_ndak BO_ndE_ BO_nden BO_ndrO_ BO_ndU_ BO_ngO_ - BO_ngO_n BO_ngyel BO_ngyen BO_nkyi BO_nnE_ BO_npo BO_npoche BO_npodE_ BO_nsong BO_nsung BO_nten BO_ntok BO_ntsang BO_ntsen BO_ntsun Boshay - Bumdegon BummE_ Chakna Ceba Cepla Cetan Champa Champo Changchub Chatri ChE_chentsa Chenpa ChidE_ ChidE_tsen Chime ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_gyel ChO_kyap ChO_kyi ChO_mden ChO_phel Chukpo Cimba Dache Dachen Daivika Daktri Dampa Dar Dawa Dechen Dedan Degyel Dekyi DenO_l Denpa - Denpo Desho Detrin Detrul DE_tsen DE_tsukgO_n Deu Dhargey Dharmapala Dhondup Diki Dingtri Dompu DO_ndrup DonyO_ Dorje Dorjee Drak Drakpa - DrakpadE_ Draktsen DraktsendE_ Dranga Drigum DrimE_ DrogO_n DromtO_n Drongnyen DruksE_ Drupchok Dujom Dusong Dzamling Esho GakyE_ Gampo Gangkarwa - Garkan Gawa GE_bum Gedun GE_khO_ Geleg Gemang Gephel GE_sar Getong Ghaden Goba GO_dem Golung GO_n Gongpa GO_ngyel GO_npo GO_podE_ Gongru GO_ntsen - GO_sE_ Gunggyel Gungsong Gungtsen Gyagar Gyatso Gyel GyeldE_ Gyelpa Gyelpo GyelsE_ Gyeltore Gyeltsap Gyeltsen Gyeltso GyelwE_ GyurmE_ Isho Jalus - JamgO_n Jamhel Jampa Jampo Jamyang Jangbu Jangchup Jekundag Jetsan Jetsun Jidarmel Jigme Jinpa Jinpo Jodrung Jotok Jotra JotsE_ Jowo JowojE_ Ju - JungnE_ Kaba Kamala Karma KarsE_ Kasa Kelden Keldroma Kelsang Kelyenmel Khadroma Khalama Khandro Khenchok KhorrE_ KhyentsE_ Kipu Kitsi Kona KO_nchok - KongtrU_l Kunchen Kundun Kunga Kungpa Kunsang KU_ntu KU_nzang Kushen KyidE_ Kyipo Langdarma Lek Lekpa Lha Lhachen LhadE_ Lhakpa Lhakyi Lhamo - Lhanang Lhundup Lingpa Lobsang LodrO_ LodrO_senggE_ Longtsen LO_ntsen Lotsen Lozang Luga Lukhong Lutsek Mangban Mangnyen Mangpoje Mangsham MangsO_l - Mangsong Mangtsen Manggyel ME_ ME_aktsom MengO_ ME_rok Mertri Michewa Mida Migmar Mingma Mipam Mipham Miyo MunE_ Mutik Mutri Muzu Muzuk NakdE_ Nakpo Nam - NamchO_ NamdE_ NamdE_tsen Namgyel NamgyeldE_ Namkha Nampo Namri Namzhungtsen Nawang Ngawang Ngodup Ngor Nima Norbu Norzang Nuba Nyandak Nyantsen - Nyasig Nyatri NyigO_n Nyima NyimadE_ NyimagO_n Nyingpo Nytari O_dE_tsen O_gyel O_gyen Omade O_poche O_sung O_zer Pabu Pasang Pel Pelden PeldrO_n - Pelchen PelgO_nsE_ PelgyigO_n PelkhorrE_ Pelkhortsen Pelkye Pelzangpo PE_ma Pemba Penden Phakpa Phuntsok Phurbu Po PodE_ Ponlob PO_nsE_ Popo Poso - Pude Pungse Pungtsen Punimel Rabten Raksita Ramsha Rapsel Razhak Relpachen Rime Rinchen Rinzen Riumel Sachen Sambhota Samdup Samlo Samten - Sangye Sashi Seba Selbar SE_nalek Senge Sengemel SenggE_ SenO_l Seupa Sey Shakya Shang Shanglon Shangnang ShentsO_n Sherab ShidU_ Shok Siptri Skamar - Somba SO_nam SO_namtsE_ SongngE_ Songtsen SO_nnE_ Sotri Sumnang Sung Sutse Tagbu Takdra Taknang Taknye Taktsab Tarjay Taru Tashi Tawen Temba - Tensung Tenzin Tenzing Thamdrin ThayE_ Thekchen Thinley Thokmay ThO_nmi Thothori Thrikhyiding Thubten Tingngezin Tisho Tongtsen Tori Trasel Trashi - TrashidE_ TrashigO_n TrashitsE_ Tratapmel TridE_ Tridra Tridring TridU_ Trikyongdar Trimang TrinlE_ Trinring Trinyen Trisong Trisu Trisumje Tritimel - Tritok Tritsen Tritsuk Trogyelbum Tromo Trongzhi TsamchO_ TsangdE_ Tsangma TsangmochE_ Tsangpo TsE_bartsen TsE_dE_ TsE_mE_ TsE_mo Tsen TsenchukdE_ - TsendrO_ Tsenpo Tsensong Tsentsen Tsenye TsE_phel TsE_ring TsE_ten TsE_undU_ TsE_wang Tsugru Tsuktsen Tsultrim Udumtsen Wangchuk Wangdak WangdE_ - Wangdu Wangpo Wanggyel WO_ser Yaksherpen Yang Yangchen Yangdrin Yanggolung YangtsE_mE_ YE_ YE_lekpo YE_shE_ YE_shE_gyeltsen Yongten Yonten YO_ntsun - YU_lsung Yumten Zanam ZangdE_ Zanggyel Zangpa Zangpo Zangtsa Zangtang Zangtsen Zangwa Zapa Zenji Zhangtsun Zhiwa Zhonnu Zigsa Zimun ZindE_ Zonpa Zopa - Zungtsen - } - - female_names = { - Akar Amala Amrita Belmoza Bhasundara Bhuti BO_nmo Boshay Bumphulwa Bum Busing Ceba Cepla Cham Chesa Chewa Chime Chimza ChO_dak ChO_den ChO_drO_n - ChO_ejor ChO_kyi ChO_mden ChO_mo ChO_mo_Lungma ChO_phel ChO_ying Cimba Cogrobza Dakmo Dawa Dechen Dekyi Devitara Dhargey Diki Dohna Dolkar - Dolma Dongkar Dorjne Dorjne_Naljorma Draksinmo Dringma Driza Dro DrO_nma DronmalO_n DrO_nnE_ Droza Dunkyi Dzeden Ekadzati Garkan Garma Gawa Gedun - Geleg GE_maspranglod GE_mathar Gewa Ghaden Gokarmo Gulang Gyatso Gyelmo GyelmotsU_n Gyeltsen Gyelwa Gyelyum Gyimsheng Hariti Jalus Jammo - Jampa Jamyang Jangchup JangchupsagO_n Jangmo Jangmu Jashi Jetsun Jetsunmo Jinmo Jinpa Jomo Jungney Kaba Kamala Karma Kasa Kelsang Kelzang - Ketu Keyuri Khadrobum Khadroma Khalama Khandro Khonma Khribang Khrimalod Khritsun Kipu Kitsi Koboza Kona KO_nchok Kunchen Kunga Kungcho - Kunphel Kunsang Kunzang Kurukulla Kyeden Kyi Kyimsheng Lasya Leki Lenchikma Lha Lhagyel Lhagyen Lhai Lhakee Lhakpa Lhamgonza Lhami Lhamo LhamotsU_n - Lhamu Lhathrimo LhE_ Lhundup Lobsang Lungma Machig Magyel Mangalal Mangmo MangmojE_ MangpojE_ ME_tok Michewa Mida Mongza Mungchang Nagaza Nagzib Naljorma - Namkha Nanamza Nele Ngawang Ngodup Nguntre Nima Ninguerre Norbu Nuba Nyandak Nyendrak Nyima Nyitri O_gyen Opame Pabu Pasang Pelden PeldrO_n - Pelgyimo PelmO_ Pema Pemala Penden Phoyongsa Phuntsok Phurbulcam Pogong Pongza Popo Poso Rabten Rinchen Rinzen Ritikmen Ritvija Sal Samdup - Samlo SanggyE_kha Sangmu Sangye Sashi Seba Sengdroma Sengemo Seupa Shenden Sherab Shonnu Skamar Somba SO_nam Tara Taramo Tashi Temba Tenzin - Tenzing Thekchen Thokmay Thridang Thrisong Thubten Togo Took Torma TO_karma Toktokteng Torma Tricham Tridaka Trikar TrimalO_ Trimonyen Trinle - TritsU_n Tromo TsamchO_ Tsangma Tsangmo Tse Tsenma Tsenmo Tsenmotok Tsephel Tsering Tseten Tsewang TshistO_ng Tsomo Tsogyel TsU_nmo TsU_nmotog - Tubten Wangchuck Wangdak Wangdue Wangmo WO_ser Yangchen Yangmo YE_lekmo YE_shE_ Yon Yongten Yondagmo Yumchenmo Zangmo Zhiting Zhyelmo Zhyelmots_Un - Zigsa Zopa - } - - - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 -} - -name_list_kirati = { - - cadet_dynasty_names = { - "dynn_Kirata" - "dynn_Limbuwan" - "dynn_Yakthung" - "dynn_Tambar" - "dynn_Mewa" - "dynn_Maiwa" - "dynn_Athraya" - "dynn_Magar" - "dynn_Lasahang" - "dynn_Yangwarok" - "dynn_Panthar" - "dynn_Phedap" - "dynn_Ilam" - "dynn_Miklung" - "dynn_Thala" - "dynn_Chethar" - "dynn_Sanglaing" - } - - dynasty_names = { - "dynn_Kirata" - "dynn_Limbuwan" - "dynn_Yakthung" - "dynn_Tambar" - "dynn_Mewa" - "dynn_Maiwa" - "dynn_Athraya" - "dynn_Magar" - "dynn_Lasahang" - "dynn_Yangwarok" - "dynn_Panthar" - "dynn_Phedap" - "dynn_Ilam" - "dynn_Miklung" - "dynn_Thala" - "dynn_Chethar" - "dynn_Sanglaing" - } - - male_names = { - Angbo Ap Bijay Chemjong Chesbi Ekangso Emay Eme Galijunga Hang Honden Indhang Indhing Jarai Kambrang Kamphura Kanglaing Kapsang Khadi - Khambek Khesiwa Khewa Khoya Kiriti Kundungjapa Ladho Laraso Lendangba Lepmuhang Lilimhang Mabo Mainam Mang Manghang Mangja Mawrong - Mikhangba Mimiding Mingso Mirak Misam Misek Miseksammang Misum Mokwan Muda Muhikmang Muhing Muigum Muinam Muing Mujoklungmang Mujoklung - Muk Mukkum Mukkumasam Muksam Munammang Mundhum Mung Murray Na Nahang Nagmok Nam Nambin Namdhingo Namnetti Namsang Namtimik Namyam Narayan Nasan - Nembang Oisum Otti Padhum Pakkandi Pangbo Papo Param Pathong Pennam Perung Perunghang Phaimo Phedap Phejikkum Phejiri Pheyamlung Phim - Pho Phonan Phung Poba Pongnisam Porokmi Posam Pungla Raya Sabat Sabhang Saiyok Sajum Sakma Saknim Samba Samlupi Sammang San Sang Sangaba - Sangkhadeo Sangla Sawaro Sawarohang Shengsengum Sireng Sirijunga Sisigen Sukum Suyem Suyen Tagera Taichi Taklung Tamsin Tanam Tanchippa - Tanchoppa Tangjum Tangsak Tangsang Tangsep Tangsot Tappeso Tarak Tarang Tepkho Thaing Thebasam Thindolung Thobo Thoding Thoktokso Thokna - Thosoing Thumsam Tiding Tiyen Tomang Tummihang Tummyang Uba Usuru Wedo Yak Yaketet Yakthung Yambahang Yambhamiba Yamdung Yamik Yamsang - Yamsese Yangnim Yangwa Ye Yengaso Yehang - } - - female_names = { - Ajuni Akawama Akawanama Amla Angsi Anjiri Anjum Chaitlungma Cherungma Chesung Chotlung Chunjun Dalima Ibu Ichap Iching Ikkisum Iklu Iksa - Iksum Ila Imet Ina Indha Indhangma Ingbhan Ingbho Ingdut Ingso Ingsum Injum Isri Itcham Itching Itla Ityang Ityangwa Jojiri Kettak Kham - Khambek Khama Khasam Khasing Khasuk Khem Khemsing Kudim Kujang Kumuk Kumun Kusang Kusum Laklungma Laikma Lajedangma Labherik Larak Lasang - Lasari Lasemi Lingbit Mainam Mangenna Manghama Mangja Mik Mikki Mikkiso Miksak Mikhangma Mingla Mim Mikiphung Mimiding Mingso Mirak Misam - Misek Misum Mimma Muhing Mui Muigum Muing Muinam Mujoklung Mukkumasam Muksam Muding Muyeng Murm Nadhim Nagmok Nahangma Nam Nambin Namdhingo - Namnetti Namnuma Namotti Namsari Namyam Nanuma Nasan Ningwa Ningwaphu Numa Oisum Omu Opma Otti Pakkandi Pennam Phaimo Pheyamlungma Phokwama - Phongma Phung Phungma Phungsama Pona Sabat Sabhang Sangama Sapme Sarang Suyen Tamsimma Tanam Tanchippa Tanchoppa Tangjum Tangsang Tiding - Tiyen Usuru Yamsang Yamsese Yuma Yumasam Yangwa - } - - - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 -} - -name_list_lhomon = { - - cadet_dynasty_names = { - "dynn_Bumthang" - "dynn_Lhomon" - "dynn_Paro" - "dynn_Chakhar" - "dynn_Panu" - "dynn_Monyul" - "dynn_Lhoyul" - "dynn_Lhoba" - "dynn_Monpa" - "dynn_Takpa" - "dynn_Puroik" - "dynn_Kho" - "dynn_Bwa" - "dynn_Sherdukpen" - "dynn_Sartang" - "dynn_Chug" - "dynn_Lish" - "dynn_Sharchopa" - "dynn_Memba" - "dynn_Ngalopa" - "dynn_Dengpa" - "dynn_Tagin" - "dynn_NyO_" - } - - dynasty_names = { - "dynn_Bumthang" - "dynn_Lhomon" - "dynn_Paro" - "dynn_Chakhar" - "dynn_Panu" - "dynn_Monyul" - "dynn_Lhoyul" - "dynn_Lhoba" - "dynn_Monpa" - "dynn_Takpa" - "dynn_Puroik" - "dynn_Kho" - "dynn_Bwa" - "dynn_Sherdukpen" - "dynn_Sartang" - "dynn_Chug" - "dynn_Lish" - "dynn_Sharchopa" - "dynn_Memba" - "dynn_Ngalopa" - "dynn_Dengpa" - "dynn_Tagin" - "dynn_NyO_" - } - - male_names = { - Abo Abotani Adek Aum Bac_og Bapu C_anglong Chakhar Chime Chimi Choeje Choenzo Choden Chogley Chogyal Choje Chokyi Dangla Dasho Dechen Desi Dhendup - Dhondup Dolma Domchu DO_ndrup Dopola Dorji Drakpa Drega Dronyer Drugyel Druk Dungkar Dzongpon Galay Gangzur Gompa Gonpo Gongzim Gyab - Gyalpo Gyaltshen Gyatso Gyeltshen Jakar Jamyang Jangcchub Jigme Jigyel Jimi Karma Kazi Khamsum Khandu Khedrup Khesar Kinga Kitshelpa Konchhog - Kuenga Kuengzang KU_njom Kyungtryul Lam Leki Lhendup Lhundzongpa Lhuntse Lingpa Lyonpo Melo Minjur Mipham Naku Namgay Namgyal Namgyay Namgyel - Namlungpa Nawang Ngawang Ngodrup Nidup Nim Nob Norbu Ome Padma Pala Paro Passang Pekar Pelri Pema Penjore Penlop Phuntsho Phurba Pila Polo Rabden - Rinchen Rukbo Sangay Sanje Sedi Sendha Sharpa Sherub Singye Sonam Takpon Talom Tamzhing Tandin Tangbi Tashi Tashigang Tashiganpa Teeyum Tenpa Tenzin Thekung Thinley - Thutop Tobgay Trulku Tsangyang Tsechup Tshering Tshewang Tshoki Ugyen Wangchen Wangdi Wangdicholing Wangdzongpa Wangpo Wangyal Wangzob - Wangzom Yab Yangsey Yeshey Zam Zangmo Zangpo Zhelngo Zhidhar - } - - female_names = { - Ane Aum Bac_og Bapu Beda Bidha Bumden C_anglong Chakhar Chime Chimi Choden Choeden Choki Chomo Choying Chuki Chukie Chukpo Dechen Dechog Deki - Dema Dolma Doma Dondhen Donyi Dorji Drolma Drongmo Dung Dungkar Dzongpon Euphelma Gaytsun Ipupu Jakar Jestun Karma Karzi Kesang Khelma Kiba Kyeden Lemo - Lhachig Lhaden Lhadon Lham Lhamo Ludrong Machig Mena Menmo Mindruk Ngedup Ngodrup Norbu Om Ome Ongmo Passang Pelden Pelmo Pem Pema Pemo Phenkem Phuntsho - Phurba Rinchen Sangay Selden Semyang Serchen Sidi Sonam Tandin Tashi Tsewang Tshering Tshomo Tsundo Tsundue Thuiji Ugyen Wangdicholing Wangmo - Yangchen Yangdon Yangki Yangzom Yeatso Yeshey Yuden Yum Zam Zangmo Zimpon - } - - - - pat_grf_name_chance = 50 - mat_grf_name_chance = 25 - father_name_chance = 25 - - pat_grm_name_chance = 25 - mat_grm_name_chance = 25 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_tungusic.txt b/common/culture/name_lists/00_tungusic.txt deleted file mode 100644 index 148e00ec..00000000 --- a/common/culture/name_lists/00_tungusic.txt +++ /dev/null @@ -1,319 +0,0 @@ -name_list_jurchen = { - - dynasty_name_first = yes - dynasty_names = { - "dynn_Haixi" - "dynn_Jilin" - "dynn_Odori" - "dynn_Amgun" - "dynn_Suksuhu" - "dynn_Mengtemu" - "dynn_Khingan" - "dynn_Wanyan" - "dynn_Ahanba" - "dynn_AiS_I_n" - "dynn_Aotun" - "dynn_Atai" - "dynn_BujowA_" - "dynn_Juhung" - "dynn_A_luA_" - "dynn_Fojomon" - "dynn_FuC_ian" - "dynn_Giagu" - "dynn_Giaoru" - "dynn_Guaiuruan" - "dynn_HA_rsurgia" - "dynn_HA_S_I_riA_" - "dynn_MA_nin" - "dynn_Nahu" - "dynn_Sahala" - "dynn_S_aron" - "dynn_S_I_jan" - "dynn_Jang" - "dynn_Tukdan" - "dynn_CA_ncun" - "dynn_Ugueisun" - "dynn_Ulyan" - "dynn_UndihA_n" - "dynn_Usaye" - "dynn_WangsurA_wei" - "dynn_Wongian" - "dynn_Wangiyyan" - "dynn_Nalan" - "dynn_Tushan" - "dynn_Pusan" - "dynn_S_uhu" - "dynn_Wugulun" - "dynn_Tangkuo" - "dynn_Wendihen" - "dynn_Wusazha" - "dynn_Pucha" - "dynn_Peiman" - "dynn_Wulinda" - "dynn_Tudan" - "dynn_HeS_ilie" - "dynn_Dilie" - "dynn_Ikderi" - "dynn_Aolimi" - "dynn_Puali" - "dynn_Yuelidu" - "dynn_Cheolli" - "dynn_Punuli" - "dynn_Odoli" - "dynn_Huligai" - "dynn_Tuowen" - "dynn_Nianhe" - "dynn_S_uyaojia" - } - cadet_dynasty_names = { - "dynn_Haixi" - "dynn_Jilin" - "dynn_Odori" - "dynn_Amgun" - "dynn_Suksuhu" - "dynn_Mengtemu" - "dynn_Khingan" - "dynn_Wanyan" - "dynn_Ahanba" - "dynn_AiS_I_n" - "dynn_Aotun" - "dynn_Atai" - "dynn_BujowA_" - "dynn_Juhung" - "dynn_A_luA_" - "dynn_Fojomon" - "dynn_FuC_ian" - "dynn_Giagu" - "dynn_Giaoru" - "dynn_Guaiuruan" - "dynn_HA_rsurgia" - "dynn_HA_S_I_riA_" - "dynn_MA_nin" - "dynn_Nahu" - "dynn_Sahala" - "dynn_S_aron" - "dynn_S_I_jan" - "dynn_Jang" - "dynn_Tukdan" - "dynn_CA_ncun" - "dynn_Ugueisun" - "dynn_Ulyan" - "dynn_UndihA_n" - "dynn_Usaye" - "dynn_WangsurA_wei" - "dynn_Wongian" - "dynn_Wangiyyan" - "dynn_Nalan" - "dynn_Tushan" - "dynn_Pusan" - "dynn_S_uhu" - "dynn_Wugulun" - "dynn_Tangkuo" - "dynn_Wendihen" - "dynn_Wusazha" - "dynn_Pucha" - "dynn_Peiman" - "dynn_Wulinda" - "dynn_Tudan" - "dynn_HeS_ilie" - "dynn_Dilie" - "dynn_Ikderi" - "dynn_Aolimi" - "dynn_Puali" - "dynn_Yuelidu" - "dynn_Cheolli" - "dynn_Punuli" - "dynn_Odoli" - "dynn_Huligai" - "dynn_Tuowen" - "dynn_Nianhe" - "dynn_S_uyaojia" - } - - male_names = { - Abaohan Abulang Agu Aguda_963F_9AA8_6253 Agunai Aguo Aha Ahacu Ahai Ahaibaifu AiS_I_ AiS_I_ha Ajungha AlbasE_ri Ali Alihan Alihemen Alin Alu Alubu Aludai Aluhan Aluobuhua Aluwan Ancen Ancu Andahai Aodi Asur AS_entan AS_I_ngha - Bahai Bahei Bahulu Baifu Baoci Baohuoli Barha Beilu Biefoga Bugil Bulo BulE_gE_maihu Cala Cangho Caoha CenhulagE_ Cotoya Cunggelo CE_gE_ CE_jE_ CE_ndapan CE_nhulagE_ - Daijuhu Daisu Dalunha DaS_I_n Digunai Diku Dili Diligi Dingge Dingju DiS_un Dorbi Dumu DuS_i Dzhin Ecu Eiyeku EiE_lu Eliduo Elu Elubu Eluguan Elun Fanca Fannu FE_nsI_ - GiahucI_ Giohua Gioli Guantu Gulan GuS_a GE_cI_buhua GE_jeE_ Hacaha Hadar Hanpu HanS_I_ HasaiE_ HaE_u Heda Hela Helibo Hesun Heye Hezhe Hezhenbao HeS_i HeS_itan HuboS_u Hudun Huihou Hulijia Hulu Hulubu Hushahu Hushida Husurugai HusurE_gai Hutunla Hutuwa HuC_ienu HuS_a - Ibaha IcI_gE_ IhalacI_ Iji Ilungha Inginggia IngjI_na IrnurE_u IS_iha Jabingia Jahodai Jahudai Jaligi Jogosang Juguta JulE_ JI_lunggusu Kunaha Kunuma KuS_inu Labuda Loloho LouS_i - Manduhe Mangda Mapo Meng_an Mentemu MieS_I_nu Moliye Muha Mutalu Mutawuta ME_deE__E_ NaduoS_I_ Nanhe Nianhan NibucI_ NigE_ NijE_ngE_ Ninggisa Ninggujua Ningji Ningjiasu NudE_gE_ Nuhu NujE_nge NU_linai - OhE_nE_gE_ Oon Pandu PociS_u Pudu Puladu Pulihei Puluhu Pusulie Sagai Sagezhou SahamieE_ Sahani Saiha Sain Salinian SatS_I_ Soli Songge Sonu Souru Suike Sungida SI_aoha - Tege Telin Tudu Tugesu Tunon TuS_I_nge Cala CI_nu Uda Udaun Udisa_E_ UhuwE_ Ulu US_I_nha - WeiC_in Wennu Woben Wodai Wohu Wolibu Wolie Woli_an Wolu Wolun Wosai Woye Wozhe Wucimai Wudubu Wugucu Wugunai Wulie WuyaS_u Wuzhu WE_uanjE_ - YacI_nggia Yangdai Yangha Yangmudau Yansun Yawuta Yingge Yinzhuke Yongji Yunji Zhanmeihe ZhuS_ennu E_lijesE_nE_ E_ncI_E_ng E_surE_ku E_tE_ - S_alungha S_angnggu S_engguo S_ensi_abu S_entumen S_iebucu S_iekude S_ielihu S_ielu S_ieyibao S_igiyanu S_igunai S_ijianu S_ilu S_ilula S_inde S_inilie S_iS_ihuan S_unian S_untC_ing S_I_bua S_I_langha S_I_lu S_I_lungha S_I_ngsI_ S_I_puni - } - female_names = { - Abha Abuha AcI_buru Aihuma Alan Alihu Ambala Amban Ancun Ania Baiyang Bia Bira BoroE_ri Buctunggi Bugu Buiyemei BulE_hei BurE_ki Caca CI_cI_hei Dahumo Dala Diben Dirgara Dohomo Dorhon Dulun Dunuke DuwE_bE_ - EihE_n Feicen Fonto Fontomo FulagiE_n Giahun Gluma Gorhon Guifala Gulmahai GE_tilE_ Indahong InE_nggi Jabu Jalur Jaolamai JuhE_ JE_ku JI_rijI_hE_i Liwaha LE_fu - MeihE_ MiehE_ Minggan Monon Morin Mudur MudusE_ Mulan Munggan MuwE_ ME_cu ME_dE_ri ME_jI_lE_n ME_jI_lE_nbE_ Nadan Nailahu Narhun Ngauyahu NienieE_ri NiogohE_ Nionieha NongiE_n - Orho Orhoda Orin Oso OS_I_ha Pula Puluhuzhi Sadugai Saimanggi Samao Sibiehung SisE_ri SogiE_n Songgi Suan Sufa SuhE_ SE_kE_ Tasha Tugi TumE_n Tunggi TuwE_ri - Ulhu Ulin Ulu Ulya Unduhung Uyewun US_I_n Wanduhung Weihan Wulu_5140_9C81 Yewuju Zhusiban Zhusihui - E_rdE_ S_agulizhen S_igge S_igu S_igu_er S_oun S_umu S_unja S_E_nun S_I_lasun S_I_lE_un S_I_ngE_ S_I_rha - - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} - -name_list_mohe = { - - dynasty_name_first = yes - dynasty_names = { - "dynn_Haixi" - "dynn_Jilin" - "dynn_Odori" - "dynn_Amgun" - "dynn_Suksuhu" - "dynn_Mengtemu" - "dynn_Khingan" - "dynn_Wanyan" - "dynn_Ahanba" - "dynn_AiS_I_n" - "dynn_Aotun" - "dynn_Atai" - "dynn_BujowA_" - "dynn_Juhung" - "dynn_A_luA_" - "dynn_Fojomon" - "dynn_FuC_ian" - "dynn_Giagu" - "dynn_Giaoru" - "dynn_Guaiuruan" - "dynn_HA_rsurgia" - "dynn_HA_S_I_riA_" - "dynn_MA_nin" - "dynn_Nahu" - "dynn_Sahala" - "dynn_S_aron" - "dynn_S_I_jan" - "dynn_Jang" - "dynn_Tukdan" - "dynn_CA_ncun" - "dynn_Ugueisun" - "dynn_Ulyan" - "dynn_UndihA_n" - "dynn_Usaye" - "dynn_WangsurA_wei" - "dynn_Wongian" - "dynn_Wangiyyan" - "dynn_Nalan" - "dynn_Tushan" - "dynn_Pusan" - "dynn_S_uhu" - "dynn_Wugulun" - "dynn_Tangkuo" - "dynn_Wendihen" - "dynn_Wusazha" - "dynn_Pucha" - "dynn_Peiman" - "dynn_Wulinda" - "dynn_Tudan" - "dynn_HeS_ilie" - "dynn_Dilie" - "dynn_Ikderi" - "dynn_Aolimi" - "dynn_Puali" - "dynn_Yuelidu" - "dynn_Cheolli" - "dynn_Punuli" - "dynn_Odoli" - "dynn_Huligai" - "dynn_Tuowen" - "dynn_Nianhe" - "dynn_S_uyaojia" - } - cadet_dynasty_names = { - "dynn_Haixi" - "dynn_Jilin" - "dynn_Odori" - "dynn_Amgun" - "dynn_Suksuhu" - "dynn_Mengtemu" - "dynn_Khingan" - "dynn_Wanyan" - "dynn_Ahanba" - "dynn_AiS_I_n" - "dynn_Aotun" - "dynn_Atai" - "dynn_BujowA_" - "dynn_Juhung" - "dynn_A_luA_" - "dynn_Fojomon" - "dynn_FuC_ian" - "dynn_Giagu" - "dynn_Giaoru" - "dynn_Guaiuruan" - "dynn_HA_rsurgia" - "dynn_HA_S_I_riA_" - "dynn_MA_nin" - "dynn_Nahu" - "dynn_Sahala" - "dynn_S_aron" - "dynn_S_I_jan" - "dynn_Jang" - "dynn_Tukdan" - "dynn_CA_ncun" - "dynn_Ugueisun" - "dynn_Ulyan" - "dynn_UndihA_n" - "dynn_Usaye" - "dynn_WangsurA_wei" - "dynn_Wongian" - "dynn_Wangiyyan" - "dynn_Nalan" - "dynn_Tushan" - "dynn_Pusan" - "dynn_S_uhu" - "dynn_Wugulun" - "dynn_Tangkuo" - "dynn_Wendihen" - "dynn_Wusazha" - "dynn_Pucha" - "dynn_Peiman" - "dynn_Wulinda" - "dynn_Tudan" - "dynn_HeS_ilie" - "dynn_Dilie" - "dynn_Ikderi" - "dynn_Aolimi" - "dynn_Puali" - "dynn_Yuelidu" - "dynn_Cheolli" - "dynn_Punuli" - "dynn_Odoli" - "dynn_Huligai" - "dynn_Tuowen" - "dynn_Nianhe" - "dynn_S_uyaojia" - } - - male_names = { - Abaohan Abulang Agu Aguda_963F_9AA8_6253 Agunai Aguo Aha Ahacu Ahai Ahaibaifu AiS_I_ AiS_I_ha Ajungha AlbasE_ri Ali Alihan Alihemen Alin Alu Alubu Aludai Aluhan Aluobuhua Aluwan Ancen Ancu Andahai Aodi Asur AS_entan AS_I_ngha - Bahai Bahei Bahulu Baifu Baoci Baohuoli Barha Beilu Biefoga Bugil Bulo BulE_gE_maihu Cala Cangho Caoha CenhulagE_ Cotoya Cunggelo CE_gE_ CE_jE_ CE_ndapan CE_nhulagE_ - Daijuhu Daisu Dalunha DaS_I_n Digunai Diku Dili Diligi Dingge Dingju DiS_un Dorbi Dumu DuS_i Dzhin Ecu Eiyeku EiE_lu Eliduo Elu Elubu Eluguan Elun Fanca Fannu FE_nsI_ - GiahucI_ Giohua Gioli Guantu Gulan GuS_a GE_cI_buhua GE_jeE_ Hacaha Hadar Hanpu HanS_I_ HasaiE_ HaE_u Heda Hela Helibo Hesun Heye Hezhe Hezhenbao HeS_i HeS_itan HuboS_u Hudun Huihou Hulijia Hulu Hulubu Hushahu Hushida Husurugai HusurE_gai Hutunla Hutuwa HuC_ienu HuS_a - Ibaha IcI_gE_ IhalacI_ Iji Ilungha Inginggia IngjI_na IrnurE_u IS_iha Jabingia Jahodai Jahudai Jaligi Jogosang Juguta JulE_ JI_lunggusu Kunaha Kunuma KuS_inu Labuda Loloho LouS_i - Manduhe Mangda Mapo Meng_an Mentemu MieS_I_nu Moliye Muha Mutalu Mutawuta ME_deE__E_ NaduoS_I_ Nanhe Nianhan NibucI_ NigE_ NijE_ngE_ Ninggisa Ninggujua Ningji Ningjiasu NudE_gE_ Nuhu NujE_nge NU_linai - OhE_nE_gE_ Oon Pandu PociS_u Pudu Puladu Pulihei Puluhu Pusulie Sagai Sagezhou SahamieE_ Sahani Saiha Sain Salinian SatS_I_ Soli Songge Sonu Souru Suike Sungida SI_aoha - Tege Telin Tudu Tugesu Tunon TuS_I_nge Cala CI_nu Uda Udaun Udisa_E_ UhuwE_ Ulu US_I_nha - WeiC_in Wennu Woben Wodai Wohu Wolibu Wolie Woli_an Wolu Wolun Wosai Woye Wozhe Wucimai Wudubu Wugucu Wugunai Wulie WuyaS_u Wuzhu WE_uanjE_ - YacI_nggia Yangdai Yangha Yangmudau Yansun Yawuta Yingge Yinzhuke Yongji Yunji Zhanmeihe ZhuS_ennu E_lijesE_nE_ E_ncI_E_ng E_surE_ku E_tE_ - S_alungha S_angnggu S_engguo S_ensi_abu S_entumen S_iebucu S_iekude S_ielihu S_ielu S_ieyibao S_igiyanu S_igunai S_ijianu S_ilu S_ilula S_inde S_inilie S_iS_ihuan S_unian S_untC_ing S_I_bua S_I_langha S_I_lu S_I_lungha S_I_ngsI_ S_I_puni - } - female_names = { - Abha Abuha AcI_buru Aihuma Alan Alihu Ambala Amban Ancun Ania Baiyang Bia Bira BoroE_ri Buctunggi Bugu Buiyemei BulE_hei BurE_ki Caca CI_cI_hei Dahumo Dala Diben Dirgara Dohomo Dorhon Dulun Dunuke DuwE_bE_ - EihE_n Feicen Fonto Fontomo FulagiE_n Giahun Gluma Gorhon Guifala Gulmahai GE_tilE_ Indahong InE_nggi Jabu Jalur Jaolamai JuhE_ JE_ku JI_rijI_hE_i Liwaha LE_fu - MeihE_ MiehE_ Minggan Monon Morin Mudur MudusE_ Mulan Munggan MuwE_ ME_cu ME_dE_ri ME_jI_lE_n ME_jI_lE_nbE_ Nadan Nailahu Narhun Ngauyahu NienieE_ri NiogohE_ Nionieha NongiE_n - Orho Orhoda Orin Oso OS_I_ha Pula Puluhuzhi Sadugai Saimanggi Samao Sibiehung SisE_ri SogiE_n Songgi Suan Sufa SuhE_ SE_kE_ Tasha Tugi TumE_n Tunggi TuwE_ri - Ulhu Ulin Ulu Ulya Unduhung Uyewun US_I_n Wanduhung Weihan Wulu_5140_9C81 Yewuju Zhusiban Zhusihui - E_rdE_ S_agulizhen S_igge S_igu S_igu_er S_oun S_umu S_unja S_E_nun S_I_lasun S_I_lE_un S_I_ngE_ S_I_rha - - } - - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} diff --git a/common/culture/name_lists/00_ugro_permian.txt b/common/culture/name_lists/00_ugro_permian.txt deleted file mode 100644 index e417c7a1..00000000 --- a/common/culture/name_lists/00_ugro_permian.txt +++ /dev/null @@ -1,212 +0,0 @@ -name_list_komi = { - - cadet_dynasty_names = { - "dynn_Syktyvkar" - "dynn_Permyakid" - "dynn_Azegid" - "dynn_Gachegid" - "dynn_Zhebegid" - "dynn_Lunegid" - "dynn_Zhunegid" - "dynn_Irtegid" - "dynn_Moshegid" - "dynn_Nydogid" - "dynn_Nylogid" - "dynn_Ozhegid" - "dynn_Odegid" - "dynn_Rategid" - "dynn_Permyakid" - } - - dynasty_names = { - "dynn_Syktyvkar" - "dynn_Permyakid" - "dynn_Azegid" - "dynn_Gachegid" - "dynn_Zhebegid" - "dynn_Lunegid" - "dynn_Zhunegid" - "dynn_Irtegid" - "dynn_Moshegid" - "dynn_Nydogid" - "dynn_Nylogid" - "dynn_Ozhegid" - "dynn_Odegid" - "dynn_Rategid" - "dynn_Permyakid" - } - - male_names = { - Andyamo Arnaz Arti Artis Arvo Aymort Azeg Biur Biyar Burmort Chichayka Chuga Dergun Deryab Dobrinya Dokya Dondy Gazheg Hulyen Inzhay Irter Lyneg Lysko Kezhapa Kezhay Kezhedey - Kezhevat Kichay Koksha Kuaz Kudym-Osh Kya Kyldysin Malyaka Malyy Meltsayka Mosheg Nalka Nuyaksha Nuyanza Nuyat Nydog Nylog Odeg Onika Osh Oshmar Oshypel Ovtay Ozheg Ozhmeg - Pakstyan Paksyay Paksyut Parush Pivtsay Pokshayka Putyayka Pyera Rateg Rayda Sarin Sektev Setyamka Shindyay Shypicha Shyrpuzh Spira Syrka Tikshayka Tuhan Tyueykezhut - Tyutyuk Tugan Turush Uchva Varaka Vechkas Velmayka Virdyan Viryas Viryay Vokan Yirkap Ylvan Zarny Zhebeg Zhuneg Zyryan - } - female_names = { - Anava Ashava Asrava Avya Azra-Va Chechama Chenksa Cherava Chichayka Chindyapa Chindyayka Chinzhay Chitska Elyuva Inyava Kanyava Kanyuva - Kirdyava Kunava Kunyavka Litava Liyava Mazava Megurka Mel_shay Nezayka Nulzyava Nyal_ka Nyayka Nyumina Nyv Olota Ordava Oshama O_shkamO_shka Parava Pekshayka - Pemka Pokshava Poshayka Potekay Potyava Putyayka Ravzhava Rayda Ruzava Sanal_ka Sangasa Sernyava Serzhay Setyamka Seyamka Shochynava Shonzhava - Shukshtoroyka Sinyava Siyamka Slyugan_ka Sochava Styaka Syryava Tatka Tekay Tetyava Tikshayka Toyaksha Tundava Tundya Unzhutka Upurga - Utyayka Valdava Vergava Vezhav Vidyava Virtyava Yalgava YugO_rka - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} - -name_list_khanty = { - - cadet_dynasty_names = { - { "dynn_Mansi" } - { "dynn_Oborin" } - { "dynn_Ketkso" } - { "dynn_Vakhad" } - { "dynn_Chulyman" } - { "dynn_Tomto" } - { "dynn_Katunnu" } - { "dynn_Anuya" } - { "dynn_Irtys" } - { "dynn_Omno" } - { "dynn_Tobolon" } - { "dynn_Tavdai" } - { "dynn_Isetu" } - { "dynn_Miassar" } - { "dynn_Ubaganor" } - { "dynn_Kondair" } - { "dynn_Kazymil" } - { "dynn_Yugan" } - { "dynn_Nakharva" } - { "dynn_Turunt" } - { "dynn_Pandey" } - { "dynn_Kalmoti" } - { "dynn_Mamkin" } - { "dynn_Voyetor" } - { "dynn_Enetor" } - { "dynn_Toptyodyn" } - { "dynn_Yendra" } - { "dynn_Dolgi" } - { "dynn_Vaspukhol" } - { "dynn_Tymgym" } - { "dynn_Elizaro" } - { "dynn_Karapau" } - { "dynn_Nyartu" } - { "dynn_Lokhto" } - { "dynn_Lakhsentur" } - { "dynn_Tuman" } - } - - dynasty_names = { - { "dynn_Mansi" } - { "dynn_Oborin" } - { "dynn_Ketkso" } - { "dynn_Vakhad" } - { "dynn_Chulyman" } - { "dynn_Tomto" } - { "dynn_Katunnu" } - { "dynn_Anuya" } - { "dynn_Irtys" } - { "dynn_Omno" } - { "dynn_Tobolon" } - { "dynn_Tavdai" } - { "dynn_Isetu" } - { "dynn_Miassar" } - { "dynn_Ubaganor" } - { "dynn_Kondair" } - { "dynn_Kazymil" } - { "dynn_Yugan" } - { "dynn_Nakharva" } - { "dynn_Turunt" } - { "dynn_Pandey" } - { "dynn_Kalmoti" } - { "dynn_Mamkin" } - { "dynn_Voyetor" } - { "dynn_Enetor" } - { "dynn_Toptyodyn" } - { "dynn_Yendra" } - { "dynn_Dolgi" } - { "dynn_Vaspukhol" } - { "dynn_Tymgym" } - { "dynn_Elizaro" } - { "dynn_Karapau" } - { "dynn_Nyartu" } - { "dynn_Lokhto" } - { "dynn_Lakhsentur" } - { "dynn_Tuman" } - } - - male_names = { - Andyamo Arnaz Arti Artis Arvo Aymort Azeg Biur Biyar Burmort Chichayka Chuga Dergun Deryab Dobrinya Dokya Dondy Gazheg Hulyen Inzhay Irter Lyneg Lysko Kezhapa Kezhay Kezhedey - Kezhevat Kichay Koksha Kuaz Kudym-Osh Kya Kyldysin Malyaka Malyy Meltsayka Mosheg Nalka Nuyaksha Nuyanza Nuyat Nydog Nylog Odeg Onika Osh Oshmar Oshypel Ovtay Ozheg Ozhmeg - Pakstyan Paksyay Paksyut Parush Pivtsay Pokshayka Putyayka Pyera Rateg Rayda Sarin Sektev Setyamka Shindyay Shypicha Shyrpuzh Spira Syrka Tikshayka Tuhan Tyueykezhut - Tyutyuk Tugan Turush Uchva Varaka Vechkas Velmayka Virdyan Viryas Viryay Vokan Yirkap Ylvan Zarny Zhebeg Zhuneg Zyryan - } - female_names = { - Anava Ashava Asrava Avya Azra-Va Chechama Chenksa Cherava Chichayka Chindyapa Chindyayka Chinzhay Chitska Elyuva Inyava Kanyava Kanyuva - Kirdyava Kunava Kunyavka Litava Liyava Mazava Megurka Mel_shay Nezayka Nulzyava Nyal_ka Nyayka Nyumina Nyv Olota Ordava Oshama O_shkamO_shka Parava Pekshayka - Pemka Pokshava Poshayka Potekay Potyava Putyayka Ravzhava Rayda Ruzava Sanal_ka Sangasa Sernyava Serzhay Setyamka Seyamka Shochynava Shonzhava - Shukshtoroyka Sinyava Siyamka Slyugan_ka Sochava Styaka Syryava Tatka Tekay Tetyava Tikshayka Toyaksha Tundava Tundya Unzhutka Upurga - Utyayka Valdava Vergava Vezhav Vidyava Virtyava Yalgava YugO_rka - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} - -name_list_samoyed = { - - cadet_dynasty_names = { - { "dynn_Varakid" } - { "dynn_Sarakid" } - { "dynn_Hasabid" } - { "dynn_Tatvid" } - { "dynn_Yurakid" } - { "dynn_Kuluio" } - { "dynn_Dvinid" } - { "dynn_Onegin" } - { "dynn_Uspinega" } - { "dynn_Pinega" } - { "dynn_Maugra" } - { "dynn_Osil" } - { "dynn_Yagani" } - { "dynn_Myando" } - { "dynn_Vezmo" } - { "dynn_Muraka" } - { "dynn_Pusko" } - { "dynn_Kudmi" } - { "dynn_Ukhta" } - } - - dynasty_names = { - { "dynn_Varakid" } - { "dynn_Sarakid" } - { "dynn_Hasabid" } - { "dynn_Tatvid" } - { "dynn_Yurakid" } - { "dynn_Kuluio" } - { "dynn_Dvinid" } - { "dynn_Onegin" } - { "dynn_Uspinega" } - { "dynn_Pinega" } - { "dynn_Maugra" } - { "dynn_Osil" } - { "dynn_Yagani" } - { "dynn_Myando" } - { "dynn_Vezmo" } - { "dynn_Muraka" } - { "dynn_Pusko" } - { "dynn_Kudmi" } - { "dynn_Ukhta" } - } - - male_names = { - Alik Hasaba Kako Kharuchi Kolik Mandak Nabtiko Nenyts Nga NgE_noh Noumea Num Nyalku Panay Pudak Salinder Samatu Sarak Sirtya Somatu Syudbya Tatva Tolik Vesei Wayngachi XE_ryuchi Yadne Yapti Yar Yavlad Yurak - } - female_names = { - AtpA_lha Auli Galya Ilme Kat Khatyako KontA_w Kujku Laptsui Ngeva Senda Syeju Tada Tadane Yar - } - dynasty_of_location_prefix = "dynnp_of" - founder_named_dynasties = yes - house_based_map_names = yes -} diff --git a/common/culture/name_lists/00_vietnamese.txt b/common/culture/name_lists/00_vietnamese.txt deleted file mode 100644 index f355078e..00000000 --- a/common/culture/name_lists/00_vietnamese.txt +++ /dev/null @@ -1,139 +0,0 @@ -name_list_vietnamese = { - - house_based_map_names = yes - dynasty_name_first = yes - suggest_family_names = no - suggest_ancestor_names = no - - #Cadet Names - #These are largely superceded by script in found_cadet_house_decision_effect when new cadet branches are formed using the decision. - #Vietnamese Pattern: Barony + Dynasty Name - dynasty_names = { - dynn_Bach_767D - dynn_Bui_88F4 - dynn_Cao_9AD8 - dynn_Chu_6731 - dynn_Dam_8B5A - dynn_Dang_9127 - dynn_Dao_9676 - dynn_Dinh_4E01 - dynn_Do_675C - dynn_Doan_6BB5 - dynn_Dong_8463_VN - dynn_Duong_694A - dynn_Ha_4F55 - dynn_Ho_80E1 - dynn_Hoang_9EC3 - dynn_Khuc_66F2 - dynn_Kieu_77EF - dynn_Lam_6797 - dynn_Le_9ECE - dynn_Linh_9748 - dynn_Loi_96F7 - dynn_Luu_5289 - dynn_Ly_674E - dynn_Mac_83AB - dynn_Mai_6885 - dynn_Nghiem_56B4 - dynn_Ngo_5433 - dynn_Nguyen_962E - dynn_Nung_5102 - dynn_Phan_6F58 - dynn_Pham_8303 - dynn_Phung_99AE - dynn_Quach_90ED - dynn_Quan_95DC - dynn_Quyen_6B0A - dynn_Ta_8B1D - dynn_Than_7533 - dynn_To_8607 - dynn_Toan_5168 - dynn_Ton_5B6B - dynn_Tong_5B8B - dynn_Tran_9673 - dynn_Trieu_8D99 - dynn_Trinh_912D - dynn_Truong_5F35 - dynn_Van_6587 - dynn_Vu_6B66 - dynn_Vuong_738B - } - - cadet_dynasty_names = { - dynn_Bach_767D - dynn_Bui_88F4 - dynn_Cao_9AD8 - dynn_Chu_6731 - dynn_Dam_8B5A - dynn_Dang_9127 - dynn_Dao_9676 - dynn_Dinh_4E01 - dynn_Do_675C - dynn_Doan_6BB5 - dynn_Dong_8463_VN - dynn_Duong_694A - dynn_Ha_4F55 - dynn_Ho_80E1 - dynn_Hoang_9EC3 - dynn_Khuc_66F2 - dynn_Kieu_77EF - dynn_Lam_6797 - dynn_Le_9ECE - dynn_Linh_9748 - dynn_Loi_96F7 - dynn_Luu_5289 - dynn_Ly_674E - dynn_Mac_83AB - dynn_Mai_6885 - dynn_Nghiem_56B4 - dynn_Ngo_5433 - dynn_Nguyen_962E - dynn_Nung_5102 - dynn_Phan_6F58 - dynn_Pham_8303 - dynn_Phung_99AE - dynn_Quach_90ED - dynn_Quan_95DC - dynn_Quyen_6B0A - dynn_Ta_8B1D - dynn_Than_7533 - dynn_To_8607 - dynn_Toan_5168 - dynn_Ton_5B6B - dynn_Tong_5B8B - dynn_Tran_9673 - dynn_Trieu_8D99 - dynn_Trinh_912D - dynn_Truong_5F35 - dynn_Van_6587 - dynn_Vu_6B66 - dynn_Vuong_738B - } - - male_names = { - An Anh Bao Bich Binh Cam Chau Chi Cong Dat Diep Dieu Dinh Duc Dung Duong Giang Ha Hai Hao Hung Huu - Huy Khanh Lan Lanh Liem Linh Long Minh Nam Ngai Ngoc Nguyen Nhung Phuc Quan Quang Quy Quynh Son - Thanh Thao Thuan Trai Tri Trinh Truc Tu Tuan Van Vien Vinh Xuan - Bac Ban Bay Bien Cao Chien Chieu Chinh Chun Chung Chuong Cuong Dai Dan Dang Danh Dao Dau Dac - Diem Dien Doan Dong Giap Hanh Hau Hien Hiep Hieu Hoai Hoan_6853 Hoang Hoi Hop Huyen Khai Khang Khac Khiem - Khoa Khoi Khue Khuyen Kien Kiet Kieu Kinh Ky Lam Lang Lap Luc Le Loc Loi Luan Luong Ly Manh Ngan - Nghia Ngo Nhan Nhuan Phat Phi Phien Phong Phu Phung Quoc Quyet Sam Sang Sinh Tai Tam Tan Than Thien - Thin Thinh Thang Tho Thuc Thuong Thuyet Toi Tinh Toan Tong Tra Trac Tram Trung Truong Tuong - } - female_names = { - An Anh Bao Bich Binh Cam Chau Cuc Diep Dieu Dinh Duong Giang Ha Hang Hoa Hong Hue Huong Khanh Kim - Lan Lanh Lien Linh Loan Mai My Ngoc Nguyet Nhung Phuc Phuong Quy Quyen_6B0A Quynh Thanh Thao Thi Thu - Thuy Tien Trang Trinh Truc Tu Tuyen Tuyet Van Vinh Yen - Baolinh Baotran Be Cai Canh Cao Chieu Chinh Chun Cham_Tu Dai Dan Diem Dien Hanh Hau Hien Hieu Hoai - Hoan_6853 Hoang Hop Huyen Khiem Khoi Khue Kieu Kinh Ky Lam Le Loc Lua Luong Ly Nga Ngan Nghia Ngo Nhan - Nhuan Phi Phu Sang Sinh Tai Tam Than Thin Thinh Thom Thuc Toi Tinh Tra Tram - } - - # Keep names changing - pat_grf_name_chance = 0 - mat_grf_name_chance = 0 - father_name_chance = 0 - pat_grm_name_chance = 0 - mat_grm_name_chance = 0 - mother_name_chance = 0 -} diff --git a/common/culture/name_lists/00_volga_finnic.txt b/common/culture/name_lists/00_volga_finnic.txt deleted file mode 100644 index 3078a477..00000000 --- a/common/culture/name_lists/00_volga_finnic.txt +++ /dev/null @@ -1,340 +0,0 @@ -name_list_mordvin = { - - cadet_dynasty_names = { - { "dynn_Chumbulatid" } - { "dynn_Purginepazid" } - { "dynn_Varakid" } - { "dynn_Rav" } - { "dynn_Paas" } - { "dynn_Shkai" } - { "dynn_Mastoratia" } - { "dynn_Chipaz" } - { "dynn_Nishkepaz" } - { "dynn_Ange_Patiai" } - { "dynn_Mastoron_Kirdi" } - { "dynn_Shkay" } - { "dynn_Kardaz-Scrko" } - { "dynn_Tushtyan" } - { "dynn_Aidar" } - { "dynn_Borovon" } - { "dynn_Derkul" } - { "dynn_Valo" } - } - - dynasty_names = { - { "dynn_Chumbulatid" } - { "dynn_Purginepazid" } - { "dynn_Varakid" } - { "dynn_Rav" } - { "dynn_Paas" } - { "dynn_Shkai" } - { "dynn_Mastoratia" } - { "dynn_Chipaz" } - { "dynn_Nishkepaz" } - { "dynn_Ange_Patiai" } - { "dynn_Mastoron_Kirdi" } - { "dynn_Shkay" } - { "dynn_Kardaz-Scrko" } - { "dynn_Tushtyan" } - { "dynn_Aidar" } - { "dynn_Borovon" } - { "dynn_Derkul" } - { "dynn_Valo" } - } - - male_names = { - Alyok Andryu Andyamo Artyo Atyamas Azyren Chichayka Chipaz Chumbulat Dergun Deryab Dobrinya Doro Drigo Erziya Inzhay - Kardaz Kariton Kezhapa Kezhay Kezhedey Kezhevat Khoddey Kichay Kinyak Kiryo Koma Koshel Kubrat Kvedor Kvilyo - Malyaka Malyy Matyo Meltsayka Mikikor Mordvinko Moksha Mosey Murunza Nalka Naruchad Nekhot Nishkepaz Nuyaksha Nuyanza Nuyat - Obran Onton Orunza Ovtay Pakstyan Paksyay Paksyut Parush Pinyas Pivtsay Pokshayka Puresh Purysho Putyayka - Saksa Setyamka Shindyay Shkay Shoksha Sokhron Surt Syrka Tikshayka Torkan Tul Tunya Tutyra Tylmache Tylze Tyueykezhut Tyushten Tyushtya - Uchva Uzhara Varaka Varmanpaz Vasyuk Vechkas Velmayka Vikay Virdyan Viryas Viryay - } - female_names = { - Anava Anka Ashava Asrava Azra-Va Chechama Chenksa Cherava Cheymarina Chichayka Chindyapa Chindyayka Chinzhay Chitska - Elyuva Ganya Inyava Kanyava Kanyuva Kirdyava Kunava Kunyavka Litava Litova Liyava Markva Mastorava Mazava Megurka Mel_shay - Nasta Nezayka Noroava Nulzyava Nuyanza Nyal_ka Nyayka Oksya Olday Olota Ordava Oshama Parava Pekshayka - Pemka Pokshava Poshayka Potekay Potyava Putyayka Ravzhava Ruzava Sanal_ka Sangasa Sernyava Serzhay Setyamka Seyamka Shonzhava - Shukshtoroyka Sinyava Siyamka Slyugan_ka Sochava Styaka Syryava Tatka Tekay Tetyava Tikshayka Toyaksha Tundava Tundya - Unzhutka Upurga Utyayka Valdava Valdonya Vergava Verki Vezhav Vidyava Virtyava Yalgava - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} -name_list_merya = { - - cadet_dynasty_names = { - { "dynn_Kotoro" } - { "dynn_Solono" } - { "dynn_Tebsa" } - { "dynn_Veks" } - { "dynn_Vokso" } - { "dynn_Vashu" } - { "dynn_Kernay" } - { "dynn_Sutya" } - { "dynn_Neri" } - { "dynn_Saozer" } - { "dynn_Stenko" } - { "dynn_Sakhta" } - { "dynn_Ryumni" } - { "dynn_Pulok" } - { "dynn_Kichma" } - { "dynn_Shacha" } - { "dynn_Khabal" } - { "dynn_Ingar" } - { "dynn_Yubil" } - } - - dynasty_names = { - { "dynn_Kotoro" } - { "dynn_Solono" } - { "dynn_Tebsa" } - { "dynn_Veks" } - { "dynn_Vokso" } - { "dynn_Vashu" } - { "dynn_Kernay" } - { "dynn_Sutya" } - { "dynn_Neri" } - { "dynn_Saozer" } - { "dynn_Stenko" } - { "dynn_Sakhta" } - { "dynn_Ryumni" } - { "dynn_Pulok" } - { "dynn_Kichma" } - { "dynn_Shacha" } - { "dynn_Khabal" } - { "dynn_Ingar" } - { "dynn_Yubil" } - } - - male_names = { - Alyok Andryu Andyamo Artyo Atyamas Azyren Chichayka Chipaz Chumbulat Dergun Deryab Dobrinya Doro Drigo Erziya Inzhay - Kardaz Kariton Kezhapa Kezhay Kezhedey Kezhevat Khoddey Kichay Kinyak Kiryo Koma Koshel Kubrat Kvedor Kvilyo - Malyaka Malyy Matyo Meltsayka Mikikor Mordvinko Moksha Mosey Murunza Nalka Naruchad Nekhot Nishkepaz Nuyaksha Nuyanza Nuyat - Obran Onton Orunza Ovtay Pakstyan Paksyay Paksyut Parush Pinyas Pivtsay Pokshayka Puresh Purysho Putyayka - Saksa Setyamka Shindyay Shkay Shoksha Sokhron Surt Syrka Tikshayka Torkan Tul Tunya Tutyra Tylmache Tylze Tyueykezhut Tyushten Tyushtya - Uchva Uzhara Varaka Varmanpaz Vasyuk Vechkas Velmayka Vikay Virdyan Viryas Viryay - } - female_names = { - Anava Anka Ashava Asrava Azra-Va Chechama Chenksa Cherava Cheymarina Chichayka Chindyapa Chindyayka Chinzhay Chitska - Elyuva Ganya Inyava Kanyava Kanyuva Kirdyava Kunava Kunyavka Litava Litova Liyava Markva Mastorava Mazava Megurka Mel_shay - Nasta Nezayka Noroava Nulzyava Nuyanza Nyal_ka Nyayka Oksya Olday Olota Ordava Oshama Parava Pekshayka - Pemka Pokshava Poshayka Potekay Potyava Putyayka Ravzhava Ruzava Sanal_ka Sangasa Sernyava Serzhay Setyamka Seyamka Shonzhava - Shukshtoroyka Sinyava Siyamka Slyugan_ka Sochava Styaka Syryava Tatka Tekay Tetyava Tikshayka Toyaksha Tundava Tundya - Unzhutka Upurga Utyayka Valdava Valdonya Vergava Verki Vezhav Vidyava Virtyava Yalgava - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} -name_list_meshchera = { - - cadet_dynasty_names ={ - { "dynn_Okain" } - { "dynn_Tesha" } - { "dynn_Seres" } - { "dynn_Lyush" } - { "dynn_Ilven" } - { "dynn_Sorkor" } - { "dynn_Dubol" } - { "dynn_Lebedi" } - { "dynn_Pra" } - { "dynn_Zadey" } - { "dynn_Perki" } - { "dynn_Solosh" } - { "dynn_Otok" } - { "dynn_Luko" } - { "dynn_Voja" } - { "dynn_Tsnan" } - { "dynn_Senka" } - { "dynn_Olkhi" } - { "dynn_Susha" } - { "dynn_Voronor" } - { "dynn_Uupa" } - } - - dynasty_names = { - { "dynn_Okain" } - { "dynn_Tesha" } - { "dynn_Seres" } - { "dynn_Lyush" } - { "dynn_Ilven" } - { "dynn_Sorkor" } - { "dynn_Dubol" } - { "dynn_Lebedi" } - { "dynn_Pra" } - { "dynn_Zadey" } - { "dynn_Perki" } - { "dynn_Solosh" } - { "dynn_Otok" } - { "dynn_Luko" } - { "dynn_Voja" } - { "dynn_Tsnan" } - { "dynn_Senka" } - { "dynn_Olkhi" } - { "dynn_Susha" } - { "dynn_Voronor" } - { "dynn_Uupa" } - } - - - male_names = { - Alyok Andryu Andyamo Artyo Atyamas Azyren Chichayka Chipaz Chumbulat Dergun Deryab Dobrinya Doro Drigo Erziya Inzhay - Kardaz Kariton Kezhapa Kezhay Kezhedey Kezhevat Khoddey Kichay Kinyak Kiryo Koma Koshel Kubrat Kvedor Kvilyo - Malyaka Malyy Matyo Meltsayka Mikikor Mordvinko Moksha Mosey Murunza Nalka Naruchad Nekhot Nishkepaz Nuyaksha Nuyat - Obran Onton Orunza Ovtay Pakstyan Paksyay Paksyut Parush Pinyas Pivtsay Pokshayka Puresh Purysho Putyayka - Saksa Setyamka Shindyay Shkay Shoksha Sokhron Surt Syrka Torkan Tul Tunya Tutyra Tylmache Tylze Tyueykezhut Tyushten Tyushtya - Uchva Uzhara Varaka Varmanpaz Vasyuk Vechkas Velmayka Vikay Virdyan Viryas Viryay - } - female_names = { - Anava Anka Ashava Asrava Azra-Va Chechama Chenksa Cherava Cheymarina Chindyapa Chindyayka Chinzhay Chitska - Elyuva Ganya Inyava Kanyava Kanyuva Kirdyava Kunava Kunyavka Litava Litova Liyava Markva Mastorava Mazava Megurka Mel_shay - Nasta Nezayka Noroava Nulzyava Nuyanza Nyal_ka Nyayka Oksya Olday Olota Ordava Oshama Parava Pekshayka - Pemka Pokshava Poshayka Potekay Potyava Putyayka Ravzhava Ruzava Sanal_ka Sangasa Sernyava Serzhay Setyamka Seyamka Shonzhava - Shukshtoroyka Sinyava Siyamka Slyugan_ka Sochava Styaka Syryava Tatka Tekay Tetyava Tikshayka Toyaksha Tundava Tundya - Unzhutka Upurga Utyayka Valdava Valdonya Vergava Verki Vezhav Vidyava Virtyava Yalgava - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} -name_list_mari = { - - cadet_dynasty_names = { - { "dynn_Cheremis" } - { "dynn_Cirmes" } - { "dynn_Kokshag" } - { "dynn_Yoshkar" } - { "dynn_Vezlom" } - { "dynn_Sanda" } - { "dynn_Sheska" } - { "dynn_Silik" } - { "dynn_Luns" } - { "dynn_Linta" } - { "dynn_Lopota" } - { "dynn_Redne" } - { "dynn_Keryet" } - { "dynn_Lamna" } - { "dynn_Maza" } - { "dynn_Lujyar" } - { "dynn_Kokchag" } - { "dynn_Mazars" } - { "dynn_Pishta" } - { "dynn_Vongus" } - { "dynn_Kundysh" } - { "dynn_Veltuk" } - } - - dynasty_names = { - { "dynn_Cheremis" } - { "dynn_Cirmes" } - { "dynn_Kokshag" } - { "dynn_Yoshkar" } - { "dynn_Vezlom" } - { "dynn_Sanda" } - { "dynn_Sheska" } - { "dynn_Silik" } - { "dynn_Luns" } - { "dynn_Linta" } - { "dynn_Lopota" } - { "dynn_Redne" } - { "dynn_Keryet" } - { "dynn_Lamna" } - { "dynn_Maza" } - { "dynn_Lujyar" } - { "dynn_Kokchag" } - { "dynn_Mazars" } - { "dynn_Pishta" } - { "dynn_Vongus" } - { "dynn_Kundysh" } - { "dynn_Veltuk" } - } - - - male_names = { - Alyok Aydush Aygobek Ayplat Azyren Chichayka Chotkar Dergun Deryab Echan Elyksan Evdyuk Ilip Izerge Izi Kavri KU_rntnypatyr Kystynchi - Laidemyr Lapkas Maska Mikal Miklai Mikypyr Mitryai Nekhot Nishkepaz Nuyat Opanas Osherge Ozanay Pakstyan Pinyas Pokshayka - Saksa Shindyay Shemvuy Shkay Shoksha Shumat Sokhron Stapan Surt Torkan Tunya Tylze Tyushten Tyushtya Uchva Uzhara - Varaka Varash Varmanpaz VO_dyr Vasyuk Vechkas Velmayka Vikay Viryas Yamshan Yapyk Yolagay YU_kserge Yumpatyr YU_shterge - } - female_names = { - Anava Anka Ashava Astalche Aybi Bedasi Chechama Chenksa Cherava Cheymarina Elika Elyuva Evika Kachyrii Kanyuva Kechevi KugU_dyr Kunava - Maira Mastorava Megurka Mel_shay Nezayka Noroava Nulzyava Nuyanza Nyayka Oksya Olyu Orina Oshama Pashache Pekshayka Potyava PO_kla - Salika Sangasa Serzhay Shonzhava Shukshtoroyka Shymay Tachana Unzhutka Utyayka Uviy Valdonya Vergava Yalgava YU_ksU_dyr - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} -name_list_muroma = { - - cadet_dynasty_names = { - { "dynn_Okain" } - { "dynn_Tesha" } - { "dynn_Seres" } - { "dynn_Lyush" } - { "dynn_Ilven" } - { "dynn_Sorkor" } - { "dynn_Dubol" } - { "dynn_Lebedi" } - { "dynn_Pra" } - { "dynn_Zadey" } - { "dynn_Perki" } - { "dynn_Solosh" } - { "dynn_Otok" } - { "dynn_Luko" } - { "dynn_Voja" } - { "dynn_Tsnan" } - { "dynn_Senka" } - { "dynn_Olkhi" } - { "dynn_Susha" } - { "dynn_Voronor" } - { "dynn_Uupa" } - } - - dynasty_names = { - { "dynn_Okain" } - { "dynn_Tesha" } - { "dynn_Seres" } - { "dynn_Lyush" } - { "dynn_Ilven" } - { "dynn_Sorkor" } - { "dynn_Dubol" } - { "dynn_Lebedi" } - { "dynn_Pra" } - { "dynn_Zadey" } - { "dynn_Perki" } - { "dynn_Solosh" } - { "dynn_Otok" } - { "dynn_Luko" } - { "dynn_Voja" } - { "dynn_Tsnan" } - { "dynn_Senka" } - { "dynn_Olkhi" } - { "dynn_Susha" } - { "dynn_Voronor" } - { "dynn_Uupa" } - } - - - male_names = { - Alyok Aydush Aygobek Ayplat Azyren Chichayka Chotkar Dergun Deryab Echan Elyksan Evdyuk Ilip Izerge Izi Kavri KU_rntnypatyr Kystynchi - Laidemyr Lapkas Maska Mikal Miklai Mikypyr Mitryai Nekhot Nishkepaz Nuyat Opanas Osherge Ozanay Pakstyan Pinyas Pokshayka - Saksa Shindyay Shemvuy Shkay Shoksha Shumat Sokhron Stapan Surt Torkan Tunya Tylze Tyushten Tyushtya Uchva Uzhara - Varaka Varash Varmanpaz VO_dyr Vasyuk Vechkas Velmayka Vikay Viryas Yamshan Yapyk Yolagay YU_kserge Yumpatyr YU_shterge - } - female_names = { - Anava Anka Ashava Astalche Aybi Bedasi Chechama Chenksa Cherava Cheymarina Elika Elyuva Evika Kachyrii Kanyuva Kechevi KugU_dyr Kunava - Maira Mastorava Megurka Mel_shay Nezayka Noroava Nulzyava Nuyanza Nyayka Oksya Olyu Orina Oshama Pashache Pekshayka Potyava PO_kla - Salika Sangasa Serzhay Shonzhava Shukshtoroyka Shymay Tachana Unzhutka Utyayka Uviy Valdonya Vergava Yalgava YU_ksU_dyr - } - dynasty_of_location_prefix = "dynnp_of" - #founder_named_dynasties = yes - - -} diff --git a/common/culture/name_lists/00_west_african.txt b/common/culture/name_lists/00_west_african.txt deleted file mode 100644 index 1248be27..00000000 --- a/common/culture/name_lists/00_west_african.txt +++ /dev/null @@ -1,387 +0,0 @@ -name_list_malinke = { - - cadet_dynasty_names = { - "dynn_Keita" - "dynn_TourE_" - "dynn_KonE_" - "dynn_KonatE_" - "dynn_CondE_" - "dynn_KouyatE_" - "dynn_TraorE_" - "dynn_DarboE_" - "dynn_Dagnon" - "dynn_SidibE_" - "dynn_DiabatE_" - "dynn_Tunkara" - "dynn_Tarawere" - "dynn_Wattara" - "dynn_Naba_a" - "dynn_SannE_" - "dynn_Kamara" - "dynn_Kourouma" - "dynn_Kinte" - "dynn_Kabba" - "dynn_Fadika" - "dynn_Daramy" - "dynn_Tarawaile" - "dynn_KuyatE_" - "dynn_Diawara" - "dynn_MansarE_" - "dynn_Jawara" - "dynn_Dibba" - "dynn_JannE_" - "dynn_DiakitE_" - "dynn_Sissoko" - "dynn_Soro" - "dynn_Koita" - "dynn_Diao" - "dynn_DramE_" - "dynn_Dyula" - } - dynasty_names = { - "dynn_Keita" - "dynn_TourE_" - "dynn_KonE_" - "dynn_KonatE_" - "dynn_CondE_" - "dynn_KouyatE_" - "dynn_TraorE_" - "dynn_DarboE_" - "dynn_Dagnon" - "dynn_SidibE_" - "dynn_DiabatE_" - "dynn_Tunkara" - "dynn_Tarawere" - "dynn_Wattara" - "dynn_Naba_a" - "dynn_SannE_" - "dynn_Kamara" - "dynn_Kourouma" - "dynn_Kinte" - "dynn_Kabba" - "dynn_Fadika" - "dynn_Daramy" - "dynn_Tarawaile" - "dynn_KuyatE_" - "dynn_Diawara" - "dynn_MansarE_" - "dynn_Jawara" - "dynn_Dibba" - "dynn_JannE_" - "dynn_DiakitE_" - "dynn_Sissoko" - "dynn_Soro" - "dynn_Koita" - "dynn_Diao" - "dynn_DramE_" - "dynn_Dyula" - } - - male_names = { - Abi-Bakr Abubakari Akoi Alayaman Ali Ali-Fay Ali-Kolon Ali-Zalil BadA_ Bakr Bakr-Kanbu Bamari Bankanu - Bannu Bassarou Bassi Birama Bisi Biyu Bonga Cisse Dankaran Daoud Dawud Demba Diara DU_ru - Fakoli Faran Faga-Laye Fatta Fodi Fuluku FA_dazu Gane Gao Hargani Harun Igoumou Ishaq Ismail Kabayo Kalabi Kambine - Kanafa Kassa KasseI_ Kaya Kayna Kinkin Kisha Kodama KoI_zE_ Kukuray Kusoy Lahiltoul M_Bali Maammarou Maghan - Mahmud Majan Malla Mamadi Mamoudou Manding-Bory Mari-Djata MaY_roumfa Missi-IzE_ Morobani Musa - Nintasanay Nuh Ouali OuankoY_ Ouati Reidja Sakoura Salman Samsou-BE_ri Samsou-KeI_na Sandaki Seku Soumaba - Soumaoro Soundiata Sulayman Takoi Tib Tiramakan Tomo Tunka Umar Yama Yaqub Yasiboy Zakoi Zenku - } - female_names = { - Adja Aichata Aissata Alima Aminata Amita Aoua Barakissa Bintou Deye Djeneba Djenly Djire Fadima - Fatim Fatoumata Halima Hawa Ina Kadi Kilia Kolonkan Lorane Mariam Nafissa NamandjE_ Namiss Nana - Safiatou Salimata Sassouma SidibE_ Siya Sogolon Tekhaye Youma ZeI_nab - } - - #founder_named_dynasties = yes - - -} - -name_list_bobo = { - - cadet_dynasty_names = { - "dynn_Zara" - "dynn_Jula" - "dynn_Konsa" - "dynn_Guimbi" - "dynn_Dafra" - "dynn_Tounouma" - "dynn_Nyeneba" - "dynn_Boronba" - "dynn_Kongba" - "dynn_Tyendoba" - "dynn_Woroduba" - "dynn_Bonduba" - "dynn_Dibba" - "dynn_Naba_a" - "dynn_Soro" - "dynn_Jawara" - "dynn_Madure" - "dynn_Jalkunan" - } - dynasty_names = { - "dynn_Zara" - "dynn_Jula" - "dynn_Konsa" - "dynn_Guimbi" - "dynn_Dafra" - "dynn_Tounouma" - "dynn_Nyeneba" - "dynn_Boronba" - "dynn_Kongba" - "dynn_Tyendoba" - "dynn_Woroduba" - "dynn_Bonduba" - "dynn_Dibba" - "dynn_Naba_a" - "dynn_Soro" - "dynn_Jawara" - "dynn_Madure" - "dynn_Jalkunan" - } - - male_names = { - Abubakar Akoi Alayaman - BE_rE_tE_ Bathily Bomou Bilali Bunama BadAE Bamari Bannu Birama Bisi Biyu - Cissi Dwo Dabo Dafra Dambatu Dari Diakhaba Daffi Doucouri Dankaran Demba Daoud Diara - Fissourou Fadiga FA_dazu Fuluku Gane Gao Jula - Kaba Kabayo Kanafa Konsa Kassa Kaya Kayna Kinkin Kouka Kukuray - Labidiedo Longesai Maaman Mankpa Marega M_Bali Maghan Majan Mensah Mamoudou - NiakhatE_ Nintasanay Wague Wali Wati - Reidja Sy Sia Sakho Sekkin Sero Sikam Sima Setriakor Sakoura Sandaki Soumaba Soumaoro Soundiata Sulayman - Tandian Tabouri Tounkara Touri Tandi Takoi Tib - Wule Wuro YatabE_ri Yama Yasiboy Zara Zenku - } - female_names = { - Adja Alima Amita Aoua Aminata Aichata Aissata - Barakissa Bintou Deye Djeneba Djenly Djire - Fadima Fatim Fatoumata Halima Hawa - Ina Kondolon Kadi Kilia Kolonkan - Lorane Mariam NamandjE_ - Nafissa Namiss Nana - SanE_ Sogolon Safiatou Salimata SidibE_ Siya Tekhaye - Youma Zeinab - } - - #founder_named_dynasties = yes - - -} - -name_list_gur = { - - cadet_dynasty_names = { - "dynn_Waja" - "dynn_Karawe" - "dynn_Gbassi" - "dynn_Makararou" - "dynn_Lafiarou" - "dynn_Korakou" - "dynn_Tula" - "dynn_Tso" - "dynn_Kamo" - "dynn_Awak" - "dynn_Cham" - "dynn_Bangwinji" - "dynn_Dadiya" - "dynn_Bikwin" - "dynn_Longuda" - "dynn_Yungur" - "dynn_Dagara" - "dynn_Tangale" - "dynn_Bebedibe" - "dynn_Tiefo" - "dynn_Viemo" - "dynn_Natioro" - "dynn_Wara" - "dynn_Toussiana" - } - dynasty_names = { - "dynn_Waja" - "dynn_Karawe" - "dynn_Gbassi" - "dynn_Makararou" - "dynn_Lafiarou" - "dynn_Korakou" - "dynn_Tula" - "dynn_Tso" - "dynn_Kamo" - "dynn_Awak" - "dynn_Cham" - "dynn_Bangwinji" - "dynn_Dadiya" - "dynn_Bikwin" - "dynn_Longuda" - "dynn_Yungur" - "dynn_Dagara" - "dynn_Tangale" - "dynn_Bebedibe" - "dynn_Tiefo" - "dynn_Viemo" - "dynn_Natioro" - "dynn_Wara" - "dynn_Toussiana" - } - - male_names = { - Afa_Ajuri Aliu Baadindiye Bad Baguiri Bagula Bakarou BalA_a Bar Begli Besse Biyan Bokari Burkomanda BuU_ - Dalai Dalo Daramani Dawuni Doro Dobidia Dylm Dwiyongi Ermanala Gamabrou Gawrang Genma Gounon - Kaba Kisra Kora Kpera Kwiimba Lafia Labidiedo Loel Lubatko Mahama Malo Nambare Nere Ngarmaba - Runge Rigau Sounon Sekkin Sero Sikam Sime Tanamwir Tula Waja Waris Warja Wouko Wumborja - - Alfa Bilali Dulugu Fadiga Gamambu Gori Kalinkuma Kayna Kiffa Kukuray - Mazi Sima Tenin YatabE_ri Yama Yenkuaga - } - female_names = { - Bil Dimbi Dyam Gban Kusure Nen Nan Nmad Nure Nurumba - Sisabge Solyini Tere U_lO_kU_ Win Yide - Alima Aoua Deye Djeneba Kilia Nafi Pogbi Rasmata SidibE_ Wenkouni Youma - } - - #founder_named_dynasties = yes - - -} - -name_list_marka = { - - cadet_dynasty_names = { - "dynn_Waja" - "dynn_Karawe" - "dynn_Gbassi" - "dynn_Makararou" - "dynn_Lafiarou" - "dynn_Korakou" - "dynn_Tula" - "dynn_Tso" - "dynn_Kamo" - "dynn_Awak" - "dynn_Cham" - "dynn_Bangwinji" - "dynn_Dadiya" - "dynn_Bikwin" - "dynn_Longuda" - "dynn_Yungur" - "dynn_Dagara" - "dynn_Tangale" - "dynn_Bebedibe" - "dynn_Tiefo" - "dynn_Viemo" - "dynn_Natioro" - "dynn_Wara" - "dynn_Toussiana" - } - dynasty_names = { - "dynn_Waja" - "dynn_Karawe" - "dynn_Gbassi" - "dynn_Makararou" - "dynn_Lafiarou" - "dynn_Korakou" - "dynn_Tula" - "dynn_Tso" - "dynn_Kamo" - "dynn_Awak" - "dynn_Cham" - "dynn_Bangwinji" - "dynn_Dadiya" - "dynn_Bikwin" - "dynn_Longuda" - "dynn_Yungur" - "dynn_Dagara" - "dynn_Tangale" - "dynn_Bebedibe" - "dynn_Tiefo" - "dynn_Viemo" - "dynn_Natioro" - "dynn_Wara" - "dynn_Toussiana" - } - - male_names = { - Abubakar Akoi Alayaman - BE_rE_tE_ Bathily Bomou Bilali Bunama BadAE Bamari Bannu Birama Bisi Biyu - Cissi DiobE_ Dabo Diakhaba Diawara Daffi Doucouri Dankaran Demba Daoud Diara - Fissourou Fadiga FA_dazu Fuluku Gane Gao Ishaq - Kaba Kabayo Kalabi Kanafa Kambine Kassa Kaya Kayna Kinkin Kukuray Kusoy - Marega M_Bali Maghan Majan Mamadi Mamoudou Mari-Djata Musa - NiakhatE_ Nintasanay Wague Wali Wati - Reidja Sy Sylla Sakho Soukhouna Sima SoumarE_ Sakoura Salman Sandaki Soumaba Soumaoro Soundiata Sulayman - Tandian Tunka Tunka-Menin Tabouri Tounkara Touri Tandi Takoi Tib - YansanE_ YatabE_ri Yama Yasiboy - Zakoi Zenku - } - female_names = { - Adja Alima Amita Aoua Aminata Aichata Aissata - Barakissa Bintou Deye Djeneba Djenly Djire - Fadima Fatim Fatoumata Halima Hawa - Ina Kondolon Kadi Kilia Kolonkan - Lorane Mariam NamandjE_ - Nafissa Namiss Nana - SanE_ Sogolon Safiatou Salimata SidibE_ Siya Tekhaye - Youma Zeinab - } - - #founder_named_dynasties = yes - - -} - -name_list_mel = { - - cadet_dynasty_names = { - "dynn_Fabule" - "dynn_Kiatamba" - "dynn_Kono" - "dynn_Kissi" - "dynn_Gbande" - "dynn_Toma" - "dynn_Guere" - "dynn_Manon" - "dynn_Kpelle" - "dynn_Baga" - "dynn_Tyapi" - "dynn_Kokoli" - "dynn_Tenda" - "dynn_Kade" - "dynn_Landuma" - } - dynasty_names = { - "dynn_Fabule" - "dynn_Kiatamba" - "dynn_Kono" - "dynn_Kissi" - "dynn_Gbande" - "dynn_Toma" - "dynn_Guere" - "dynn_Manon" - "dynn_Kpelle" - "dynn_Baga" - "dynn_Tyapi" - "dynn_Kokoli" - "dynn_Tenda" - "dynn_Kade" - "dynn_Landuma" - } - - male_names = { - Ansa Armah Baimba Boima_Konah Bonokai Cammue Dolo - Fabule Flomo Foday Folley Garteh Gboto Gonlekpei Jahn - Kaijaah Karmo Kiatamba Kollie Konah Konowa Kpakelah Kpangbah Kparnkpai Kparsi - Lami Luogon Manhtee Nenwon Nyahn Nyeayea Paye Pese - Saa Sando Sao Sarh Saye Siaka Suah Tamba Toimu Tokpa Varney - Wamah Wonbin Yakpazuah Yarkpawolo Yeanue Zaowolo Zokaya - } - - female_names = { - Bendu Ciata Fahnlohnee Famatta Finda - Garmenh Gblormehn Gborlormenh Gormenh Gorpue Hawa Jebbeh - Kehper Kou Korlu Korto Kona Kortolo Kumba Luolay Lurpu - Mabasi Maima Massa Mehnmah Miata Musu Norn Nowa Nyamen Nyanpue - Pahn Sando Sia Sue Tenneh Weyatta Wokie Wonkehmi Yah Yei Zoe - } - - #founder_named_dynasties = yes - - -} diff --git a/common/culture/name_lists/00_yoruba.txt b/common/culture/name_lists/00_yoruba.txt deleted file mode 100644 index 59f96ddb..00000000 --- a/common/culture/name_lists/00_yoruba.txt +++ /dev/null @@ -1,261 +0,0 @@ -name_list_yoruba = { - - cadet_dynasty_names = { - "dynn_Ogiso" - "dynn_Benin" - "dynn_Osse" - "dynn_Itseriki" - "dynn_Eweka" - "dynn_Owodo" - "dynn_Oliha" - "dynn_Ododuwa" - "dynn_Ikare" - "dynn_Ifon" - "dynn_Ondo" - "dynn_Ijo" - "dynn_Mahin" - "dynn_Shagamu" - "dynn_Shaki" - "dynn_Jebba" - "dynn_Ikorodu" - "dynn_Okeho" - "dynn_Ogbomosho" - "dynn_Kishi" - "dynn_Akure" - } - dynasty_names = { - "dynn_Ogiso" - "dynn_Benin" - "dynn_Osse" - "dynn_Itseriki" - "dynn_Eweka" - "dynn_Owodo" - "dynn_Oliha" - "dynn_Ododuwa" - "dynn_Ikare" - "dynn_Ifon" - "dynn_Ondo" - "dynn_Ijo" - "dynn_Mahin" - "dynn_Shagamu" - "dynn_Shaki" - "dynn_Jebba" - "dynn_Ikorodu" - "dynn_Okeho" - "dynn_Ogbomosho" - "dynn_Kishi" - "dynn_Akure" - } - - male_names = { - Abayomi Abegunde Abejide Abiade Abidemi Abidugun Abimbola Abiodun Abiola Abioye Adagba Ade Adeagbo Adebamgbe Adebayo Adebowale Adegbalu Adegoke Adejinle Adejola Ademilu Adeniyi Adetokunbo - Adisa Afolabi Agbedegbede Ajimuda Akinmoyero Alayemore Amadi Anikulapo Aribiwoso Aworokolokin Ayetise Ayo Ayodele Ayokunle Ayomide Ayotunde - Babafemi Babajide Babatunde Bamidele Bandele Bolade Ekun Ekundayo Eniola Enitan Femi Folami Gbanlare Gbegbaaje Gboonijio Giesi - Idowu Ifedapo Kashimawo Kayin Kayode Kehinde Lafogido Lagunja Lajamisan Lajodoogun Larunnka Lugbade Lumobi Luwoo - Oba Obafemi Obalufon Obamakin Odidimode Odudua Oduduwa Ogbogbodirin Ogboruu Ogun Ojelokunbirin Ojigidiri Okanlajosin Okiti - Olabode Oladele Olamilekan Olanrewaju Olateju Olojo Oloyede Olufemi Olufunke Olufunmilola Olujimi Olukayode Olumide Olumuyiwa Oluremi Olusegun Oluwa Oluwafunmilayo Oluwanisola Oluwasegun Oluwaseun Oluwaseyi Oluwatoyin Oluwayemisi Oluyemi Omobolanle Omogbogbo Opeyemi Oranmiyan Oranyan Osangangan Osinkola Osinlade Oyin - Remilekun Rogbeesin Taiwo Temiloluwa Tokunbo Wunmonije - } - female_names = { - Abagbe Abayomi Abebi Abeje Abeke Abeni Abeo Abiodun Abiona Abisola Adebola Adebomi Adebowale Adedagbo Adedewe Adedoja Adeleke Adenrele Adeola Aderinola Adesimbo Adesina Adetokunbo Adeyemi Alaba Ayo Ayobami Ayobunmi Ayodele Ayofemi Ayoluwa Ayomide Ayotunde - Bandele Bolade Bolanle Dada Dayo Ekundayo Eniola Folade Folasade Gbemisola Idowu Ife Ifedapo Ige Iyabo Kayin Kehinde - Modupe Mojisola Monifa Morayo Moremi Oladele Olamide Olateju Olayinka Olubunmi Olufunke Olufunmilola Oluremi Oluwafunmilayo Oluwanisola Oluwasegun Oluwaseun Oluwaseyi Oluwatoyin Oluwayemisi Omobolanle Omolara Oni Oyin - Remilekun Simisola Temiloluwa Temitope Titilayo Yejide Yetunde Yewande - } - - #founder_named_dynasties = yes - - -} - -name_list_edo = { - - cadet_dynasty_names = { - "dynn_Ebira" - "dynn_Okene" - "dynn_Owan" - "dynn_Bini" - "dynn_Esan" - "dynn_Agbor" - "dynn_Sapele" - "dynn_Itseriki" - "dynn_Auchi" - "dynn_Igarra" - "dynn_Ogiso" - "dynn_Benin" - "dynn_Osse" - "dynn_Edo" - "dynn_Eweka" - "dynn_Owodo" - "dynn_Oliha" - "dynn_Ododuwa" - } - dynasty_names = { - "dynn_Ebira" - "dynn_Okene" - "dynn_Owan" - "dynn_Bini" - "dynn_Esan" - "dynn_Agbor" - "dynn_Sapele" - "dynn_Itseriki" - "dynn_Auchi" - "dynn_Igarra" - "dynn_Ogiso" - "dynn_Benin" - "dynn_Osse" - "dynn_Edo" - "dynn_Eweka" - "dynn_Owodo" - "dynn_Oliha" - "dynn_Ododuwa" - } - - male_names = { - Abieyuwa Aisosa Amenaghawon Edosa Efosa Eghosa Eheneden Ehigiator Ehimwenma Ehiosu Ehizogie Eki Ekinadoese Ekiuwa Ekpen Emwinghare Erharuyi Esosa Etinosa Etiosa - Idehen Idemudia Igbinosa Ighayezomo Ikponmwonsa Imadeyunuagbon Imafidon Imokhai Imudiase Isiuwa Itseme - Nosakhare Obano Obozuwa Ogbemudia Orobosa Osaevbie Osaro Osasere Osawe Osaze Osazenomwan Osazuwa Oshioke Oshomah Osilama - Uyi Uyiosa - } - female_names = { - Abieyuwa Adesuwa Aisosa Akugbe Amenaghawon Amenze - Edosa Eghosa Ehimwenma Ehiosu Ehizogie Ekenesenarhien Eki Ekinadoese Ekiuwa Emwinghare Enibokun Esohe Esomo Esosa Etinosa Evbu - Ifueko Ighayezomo Imadeyunuagbon Isimeme Isiuwa Isoken Itohan Itseme Ivie Iziegbe - Omegie Omosede Onose Orobosa Osarobo Osasere Osayuwamen Osaze - } - - #founder_named_dynasties = yes - - -} - -name_list_igbo = { - - cadet_dynasty_names = { - "dynn_Nri" - "dynn_Ibibo" - "dynn_Idoma" - "dynn_Igala" - "dynn_Bassa" - "dynn_Gbari" - "dynn_Idah" - "dynn_Ebira" - "dynn_Okene" - "dynn_Auchi" - "dynn_Ekpoma" - "dynn_Esan" - "dynn_Aboh" - "dynn_Onitsha" - "dynn_Oguta" - "dynn_Osomari" - "dynn_Nsukka" - "dynn_Anambra" - "dynn_Kamalu" - "dynn_Kala" - "dynn_Umounoha" - "dynn_Agbala" - "dynn_Awka" - "dynn_Ibini" - "dynn_Arochukwu" - } - dynasty_names = { - "dynn_Nri" - "dynn_Ibibo" - "dynn_Idoma" - "dynn_Igala" - "dynn_Bassa" - "dynn_Gbari" - "dynn_Idah" - "dynn_Ebira" - "dynn_Okene" - "dynn_Auchi" - "dynn_Ekpoma" - "dynn_Esan" - "dynn_Aboh" - "dynn_Onitsha" - "dynn_Oguta" - "dynn_Osomari" - "dynn_Nsukka" - "dynn_Anambra" - "dynn_Kamalu" - "dynn_Kala" - "dynn_Umounoha" - "dynn_Agbala" - "dynn_Awka" - "dynn_Ibini" - "dynn_Arochukwu" - } - - male_names = { - Abalihi Abazu Achonye Agu Akunna Alike Amamchukwu Anyamata Apia Azubuike Azuka Buife - Chibueze Chibuzo Chidi Chidiebere Chidubem Chiemeka Chike Chima Chinedu Chinualumogu Chinwe Chinwendu Chioma Chizoba Chukwudi Chukwuemeka - Ekene Ekenedilichukwu Ekweme Emeka Enweleana Enyinnaya Eri Ewenetem Ezeudu Ezimilo Ezinma Fenenu Ifeanyichukwu Ifikuanim Ikechukwu Ikemefuna - Jiofo Maduka Namoke Ndidi Ngozi Nkem Nkemdilim Nnamdi Nwabugwu Nwachukwu Nwakibie Nwankwo Nwokike Nwora Nwoye - Obalike Obi Obierika Obinna Ogbuefi Okagbue Okechukwu Okenna Okonkwo Oluchi Omalo Omalonyeso Onyeka Onyekachi Onyekachukwu - Uchechukwu Uchendu Udo Unoka Uyanwa Uzochi Uzoma - } - female_names = { - Abalihi Ada Adaeke Adaeze Adanna Adannaya Adaobi Adaoha Adaora Adaugo Adauwa Amadi Amamchukwu - Chiamaka Chibueze Chibuzo Chidiebere Chidimma Chielo Chika Chinaza Chinedu Chinwe Chinwendu Chioma Chisom Chizoba - Ebele Ekene Ekenedilichukwu Ekwefi Fumnanya Funanya Ndidi Ngozi Nkechinyere Nkem Nkemdilim Nkiruka Nwabugwu Nwando - Obiageli Ogechukwukama Ojiugo Oluchi Onyeka Onyekachi Onyekachukwu Uchechukwu Udo Uzoma - } - - #founder_named_dynasties = yes - - -} - -name_list_ewe = { - - cadet_dynasty_names = { - "dynn_Fon" - "dynn_Ayizo" - "dynn_Xwela" - "dynn_Gun" - "dynn_Notsie" - "dynn_Ouidah" - "dynn_Mahin" - "dynn_Shagamu" - "dynn_Shaki" - "dynn_Jebba" - "dynn_Ikorodu" - "dynn_Okeho" - "dynn_Ogbomosho" - "dynn_Kishi" - "dynn_Akure" - } - dynasty_names = { - "dynn_Fon" - "dynn_Ayizo" - "dynn_Xwela" - "dynn_Gun" - "dynn_Notsie" - "dynn_Ouidah" - "dynn_Mahin" - "dynn_Shagamu" - "dynn_Shaki" - "dynn_Jebba" - "dynn_Ikorodu" - "dynn_Okeho" - "dynn_Ogbomosho" - "dynn_Kishi" - "dynn_Akure" - } - - male_names = { - Abere_Anyo Achangso Achulo Achintri Afiso Amabangye Amankwa Amati Amo_elema Amoma Aso_wura Ataawa Awale Awaare Awalekiye Awo_n_nche Awo_n_nka_nne Awo_omoto Awoshe Awoshie Ayinsah - Badoh Bakoaso Boreginkpr Banemu_eye Bangben Bashaso Benyepo_eye Bi_awur_bi Bin_ka Bonyangso Booma Bore Bore_chie Bore_ena_sa Bore_enye Bore_enyi-enchi Bore_nyekpe Boresa Bore_masa_alowe Bore_walae Bore_wo Bore_wu B_sha_anye - Chepura Daa_mato Dambatu Dari Dariche Dokilebi Dranaya Ebanyepo Ebo_eye Edonbone Edonkufo Ekomato Ekone_oto Ekoso Ekumpo Ekunfo Elempo Esapo Esa_ewoeboto Etimpo Ewanye Ewale Ewonye Ewunio Ewuntomah Ewura Eyri_modon - Footou Gbeadese Gyem_che Gyema_alela Jinapor Gyeowo Kakore Kanagbong Kanamo Kananmaluwe Kasha Keche_e-basa Kenyiti Keshie_eko Keshie_wale K_fantang Kginginfra Koji Kotochi Kowuribi Kramoase Kurabaso Kurayerito - Lempoche Lomashie Longefiye Longesai Maaman Mankpa Mankre Mantenso Mapoche Masa-agben Masape Matuamo Mbema - Nefa Njo_amonche Nkpamafo Nndefeso Ntoba Obosu Okonfo Owoshie Pumaya Safo Sha_moye Samafon Sorkowule Shung_nkpa - Techira Titi_aka Tuntunba Yomba - } - - female_names = { - Awo Demba Doye Faaduma Fatim Fatoumata Malado Maram Mbodj Ndate Ndieumbeutt Ndoung Ndoye Sall Yalla Yumeyga - } - - #founder_named_dynasties = yes -} diff --git a/common/culture/traditions/03_fp3_traditions.txt b/common/culture/traditions/03_fp3_traditions.txt new file mode 100644 index 00000000..4f45ce91 --- /dev/null +++ b/common/culture/traditions/03_fp3_traditions.txt @@ -0,0 +1,854 @@ +########################### +# FP3 CULTURAL TRADITIONS +########################### + +####################### +# Central Asian Specific +####################### + +tradition_fp3_frontier_warriors = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = dismounted_warrior.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + + # Any culture present in the given area can pick this + any_culture_county = { + any_county_province = { + OR = { + geographical_region = world_transoxiana + geographical_region = world_khorasan + geographical_region = world_steppe_tarim + } + } + } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + # Must have a significant cultural presence in the general Turanian area, i.e. the "frontier" + custom_tooltip = { + text = culture_on_eastern_frontier_desc + any_culture_county = { + percent >= 0.2 + any_county_province = { + OR = { + geographical_region = world_transoxiana + geographical_region = world_khorasan + geographical_region = world_steppe_tarim + } + } + } + } + } + + parameters = { + unlock_maa_tarkhan = yes + faith_warrior_traits_more_valued = yes + } + province_modifier = { + hostile_raid_time = 0.5 + } + character_modifier = { + mercenary_hire_cost_mult = -0.10 + movement_speed = 0.05 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + # Gotta be a steppe-heavy culture not to get a surcharge. + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = steppe + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = steppe_or_desert_percentage_desc + } + } + #Turko-Mongol-Iranians get it cheaper! + if = { + limit = { + NOR = { + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_tocharian + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = not_of_central_asian_heritage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_frontier_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = steppe + } + } + } + } + } + multiply = 0 + } + } +} + +####################### +# Persian Specific +####################### + +tradition_fp3_irrigation_experts = { + category = realm + + layers = { + 0 = steward + 1 = mena + 4 = water_technology.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + NOT = { has_cultural_tradition = tradition_dryland_dwellers } + } + + can_pick = { + custom_description = { + text = culture_in_dryland_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + terrain = desert_mountains + } + } + } + # Shouldn't be combined with the following traditions: + custom_tooltip = { + text = cannot_have_tradition_dryland_dwellers + NOT = { culture_tradition:tradition_dryland_dwellers = { is_in_list = traits } } #this is another approach to drylands dwelling + } + } + + parameters = { + innovative_traits_more_valued = yes + unlocks_qanat_building = yes + plantations_building_bonuses = yes + drylands_hunt_success_chance = yes + } + character_modifier = { + negate_health_penalty_add = 0.1 + desert_travel_danger = desert_medium_danger_reduction + drylands_travel_danger = drylands_medium_danger_reduction + desert_mountains_travel_danger = desert_mountains_medium_danger_reduction + } + county_modifier = { + desert_development_growth_factor = 0.35 + drylands_development_growth_factor = 0.15 + } + province_modifier = { + desert_construction_gold_cost = -0.1 + drylands_construction_gold_cost = -0.1 + desert_holding_construction_gold_cost = -0.1 + drylands_holding_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_egalitarian_or_courtly_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = dry_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_irrigation_experts } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { #if the realm isn't very dry, the AI won't pick this + scope:character = { + any_sub_realm_county = { + percent >= 0.4 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + multiply = 4 + } + } +} + +tradition_fp3_beacon_of_learning = { # Offshoot of tradition_philosopher_culture + category = societal + + layers = { + 0 = learning + 1 = mena + 4 = beacon_of_learning.dds + } + + is_shown = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + NOT = { has_cultural_tradition = tradition_philosopher_culture } # Replaces Philosopher Culture + } + + can_pick = { + custom_description = { + text = culture_not_bellicose + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + NOT = { has_cultural_tradition = tradition_warrior_culture } + NOT = { has_cultural_tradition = tradition_philosopher_culture } + } + can_pick_for_hybridization = { + custom_tooltip = { + text = no_warrior_culture + NOT = { # Only blocks polygamous to avoid duplicate warnings, but is blocked by concubines + culture_tradition:tradition_warrior_culture = { is_in_list = traits } + } + } + custom_tooltip = { + text = no_philosopher_culture + NOT = { # Only blocks polygamous to avoid duplicate warnings, but is blocked by concubines + culture_tradition:tradition_philosopher_culture = { is_in_list = traits } + } + } + } + + parameters = { + pensive_trait_more_common = yes + rowdy_trait_less_common = yes + innovation_from_learning_traits = yes + can_appoint_court_scholar = yes + guardian_education_better_outcomes = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.2 + learning_per_piety_level = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = scholar + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_scholar_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_beacon_of_learning } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +# Replaces Refined Poetry +tradition_fp3_enlightened_magnates = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = jirga.dds + } + + is_shown = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + NOT = { has_cultural_parameter = poet_trait_gives_bonuses } + } + + parameters = { + poet_trait_gives_bonuses = yes + poet_trait_more_common = yes + characters_are_better_court_poets = yes + characters_are_better_tax_collector = yes + unlock_tax_obligation_deqhan = yes + } + + character_modifier = { + clan_tax_slot_add = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_poetry_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_enlightened_magnates } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 125 + if = { + limit = { # AI should avoid stacking traditions for courtly court positions + culture_tradition:tradition_music_theory = { is_in_list = traits } + } + multiply = 0.25 + } + } +} + +####################### +# Afghanistan/Baluchistan Specific +####################### + +tradition_fp3_jirga = { + category = regional + + layers = { + 0 = learning + 1 = indian + 4 = jirga.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_iranian + has_cultural_pillar = heritage_indo_aryan + } + } + + can_pick = { + scope:character = { + government_has_flag = government_is_tribal #This tradition is really a holdover from tribal culture, and though the Afghanis might have it despite having changed government forms, others cannot pick it now. + } + } + + parameters = { + tribal_elective_enabled = yes + just_trait_gives_bonuses = yes + pardoning_gives_prestige = yes + } + character_modifier = { + owned_personal_scheme_success_chance_add = 10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + county_opinion < 0 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = counties_with_low_county_opinion_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_jirga } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + OR = { + culture_tradition:tradition_things = { is_in_list = traits } + culture_tradition:tradition_the_witenagemot = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +tradition_fp3_pragmatic_creed = { + category = regional + + layers = { + 0 = diplo + 1 = mena + 4 = pragmatic_creed.dds + } + + is_shown = { + # DLC check. + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + unlock_maa_zupin_warrior = yes + diligent_trait_more_common = yes + pragmatic_traits_county_opinion_modifiers = yes + commanders_likelier_to_gain_commander_traits = yes + } + character_modifier = { + skirmishers_toughness_mult = 0.10 + skirmishers_maintenance_mult = -0.15 + heavy_cavalry_maintenance_mult = 0.15 + light_cavalry_maintenance_mult = 0.15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bureaucratic_courtly_or_spiritual_desc + } + } + # Gotta be a mountain-heavy culture not to get a surcharge. + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_pragmatic_creed } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + OR = { # Don't pick this if the culture have Light Cavalry or Heavy Cavalry MaAs + culture_has_heavy_cavalry_maa = yes + culture_has_light_cavalry_maa = yes + } + } + multiply = 0 + } + if = { + limit = { + NOT = { # Less likely for cultures who doesn't descend from Daylamite + any_parent_culture_or_above = { + this = culture:daylamite + } + } + } + multiply = 0.75 + } + } +} + +####################### +# Kurdish Specific +####################### + +tradition_fp3_fierce_independence = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = fierce_independence.dds + } + + is_shown = { + has_fp3_dlc_trigger = yes + has_cultural_pillar = heritage_iranian + } + + can_pick = { + NOT = { + has_cultural_tradition = tradition_staunch_traditionalists + } + } + + parameters = { + harder_to_hybridize = yes + harder_to_convert_county_culture = yes + } + + character_modifier = { + controlled_province_advantage = 5 + same_culture_opinion = 5 + opinion_of_liege = -10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + scope:character = { + any_sub_realm_county = { + culture != scope:character.culture + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = has_other_cultures_in_realm_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp3_fierce_independence } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + multiply = 0.5 + } + } +} diff --git a/common/dynasties/NEOW_dynasties.txt b/common/dynasties/NEOW_dynasties.txt index 40450729..774d0134 100644 --- a/common/dynasties/NEOW_dynasties.txt +++ b/common/dynasties/NEOW_dynasties.txt @@ -1780,3 +1780,43 @@ avci_dynasty = { name = dynn_Avc_i_dot_ culture = turkisch } + +johannessen_dynasty = { + name = dynn_Johannessen + culture = icelander +} + +kleppe_dynasty = { + name = dynn_Kleppe + culture = icelander +} + +martinsen_dynasty = { + name = dynn_Martinsen + culture = icelander +} + +mikkelsen_dynasty = { + name = dynn_Mikkelsen + culture = icelander +} + +olofsson_dynasty = { + name = dynn_Olofsson + culture = gutnsk +} + +martinez_dynasty = { + name = dynn_MartI_nez_de_Oviedo + culture = icelander +} + +kennedy_dynasty = { + name = dynn_Kennedy + culture = atlantannach +} + +gibson_dynasty = { + name = dynn_Gibson + culture = angler +} diff --git a/history/characters/NEOW_fishe_chars.txt b/history/characters/NEOW_fishe_chars.txt new file mode 100644 index 00000000..739a9cac --- /dev/null +++ b/history/characters/NEOW_fishe_chars.txt @@ -0,0 +1,97 @@ + +fishe0001 = { + name="Dennis" + dynasty= gibson_dynasty + religion="anglican" + culture= angler + 2525.9.5={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0002 = { + name="Declan" + dynasty= kennedy_dynasty + religion="iberian" + culture= atlantannach + 2527.2.5={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0003 = { + name="Enrique" + dynasty= martinez_dynasty + religion="iberian" + culture= canarian + 2526.1.5={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0004 = { + name="Alexander" + dynasty= olofsson_dynasty + religion="viking" + culture= gutnsk + 2528.6.5={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0005 = { + name="Sigurd" + dynasty= johannessen_dynasty + religion="viking" + culture= faerosk + 2526.6.1={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0006 = { + name="Jesper" + dynasty= kleppe_dynasty + religion="viking" + culture= icelander + 2523.6.2={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0007 = { + name="Even" + dynasty= martinsen_dynasty + religion="viking" + culture= icelander + 2521.8.5={ + birth=yes + } + 2690.1.1={ + death=yes + } +} +fishe0008 = { + name="Aleksander" + dynasty= mikkelsen_dynasty + religion="viking" + culture= icelander + 2520.9.4={ + birth=yes + } + 2690.1.1={ + death=yes + } +} \ No newline at end of file diff --git a/history/provinces/e_italy.txt b/history/provinces/e_italy.txt index 4fb5d098..4ac59a48 100644 --- a/history/provinces/e_italy.txt +++ b/history/provinces/e_italy.txt @@ -492,9 +492,9 @@ } ###c_menorca 2002 = { - culture = balearic - religion = sevillian - holding = city_holding + culture = angler + religion = anglican + holding = castle_holding } ###c_iviza 2000 = { diff --git a/history/provinces/e_scandinavia.txt b/history/provinces/e_scandinavia.txt index 9c0637bc..3183d63e 100644 --- a/history/provinces/e_scandinavia.txt +++ b/history/provinces/e_scandinavia.txt @@ -111,15 +111,11 @@ } ###c_faereyar 6 = { - culture = pictish - religion = lutheran + culture = faerosk + religion = viking holding = city_holding - 855.1.1 = { - culture = norse - religion = norse_pagan - } 1000.1.1 = { - religion = lutheran + religion = viking holding = city_holding } 1066.1.1 = { diff --git a/history/titles/k_aragon.txt b/history/titles/k_aragon.txt index 33b11c8a..45d1f5c2 100644 --- a/history/titles/k_aragon.txt +++ b/history/titles/k_aragon.txt @@ -109,8 +109,7 @@ c_mallorca = { } c_menorca = { 2550.7.18 = { - holder = aragon_berenguer_ribera - liege = k_aragon + holder = fishe0001 change_development_level = 8 } } diff --git a/history/titles/k_portugal.txt b/history/titles/k_portugal.txt index 3b5b261c..103a70ca 100644 --- a/history/titles/k_portugal.txt +++ b/history/titles/k_portugal.txt @@ -12,7 +12,23 @@ d_canarias = { change_development_level = 9 } 2550.1.1 = { - holder = hispania0001 + holder = fishe0002 + } +} +c_canarias = { + 2505.1.1 = { + change_development_level = 9 + } + 2550.1.1 = { + holder = fishe0002 + } +} +c_fuerteventura = { + 2505.1.1 = { + change_development_level = 9 + } + 2550.1.1 = { + holder = fishe0002 } } @@ -99,7 +115,11 @@ c_castelo_branco = { liege = k_portugal } } - +c_madeira = { + 2550.1.1 = { + holder = fishe0002 + } +} d_iberian_hof = { 2545.1.1 = { holder = hispania_patriarch_iago diff --git a/history/titles/k_sweden.txt b/history/titles/k_sweden.txt index 8f5ff636..7db5ab65 100644 --- a/history/titles/k_sweden.txt +++ b/history/titles/k_sweden.txt @@ -68,12 +68,21 @@ c_raniriki = { change_development_level = 9 } } -c_bornholm = { +d_gotland = { 2552.1.1 = { - holder = scandinavia0005 + holder = fishe0004 + } +} +c_bornholm = { + 2552.1.1 = { + holder = fishe0004 + } +} +c_gutland = { + 2552.1.1 = { + holder = fishe0004 } } - d_jamtland = { 2552.1.1 = { holder = scandinavia0006 @@ -155,4 +164,29 @@ c_oland= { 2552.1.1 = { holder = scandinavia0011 } +} +c_faereyar= { + 2552.1.1 = { + holder = fishe0005 + } +} +c_sudurland= { + 2552.1.1 = { + holder = fishe0006 + } +} +c_austisland= { + 2552.1.1 = { + holder = fishe0007 + } +} +c_nordrland= { + 2552.1.1 = { + holder = fishe0008 + } +} +c_vestisland= { + 2552.1.1 = { + holder = fishe0006 + } } \ No newline at end of file diff --git a/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml b/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml index fd742a62..1094222e 100644 --- a/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml +++ b/localization/english/replace/bookmark/bookmark_N3OW_2555_l_english.yml @@ -24,7 +24,7 @@ bookmark_WE_windsor_windsor_sior:0 "George" bookmark_WE_windsor_windsor_sior_subheading:0 "The Scion of Heaven" - bookmark_WE_windsor_windsor_sior_desc:0 "One of the only families of old anglia to speak queens-english, the Windsors, true scions of the heavnly Queen herself, are a respected family within the empire. The elevation of there ancestral province to a Royal Honor by the current First Lord is no small testament to the diplomatic skill of the current family head George. But Britannia is not well. Ireland is lost, the eastern anglicans and the so called 'true welsh' are still in rebellion, and though the rebellion in the southwest has been crushed it was more than a simple close call. George, hidbound by honour as he is, now faces a difficult choice. Remain loyal to the crown in its ineptitude, or stake his honour and the future of his family on a bid for the throne. Even if he does not choose to ride with his armies east along the thames there is no telling what his own scions will do once he is gone.\n\n#bold Can the Scions of the Heavenly Queen steer Britannia back to her righful place as the supreme power, or will they finally inevitably, be erroded by the sand of time?#!" + bookmark_WE_windsor_windsor_sior_desc:0 "One of the only families of old Anglia to speak queens-english, the Windsors, true scions of the heavenly Queen herself, are a respected family within the empire. The elevation of there ancestral province to a Royal Honour by the current First Lord is no small testament to the diplomatic skill of the current family head George. But Britannia is not well. Ireland is lost, the Eastern Anglicans and the so called 'True Welsh' are still in rebellion, and though the rebellion in the southwest has been crushed it was more than a simple close call. George, hidbound by honour as he is, now faces a difficult choice. Remain loyal to the crown in its ineptitude, or stake his honour and the future of his family on a bid for the throne. Even if he does not choose to ride with his armies east along the Thames there is no telling what his own scions will do once he is gone.\n\n#bold Can the Scions of the Heavenly Queen steer Britannia back to her righful place as the supreme power, or will they finally inevitably, be erroded by the sand of time?#!" bookmark_WE_tirrenia_bollani_albertu:0 "Albertu" bookmark_WE_tirrenia_bollani_albertu_subheading:0 "The Archon of Archons" diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_traditions_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_traditions_l_english.yml index 133683b9..db78075e 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_traditions_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_traditions_l_english.yml @@ -15,7 +15,7 @@ tradition_landstinget_desc:1 "Abiding by the ancient tradition of Allemansrätten, and electing rulers, in this culture rulers are expected to prove themselves worthy of rulership, and respect the land rights of the common folk." tradition_creaght_name:0 "Creaght" - tradition_creaght_desc:1 "This cultures organises themselves around distinct semi feral band is migratory cattle herds." + tradition_creaght_desc:1 "This culture features large groups of pastoralist bands which follow feral herds of cattle across the landscape." #OTHER From 201ee3cae709e3de3681fe23cb1d0961f49e9e6a Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 16 Mar 2026 23:44:27 +0000 Subject: [PATCH 29/52] fix to crash --- history/characters/NEOW_fishe_chars.txt | 2 +- history/provinces/e_italy.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/history/characters/NEOW_fishe_chars.txt b/history/characters/NEOW_fishe_chars.txt index 739a9cac..702c9e5e 100644 --- a/history/characters/NEOW_fishe_chars.txt +++ b/history/characters/NEOW_fishe_chars.txt @@ -2,7 +2,7 @@ fishe0001 = { name="Dennis" dynasty= gibson_dynasty - religion="anglican" + religion="anglican_england" culture= angler 2525.9.5={ birth=yes diff --git a/history/provinces/e_italy.txt b/history/provinces/e_italy.txt index 4ac59a48..742bc63a 100644 --- a/history/provinces/e_italy.txt +++ b/history/provinces/e_italy.txt @@ -493,7 +493,7 @@ ###c_menorca 2002 = { culture = angler - religion = anglican + religion = anglican_england holding = castle_holding } ###c_iviza From 06680bb57780a5d128cb801b5a42a741d6a807fc Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Tue, 17 Mar 2026 20:02:43 +0000 Subject: [PATCH 30/52] fixes to two characters --- history/provinces/e_scandinavia.txt | 4 ++-- history/titles/k_portugal.txt | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/history/provinces/e_scandinavia.txt b/history/provinces/e_scandinavia.txt index 3183d63e..c7ef3a52 100644 --- a/history/provinces/e_scandinavia.txt +++ b/history/provinces/e_scandinavia.txt @@ -473,7 +473,7 @@ special_building_slot = visby_ringmur_01 } 930.1.1 = { - holding = castle_holding + holding = city_holding } 1066.1.1 = { culture = gutnsk @@ -490,7 +490,7 @@ 370 = { holding = none 1066.1.1 = { - holding = castle_holding + holding = city_holding } } 371 = { diff --git a/history/titles/k_portugal.txt b/history/titles/k_portugal.txt index 103a70ca..5390b51f 100644 --- a/history/titles/k_portugal.txt +++ b/history/titles/k_portugal.txt @@ -12,7 +12,7 @@ d_canarias = { change_development_level = 9 } 2550.1.1 = { - holder = fishe0002 + holder = fishe0003 } } c_canarias = { @@ -20,7 +20,7 @@ c_canarias = { change_development_level = 9 } 2550.1.1 = { - holder = fishe0002 + holder = fishe0003 } } c_fuerteventura = { @@ -28,7 +28,7 @@ c_fuerteventura = { change_development_level = 9 } 2550.1.1 = { - holder = fishe0002 + holder = fishe0003 } } From a55ed4b201d7aa3ec20cb4f97ba5b48441b7b8c9 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Wed, 18 Mar 2026 11:33:52 +0100 Subject: [PATCH 31/52] =?UTF-8?q?Palatine=20namelist=20for=20the=20P=C3=A4?= =?UTF-8?q?lzisch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Given the area around Pälzisch culture are Roman Catholic at the 2555 start date, tried adding dynasties & names from 19th - 18th century German cardinals and nuns including Catholic leaning German names to make it slightly distinct while also adding common names and surnames from around the area. --- common/culture/name_lists/NEOW_palatine.txt | 240 ++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 common/culture/name_lists/NEOW_palatine.txt diff --git a/common/culture/name_lists/NEOW_palatine.txt b/common/culture/name_lists/NEOW_palatine.txt new file mode 100644 index 00000000..0c6f3b05 --- /dev/null +++ b/common/culture/name_lists/NEOW_palatine.txt @@ -0,0 +1,240 @@ +name_list_palatine = { + + cadet_dynasty_names = { + "dynn_Schmitz" + "dynn_Becker" + "dynn_Schneider" + "dynn_Schmidt" + "dynn_Klein" + "dynn_Meyer" + "dynn_Weber" + "dynn_Schulte" + "dynn_Fischer" + "dynn_Peters" + "dynn_Eiermann" + "dynn_Ohlinger" + "dynn_Franck" + "dynn_Wander" + "dynn_Endesfelder" + "dynn_Riehm" + "dynn_Scharping" + "dynn_Saftig" + "dynn_Klasen" + "dynn_Bengsch" + "dynn_Grillmeier" + { "dynnp_von" "dynn_Preysing" } + "dynn_Hergenr_o_ther" + "dynn_Schade" + "dynn_P_u_tz" + "dynn_Dockweiler" + "dynn_Kohler" + { "dynnp_von" "dynn_Kleve" } + "dynn_Gross" + "dynn_Rupp" + "dynn_Wagner" + "dynn_Sch_a_uml_fer" + "dynn_Schwarz" + "dynn_Scherer" + "dynn_Braun" + "dynn_Backes" + "dynn_Kr_a_mer" + "dynn_Koch" + "dynn_Herrmann" + "dynn_Ziegler" + "dynn_Recktenwald" + "dynn_Hofmann" + "dynn_Kaiser" + "dynn_Schulz" + "dynn_Fuchs" + "dynn_Baumann" + "dynn_Haas" + "dynn_Jahn" + "dynn_Bonzel" + } + + dynasty_names = { + "dynn_Schmitz" + "dynn_Becker" + "dynn_Schneider" + "dynn_Schmidt" + "dynn_Klein" + "dynn_Meyer" + "dynn_Weber" + "dynn_Schulte" + "dynn_Fischer" + "dynn_Peters" + "dynn_Eiermann" + "dynn_Ohlinger" + "dynn_Franck" + "dynn_Wander" + "dynn_Endesfelder" + "dynn_Riehm" + "dynn_Scharping" + "dynn_Saftig" + "dynn_Klasen" + "dynn_Bengsch" + "dynn_Grillmeier" + { "dynnp_von" "dynn_Preysing" } + "dynn_Hergenr_o_ther" + "dynn_Schade" + "dynn_P_u_tz" + "dynn_Dockweiler" + "dynn_Kohler" + { "dynnp_von" "dynn_Kleve" } + "dynn_Gross" + "dynn_Rupp" + "dynn_Wagner" + "dynn_Sch_a_uml_fer" + "dynn_Schwarz" + "dynn_Scherer" + "dynn_Braun" + "dynn_Backes" + "dynn_Kr_a_mer" + "dynn_Koch" + "dynn_Herrmann" + "dynn_Ziegler" + "dynn_Recktenwald" + "dynn_Hofmann" + "dynn_Kaiser" + "dynn_Schulz" + "dynn_Fuchs" + "dynn_Baumann" + "dynn_Haas" + "dynn_Jahn" + "dynn_Bonzel" + } + + male_names = { + 3 = { + Andreas Anselmo Albrecht Artur + Bernd-Dieter Bruno Benno Bodo + Carl + Detlef Dieter Dietrich + El_i_as Erwin Erhard Eduard + Franziskus Friedrich Fritz Ferdinand + G_u_uml_nter Georg-Ludwig Gottschalk Gerhard G_o_uml_tz + Hans-Werner Helmut Hans-Heinrich Holger Hartmut Hans-G_u_nter Hans-J_o_uml_rg + Karl-Heinz Klaus-Dieter + Matthias Marcus + Norbert Nikolaus + Tobias Theodor Timo + Otmar Oskar + Ulrich Uwe + R_u_uml_diger Raimund Raphael + Lutz Lutwin Leonhard Lukas + Jochen + Willibald Wolfram + } + 2 = { + Amand Achim Armin Anton + Bertolt Burkhard + Christfried + Darrell Dagmar + Eugen Erich Edwin Eberhard + Franz-Josef Franz-Rudolf + Gottfried Gisbert Guntram + Herbert Hans-Josef Heinz Hermann Hans-Peter Hugo Karl-Ludwig Hans-Otto + Karl-Hans Kurt-Julius Konrad-Graf + Siegmund + } + 1 = { + Adalbert Alois Alfons Arnold + Benedikt Bernard + Dominic + Engelbert + Gotthilf Gottlieb + Hans-Georg Herward Hans-J_u_uml_rgen Hans-Joachim Hans-Walter Heiko + Klaus Kurt + Rudolf Reinhold + Lowell Lorenz Lothar Leo + Johann-Baptist J_u_uml_rgen Julius + Paulus + Rainer Roman + Sebastian Siegbert + Valentin + Wilfried Wendelin + } + } + female_names = { + 3 = { + Adele Anneliese Anne Anette + B_a_uml_rbel Beate Bianca + Christa Christiane Charlotte Corinna + Daniela + Elke Elfriede Eva Elena Eleonore Emil Eveline + Friedel Frieda Friederike + Gisela Gretel Gabriela + Hildegard Hilde Heidemarie Heiderose + Irmgard Ilse Irma Irina + Jutta Johanna Janine Josefa + Katharina Klaudia Kristina + Margit Marlene Mathilde Magdalena Marie-Luise Marie-Theresa + Waltraud Wilma + Rita Rose-Marie Regina + Liselotte Lydia Liane + Sandra Stefanie Silke Sieglinde + Theresa Tina Thea + Vera Vanessa Veronika + Patricia + } + 2 = { + Anja Anita Alexandra Antonia Annegret + Brunhilde Beatrix Bernadette + Carmen Cornelia Christina Caroline + Diana Dorothea + Erika Edith Ellen Evelin Edeltraut Ella + Frida + Gabriele Gabi Gerda Gertraud + Hannelore Helene Heide Henriette + Irene Iris Ina + Josefine Juliane Jeanette + K_a_uml_the Karoline Kornelia + Natalie + Mechthild Marcel Margrit Marie-Magdalena + Wiebke + Ottilie + Ulrike Ursula + Michaela Marliese Marita + Verena Viktoria + Pia Pauline + Renate Ruth Ramona + Liesel Laura Lisa Lina Lotte + Silvia Sonja Sibylle Sofie + Zita + } + 1 = { + Angelika Annemarie Anne-Rose Angelika + Babette Britta + Carina Carol-Ann Constanze + Doris + Erna Else Edeltraud Eva-Maria Edelgard Evelyn + Heidrun Herta Hanna Hilda + Ilona Isolde Ilka + Martina Margareta Magda Manuela + Rosi Rosina + Luise Lieselotte Lucia Linda + Nicole Nadine + Marta Marie Margarethe + Tanja + Judith Jessica + Katja Karola + Ute Uschi Ulla + Yvonne + } + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 + + + mercenary_names = { + } +} From 7a26cbc6c1e9f50bd7e4409ec4e7fb2b1f3adee5 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Wed, 18 Mar 2026 11:37:08 +0100 Subject: [PATCH 32/52] =?UTF-8?q?Made=20the=20P=C3=A4lzisch=20use=20the=20?= =?UTF-8?q?Palatine=20namelist=20instead=20of=20the=20Franconian=20namelis?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/culture/cultures/NEOW_central_germanic.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/culture/cultures/NEOW_central_germanic.txt b/common/culture/cultures/NEOW_central_germanic.txt index 0d6ea7df..c23b5a99 100644 --- a/common/culture/cultures/NEOW_central_germanic.txt +++ b/common/culture/cultures/NEOW_central_germanic.txt @@ -304,7 +304,7 @@ palatine = { #Pälzisch tradition_forbearing } - name_list = name_list_franconian + name_list = name_list_palatine coa_gfx = { german_group_coa_gfx western_coa_gfx } building_gfx = { western_building_gfx } From 7584518af81ce8ec0409f3f59b1fbe77f6541bbc Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Wed, 18 Mar 2026 11:54:14 +0100 Subject: [PATCH 33/52] Locs for the Palatine male & female names --- .../names/NEOW_character_names_l_english.yml | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/localization/english/replace/names/NEOW_character_names_l_english.yml b/localization/english/replace/names/NEOW_character_names_l_english.yml index 73f32f33..31e3fc72 100644 --- a/localization/english/replace/names/NEOW_character_names_l_english.yml +++ b/localization/english/replace/names/NEOW_character_names_l_english.yml @@ -1099,6 +1099,8 @@ Bynjamyn:0 "Bynjamyn" Byntlyy:0 "Byntlyy" Byron:0 "Byron" + Bernd-Dieter:0 "Bernd-Dieter" + Bertolt:0 "Bertolt" C_a_grv_ndida:0 "Càndida" C_a_hat_ndido:0 "Cândido" C_e_act_cile:0 "Cécile" @@ -1504,6 +1506,7 @@ Cywyn:0 "Cywyn" Cyyf:0 "Cyyf" Cyyndrhych:0 "Cyyndrhych" + Carol-Ann:0 "Carol-Ann" D_a_act_in:0 "Dáin" D_a_grv_vi:0 "Dàvi" D_e_act_nis:0 "Dénis" @@ -1734,6 +1737,7 @@ Dwynwen:0 "Dwynwen" Dyddgu:0 "Dyddgu" Dylan:0 "Dylan" + Darrell:0 "Darrell" E_a_uml_rendil:0 "Eärendil" E_a_uml_rnil:0 "Eärnil" E_a_uml_rnur:0 "Eärnur" @@ -2135,6 +2139,8 @@ Eyvor:0 "Eyvor" Ezio:0 "Ezio" Ezra:0 "Ezra" + El_i_as:0 "Elías" + Edeltraut:0 "Edeltraut" F_a_act_bio:0 "Fábio" F_a_act_tima:0 "Fátima" F_a_grv_tima:0 "Fàtima" @@ -2412,6 +2418,9 @@ Fychan:0 "Fychan" Fyllyp:0 "Fyllyp" Fyllypa:0 "Fyllypa" + Franziskus:0 "Franziskus" + Franz-Josef:0 "Franz-Josef" + Franz-Rudolf:0 "Franz-Rudolf" G_e_act_rald:0 "Gérald" G_e_act_rard:0 "Gérard" G_o_uml_ran:0 "Göran" @@ -2822,6 +2831,9 @@ Gyrhaldd:0 "Gyrhaldd" Gyrhalddyny:0 "Gyrhalddyny" Gyrhaynt:0 "Gyrhaynt" + Gottschalk:0 "Gottschalk" + Gisbert:0 "Gisbert" + Gabi:0 "Gabi" H_a_act_ma:0 "Háma" H_a_rng_kan:0 "Håkan" H_a_rng_kon:0 "Håkon" @@ -3127,6 +3139,14 @@ Hyrhmyony:0 "Hyrhmyony" Hystyrh:0 "Hystyrh" Hywel:0 "Hywel" + Hans-Josef:0 "Hans-Josef" + Hans-Georg:0 "Hans-Georg" + Herward:0 "Herward" + Hans-G_u_nter:0 "Hans-Günter" + Hans-Walter:0 "Hans-Walter" + Heinz-J_u_rgen:0 "Heinz-Jürgen" + Hans-Otto:0 "Hans-Otto" + Herta:0 "Herta" I_n_tld_aki:0 "Iñaki" I_n_tld_aki_spc_Mirena:0 "Iñaki Mirena" I_n_tld_igo:0 "Iñigo" @@ -3356,6 +3376,7 @@ Izar:0 "Izar" Izarne:0 "Izarne" Izaskun:0 "Izaskun" + Irmtraud:0 "Irmtraud" J_e_act_r_e_act_my:0 "Jérémy" J_e_act_r_o_hat_me:0 "Jérôme" J_o_act_us_e_grv_:0 "Jóusè" @@ -3786,6 +3807,7 @@ Jyssyka:0 "Jyssyka" Jyssyy:0 "Jyssyy" Jytte:0 "Jytte" + Johann-Baptist:0 "Johann-Baptist" K_a_rng_re:0 "Kåre" K_a_uml_te:0 "Käte" K_a_uml_the:0 "Käthe" @@ -4005,6 +4027,10 @@ Kyryssy:0 "Kyryssy" Kysha:0 "Kysha" Kywyyn:0 "Kywyyn" + Karl-Hans:0 "Karl-Hans" + Kurt-Julius:0 "Kurt-Julius" + Konrad-Graf:0 "Konrad-Graf" + Karl-Ludwig:0 "Karl-Ludwig" L_ae_rke:0 "Lærke" L_ae_titia:0 "Lætitia" L_e_act_a:0 "Léa" @@ -4368,6 +4394,10 @@ Lyy:0 "Lyy" Lyyrh:0 "Lyyrh" Lyzzyy:0 "Lyzzyy" + Lowell:0 "Lowell" + Lutwin:0 "Lutwin" + Lieselotte:0 "Lieselotte" + Lotte:0 "Lotte" M_a_act_rio:0 "Mário" M_a_grv_ri_male:0 "Màri" M_a_grv_riam:0 "Màriam" @@ -5028,6 +5058,11 @@ Myrthe:0 "Myrthe" Myshayl:0 "Myshayl" Mytchyll:0 "Mytchyll" + Marliese:0 "Marliese" + Melitta:0 "Melitta" + Meike:0 "Meike" + Marie-Magdalena:0 "Marie-Magdalena" + Marie-Theresa:0 "Marie-Theresa" N_a_act_dia:0 "Nádia" N_e_act_jib:0 "Néjib" N_e_act_lio:0 "Nélio" @@ -5331,6 +5366,7 @@ Owe:0 "Owe" Owena:0 "Owena" Owenn:0 "Owenn" + Ottilie:0 "Ottilie" P_a_rng_l:0 "Pål" P_a_uml_r:0 "Pär" P_e_grv_ire:0 "Pèire" @@ -5852,6 +5888,7 @@ Ryofamus:0 "Ryofamus" Ryshabh:0 "Ryshabh" Rywal:0 "Rywal" + Rosi:0 "Rosi" S_e_act_bastien:0 "Sébastien" S_e_act_gol_e_grv_ne:0 "Ségolène" S_e_act_rgio:0 "Sérgio" @@ -6220,6 +6257,9 @@ Sysylya:0 "Sysylya" Sywan:0 "Sywan" Sywyrhus:0 "Sywyrhus" + Siegbert:0 "Siegbert" + Sibylle:0 "Sibylle" + Sieglinde:0 "Sieglinde" T_a_grv_nia:0 "Tània" T_o_grv_ni:0 "Tòni" T_o_grv_nio_female:0 "Tònio" @@ -6512,6 +6552,7 @@ Uwe-Volkmar:0 "Uwe-Volkmar" Uxoa:0 "Uxoa" Uxue:0 "Uxue" + Uschi:0 "Uschi" V_a_hat_nia:0 "Vânia" V_e_act_ronique:0 "Véronique" V_i_act_ctor:0 "Víctor" @@ -6615,6 +6656,7 @@ Vollrath:0 "Vollrath" Volmar:0 "Volmar" Voltaire:0 "Voltaire" + Verena:0 "Verena" Wafa:0 "Wafa" Wailter:0 "Wailter" Waldemar:0 "Waldemar" @@ -6716,6 +6758,7 @@ Wyyktorya:0 "Wyyktorya" Wyyncynt:0 "Wyyncynt" Wyyysyy:0 "Wyyysyy" + Wendelin:0 "Wendelin" X_e_grv_nia:0 "Xènia" Xabat:0 "Xabat" Xabier:0 "Xabier" From 858f8dd083a12dbe9d887e2e498bf86752bba141 Mon Sep 17 00:00:00 2001 From: The_Ramdom_Cheese Date: Wed, 18 Mar 2026 12:04:05 +0100 Subject: [PATCH 34/52] Locs for the Palatine dynasty names --- .../NEOW_dynasty_names_l_english.yml | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml index 223a5ed7..1ff8da2b 100644 --- a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml +++ b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml @@ -373,6 +373,9 @@ dynn_Byrhmyngham:0 "Byrhmyngham" dynn_Brhomsgrhofy:0 "Brhomsgrhofy" dynn_Bigair:0 "Bigair" + dynn_Bengsch:0 "Bengsch" + dynn_Backes:0 "Backes" + dynn_Bonzel:0 "Bonzel" dynn_C_a_grv_rri:0 "Càrri" dynn_Caba_n_tld_as:0 "Cabañas" dynn_Cabrau:0 "Cabrau" @@ -599,6 +602,7 @@ dynn_Dyrby:0 "Dyrby" dynn_Ddumfries:0 "Ddumfries" dynn_Ddumbairton:0 "Ddumbairton" + dynn_Dockweiler:0 "Dockweiler" dynn_Eastoyndd:0 "Eastoyndd" dynn_Eastynddyng:0 "Eastynddyng" dynn_Eberle:0 "Eberle" @@ -668,6 +672,8 @@ dynn_Ewen:0 "Ewen" dynn_Exle:0 "Exle" dynn_Ealyng:0 "Ealyng" + dynn_Eiermann:0 "Eiermann" + dynn_Endesfelder:0 "Endesfelder" dynn_F_a_uml_hndrich:0 "Fähndrich" dynn_F_u_uml_gel:0 "Fügel" dynn_F_u_uml_nfgeld:0 "Fünfgeld" @@ -746,6 +752,7 @@ dynn_Fusado:0 "Fusado" dynn_Fusco:0 "Fusco" dynn_Fust_e_act_:0 "Fusté" + dynn_Franck:0 "Franck" dynn_G_e_act_rard:0 "Gérard" dynn_G_o_uml_bel:0 "Göbel" dynn_G_o_uml_cke:0 "Göcke" @@ -869,6 +876,8 @@ dynn_Gnosall:0 "Gnosall" dynn_Girvain:0 "Girvain" dynn_Glaisgow:0 "Glaisgow" + dynn_Grillmeier:0 "Grillmeier" + dynn_Gross:0 "Gross" dynn_H_a_rng_kansson:0 "Håkansson" dynn_H_a_rng_llander:0 "Hållander" dynn_H_a_uml_rle:0 "Härle" @@ -995,6 +1004,7 @@ dynn_Hyllyngddon:0 "Hyllyngddon" dynn_Hyrtffordd:0 "Hyrtffordd" dynn_Hyrhyfforhdd:0 "Hyrhyfforhdd" + dynn_Hergenr_o_ther:0 "Hergenröther" dynn_Iacono:0 "Iacono" dynn_Iammarino:0 "Iammarino" dynn_Iannaccone:0 "Iannaccone" @@ -1078,6 +1088,8 @@ dynn_Juhl:0 "Juhl" dynn_Just:0 "Just" dynn_Juul:0 "Juul" + dynn_Jaeger:0 "Jaeger" + dynn_Jahn:0 "Jahn" dynn_K_o_uml_hler:0 "Köhler" dynn_K_o_uml_nig:0 "König" dynn_K_o_uml_rlof:0 "Körlof" @@ -1189,6 +1201,11 @@ dynn_Kolshystyr:0 "Kolshystyr" dynn_Kyttyryng:0 "Kyttyryng" dynn_Kenddail:0 "Kenddail" + dynn_Klasen:0 "Klasen" + dynn_Kohler:0 "Kohler" + dynn_Kiefer:0 "Kiefer" + dynn_Kleve:0 "Kleve" + dynn_Kr_a_mer:0 "Krämer" dynn_L_a_uml_mmerhirt:0 "Lämmerhirt" dynn_L_a_uml_mmle:0 "Lämmle" dynn_L_e_act_cuyer:0 "Lécuyer" @@ -1654,6 +1671,8 @@ dynn_Puig:0 "Puig" dynn_Pujol:0 "Pujol" dynn_Pythgomyrhy:0 "Pythgomyrhy" + dynn_Preysing:0 "Preysing" + dynn_P_u_tz:0 "Pütz" dynn_Qasmi:0 "Qasmi" dynn_Qu_e_act_tel:0 "Quétel" dynn_Queen:0 "Queen" @@ -1780,6 +1799,9 @@ dynn_Ruthven:0 "Ruthven" dynn_Ryan:0 "Ryan" dynn_Roshystyr:0 "Roshystyr" + dynn_Riehm:0 "Riehm" + dynn_Rupp:0 "Rupp" + dynn_Recktenwald:0 "Recktenwald" dynn_S_e_grv_govesso:0 "Sègovesso" dynn_S_e_grv_rvi:0 "Sèrvi" dynn_S_o_stk_r_o_stk_:0 "Sørø" @@ -1978,6 +2000,12 @@ dynn_Stafforhdd:0 "Stafforhdd" dynn_Stocy_on_Trhynt:0 "Stocy-on-Trhynt" dynn_Sainquhair:0 "Sainquhair" + dynn_Schmitz:0 "Schmitz" + dynn_Schulte:0 "Schulte" + dynn_Scharping:0 "Scharping" + dynn_Saftig:0 "Saftig" + dynn_Schade:0 "Schade" + dynn_Scherer:0 "Scherer" dynn_T_u_uml_nnermann:0 "Tünnermann" dynn_Tafeit:0 "Tafeit" dynn_Taiado:0 "Taiado" @@ -2203,6 +2231,7 @@ dynn_Wrycsham:0 "Wrycsham" dynn_Whitehaiven:0 "Whitehaiven" dynn_Wigton:0 "Wigton" + dynn_Wander:0 "Wander" dynn_Yachir:0 "Yachir" dynn_Yacoubi:0 "Yacoubi" dynn_Yahiaoui:0 "Yahiaoui" From bb69827b379d2ccd67a8b9633397eb193ff5cc36 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Tue, 17 Mar 2026 20:02:43 +0000 Subject: [PATCH 35/52] fixes to two characters From c58cde9673c07903ad5d8cf7e27c0d2f387b5009 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Wed, 18 Mar 2026 20:30:32 +0000 Subject: [PATCH 36/52] fix --- common/on_action/title_on_actions.txt | 158 -------------------------- history/provinces/e_scandinavia.txt | 2 +- 2 files changed, 1 insertion(+), 159 deletions(-) diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index 236688c9..0fe4d991 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -230,45 +230,6 @@ on_title_gain = { } } } - if = { - limit = { - OR = { - OR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - OR = { - primary_title = { - title_tier = barony - } - AND = { - - primary_title = { - is_nomad_title = yes - } - NOT = { - any_liege_or_above = { - exists = yes - primary_title = { - title_tier >= duchy - } - } - } - } - } - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - } - scope:title = { - is_nomad_title = yes - } - } - root = { - destroy_title = scope:title - } - } if = { limit = { government_has_flag = government_is_prepublic @@ -2981,45 +2942,6 @@ on_title_gain_inheritance = { } } } - if = { - limit = { - OR = { - OR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - OR = { - primary_title = { - title_tier = barony - } - AND = { - - primary_title = { - is_nomad_title = yes - } - NOT = { - any_liege_or_above = { - exists = yes - primary_title = { - title_tier >= duchy - } - } - } - } - } - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - } - scope:title = { - is_nomad_title = yes - } - } - root = { - destroy_title = scope:title - } - } if = { limit = { government_has_flag = government_is_prepublic @@ -3181,45 +3103,6 @@ on_title_gain_usurpation = { } } } - if = { - limit = { - OR = { - OR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - OR = { - primary_title = { - title_tier = barony - } - AND = { - - primary_title = { - is_nomad_title = yes - } - NOT = { - any_liege_or_above = { - exists = yes - primary_title = { - title_tier >= duchy - } - } - } - } - } - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - } - scope:title = { - is_nomad_title = yes - } - } - root = { - destroy_title = scope:title - } - } if = { limit = { government_has_flag = government_is_prepublic @@ -3392,47 +3275,6 @@ on_title_lost = { } effect = { - if = { - limit = { - scope:new_holder = { - OR = { - OR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - OR = { - primary_title = { - title_tier = barony - } - AND = { - - primary_title = { - is_nomad_title = yes - } - NOT = { - any_liege_or_above = { - exists = yes - primary_title = { - title_tier => duchy - } - } - } - } - } - NOR = { - government_has_flag = government_is_prepublic - government_has_flag = government_is_urepublic - } - } - } - scope:title = { - is_nomad_title = yes - } - } - scope:new_holder = { - destroy_title = scope:title - } - } if = { limit = { government = landless_minority_government diff --git a/history/provinces/e_scandinavia.txt b/history/provinces/e_scandinavia.txt index c7ef3a52..6ce303db 100644 --- a/history/provinces/e_scandinavia.txt +++ b/history/provinces/e_scandinavia.txt @@ -848,7 +848,7 @@ religion = lutheran } 1000.1.1 = { - holding = castle_holding + holding = city_holding } } ###c_fyn From 76b7117f35044d00d3ae77bb39958bbf3151cf95 Mon Sep 17 00:00:00 2001 From: JulesFlammenkueche Date: Wed, 18 Mar 2026 21:44:28 +0100 Subject: [PATCH 37/52] locs for malta --- localization/english/replace/titles_l_english.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/localization/english/replace/titles_l_english.yml b/localization/english/replace/titles_l_english.yml index 26689581..c757fbb7 100644 --- a/localization/english/replace/titles_l_english.yml +++ b/localization/english/replace/titles_l_english.yml @@ -25172,6 +25172,8 @@ c_macerata_adj:0 "Macerata" c_caserta:0 "Caserta" c_caserta_adj:0 "Caserta" + d_malta:0 "Malta" + d_malta_adj:0 "Maltese" ##meridone d_lucania:0 "Basilicata" From 14f85aa03557d514c8c6cbd3a823526267a73105 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Wed, 18 Mar 2026 23:17:38 +0000 Subject: [PATCH 38/52] fixes to govs --- common/governments/00_government_types.txt | 4 - common/landed_titles/LAAMPs.txt | 20 +-- common/on_action/title_on_actions.txt | 68 +++------ common/on_action/yearly_on_actions.txt | 25 ++-- .../courtier_guest_management_events.txt | 131 +----------------- history/titles/NEOW_laamp_titles.txt | 22 +-- 6 files changed, 51 insertions(+), 219 deletions(-) diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index 4a19a275..a1792ad9 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -740,11 +740,9 @@ peasantrepublic_government = { flags = { government_is_settled may_elevate_co_monarch - government_uses_legitimacy government_uses_domain_limit government_has_herd government_uses_domicile_but_not_adventurer - government_has_powerful_families government_is_barterer government_is_prepublic government_locked_to_elective @@ -828,11 +826,9 @@ urbanrepublic_government = { government_is_settled government_has_treasury may_elevate_co_monarch - government_uses_legitimacy government_uses_domain_limit government_uses_monotowns government_uses_domicile_but_not_adventurer - government_has_powerful_families government_has_citizen_militia government_elections_and_tax_influenced_by_influence government_is_barterer diff --git a/common/landed_titles/LAAMPs.txt b/common/landed_titles/LAAMPs.txt index bbf3fc69..78d335c3 100644 --- a/common/landed_titles/LAAMPs.txt +++ b/common/landed_titles/LAAMPs.txt @@ -9,7 +9,7 @@ d_laamp_zolt = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -24,7 +24,7 @@ d_laamp_test_jewish = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -38,7 +38,7 @@ d_laamp_bookwyrm = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -53,7 +53,7 @@ d_laamp_cool = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -68,7 +68,7 @@ d_laamp_rostagnac = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -83,7 +83,7 @@ d_laamp_knife = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -98,7 +98,7 @@ d_laamp_cale_roman = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -113,7 +113,7 @@ d_laamp_turkisch_simurghi = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -127,7 +127,7 @@ d_laamp_beur_simurghi = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } @@ -141,7 +141,7 @@ d_laamp_traveller_celtic = { ruler_uses_title_name = no always_follows_primary_heir = yes no_automatic_claims = yes - noble_family = yes + destroy_if_invalid_heir = yes ai_primary_priority = { add = @never_primary_score } diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index 0fe4d991..1972c741 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -252,10 +252,8 @@ on_title_gain = { limit = { government_has_flag = government_is_prepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = saxon_elective_succession_law } @@ -292,10 +290,8 @@ on_title_gain = { limit = { government_has_flag = government_is_urepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = urban_elective_succession_law } @@ -374,6 +370,7 @@ on_title_gain = { } else_if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } exists = var:player_domicile_title } root = { @@ -389,6 +386,7 @@ on_title_gain = { title_domicile = { if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } exists = root.dynasty scope:previous_holder.dynasty ?= root.dynasty } @@ -415,6 +413,7 @@ on_title_gain = { root = { random_held_title = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } is_nomad_title = yes exists = title_domicile NOT = { this = scope:title } @@ -439,6 +438,9 @@ on_title_gain = { root = { random_held_title = { limit = { + root = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } + } is_nomad_title = yes exists = title_domicile NOT = { this = scope:title } @@ -449,6 +451,7 @@ on_title_gain = { title_domicile = { if = { limit = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } exists = root.dynasty scope:previous_holder.dynasty ?= root.dynasty } @@ -473,6 +476,7 @@ on_title_gain = { if = { limit = { root = { + NOT = { government_has_flag = government_allows_nomad_domicile_titles } OR = { house.house_head ?= { this != root @@ -1655,30 +1659,6 @@ on_title_gain = { trigger_event = roman_restoration.0005 } #Mongol empire and GoK should lose other empires - if = { - limit = { - primary_title ?= { - OR = { - this = title:e_mongol_empire - AND = { - exists = global_var:greatest_of_khans_title - this = global_var:greatest_of_khans_title - } - } - } - scope:title = { - NOR = { - this = title:e_mongol_empire - AND = { - exists = global_var:greatest_of_khans_title - this = global_var:greatest_of_khans_title - } - } - } - is_ai = yes - } - destroy_title = scope:title - } # You just inherited an Emperor title!! if = { limit = { @@ -2964,10 +2944,8 @@ on_title_gain_inheritance = { limit = { government_has_flag = government_is_prepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = saxon_elective_succession_law } @@ -3003,10 +2981,8 @@ on_title_gain_inheritance = { limit = { government_has_flag = government_is_urepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = urban_elective_succession_law } @@ -3125,10 +3101,8 @@ on_title_gain_usurpation = { limit = { government_has_flag = government_is_prepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = saxon_elective_succession_law } @@ -3164,10 +3138,8 @@ on_title_gain_usurpation = { limit = { government_has_flag = government_is_urepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = urban_elective_succession_law } diff --git a/common/on_action/yearly_on_actions.txt b/common/on_action/yearly_on_actions.txt index c554ae26..0ec2cce7 100644 --- a/common/on_action/yearly_on_actions.txt +++ b/common/on_action/yearly_on_actions.txt @@ -777,10 +777,8 @@ yearly_playable_pulse = { limit = { government_has_flag = government_is_prepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = saxon_elective_succession_law } @@ -816,10 +814,8 @@ yearly_playable_pulse = { limit = { government_has_flag = government_is_urepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = urban_elective_succession_law } @@ -2134,6 +2130,7 @@ yearly_playable_pulse = { if = { limit = { is_ai = yes + NOT = { government_has_flag = government_allows_nomad_domicile_titles } } every_held_title = { limit = { @@ -2774,10 +2771,8 @@ quarterly_playable_pulse = { limit = { government_has_flag = government_is_prepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = saxon_elective_succession_law } @@ -2813,10 +2808,8 @@ quarterly_playable_pulse = { limit = { government_has_flag = government_is_urepublic any_held_title = { - filter = { - title_tier > barony - is_nomad_title = no - } + title_tier > barony + is_nomad_title = no NOT = { has_title_law = urban_elective_succession_law } diff --git a/events/courtier_guest_management_events/courtier_guest_management_events.txt b/events/courtier_guest_management_events/courtier_guest_management_events.txt index 23f9f090..52a36f0f 100644 --- a/events/courtier_guest_management_events/courtier_guest_management_events.txt +++ b/events/courtier_guest_management_events/courtier_guest_management_events.txt @@ -617,139 +617,10 @@ courtier_guest_management.2001 = { } random_list = { 10 = { - save_scope_as = minority_leader - if = { - limit = { - player_heir ?= { - this != root - is_adult = yes - } - } - player_heir = { - save_scope_as = laamp_heir - save_scope_as = laamp_inheritor - custom_tooltip = become_landless_minority_decision_title_scope_tt - } - } - else_if = { - limit = { top_liege != this } - liege = { - save_scope_as = laamp_liege - save_scope_as = laamp_inheritor - custom_tooltip = become_landless_minority_decision_title_scope_tt - } - } - else = { - custom_tooltip = become_landless_minority_decision_title_created_tt - if = { - limit = { - NOT = { exists = scope:laamp_inheritor } - } - hidden_effect_new_object = { - create_character = { - template = laamp_inheritor_template - culture = root.culture - faith = root.faith - dynasty = generate - location = root.capital_province - after_creation = { - save_scope_as = laamp_inheritor - add_character_flag = new_laamp_inheritor - } - } - } - } - } - create_landless_minority_title_tooltip_effect = yes - show_as_tooltip = { - add_prestige = medium_prestige_gain - add_character_modifier = { - modifier = ep3_voluntary_laamp_character_modifier - years = 5 - } - } - primary_title = { save_scope_as = old_primary_title } - capital_province = { save_scope_as = old_capital_province } - if = { - limit = { top_liege != this } - liege = { save_scope_as = old_liege } - } - # Transfer landed titles - every_held_title = { - title_tier > barony - limit = { - OR = { - is_landless_type_title = no - is_nomad_title = yes - } - } - add_to_list = target_titles - } - create_title_and_vassal_change = { - type = conquest - save_scope_as = change - add_claim_on_loss = no - } - hidden_effect = { - every_in_list = { - list = target_titles - change_title_holder_include_vassals = { - holder = scope:laamp_inheritor - change = scope:change - } - } - resolve_title_and_vassal_change = scope:change - } - # Create Adventurer create_landless_minority_title_effect = { REASON = flag:voluntary FLAVOR_CHAR = scope:laamp_inheritor } - scope:laamp_inheritor = { - # Tooltip for player - custom_tooltip = become_landless_adventurer_decision_title_scope_tt - # Create a loving family so inheritance isn't so borked - if = { - limit = { has_character_flag = new_laamp_inheritor } - trigger_event = game_rule.1001 - remove_character_flag = new_laamp_inheritor - } - } - hidden_effect = { - every_held_title = { - limit = { - is_noble_family_title = yes - } - root = { destroy_title = prev } - } - } - # Debug tracking - if = { - limit = { - is_ai = yes - debug_only = yes - } - if = { - limit = { exists = global_var:ai_voluntary_laamp_count } - change_global_variable = { - name = ai_voluntary_laamp_count - add = 1 - } - } - else = { - set_global_variable = { - name = ai_voluntary_laamp_count - value = 1 - } - } - debug_log = "AI became adventurer voluntarily" - debug_log_scopes = yes - } - stress_impact = { - craven = minor_stress_impact_gain - content = minor_stress_impact_gain - lazy = minor_stress_impact_gain - } } 60 = { } @@ -1419,7 +1290,7 @@ courtier_guest_management.4002 = { #Counteract bonus in above value somewhat modifier = { culture = { has_cultural_tradition = tradition_diasporic } - add = 75 + add = -10 } modifier = { has_trait = historical_character diff --git a/history/titles/NEOW_laamp_titles.txt b/history/titles/NEOW_laamp_titles.txt index 4f90cc3f..ed0909e0 100644 --- a/history/titles/NEOW_laamp_titles.txt +++ b/history/titles/NEOW_laamp_titles.txt @@ -6,7 +6,7 @@ # succession_laws = { landless_adventurer_succession_law } # effect = { # create_landless_adventurer_title_history_effect = yes -# set_variable = { name = adventurer_creation_reason value = flag:historical } +# set_variable = { name = adventurer_creation_reason value = flag:voluntary } # destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } # } # } @@ -20,7 +20,7 @@ d_laamp_test_jewish = { succession_laws = { confederate_partition_succession_law } effect = { create_landless_minority_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -34,7 +34,7 @@ d_laamp_cale_roman = { succession_laws = { confederate_partition_succession_law } effect = { create_landless_minority_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -47,7 +47,7 @@ d_laamp_traveller_celtic = { succession_laws = { confederate_partition_succession_law } effect = { create_landless_minority_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -60,7 +60,7 @@ d_laamp_turkisch_simurghi = { succession_laws = { confederate_partition_succession_law } effect = { create_landless_minority_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -74,7 +74,7 @@ d_laamp_beur_simurghi = { succession_laws = { confederate_partition_succession_law } effect = { create_landless_minority_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -89,7 +89,7 @@ d_laamp_zolt = { # Saltpites succession_laws = { landless_adventurer_succession_law } effect = { create_landless_adventurer_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -103,7 +103,7 @@ d_laamp_bookwyrm = { # Word-Bearers succession_laws = { landless_adventurer_succession_law } effect = { create_landless_adventurer_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -117,7 +117,7 @@ d_laamp_cool = { # Word-Bearers succession_laws = { landless_adventurer_succession_law } effect = { create_landless_adventurer_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -131,7 +131,7 @@ d_laamp_rostagnac = { # Cadets of Gascony succession_laws = { landless_adventurer_succession_law } effect = { create_landless_adventurer_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } @@ -145,7 +145,7 @@ d_laamp_knife = { # Leather Aprons succession_laws = { landless_adventurer_succession_law } effect = { create_landless_adventurer_title_history_effect = yes - set_variable = { name = adventurer_creation_reason value = flag:historical } + set_variable = { name = adventurer_creation_reason value = flag:voluntary } destroy_landless_title_no_dlc_effect = { DATE = 2555.1.1 } } } From d0fa6114cbacba0a28092bfe91d8f1a074982be7 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Fri, 20 Mar 2026 23:56:53 +0000 Subject: [PATCH 39/52] first version of language rework --- common/culture/cultures/NEOW_albanian.txt | 4 +- .../culture/cultures/NEOW_anglo_frisian.txt | 14 +- common/culture/cultures/NEOW_brythonic.txt | 6 +- .../cultures/NEOW_central_germanic.txt | 28 +- common/culture/cultures/NEOW_french.txt | 24 +- common/culture/cultures/NEOW_goidelic.txt | 4 +- common/culture/cultures/NEOW_hispanic.txt | 28 +- common/culture/cultures/NEOW_scottish.txt | 2 +- common/culture/pillars/00_language.txt | 9 + common/culture/pillars/NEOW_language.txt | 938 +++++++++++++++++ common/script_values/00_culture_values.txt | 976 ++++++++++++++++++ common/script_values/01_starting_values.txt | 897 ++++++++++++++++ .../zz_NEOW_cultural_languages_l_english.yml | 133 ++- 13 files changed, 3006 insertions(+), 57 deletions(-) create mode 100644 common/script_values/00_culture_values.txt create mode 100644 common/script_values/01_starting_values.txt diff --git a/common/culture/cultures/NEOW_albanian.txt b/common/culture/cultures/NEOW_albanian.txt index 9d44d939..7112cfb7 100644 --- a/common/culture/cultures/NEOW_albanian.txt +++ b/common/culture/cultures/NEOW_albanian.txt @@ -6,7 +6,7 @@ ethos = ethos_communal heritage = heritage_albanian - language = language_arbereshe + language = NEOW_language_arbereshe martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_02 @@ -37,7 +37,7 @@ NEOW_albanian = { #Still a WIP I assume ethos = ethos_communal heritage = heritage_albanian - language = language_south_slavic + language = NEOW_language_albanian martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_anglo_frisian.txt b/common/culture/cultures/NEOW_anglo_frisian.txt index c1b78f38..48300ce9 100644 --- a/common/culture/cultures/NEOW_anglo_frisian.txt +++ b/common/culture/cultures/NEOW_anglo_frisian.txt @@ -8,7 +8,7 @@ ethos = ethos_communal heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_easlander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -54,7 +54,7 @@ easlander = { ethos = ethos_communal heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_easlander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -99,7 +99,7 @@ norflander = { ethos = ethos_stoic heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_norflander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -136,7 +136,7 @@ norner = { ethos = ethos_stoic heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_norner martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -174,7 +174,7 @@ souflander = { ethos = ethos_bureaucratic heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_souflander martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -225,7 +225,7 @@ weslander = { ethos = ethos_communal heritage = heritage_anglo_frisian - language = language_english + language = NEOW_language_weslander martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -259,7 +259,7 @@ english = { #Used for parent cultures ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_anglic + language = language_english martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_brythonic.txt b/common/culture/cultures/NEOW_brythonic.txt index 32e753ce..77a98e83 100644 --- a/common/culture/cultures/NEOW_brythonic.txt +++ b/common/culture/cultures/NEOW_brythonic.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_brythonic - language = language_brythonic + language = NEOW_language_cornish martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -166,7 +166,7 @@ strafclideg = { ethos = ethos_bureaucratic heritage = heritage_brythonic - language = language_brittannic + language = NEOW_language_north_brittannic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -231,7 +231,7 @@ welsh = { #Cymry ethos = ethos_stoic heritage = heritage_brythonic - language = language_brythonic + language = NEOW_language_welsh martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { diff --git a/common/culture/cultures/NEOW_central_germanic.txt b/common/culture/cultures/NEOW_central_germanic.txt index c23b5a99..8bb720b6 100644 --- a/common/culture/cultures/NEOW_central_germanic.txt +++ b/common/culture/cultures/NEOW_central_germanic.txt @@ -3,7 +3,7 @@ ethos = ethos_spiritual heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_alpine_bavarian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -38,7 +38,7 @@ bavarian = { #Boarisch ethos = ethos_courtly heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_bavarian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -73,7 +73,7 @@ brandenburger = { #Brandenburgisch ethos = ethos_egalitarian heritage = heritage_central_germanic - language = language_saxon + language = NEOW_language_margravian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -108,7 +108,7 @@ franconian = { #Fränggisch ethos = ethos_communal heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_franconian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -143,7 +143,7 @@ hessian = { #Hessisch ethos = ethos_stoic heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_hessian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -187,7 +187,7 @@ kuhjung = { ethos = ethos_bellicose heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_ramsteiner martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -222,7 +222,7 @@ low_saxon = { #Platdüütsch ethos = ethos_stoic heritage = heritage_central_germanic - language = language_saxon + language = NEOW_language_westphalian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -257,7 +257,7 @@ NEOW_pomeranian = { #Pomeranian ethos = ethos_stoic heritage = heritage_central_germanic - language = language_saxon + language = NEOW_language_pomeranian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -292,7 +292,7 @@ palatine = { #Pälzisch ethos = ethos_courtly heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_palatine martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -327,7 +327,7 @@ rhinelander = { #Rheinländer ethos = ethos_egalitarian heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_rhinelandic martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -365,7 +365,7 @@ rottisch = { ethos = ethos_stoic heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_rottish martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -399,7 +399,7 @@ saxon = { #Sächsisch ethos = ethos_bellicose heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_saxon martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -434,7 +434,7 @@ swabian = { ethos = ethos_communal heritage = heritage_central_germanic - language = language_high_german + language = NEOW_language_swabian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -475,7 +475,7 @@ turkisch = { ethos = ethos_courtly heritage = heritage_central_germanic - language = language_central_germanic + language = NEOW_language_german_turk martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_french.txt b/common/culture/cultures/NEOW_french.txt index f9dc078d..1d7b54cb 100644 --- a/common/culture/cultures/NEOW_french.txt +++ b/common/culture/cultures/NEOW_french.txt @@ -6,7 +6,7 @@ ethos = ethos_courtly heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -48,7 +48,7 @@ bourguignon = { ethos = ethos_communal heritage = heritage_french - language = language_french + language = NEOW_language_east_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -91,7 +91,7 @@ breton = { #Brezhoneg ethos = ethos_spiritual heritage = heritage_french - language = language_brythonic + language = NEOW_language_breton martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -137,7 +137,7 @@ galo = { ethos = ethos_stoic heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -180,7 +180,7 @@ gascon = { ethos = ethos_bellicose heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -222,7 +222,7 @@ metropolitain = { ethos = ethos_courtly heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -269,7 +269,7 @@ normaund = { ethos = ethos_bellicose heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -312,7 +312,7 @@ occitan = { ethos = ethos_communal heritage = heritage_french - language = language_occitano_romance + language = NEOW_language_occitan martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -346,7 +346,7 @@ patoues = { #Arpetan ethos = ethos_egalitarian heritage = heritage_french - language = language_french + language = NEOW_language_east_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -389,7 +389,7 @@ picard = { ethos = ethos_egalitarian heritage = heritage_french - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -432,7 +432,7 @@ poitevin = { ethos = ethos_spiritual heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -474,7 +474,7 @@ provencal = { ethos = ethos_spiritual heritage = heritage_french - language = language_french + language = NEOW_language_south_french martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_goidelic.txt b/common/culture/cultures/NEOW_goidelic.txt index bbf0c6df..3fe64b8f 100644 --- a/common/culture/cultures/NEOW_goidelic.txt +++ b/common/culture/cultures/NEOW_goidelic.txt @@ -36,7 +36,7 @@ high_irish = { #Éireannach Uasal ethos = ethos_spiritual heritage = heritage_goidelic - language = language_goidelic + language = NEOW_language_irish martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -142,7 +142,7 @@ manx = { ethos = ethos_stoic heritage = heritage_goidelic - language = language_goidelic + language = NEOW_language_manx martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/cultures/NEOW_hispanic.txt b/common/culture/cultures/NEOW_hispanic.txt index 724557fd..5be2858f 100644 --- a/common/culture/cultures/NEOW_hispanic.txt +++ b/common/culture/cultures/NEOW_hispanic.txt @@ -3,7 +3,7 @@ ethos = ethos_spiritual heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_catalan martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -36,7 +36,7 @@ aragonese = { #Aragonés ethos = ethos_stoic heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_aragonese martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -70,7 +70,7 @@ asturleonese = { #Asturlleonés house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_asturleonese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -99,7 +99,7 @@ balearic = { #Balear ethos = ethos_egalitarian heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_balearic martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -131,7 +131,7 @@ basque = { #Euskal ethos = ethos_stoic heritage = heritage_hispanic - language = language_basque + language = NEOW_language_basque martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -163,7 +163,7 @@ castilian = { #Castellano ethos = ethos_bellicose heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_castillian martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -198,7 +198,7 @@ catalan = { #Català ethos = ethos_bureaucratic heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_catalan martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -229,7 +229,7 @@ extremeno = { #Estremeñu ethos = ethos_stoic heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_extremeno martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -260,7 +260,7 @@ galician = { #Galego ethos = ethos_spiritual heritage = heritage_hispanic - language = language_lusophonic + language = NEOW_language_galician martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -294,7 +294,7 @@ llanito = { ethos = ethos_bellicose heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_llanito martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -327,7 +327,7 @@ NEOW_andalusian = { #Andalûh ethos = ethos_courtly heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_andalusian martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -357,7 +357,7 @@ canarian = { #Andalûh ethos = ethos_courtly heritage = heritage_hispanic - language = language_hispanophonic + language = NEOW_language_canarian martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -386,7 +386,7 @@ portuguese = { #Português ethos = ethos_spiritual heritage = heritage_hispanic - language = language_lusophonic + language = NEOW_language_portuguese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -417,7 +417,7 @@ valencian = { #Valencià ethos = ethos_bureaucratic heritage = heritage_hispanic - language = language_occitano_romance + language = NEOW_language_valencian martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_scottish.txt b/common/culture/cultures/NEOW_scottish.txt index a9adda94..10b13ad8 100644 --- a/common/culture/cultures/NEOW_scottish.txt +++ b/common/culture/cultures/NEOW_scottish.txt @@ -3,7 +3,7 @@ ethos = ethos_bellicose heritage = heritage_scottish - language = language_goidelic + language = NEOW_language_scottish martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/pillars/00_language.txt b/common/culture/pillars/00_language.txt index 700a2007..b9159a02 100644 --- a/common/culture/pillars/00_language.txt +++ b/common/culture/pillars/00_language.txt @@ -5,6 +5,9 @@ LANGUAGE = language_anglic } } + parameters = { + anglic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -182,6 +185,9 @@ language_brythonic = { multiply = 10 } } + parameters = { + brythonic_group_language_param = yes + } color = { 127 63 127 } } @@ -439,6 +445,9 @@ language_goidelic = { } } + parameters = { + goidelic_group_language_param = yes + } color = { 32 216 109 } } diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index 98a46366..bfc54818 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -51,6 +51,929 @@ language_sarphatique = { color = sephardi } +NEOW_language_irish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_irish + } + } + parameters = { + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_irish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_manx = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_manx + } + } + parameters = { + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_manx } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_scottish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_scottish + } + } + parameters = { + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_scottish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_north_brittannic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_brittannic + } + } + parameters = { + brythonic_group_language_param = yes + anglic_group_language_param = yes + goidelic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_brittannic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_cornish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_cornish + } + } + parameters = { + brythonic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_cornish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_welsh = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_welsh + } + } + parameters = { + brythonic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_welsh } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_south_french = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_south_french + } + } + parameters = { + french_group_language_param = yes + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_south_french } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_north_french = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_french + } + } + parameters = { + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_french } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_east_french = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_east_french + } + } + parameters = { + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_east_french } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_breton = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_breton + } + } + parameters = { + brythonic_group_language_param = yes + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_breton } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_catalan = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_catalan + } + } + parameters = { + east_hispanic_group_language_param = yes + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_catalan } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_occitan = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_occitan + } + } + parameters = { + french_group_language_param = yes + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_occitan } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_aragonese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_aragonese + } + } + parameters = { + east_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_aragonese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_asturleonese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_asturleonese + } + } + parameters = { + lausatian_group_language_param = yes + west_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_asturleonese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_balearic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_balearic + } + } + parameters = { + occitanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_balearic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_basque = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_basque + } + } + parameters = { + basque_group_language_param = yes + east_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_basque } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_castillian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_castillian + } + } + parameters = { + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_castillian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_valencian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_valencian + } + } + parameters = { + occitanic_group_language_param = yes + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_valencian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_portuguese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_portuguese + } + } + parameters = { + lausatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_portuguese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_canarian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_canarian + } + } + parameters = { + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_canarian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_andalusian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_andalusian + } + } + parameters = { + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_andalusian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_llanito = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_llanito + } + } + parameters = { + middle_hispanic_group_language_param = yes + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_llanito } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_galician = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_galician + } + } + parameters = { + lausatian_group_language_param = yes + west_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_galician } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_extremeno = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_extremeno + } + } + parameters = { + lausatian_group_language_param = yes + west_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_extremeno } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_weslander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_weslander + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_weslander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_souflander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_souflander + } + } + parameters = { + brythonic_group_language_param = yes + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_souflander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_norner = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_norner + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_norner } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_norflander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_norflander + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_norflander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_easlander = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_easlander + } + } + parameters = { + anglic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_easlander } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_arbereshe = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_arbereshe + } + } + parameters = { + albanian_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_arbereshe } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_albanian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_albanian + } + } + parameters = { + albanian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_albanian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_german_turk = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_german_turk + } + } + parameters = { + low_german_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_german_turk } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_swabian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_swabian + } + } + parameters = { + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_swabian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_saxon = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_saxon + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_saxon } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_rottish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_rottish + } + } + parameters = { + high_german_group_language_param = yes + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_rottish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_rhinelandic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_rhinelandic + } + } + parameters = { + high_german_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_rhinelandic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_palatine = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_palatine + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_palatine } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_pomeranian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_pomeranian + } + } + parameters = { + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_pomeranian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_westphalian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_westphalian + } + } + parameters = { + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_westphalian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_ramsteiner = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_ramsteiner + } + } + parameters = { + anglic_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_ramsteiner } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_hessian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_hessian + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_hessian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_franconian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_franconian + } + } + parameters = { + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_franconian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_margravian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_margravian + } + } + parameters = { + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_margravian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_bavarian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_bavarian + } + } + parameters = { + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_bavarian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_alpine_bavarian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_alpine_bavarian + } + } + parameters = { + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_alpine_bavarian } + multiply = 10 + } + } + + color = { 204 54 40 } +} + + + + + language_english = { type = language @@ -59,6 +982,9 @@ language_english = { LANGUAGE = language_english } } + parameters = { + anglic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -94,6 +1020,10 @@ language_brittannic = { LANGUAGE = language_brittannic } } + parameters = { + anglic_group_language_param = yes + brythonic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -112,6 +1042,10 @@ language_scots = { LANGUAGE = language_scots } } + parameters = { + anglic_group_language_param = yes + goidelic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -130,6 +1064,10 @@ language_anglo_irish = { LANGUAGE = language_anglo_irish } } + parameters = { + anglic_group_language_param = yes + goidelic_group_language_param = yes + } ai_will_do = { value = 10 if = { diff --git a/common/script_values/00_culture_values.txt b/common/script_values/00_culture_values.txt new file mode 100644 index 00000000..d47c5746 --- /dev/null +++ b/common/script_values/00_culture_values.txt @@ -0,0 +1,976 @@ + +# Don't remove the below hex code thingy: not sure what black magic it's doing, but it prevents a startup error somehow. +grant_title_cultural_acceptance_impact = { + value = 0 + #How many counties am I giving away out of the total counties of this culture? + add = { + every_in_list = { + list = target_titles + limit = { + tier = tier_county + culture != scope:actor.culture + culture = scope:recipient.culture + NOT = { + recent_history = { + type = granted + years = 10 + } + } + } + add = 1 + } + divide = { + value = culture_number_of_counties + min = 1 + } + multiply = 15 #If you are giving all counties with this culture self rule then you will increase acceptance by 15% - If this is changed also change revoke_title_culture_acceptance_impact + + min = 0.5 + max = 15 + } + add = { # Up to an additional 10 acceptance for Duchies or Kingdoms with a capital of this culture + every_in_list = { #2 per duchy + list = target_titles + if = { + limit = { + tier = tier_duchy + title_capital_county = { + culture != scope:actor.culture + culture = scope:recipient.culture + } + NOT = { + recent_history = { + type = granted + years = 10 + } + } + } + add = 2 + } + } + every_in_list = { #3 per Kingdom + list = target_titles + if = { + limit = { + tier = tier_kingdom + title_capital_county = { + culture != scope:actor.culture + culture = scope:recipient.culture + } + NOT = { + recent_history = { + type = granted + years = 10 + } + } + } + add = 3 + } + } + max = 10 + } +} + +revoke_title_culture_acceptance_impact = { + value = 0 + if = { + limit = { + scope:landed_title = { + tier = tier_county + culture != scope:actor.culture + culture = scope:recipient.culture + NOT = { + recent_history = { + type = revoked + years = 5 + } + } + } + } + subtract = { + value = 1 + divide = { + value = scope:landed_title.culture.culture_number_of_counties + min = 1 + } + multiply = 15 #Same as used in grant above + + min = 0.5 + max = 15 + } + } + else = { + scope:landed_title = { + subtract = tier + add = 1 # because tier starts at the barony level and we want to start counting at the county level + } + } +} + +auto_grant_county_cultural_acceptance_impact = { + value = 0 + + add = { + value = 1 + divide = { + value = scope:landed_title.culture.culture_number_of_counties + min = 1 + } + multiply = 15 #Same as used in grant above + + min = 0.5 + max = 15 + } +} + +culture_conversion_acceptance_impact = { #The smaller a culture is, the more upset it will be. + subtract = { + value = 1 + divide = { + value = scope:county.culture.culture_number_of_counties + min = 1 + } + multiply = 15 #Same as used in grant above + + min = 0.5 + max = 15 + } +} + +declare_war_culture_acceptance_impact = { + value = 0 + scope:defender.primary_title = { + subtract = tier + add = 1 + } +} + +declare_war_culture_acceptance_impact = { + value = 0 + scope:defender.primary_title = { + subtract = tier + add = 1 + } +} + +hybridization_threshold_flat_number_value = 40 + +hybridization_threshold_value = { + value = hybridization_threshold_flat_number_value + # Cultural Parameters + if = { + limit = { + root.culture = { + has_cultural_parameter = easier_to_hybridize + } + } + multiply = 0.5 + } + else_if = { + limit = { + root = { + has_trait = nomadic_philosophy + NOT = { + government_has_flag = government_is_nomadic + } + } + } + multiply = 0.5 + } + if = { + limit = { + root.culture = { + has_cultural_parameter = harder_to_hybridize + } + } + multiply = 2 + } + if = { + limit = { + exists = scope:culture + scope:culture = { + has_cultural_parameter = harder_to_hybridize + } + } + multiply = 2 + } + # Struggles + if = { + limit = { + exists = scope:culture + root = { + OR = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = easier_culture_hybridising_for_involved_and_interlopers + is_culture_involved_in_struggle = scope:culture + } + any_character_struggle = { + involvement = interloper + has_struggle_phase_parameter = easier_culture_hybridising_for_involved_and_interlopers + is_culture_involved_in_struggle = scope:culture + } + } + } + } + multiply = 0.5 + } + # Events + if = { + limit = { + root = { + exists = var:special_culture + var:special_culture = scope:culture + } + } + multiply = 0.75 + } + # Council Position + if = { + limit = { + root = { + has_variable = kurultai_culture_variable_value + } + } + multiply = { + value = 100 + subtract = root.var:kurultai_culture_variable_value + divide = 100 + } + } + max = 100 + min = 0 +} + +hybridization_ai_threshold_value = { + value = hybridization_threshold_flat_number_value + add = 10 +} + +culture_divergence_cooldown = { + value = 100 + # Game Rules + if = { + limit = { + has_game_rule = slower_hybrid_and_divergence_cooldowns + } + add = 100 + } + else_if = { + limit = { + has_game_rule = faster_hybrid_and_divergence_cooldowns + } + add = -50 + } + else_if = { + limit = { + has_game_rule = no_hybrid_and_divergence_cooldowns + } + multiply = 0 + } +} + +culture_hybrid_cooldown = { + value = 50 + # Game Rules + if = { + limit = { + has_game_rule = slower_hybrid_and_divergence_cooldowns + } + add = 50 + } + else_if = { + limit = { + has_game_rule = faster_hybrid_and_divergence_cooldowns + } + add = -25 + } + else_if = { + limit = { + has_game_rule = no_hybrid_and_divergence_cooldowns + } + multiply = 0 + } +} + +add_tradition_cooldown = { + value = 50 + if = { + limit = { + culture_head ?= { + has_variable = kurultai_culture_variable_value + } + } + multiply = { + value = 100 + subtract = culture_head.var:kurultai_culture_variable_value + divide = 100 + } + } +} + +tradition_base_cost = { + value = 2000 + if = { + limit = { + culture_head ?= { + has_variable = kurultai_culture_variable_value + } + } + multiply = { + value = 100 + subtract = culture_head.var:kurultai_culture_variable_value + divide = 100 + } + } +} + +tradition_double_base_cost = { + value = tradition_base_cost + multiply = 2 +} +tradition_incompatible_ethos_penalty = { + value = 2000 + if = { + limit = { + culture_head ?= { + has_variable = kurultai_culture_variable_value + } + } + multiply = { + value = 100 + subtract = culture_head.var:kurultai_culture_variable_value + divide = 100 + } + } +} + +tradition_unfulfilled_criteria_penalty = { + value = 3000 + if = { + limit = { + culture_head ?= { + has_variable = kurultai_culture_variable_value + } + } + multiply = { + value = 100 + subtract = culture_head.var:kurultai_culture_variable_value + divide = 100 + } + } +} + +tradition_replacement_cost_factor = 1.5 +tradition_replacement_cost_factor_tooltip = { + value = tradition_replacement_cost_factor + subtract = 1 + multiply = 100 +} + +tradition_trait_discount = { + value = tradition_base_cost + multiply = -0.5 +} + +tradition_heritage_discount = { + value = tradition_base_cost + multiply = -1 +} + +tradition_replacement_cost_if_relevant = { + value = 1 + if = { + limit = { + scope:replacing = yes + } + multiply = { + value = tradition_replacement_cost_factor + desc = replacing_tradition_cost_penalty_desc + } + } +} + + + +culture_realm_size = { + every_culture_county = { + limit = { + holder = { + OR = { + this = scope:actor + is_vassal_or_below_of = scope:actor + } + } + } + add = 1 + } +} + +culture_realm_size_larger_30_percent = { + add = culture_realm_size + multiply = 1.3 +} + +culture_realm_size_cost_scopes = { + every_culture_county = { + limit = { + holder = { + OR = { + this = root + is_vassal_or_below_of = root + } + } + } + add = 1 + } +} + +culture_size = { + every_culture_county = { + add = 1 + } +} + +culture_size_penalty = { + value = 0 + add = { + add = scope:culture.culture_realm_size_cost_scopes + subtract = root.culture.culture_realm_size_cost_scopes + multiply = 50 + } +} + +divergence_yearly_chance = { + value = 5 + if = { + limit = { + has_game_rule = less_common_divergent_culture_ai_frequency + } + multiply = 0.2 + } + if = { + limit = { + has_game_rule = relaxed_divergent_culture_ai_frequency + } + multiply = 1.25 + } + if = { + limit = { + has_game_rule = none_divergent_culture_ai_frequency + } + multiply = 0 + } +} + +# % values used in events +miniscule_positive_culture_acceptance = 2 +low_positive_culture_acceptance = 5 +medium_positive_culture_acceptance = 10 +major_positive_culture_acceptance = 25 +miniscule_negative_culture_acceptance = -2 +low_negative_culture_acceptance = -5 +medium_negative_culture_acceptance = -10 + +### CULTURAL ACCEPTANCE VALUES ### +miniscule_cultural_acceptance_value = 1 +minor_cultural_acceptance_value = 2.5 +medium_cultural_acceptance_value = 5 +major_cultural_acceptance_value = 10 +massive_cultural_acceptance_value = 15 + +miniscule_cultural_acceptance_gain = miniscule_cultural_acceptance_value +minor_cultural_acceptance_gain = minor_cultural_acceptance_value +medium_cultural_acceptance_gain = medium_cultural_acceptance_value +major_cultural_acceptance_gain = major_cultural_acceptance_value +massive_cultural_acceptance_gain = massive_cultural_acceptance_value + +miniscule_cultural_acceptance_loss = { + add = miniscule_cultural_acceptance_value + multiply = -1 +} +minor_cultural_acceptance_loss = { + add = minor_cultural_acceptance_value + multiply = -1 +} +medium_cultural_acceptance_loss ={ + add = medium_cultural_acceptance_value + multiply = -1 +} +major_cultural_acceptance_loss = { + add = major_cultural_acceptance_value + multiply = -1 +} +massive_cultural_acceptance_loss = { + add = massive_cultural_acceptance_value + multiply = -1 +} + +language_learning_divide_value = 5 + +current_extra_languages = { + value = num_of_known_languages + subtract = 1 +} + +language_soft_cap = { + value = 2 + if = { + limit = { + learning >= language_learning_divide_value + } + add = { + add = learning + divide = language_learning_divide_value + } + } + if = { + limit = { + has_perk = open_minded_perk + } + add = 2 + } + if = { + limit = { + has_perk = smooth_operator_perk + } + add = 1 + } + if = { + limit = { + has_perk = been_there_done_that_perk + } + add = 1 + } + if = { + limit = { + government_has_flag = government_is_nomadic + domicile ?= { has_domicile_parameter = nomad_yurt_language_cap } + } + add = 1 + } + if = { + limit = { + dynasty ?= { + has_dynasty_perk = ep1_culture_legacy_1 + } + } + add = 1 + } + if = { + limit = { + culture = { + has_cultural_parameter = extra_language_cap + } + } + add = 1 + } + if = { + limit = { + culture = { + has_cultural_parameter = extra_language_cap_2 + } + } + add = 1 + } +} + +language_soft_cap_modifier_value = { + value = num_of_known_languages + subtract = language_soft_cap +} + + +## Cultural Tradition values + +grant_independence_prestige_gain_value = { + value = 0 + add = { + every_sub_realm_county = { + add = { + value = 100 + } + } + } +} + +tribal_holding_fort_level_in_jungle_bonus_value = 1 +castle_holding_fort_level_in_jungle_bonus_value = 2 +camel_percentage_trigger_value_desc = 50 +camel_percentage_multiplier_value = { + value = camel_percentage_trigger_value_desc + divide = 100 +} +xenophilic_nr_of_cultures_value = 3 +xenophilic_acceptance_value = 30 +xenophilic_nr_of_cultures_cost_value = 4 +xenophilic_acceptance_cost_value = 40 + +# Remember to sync the below with its corresponding non-scripted value taking parameter. +## Can be found easily by searching for the value name, where it appears as a comment. +longbow_competitions_minimum_archer_maa_value = 1200 + +republican_vassal_interaction_limit = 4 + +family_business_court_poistion_aptitude_bonus = 20 + +court_position_aptitude_family_business_value = { + if = { + limit = { + liege.culture ?= { has_cultural_parameter = close_family_better_court_positions } + is_close_family_of = liege + } + add = { + value = 20 + desc = tradition_family_entrepreneurship_name + } + } +} + +family_business_councillors_percentage = 10 +legalistic_vassal_punishment_acceptance = 20 +maritime_mercantilism_coastal_holdings_value = 0.10 +maritime_mercantilism_coastal_holdings_value_tt = { + value = maritime_mercantilism_coastal_holdings_value + multiply = 100 +} + +# Score for a given court language +# Referenced by code! +# Only used by the AI +# Numbers get truncated; 10.3 and 10.4 is the same score +# root = ruler +# scope:target = ruler to copy language from +# scope:my_language_counties = counties in the AI's realm with a culture with their native language +# scope:their_language_counties = counties in the AI's realm with a culture with the target court language +# scope:total_counties = counties in the AI's realm +# scope:courts_with_language = how many royal courts use the same court language? Includes the target +# scope:checking_native_language = are we scoring our own language? +# See also the can_adopt_court_language scripted rule +court_language_ai_score = { + add = scope:their_language_counties + + # Bit of relative score for percentage too + add = { + value = scope:their_language_counties + multiply = 10 + divide = { + value = scope:total_counties + min = 1 + } + } + if = { + limit = { scope:checking_native_language = no } + subtract = scope:my_language_counties + min = 1 + } + + #Adjust for Court Grandeur. + #World religions primarily cares about other courts that share their faith. + add = { + value = 0 + if = { #Islamic rulers cares about islamic courts + limit = { + faith.religion = religion:islam_religion + scope:target.faith.religion = religion:islam_religion + } + add = { + value = scope:target.court_grandeur_current + if = { #Reduce further if not same faith + limit = { + faith != scope:target.faith + } + divide = 2 + } + } + } + else_if = { #Christian cares about other Christians - especially of the same faith + limit = { + faith.religion = religion:christianity_religion + scope:target.faith.religion = religion:christianity_religion + } + add = { + value = scope:target.court_grandeur_current + if = { #Reduce further if not same faith + limit = { + faith != scope:target.faith + } + divide = 3 + } + } + } + else_if = { #Eastern Faiths + limit = { + OR = { + faith.religion = religion:hinduism_religion + faith.religion = religion:buddhism_religion + faith.religion = religion:jainism_religion + } + OR = { + scope:target.faith.religion = religion:hinduism_religion + scope:target.faith.religion = religion:buddhism_religion + scope:target.faith.religion = religion:jainism_religion + } + } + add = { + value = scope:target.court_grandeur_current + if = { #Reduce further if not same Religion + limit = { + faith.religion != scope:target.faith.religion + } + divide = 2 + } + } + } + else_if = { #Abrahamic religion matching vs non co-religionist - CGV Ignored + limit = { + OR = { + faith.religion = religion:islam_religion + faith.religion = religion:christianity_religion + } + faith.religion != scope:target.faith.religion + } + #Add nothing + } + else_if = { #Eastern religion matching vs non Eastern religion - CGV Ignored + limit = { + OR = { + faith.religion = religion:hinduism_religion + faith.religion = religion:buddhism_religion + faith.religion = religion:jainism_religion + } + NOR = { + scope:target.faith.religion = religion:hinduism_religion + scope:target.faith.religion = religion:buddhism_religion + scope:target.faith.religion = religion:jainism_religion + } + } + #Add nothing + } + else = { #Everyone else just cares about the Grandeur directly + add = scope:target.court_grandeur_current + } + } + + + #Increase from number of other courts using the Language (1.5 per court). + add = { + value = scope:courts_with_language + multiply = 1.5 + } + + #Arbitrary Geographical Bias - if our courts are not in the same region the score is divided by 2. + divide = { + value = 1 + if = { + limit = { + OR = { + #Europe: + AND = { + capital_province = { geographical_region = world_europe_west_britannia } + NOT = { scope:target.capital_province = { geographical_region = world_europe_west_britannia } } + } + AND = { + capital_province = { geographical_region = world_europe_west_germania } + NOT = { scope:target.capital_province = { geographical_region = world_europe_west_germania } } + } + AND = { + capital_province = { geographical_region = world_europe_west_francia } + NOT = { scope:target.capital_province = { geographical_region = world_europe_west_francia } } + } + AND = { + capital_province = { geographical_region = world_europe_west_iberia } + NOT = { scope:target.capital_province = { geographical_region = world_europe_west_iberia } } + } + AND = { + capital_province = { geographical_region = world_europe_north } + NOT = { scope:target.capital_province = { geographical_region = world_europe_north } } + } + AND = { + capital_province = { geographical_region = world_europe_south_east } + NOT = { scope:target.capital_province = { geographical_region = world_europe_south_east } } + } + AND = { + capital_province = { geographical_region = world_europe_south_italy } + NOT = { scope:target.capital_province = { geographical_region = world_europe_south_italy } } + } + #South Asia: + AND = { + capital_province = { geographical_region = world_india_rajastan } + scope:target.capital_province = { geographical_region = world_india_rajastan } + } + AND = { + capital_province = { geographical_region = world_india_bengal } + NOT = { scope:target.capital_province = { geographical_region = world_india_bengal } } + } + AND = { + capital_province = { geographical_region = world_india_deccan } + NOT = { scope:target.capital_province = { geographical_region = world_india_deccan } } + } + AND = { + capital_province = { geographical_region = world_burma } + NOT = { scope:target.capital_province = { geographical_region = world_burma } } + } + AND = { + capital_province = { geographical_region = world_himalaya } + NOT = { scope:target.capital_province = { geographical_region = world_himalaya } } + } + AND = { + capital_province = { geographical_region = world_middle_east } + NOT = { scope:target.capital_province = { geographical_region = world_middle_east } } + } + AND = { + capital_province = { geographical_region = world_middle_east_persia } + NOT = { scope:target.capital_province = { geographical_region = world_middle_east_persia } } + } + #Africa + AND = { + capital_province = { geographical_region = world_africa_north } + NOT = { scope:target.capital_province = { geographical_region = world_africa_north } } + } + AND = { + capital_province = { geographical_region = world_africa_west } + NOT = { scope:target.capital_province = { geographical_region = world_africa_west } } + } + AND = { + capital_province = { geographical_region = world_africa_east } + NOT = { scope:target.capital_province = { geographical_region = world_africa_east } } + } + #Central Asia + AND = { + capital_province = { geographical_region = world_steppe_west } + NOT = { scope:target.capital_province = { geographical_region = world_steppe_west } } + } + AND = { + capital_province = { geographical_region = world_steppe_east } + NOT = { scope:target.capital_province = { geographical_region = world_steppe_east } } + } + AND = { + capital_province = { geographical_region = world_tibet } + NOT = { scope:target.capital_province = { geographical_region = world_tibet } } + } + AND = { + capital_province = { geographical_region = world_asia_china } + NOT = { scope:target.capital_province = { geographical_region = world_asia_china } } + } + AND = { + capital_province = { geographical_region = world_asia_japan } + NOT = { scope:target.capital_province = { geographical_region = world_asia_japan } } + } + AND = { + capital_province = { geographical_region = world_asia_korea } + NOT = { scope:target.capital_province = { geographical_region = world_asia_korea } } + } + AND = { + capital_province = { geographical_region = world_asia_southeast } + NOT = { scope:target.capital_province = { geographical_region = world_asia_southeast } } + } + } + } + add = 1 + } + } + + # Prefer the status quo slightly. Needs to be last + if = { + limit = { + scope:checking_native_language = yes + has_court_language_of_culture = culture + } + multiply = 1.5 + } + else_if = { + limit = { + scope:checking_native_language = no + scope:target = { has_royal_court = yes } + has_same_court_language = scope:target + } + multiply = 1.5 + } + min = 1 +} + +gold_per_culture_county_in_subrealm = { + value = 0 + add = { + scope:vassal_speaking_other_language = { + every_sub_realm_county = { + limit = { + culture = scope:vassal_speaking_other_language.culture + } + add = 50 + } + } + } +} + +## Culture Event Values + +culture_tradition_events_0101_tutor_surcharge_value = { value = major_gold_value } + +non_tribal_loot_value = { + value = root.var:raid_loot + multiply = not_tribal_raid_prestige_multiplier + multiply = -1 +} + +tradition_travel_discount = { + value = -1000 +} + +tradition_tournament_discount = { + value = -2000 +} + +traditionalist_discount = { + value = -1500 +} + +court_position_aptitude_eunuch_tradition_value = { + if = { + limit = { + liege.culture ?= { + OR = { + has_cultural_parameter = eunuch_trait_bonuses + has_cultural_parameter = court_machinations_eunuch_trait_bonuses + } + } + } + if = { + limit = { + has_trait = eunuch_1 + } + add = { + value = 30 + desc = court_position_eunuch_trait + } + } + else_if = { + limit = { + has_trait = beardless_eunuch + } + add = { + value = 30 + desc = court_position_beardless_eunuch_trait + } + } + } +} + +court_position_aptitude_boon_voyager_trait = { + if = { + limit = { + employer ?= { + is_landless_adventurer = no + has_perk = gracious_host_impeccable_guest_perk + } + } + add = { + value = { + value = 3 + multiply = employer.num_of_known_languages + } + desc = gracious_host_impeccable_guest_perk_bonus + } + } +} diff --git a/common/script_values/01_starting_values.txt b/common/script_values/01_starting_values.txt new file mode 100644 index 00000000..83ecf049 --- /dev/null +++ b/common/script_values/01_starting_values.txt @@ -0,0 +1,897 @@ +starting_gold = { + value = 0 + add = { + value = starting_gold_by_income + if = { + limit = { + has_treasury = yes + } + if = { + limit = { + is_independent_ruler = no + highest_held_title_tier < tier_empire # excluding Chinese ministers + } + divide = 4 + } + else_if = { + limit = { + is_independent_ruler = yes + NOT = { has_title = title:e_byzantium } + } + multiply = { + value = highest_held_title_tier + subtract = 1 + min = 1 + } + } + else_if = { # for Chinese ministers + limit = { + highest_held_title_tier = tier_empire + is_independent_ruler = no + is_landed = no + } + add = monumental_gold_value + } + } + min = 1 + } +} + +starting_treasury = { + value = 0 + if = { + limit = { + has_treasury = yes + } + if = { + limit = { + highest_held_title_tier = tier_county + } + add = { + value = major_treasury_value + } + } + else_if = { + limit = { + highest_held_title_tier = tier_duchy + } + add = { + value = massive_treasury_value + } + } + else_if = { + limit = { + highest_held_title_tier = tier_kingdom + } + add = { + value = massive_treasury_value + if = { + limit = { + game_start_date = 1066.9.15 + has_title = title:k_egypt + } + multiply = -1 + } + else = { + multiply = 2 + } + } + } + else_if = { + limit = { + highest_held_title_tier = tier_empire + } + add = { + value = monumental_treasury_value + if = { + limit = { + liege = title:h_china.holder # for ministerial expenses + } + multiply = 3 + } + else_if = { + limit = { + is_independent_ruler = yes + } + multiply = 2 + } + if = { + limit = { + game_start_date = 1066.9.15 + has_title = title:e_byzantium + } + max = 180 + } + else_if = { + limit = { + game_start_date = 867.1.1 + has_title = title:e_byzantium + } + max = 400 + } + else_if = { + limit = { + has_title = title:e_byzantium + } + max = 800 + } + } + } + else_if = { + limit = { + highest_held_title_tier = tier_hegemony + } + add = { + value = monumental_treasury_value + multiply = 4.5 + } + } + } +} + +starting_prestige = { + value = { + # Longer-lived characters start with some inherent prestige. + add = { + value = medium_prestige_value + multiply = { + value = 0 + + # Bonus for older characters (who have presumably accomplished more). + if = { + limit = { age > 60 } + add = 5 + } + else_if = { + limit = { age > 48 } + add = 4 + } + else_if = { + limit = { age > 36 } + add = 3 + } + else_if = { + limit = { age > 24 } + add = 2 + } + else_if = { + limit = { age > 12 } + add = 1 + } + + # Bonus/penalty for traits. + if = { + limit = { + OR = { + has_trait = arrogant + has_trait = ambitious + } + } + add = 1 + } + else_if = { + limit = { + OR = { + has_trait = humble + has_trait = content + } + } + add = -1 + } + + # Humble/content children shouldn't have a prestige penalty! + min = 0 + } + } + + # Rulers also gain bonus prestige based on their tier. + add = { + value = medium_prestige_value + multiply = highest_held_title_tier + } + } +} + +starting_piety = { + value = { + # All characters start with some about of piety based on how long they have lived a virtuous life. + add = { + value = medium_piety_value + multiply = { + add = num_virtuous_traits + subtract = num_sinful_traits + if = { + limit = { has_trait = zealous } + add = 1 + } + else_if = { + limit = { has_trait = cynical } + add = -1 + } + } + multiply = { + value = 0 + if = { + limit = { age > 60 } + add = 5 + } + else_if = { + limit = { age > 48 } + add = 4 + } + else_if = { + limit = { age > 36 } + add = 3 + } + else_if = { + limit = { age > 24 } + add = 2 + } + else_if = { + limit = { age > 12 } + add = 1 + } + } + } + + # Rulers also gain some Piety based on tier (but less than piety than prestige). + add = { + value = minor_piety_value + multiply = highest_held_title_tier + } + + # Nobody starts with negative piety, not even even sinful characters. + min = minor_piety_value + } +} + +starting_influence = { + value = { + # Longer-lived characters start with some inherent influence. + add = { + value = medium_influence_value + multiply = { + value = 0 + + # Bonus for older characters (who have presumably had time to establish themselves more). + if = { + limit = { age > 60 } + add = 5 + } + else_if = { + limit = { age > 48 } + add = 4 + } + else_if = { + limit = { age > 36 } + add = 3 + } + else_if = { + limit = { age > 24 } + add = 2 + } + else_if = { + limit = { age > 12 } + add = 1 + } + + # Bonus/penalty for traits. + if = { + limit = { + OR = { + has_trait = generous + has_trait = deceitful + } + } + add = 1 + } + else_if = { + limit = { + OR = { + has_trait = impatient + has_trait = trusting + } + } + add = -1 + } + + # Children who are impatient/trusting children shouldn't start with negative influence! + min = 0 + } + } + } +} + +# Starting merit will give merit levels as well. (as opposed to other starting values like starting_prestige) +starting_merit = { + value = 0 + # We are making an assumption that the Hegemon does not need Merit applied to them because they already have the Mandate of Heaven. + if = { + limit = { + government_allows = merit + is_faith_dominant_gender = yes + is_adult = yes + this != character:han_30000 # Not for tutorial character + } + # Rulers + if = { + limit = { + is_independent_ruler = no + is_ruler = yes + } + # Title checks + # First - We add a base amount based on tier + # Secondly - We add some more based on tier and age + # Finally - We add a third amount for some randomness and to ensure we have candidates with enough merit for the next tier + switch = { + trigger = primary_title.tier + tier_empire = { + add = empire_starting_merit_value + add = { + value = kingdom_starting_merit_value + multiply = { + value = age + divide = 75 + } + } + } + tier_kingdom = { + add = kingdom_starting_merit_value + add = { + value = kingdom_starting_merit_value + multiply = { + value = age + divide = 75 + } + } + if = { + limit = { + is_ai = yes + } + if = { + limit = { + static_group_filter = { + group = starting_merit_characters_1 + match = 0.2 + } + } + multiply = 2 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_2 + match = 0.2 + } + } + multiply = 1.5 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_3 + match = 0.2 + } + } + multiply = 1.25 + } + } + } + tier_duchy = { + add = duchy_starting_merit_value + add = { + value = duchy_starting_merit_value + multiply = { + value = age + divide = 50 + } + } + if = { + limit = { + is_ai = yes + } + if = { + limit = { + static_group_filter = { + group = starting_merit_characters_1 + match = 0.2 + } + } + multiply = 3 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_2 + match = 0.2 + } + } + multiply = 2 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_3 + match = 0.2 + } + } + multiply = 1.25 + } + } + } + tier_county = { + add = county_starting_merit_value + add = { + value = county_starting_merit_value + multiply = { + value = age + divide = 50 + } + } + if = { + limit = { + is_ai = yes + } + if = { + limit = { + static_group_filter = { + group = starting_merit_characters_1 + match = 0.2 + } + } + multiply = 3 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_2 + match = 0.2 + } + } + multiply = 2 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_3 + match = 0.25 + } + } + multiply = 1.5 + } + else_if = { + limit = { + static_group_filter = { + group = starting_merit_characters_4 + match = 0.25 + } + } + multiply = 1.25 + } + } + } + } + } + # Non-rulers + if = { + limit = { + is_courtier = yes + NOR = { + has_council_position = councillor_court_chaplain + has_trait = devoted + } + } + add = sum_of_all_skills_value + add = age + if = { + limit = { + age >= 30 + } + multiply = 2 + } + if = { + limit = { + has_trait = confucian_education + } + multiply = 2 + } + } + } +} + +# What cultural acceptance should two cultures start with? +# root = culture 1 +# scope:culture = culture 2 +starting_culture_acceptance = { + # Cultures start with the baseline as their default acceptance + value = culture_acceptance_baseline + + # Historical one-time increases to Cultural Acceptance (added on top of the baseline) + # Note: List the cultures in the same order as they appear in script in common\culture\cultures. + if = { + limit = { current_date >= 1060.1.1 } # Changes for the 1066 bookmark + if = { + limit = { # The Ghaznavids have ruled over Afghan land for a few generations - Let's help them keep it + this = culture:afghan + scope:culture = culture:turkish + } + add = 25 + } + if = { + limit = { # The Ghaznavids have ruled over Punjabi land for some time - We don't want them to revolt too quickly + this = culture:punjabi + scope:culture = culture:turkish + } + add = 20 + } + } +} + +# What cultural acceptance should two cultures drift down towards if above? +# root = culture 1 +# scope:culture = culture 2 +# this is calculated late in startup after history setup +culture_acceptance_baseline = { + value = 0 + if = { + limit = { # To stop errors in observe mode + exists = root + + # Set up some scopes we'll need + scope:culture ?= { + trigger_if = { + limit = { + culture_number_of_counties > 0 + } + calc_culture_dominant_religion = { save_temporary_scope_as = their_religion } + calc_culture_dominant_faith = { save_temporary_scope_as = their_faith } + } + } + trigger_if = { + limit = { + culture_number_of_counties > 0 + } + calc_culture_dominant_religion = { save_temporary_scope_as = our_religion } + calc_culture_dominant_faith = { save_temporary_scope_as = our_faith } + } + } + # Increase base acceptance for sharing the same heritage + if = { + limit = { + has_same_culture_heritage = scope:culture + } + add = { + value = 20 # please update CULTURE_PILLAR_TOOLTIP_HERITAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_HERITAGE + } + } + # Increase base acceptance for sharing same language + if = { + limit = { + has_same_culture_language = scope:culture + } + add = { + value = 10 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = anglic_group_language_param + scope:culture = { has_cultural_parameter = anglic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_ANGLIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = goidelic_group_language_param + scope:culture = { has_cultural_parameter = goidelic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_GOIDELIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = brythonic_group_language_param + scope:culture = { has_cultural_parameter = brythonic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_BRYTHONIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = french_group_language_param + scope:culture = { has_cultural_parameter = french_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_FRENCH + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = middle_german_group_language_param + scope:culture = { has_cultural_parameter = middle_german_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_GERMAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = east_hispanic_group_language_param + scope:culture = { has_cultural_parameter = east_hispanic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_EAST_HISPANIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = occitanic_group_language_param + scope:culture = { has_cultural_parameter = occitanic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_OCCITANIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = lausatian_group_language_param + scope:culture = { has_cultural_parameter = lausatian_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_LAUSATIAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = west_hispanic_group_language_param + scope:culture = { has_cultural_parameter = west_hispanic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_WEST_HISPANIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = basque_group_language_param + scope:culture = { has_cultural_parameter = basque_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_VASCONIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = middle_hispanic_group_language_param + scope:culture = { has_cultural_parameter = middle_hispanic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_HISPANIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = italo_dalmatian_group_language_param + scope:culture = { has_cultural_parameter = italo_dalmatian_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_ITALO_DALMATIAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = albanian_group_language_param + scope:culture = { has_cultural_parameter = albanian_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_ALBANIAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = low_german_group_language_param + scope:culture = { has_cultural_parameter = low_german_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_LOW_GERMAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = high_german_group_language_param + scope:culture = { has_cultural_parameter = high_german_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_HIGH_GERMAN + } + } + # Increase base acceptance for sharing the same ethos if cultures are present within the same geographical area + if = { + limit = { + has_same_culture_ethos = scope:culture + OR = { + cultures_share_relevant_region_trigger = yes + #In case cultures are bordering each other in two different regions + any_culture_county = { + any_neighboring_county = { + culture = scope:culture + } + } + } + } + add = { + value = 10 + desc = ACCEPTANCE_BASELINE_ETHOS + } + } + # General Faith acceptance modifiers + if = { # Same Religion + limit = { + exists = scope:their_religion + scope:our_religion ?= scope:their_religion + root = { + any_culture_county = { + percent >= 0.5 + religion = scope:our_religion + } + } + scope:culture = { + any_culture_county = { + percent >= 0.5 + religion = scope:our_religion + } + } + } + add = { + value = 5 + desc = ACCEPTANCE_BASELINE_RELIGION + } + } + if = { # Same exact Faith + limit = { + exists = scope:their_faith + scope:our_faith ?= scope:their_faith + root = { + any_culture_county = { + percent >= 0.5 + faith = scope:our_faith + } + } + scope:culture = { + any_culture_county = { + percent >= 0.5 + faith = scope:our_faith + } + } + } + add = { + value = 10 + desc = ACCEPTANCE_BASELINE_FAITH + } + } + if = { # Eastern faiths + limit = { + scope:our_religion ?= { + is_in_family = rf_eastern + } + scope:their_religion ?= { + is_in_family = rf_eastern + } + + any_culture_county = { + percent >= 0.5 + title_province = { + religion = { + is_in_family = rf_eastern + } + } + } + scope:culture = { + any_culture_county = { + percent >= 0.5 + title_province = { + religion = { + is_in_family = rf_eastern + } + } + } + } + } + add = { + value = 5 + desc = ACCEPTANCE_BASELINE_EASTERN_RELIGION + } + } + if = { # Pluralistic close faiths + limit = { + scope:our_faith ?= { + has_doctrine = doctrine_pluralism_pluralistic + } + scope:their_faith ?= { + has_doctrine = doctrine_pluralism_pluralistic + } + any_culture_county = { + percent >= 0.5 + title_province = { + faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + scope:culture = { + any_culture_county = { + percent >= 0.5 + title_province = { + faith = { + has_doctrine = doctrine_pluralism_pluralistic + } + } + } + } + OR = { + cultures_share_relevant_region_trigger = yes + #In case cultures are bordering each other in two different regions + any_culture_county = { + any_neighboring_county = { + culture = scope:culture + } + } + } + } + add = { + value = 10 + desc = ACCEPTANCE_BASELINE_CLOSE_PLURALISTS + } + } + } +} diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index 96fc7f59..153ce1bd 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -2,7 +2,7 @@ language_french_name:0 "French" language_sarphatique_name:0 "Sarphatique" language_english_name:0 "English" - language_brittannic_name:0 "Britannic" + language_brittannic_name:0 "South Britannic" language_scots_name:0 "Scots" language_anglo_irish_name:0 "Anglo-Irish" language_frisian_name:0 "Frisian" @@ -16,4 +16,133 @@ language_calo_name:0 "Caló" language_maltese_name:0 "Maltese" language_rhaetoromance_name:0 "Rhaetic" - language_sorbian_name:0 "Sorbian" \ No newline at end of file + language_sorbian_name:0 "Sorbian" + NEOW_language_irish_name:0 "Irish" + NEOW_language_manx_name:0 "Manx" + NEOW_language_scottish_name:0 "Scottish" + NEOW_language_north_brittannic_name:0 "North Britannic" + NEOW_language_cornish_name:0 "Cornish" + NEOW_language_welsh_name:0 "Welsh" + NEOW_language_south_french_name:0 "South French" + NEOW_language_north_french_name:0 "North French" + NEOW_language_east_french_name:0 "East French" + NEOW_language_breton_name:0 "Breton" + NEOW_language_catalan_name:0 "Catalan" + NEOW_language_occitan_name:0 "Occitan" + NEOW_language_aragonese_name:0 "Aragonese" + NEOW_language_asturleonese_name:0 "Asturleonese" + NEOW_language_balearic_name:0 "Balearic" + NEOW_language_basque_name:0 "Basque" + NEOW_language_castillian_name:0 "Castillian" + NEOW_language_valencian_name:0 "Valencian" + NEOW_language_portuguese_name:0 "Portuguese" + NEOW_language_canarian_name:0 "Canarian" + NEOW_language_andalusian_name:0 "Andalusian" + NEOW_language_llanito_name:0 "Llanitan" + NEOW_language_galician_name:0 "Galician" + NEOW_language_extremeno_name:0 "Extremaduran" + NEOW_language_weslander_name:0 "Weslandish" + NEOW_language_souflander_name:0 "Souflandish" + NEOW_language_norner_name:0 "Nornish" + NEOW_language_norflander_name:0 "Norflandish" + NEOW_language_easlander_name:0 "Easlandish" + NEOW_language_arbereshe_name:0 "Arbereshian" + NEOW_language_albanian_name:0 "Albanian" + NEOW_language_german_turk_name:0 "Turko-German" + NEOW_language_swabian_name:0 "Swabian" + NEOW_language_saxon_name:0 "Saxon" + NEOW_language_rottish_name:0 "Rhonish" + NEOW_language_rhinelandic_name:0 "Rhinelandic" + NEOW_language_palatine_name:0 "Palatine" + NEOW_language_pomeranian_name:0 "Pomeranian" + NEOW_language_westphalian_name:0 "Westphalian" + NEOW_language_ramsteiner_name:0 "Ramsteiner" + NEOW_language_hessian_name:0 "Hessian" + NEOW_language_franconian_name:0 "Franconian" + NEOW_language_margravian_name:0 "Margravian" + NEOW_language_bavarian_name:0 "Bavarian" + NEOW_language_alpine_bavarian_name:0 "Alpine Bavarian" + + ######################################### + # Grouping Stuff + ######################################### + ACCEPTANCE_BASELINE_LANGUAGE_ANGLIC:0 "[languages|E] are both of #V Anglic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_GOIDELIC:0 "[languages|E] are both of #V Goidelic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_BRYTHONIC:0 "[languages|E] are both of #V Brythonic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_FRENCH:0 "[languages|E] are both of #V French Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_GERMAN:0 "[languages|E] are both of #V Middle German Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_LAUSATIAN:0 "[languages|E] are both of #V Lusatian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_WEST_HISPANIC:0 "[languages|E] are both of #V West Hispanic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_VASCONIC:0 "[languages|E] are both of #V Vasconic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_HISPANIC:0 "[languages|E] are both of #V Middle Hispanic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_ITALO_DALMATIAN:0 "[languages|E] are both of #V Italo-Dalmatian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_ALBANIAN:0 "[languages|E] are both of #V Albanian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_LOW_GERMAN:0 "[languages|E] are both of #V Low German Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_HIGH_GERMAN:0 "[languages|E] are both of #V High German Origin#!" + culture_parameter_anglic_group_language_param: "This [language|E] is of #V Anglic Origin#!" + culture_parameter_goidelic_group_language_param: "This [language|E] is of #V Goidelic Origin#!" + culture_parameter_brythonic_group_language_param: "This [language|E] is of #V Brythonic Origin#!" + culture_parameter_french_group_language_param: "This [language|E] is of #V French Origin#!" + culture_parameter_middle_german_group_language_param: "This [language|E] is of #V Middle German Origin#!" + culture_parameter_east_hispanic_group_language_param: "This [language|E] is of #V East Hispanic Origin#!" + culture_parameter_lausatian_group_language_param: "This [language|E] is of #V Lusatian Origin#!" + culture_parameter_west_hispanic_group_language_param: "This [language|E] is of #V West Hispanic Origin#!" + culture_parameter_basque_group_language_param: "This [language|E] is of #V Basque Origin#!" + culture_parameter_middle_hispanic_group_language_param: "This [language|E] is of #V Middle Hispanic Origin#!" + culture_parameter_italo_dalmatian_group_language_param: "This [language|E] is of #V Italo-Dalmatian Origin#!" + culture_parameter_albanian_group_language_param: "This [language|E] is of #V Albanian Origin#!" + culture_parameter_low_german_group_language_param: "This [language|E] is of #V Low German Origin#!" + culture_parameter_high_german_group_language_param: "This [language|E] is of #V High German Origin#!" + + language_english_desc:0 "This [language|E] is of #V Anglic Origin#!" + language_brythonic_desc:0 "This [language|E] is of #V Brythonic Origin#!" + language_anglic_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Anglic Origin#!" + language_anglo_irish_desc:0 "This [language|E] is of #V Goidelic Origin#! \n This [language|E] is of #V Anglic Origin#!" + language_brittannic_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Brythonic Origin#!" + language_scots_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Goidelic Origin#!" + language_goidelic_desc:0 "This [language|E] is of #V Goidelic Origin#!" + NEOW_language_irish_desc:0 "This [language|E] is of #V Goidelic Origin#!" + NEOW_language_manx_desc:0 "This [language|E] is of #V Goidelic Origin#!" + NEOW_language_scottish_desc:0 "This [language|E] is of #V Goidelic Origin#!" + NEOW_language_north_brittannic_desc:0 "This [language|E] is of #V Goidelic Origin#! \n This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Brythonic Origin#!" + NEOW_language_cornish_desc:0 "This [language|E] is of #V Brythonic Origin#!" + NEOW_language_welsh_desc:0 "This [language|E] is of #V Brythonic Origin#!" + NEOW_language_south_french_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Occitanic Origin#!" + NEOW_language_north_french_desc:0 "This [language|E] is of #V French Origin#!" + NEOW_language_east_french_desc:0 "This [language|E] is of #V French Origin#!" + NEOW_language_breton_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Brythonic Origin#!" + NEOW_language_catalan_desc:0 "This [language|E] is of #V East Hispanic Origin#! \n This [language|E] is of #V Occitanic Origin#!" + NEOW_language_occitan_desc:0 "This [language|E] is of #V Occitanic Origin#! \n This [language|E] is of #V French Origin#!" + NEOW_language_aragonese_desc:0 "This [language|E] is of #V East Hispanic Origin#!" + NEOW_language_asturleonese_desc:0 "This [language|E] is of #V Lusatian Origin#! \n This [language|E] is of #V West Hispanic Origin#!" + NEOW_language_balearic_desc:0 "This [language|E] is of #V Occitanic Origin#!" + NEOW_language_basque_desc:0 "This [language|E] is of #V Vasconic Origin#! \n This [language|E] is of #V East Hispanic Origin#!" + NEOW_language_castillian_desc:0 "This [language|E] is of #V Middle Hispanic Origin#!" + NEOW_language_valencian_desc:0 "This [language|E] is of #V Occitanic Origin#! \n This [language|E] is of #V Middle Hispanic Origin#!" + NEOW_language_portuguese_desc:0 "This [language|E] is of #V Lusatian Origin#!" + NEOW_language_canarian_desc:0 "This [language|E] is of #V Middle Hispanic Origin#!" + NEOW_language_andalusian_desc:0 "This [language|E] is of #V Middle Hispanic Origin#!" + NEOW_language_llanito_desc:0 "This [language|E] is of #V Middle Hispanic Origin#! \n This [language|E] is of #V Anglic Origin#!" + NEOW_language_galician_desc:0 "This [language|E] is of #V Lusatian Origin#! \n This [language|E] is of #V West Hispanic Origin#!" + NEOW_language_extremeno_desc:0 "This [language|E] is of #V West Hispanic Origin#! \n This [language|E] is of #V Lusatian Origin#!" + NEOW_language_weslander_desc:0 "This [language|E] is of #V Anglic Origin#!" + NEOW_language_souflander_desc:0 "This [language|E] is of #V Anglic Origin#!" + NEOW_language_norner_desc:0 "This [language|E] is of #V Anglic Origin#!" + NEOW_language_norflander_desc:0 "This [language|E] is of #V Anglic Origin#!" + NEOW_language_easlander_desc:0 "This [language|E] is of #V Anglic Origin#!" + NEOW_language_arbereshe_desc:0 "This [language|E] is of #V Albanian Origin#! \n This [language|E] is of #V Italo-Dalmatian Origin#!" + NEOW_language_albanian_desc:0 "This [language|E] is of #V Albanian Origin#!" + NEOW_language_german_turk_desc:0 "This [language|E] is of #V Low German Origin#! \n This [language|E] is of #V Middle German Origin#!" + NEOW_language_swabian_desc:0 "This [language|E] is of #V High German Origin#!" + NEOW_language_saxon_desc:0 "This [language|E] is of #V Low German Origin#!" + NEOW_language_rottish_desc:0 "This [language|E] is of #V High German Origin#! \n This [language|E] is of #V French Origin#!" + NEOW_language_rhinelandic_desc:0 "This [language|E] is of #V High german Origin#! \n This [language|E] is of #V Middle German Origin#!" + NEOW_language_palatine_desc:0 "This [language|E] is of #V Middle German Origin#!" + NEOW_language_pomeranian_desc:0 "This [language|E] is of #V Low German Origin#!" + NEOW_language_westphalian_desc:0 "This [language|E] is of #V Low German Origin#!" + NEOW_language_ramsteiner_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Middle German Origin#!" + NEOW_language_hessian_desc:0 "This [language|E] is of #V Middle German Origin#!" + NEOW_language_franconian_desc:0 "This [language|E] is of #V Middle German Origin#!" + NEOW_language_margravian_desc:0 "This [language|E] is of #V Low German Origin#!" + NEOW_language_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" + NEOW_language_alpine_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" \ No newline at end of file From 31ecbe118d7265098d7997499ab6f0d5993aa08e Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 22 Mar 2026 04:16:25 +0000 Subject: [PATCH 40/52] more language rework --- common/culture/cultures/NEOW_berber.txt | 2 +- common/culture/cultures/NEOW_greek.txt | 2 +- common/culture/cultures/NEOW_israelite.txt | 6 +- common/culture/cultures/NEOW_italian.txt | 32 +- common/culture/cultures/NEOW_mosellic.txt | 8 +- common/culture/pillars/NEOW_language.txt | 369 ++++++++++++++++++ common/script_values/01_starting_values.txt | 96 +++++ .../zz_NEOW_cultural_languages_l_english.yml | 54 ++- 8 files changed, 543 insertions(+), 26 deletions(-) diff --git a/common/culture/cultures/NEOW_berber.txt b/common/culture/cultures/NEOW_berber.txt index 92ca4ac7..aef0ba21 100644 --- a/common/culture/cultures/NEOW_berber.txt +++ b/common/culture/cultures/NEOW_berber.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_berber - language = language_french + language = NEOW_language_north_french martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_greek.txt b/common/culture/cultures/NEOW_greek.txt index 756019e6..f3bbea9a 100644 --- a/common/culture/cultures/NEOW_greek.txt +++ b/common/culture/cultures/NEOW_greek.txt @@ -6,7 +6,7 @@ ethos = ethos_bureaucratic heritage = heritage_greek - language = language_greek + language = NEOW_language_griko martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_israelite.txt b/common/culture/cultures/NEOW_israelite.txt index 5d5bdfd5..ead9cf54 100644 --- a/common/culture/cultures/NEOW_israelite.txt +++ b/common/culture/cultures/NEOW_israelite.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_israelite - language = language_sarphatique + language = NEOW_language_sarphatique martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -42,7 +42,7 @@ ashkenazi = { ethos = ethos_communal heritage = heritage_israelite - language = language_high_german + language = NEOW_language_new_yiddish martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -76,7 +76,7 @@ sharoni = { ethos = ethos_communal heritage = heritage_israelite - language = language_hebrew + language = NEOW_language_new_hebrew martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_italian.txt b/common/culture/cultures/NEOW_italian.txt index e7df8a41..0809a73e 100644 --- a/common/culture/cultures/NEOW_italian.txt +++ b/common/culture/cultures/NEOW_italian.txt @@ -7,7 +7,7 @@ ethos = ethos_communal heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_ligurian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -40,7 +40,7 @@ corsican = { #Corsu ethos = ethos_communal heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_tusco_corsican martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -72,7 +72,7 @@ emilian = { #Emigliân ethos = ethos_communal heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_emilo_romagnol martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -106,7 +106,7 @@ laziale = { ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_median martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -140,7 +140,7 @@ neapolitan = { #Napulitano ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_neapolitan martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -174,7 +174,7 @@ NEOW_lombard = { #Lumbard ethos = ethos_stoic heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_lombard_piedmontese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -207,7 +207,7 @@ piedmontese = { ethos = ethos_courtly heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_lombard_piedmontese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -241,7 +241,7 @@ pugliese = { ethos = ethos_spiritual heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_neapolitan martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -275,7 +275,7 @@ romagnol = { #Rumagnòl ethos = ethos_spiritual heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_emilo_romagnol martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -307,7 +307,7 @@ sicilian = { #Sicilianu ethos = ethos_courtly heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_sicilian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -345,7 +345,7 @@ tuscan = { #Tuscano ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_tusco_corsican martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -379,7 +379,7 @@ venetian = { #Vèneto ethos = ethos_bureaucratic heritage = heritage_italian - language = language_italo_dalmatian + language = NEOW_language_venetian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -413,7 +413,7 @@ ligurian = { #Lìgure ethos = ethos_courtly heritage = heritage_italian - language = language_cisalpine + language = NEOW_language_ligurian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -447,7 +447,7 @@ friulian = { #Furlan ethos = ethos_stoic heritage = heritage_italian - language = language_rhaetoromance + language = NEOW_language_friulian martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -485,7 +485,7 @@ maltese = { #Maltin ethos = ethos_egalitarian heritage = heritage_italian - language = language_maltese + language = NEOW_language_maltese martial_custom = martial_custom_male_only head_determination = head_determination_domain @@ -520,7 +520,7 @@ ladin = { ethos = ethos_communal heritage = heritage_italian - language = language_rhaetoromance + language = NEOW_language_ladin martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_mosellic.txt b/common/culture/cultures/NEOW_mosellic.txt index 0837f753..b4e122b5 100644 --- a/common/culture/cultures/NEOW_mosellic.txt +++ b/common/culture/cultures/NEOW_mosellic.txt @@ -3,7 +3,7 @@ ethos = ethos_communal heritage = heritage_mosellic - language = language_mosellic + language = NEOW_language_north_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -43,7 +43,7 @@ elsasse = { ethos = ethos_stoic heritage = heritage_mosellic - language = language_high_german + language = NEOW_language_south_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -85,7 +85,7 @@ letzebuerge = { #Letzebüerge ethos = ethos_communal heritage = heritage_mosellic - language = language_mosellic + language = NEOW_language_north_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -124,7 +124,7 @@ lorin = { ethos = ethos_communal heritage = heritage_mosellic - language = language_mosellic + language = NEOW_language_south_mosellic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index bfc54818..df807d4b 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -214,6 +214,365 @@ NEOW_language_north_french = { color = { 204 54 40 } } +NEOW_language_griko = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_griko + } + } + parameters = { + greek_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_griko } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_sarphatique = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_sarphatique + } + } + parameters = { + hewbrew_group_language_param = yes + french_group_language_param = yes + anglic_group_language_param = yes + middle_hispanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_sarphatique } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_new_yiddish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_new_yiddish + } + } + parameters = { + hewbrew_group_language_param = yes + french_group_language_param = yes + anglic_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_new_yiddish } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_new_hebrew = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_new_hebrew + } + } + parameters = { + hewbrew_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_new_hebrew } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_ladin = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_ladin + } + } + parameters = { + italo_dalmatian_group_language_param = yes + rhaeto_romance_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_ladin } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_maltese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_maltese + } + } + parameters = { + anglic_group_language_param = yes + italo_dalmatian_group_language_param = yes + arabic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_maltese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_north_mosellic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_mosellic + } + } + parameters = { + french_group_language_param = yes + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_mosellic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_south_mosellic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_south_mosellic + } + } + parameters = { + french_group_language_param = yes + middle_german_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_south_mosellic } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_friulian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_friulian + } + } + parameters = { + rhaeto_romance_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_friulian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_ligurian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_ligurian + } + } + parameters = { + gallo_italian_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_ligurian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_venetian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_venetian + } + } + parameters = { + gallo_italian_group_language_param = yes + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_venetian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_tusco_corsican = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_tusco_corsican + } + } + parameters = { + italo_dalmatian_group_language_param = yes + sardic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_tusco_corsican } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_sicilian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_sicilian + } + } + parameters = { + italo_dalmatian_group_language_param = yes + arabic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_sicilian } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_emilo_romagnol = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_emilo_romagnol + } + } + parameters = { + italo_dalmatian_group_language_param = yes + gallo_italian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_emilo_romagnol } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_neapolitan = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_neapolitan + } + } + parameters = { + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_neapolitan } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_lombard_piedmontese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_lombard_piedmontese + } + } + parameters = { + gallo_italian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_lombard_piedmontese } + multiply = 10 + } + } + + color = { 204 54 40 } +} +NEOW_language_median = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_median + } + } + parameters = { + italo_dalmatian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_median } + multiply = 10 + } + } + + color = { 204 54 40 } +} NEOW_language_east_french = { type = language is_shown = { @@ -1122,6 +1481,10 @@ language_sardinian = { LANGUAGE = language_sardinian } } + + parameters = { + sardic_group_language_param = yes + } ai_will_do = { value = 10 if = { @@ -1245,6 +1608,12 @@ language_calo = { LANGUAGE = language_calo } } + + parameters = { + arabic_group_language_param = yes + middle_hispanic_group_language_param = yes + far_west_indo_aryan_group_language_param = yes + } ai_will_do = { value = 10 if = { diff --git a/common/script_values/01_starting_values.txt b/common/script_values/01_starting_values.txt index 83ecf049..ff0538c2 100644 --- a/common/script_values/01_starting_values.txt +++ b/common/script_values/01_starting_values.txt @@ -755,6 +755,102 @@ culture_acceptance_baseline = { desc = ACCEPTANCE_BASELINE_LANGUAGE_HIGH_GERMAN } } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = hewbrew_group_language_param + scope:culture = { has_cultural_parameter = hewbrew_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_HEBREW + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = gallo_italian_group_language_param + scope:culture = { has_cultural_parameter = gallo_italian_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_GALLO_ITALIAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = arabic_group_language_param + scope:culture = { has_cultural_parameter = arabic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_ARABIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = sardic_group_language_param + scope:culture = { has_cultural_parameter = sardic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_SARDIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = rhaeto_romance_group_language_param + scope:culture = { has_cultural_parameter = rhaeto_romance_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_RHAETO_ROMANCE + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = greek_group_language_param + scope:culture = { has_cultural_parameter = greek_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_GREEK + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = low_franconian_group_language_param + scope:culture = { has_cultural_parameter = low_franconian_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_LOW_FRANCONIAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = far_west_indo_aryan_group_language_param + scope:culture = { has_cultural_parameter = far_west_indo_aryan_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_FAR_WEST_INDO_ARYAN + } + } # Increase base acceptance for sharing the same ethos if cultures are present within the same geographical area if = { limit = { diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index 153ce1bd..36564fbd 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -62,6 +62,23 @@ NEOW_language_margravian_name:0 "Margravian" NEOW_language_bavarian_name:0 "Bavarian" NEOW_language_alpine_bavarian_name:0 "Alpine Bavarian" + NEOW_language_griko_name:0 "Griko" + NEOW_language_sarphatique_name:0 "Sarphatique" + NEOW_language_new_yiddish:0 "Neo-Yiddish" + NEOW_language_new_hebrew:0 "Neo-Hebrew" + NEOW_language_median:0 "Median" + NEOW_language_ladin:0 "Ladin" + NEOW_language_maltese:0 "Maltese" + NEOW_language_friulian:0 "Friulian" + NEOW_language_ligurian:0 "Ligurian" + NEOW_language_venetian:0 "Venetian" + NEOW_language_tusco_corsican:0 "Tusco-corsican" + NEOW_language_sicilian:0 "Sicilian" + NEOW_language_emilo_romagnol:0 "Emilo-Romagnol" + NEOW_language_neapolitan:0 "Neapolitan" + NEOW_language_lombard_piedmontese:0 "Lombard-piedmontese" + NEOW_language_north_mosellic:0 "North Mosellic" + NEOW_language_south_mosellic:0 "South Mosellic" ######################################### # Grouping Stuff @@ -79,6 +96,15 @@ ACCEPTANCE_BASELINE_LANGUAGE_ALBANIAN:0 "[languages|E] are both of #V Albanian Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_LOW_GERMAN:0 "[languages|E] are both of #V Low German Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_HIGH_GERMAN:0 "[languages|E] are both of #V High German Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_HEBREW:0 "[languages|E] are both of #V Hebrew Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_ARABIC:0 "[languages|E] are both of #V Arabic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_GALLO_ITALIAN:0 "[languages|E] are both of #V Gallo-Italian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_SARDIC:0 "[languages|E] are both of #V Sardic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_RHAETO_ROMANCE:0 "[languages|E] are both of #V Rhaeto-Romance Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_LOW_FRANCONIAN:0 "[languages|E] are both of #V Low Franconian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_FAR_WEST_INDO_ARYAN:0 "[languages|E] are both of #V Far West Indo Aryan Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_GREEK:0 "[languages|E] are both of #V Greek Origin#!" + culture_parameter_anglic_group_language_param: "This [language|E] is of #V Anglic Origin#!" culture_parameter_goidelic_group_language_param: "This [language|E] is of #V Goidelic Origin#!" culture_parameter_brythonic_group_language_param: "This [language|E] is of #V Brythonic Origin#!" @@ -93,6 +119,14 @@ culture_parameter_albanian_group_language_param: "This [language|E] is of #V Albanian Origin#!" culture_parameter_low_german_group_language_param: "This [language|E] is of #V Low German Origin#!" culture_parameter_high_german_group_language_param: "This [language|E] is of #V High German Origin#!" + culture_parameter_greek_group_language_param: "This [language|E] is of #V Greek Origin#!" + culture_parameter_hebrew_group_language_param: "This [language|E] is of #V Greek Origin#!" + culture_parameter_gallo_italian_group_language_param: "This [language|E] is of #V Gallo-Romance Origin#!" + culture_parameter_arabic_group_language_param: "This [language|E] is of #V Arabic Origin#!" + culture_parameter_sardic_group_language_param: "This [language|E] is of #V Sardic Origin#!" + culture_parameter_rhaeto_romance_group_language_param: "This [language|E] is of #V Rhaeto-Romance Origin#!" + culture_parameter_low_franconian_group_language_param: "This [language|E] is of #V Low Franconian Origin#!" + culture_parameter_far_west_indo_aryan_group_language_param: "This [language|E] is of #V Far West Indo-Aryan Origin#!" language_english_desc:0 "This [language|E] is of #V Anglic Origin#!" language_brythonic_desc:0 "This [language|E] is of #V Brythonic Origin#!" @@ -145,4 +179,22 @@ NEOW_language_franconian_desc:0 "This [language|E] is of #V Middle German Origin#!" NEOW_language_margravian_desc:0 "This [language|E] is of #V Low German Origin#!" NEOW_language_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" - NEOW_language_alpine_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" \ No newline at end of file + NEOW_language_alpine_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" + NEOW_language_griko_desc:0 "This [language|E] is of #V Greek Origin#! \n This [language|E] is of #V Italo-Dalmatian Origin#!" + NEOW_language_sarphatique_desc:0 "This [language|E] is of #V Hebrew Origin#! \n This [language|E] is of #V French Origin#! \n This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Middle Hispanic Origin#!" + NEOW_language_new_yiddish_desc:0 "This [language|E] is of #V Hebrew Origin#! \n This [language|E] is of #V French Origin#! \n This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V H Origin#!" + NEOW_language_new_hebrew_desc:0 "This [language|E] is of #V Hebrew Origin#!" + NEOW_language_median_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#!" + NEOW_language_ladin_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Rhaeto-Romance Origin#!" + NEOW_language_maltese_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Arabic Origin#!\n This [language|E] is of #V Anglic Origin#!" + NEOW_language_friulian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Rhaeto-Romance Origin#!" + NEOW_language_ligurian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" + NEOW_language_venetian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" + NEOW_language_tusco_corsican_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Sardic Origin#!" + NEOW_language_sicilian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Arabic Origin#!" + NEOW_language_emilo_romagnol_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" + NEOW_language_neapolitan_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#!" + NEOW_language_lombard_piedmontese_desc:0 "This [language|E] is of #V Gallo-Italian Origin#!" + NEOW_language_north_mosellic:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Low Franconian Origin#!" + NEOW_language_south_mosellic:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Middle German Origin#!\n This [language|E] is of #V High German Origin#!" + \ No newline at end of file From ba384c78da0e18f2c2a5cce06d433f347fc12f2a Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 22 Mar 2026 23:37:55 +0000 Subject: [PATCH 41/52] west european langauges done --- common/culture/cultures/NEOW_goidelic.txt | 2 +- .../culture/cultures/NEOW_north_germanic.txt | 38 +- .../culture/cultures/NEOW_rhaeto_helvetic.txt | 10 +- common/culture/cultures/NEOW_south_slavic.txt | 16 +- .../culture/cultures/NEOW_west_germanic.txt | 8 +- common/culture/cultures/NEOW_west_slavic.txt | 6 +- common/culture/pillars/NEOW_language.txt | 456 +++++++++++++++++- common/script_values/01_starting_values.txt | 60 +++ .../zz_NEOW_cultural_languages_l_english.yml | 58 ++- 9 files changed, 599 insertions(+), 55 deletions(-) diff --git a/common/culture/cultures/NEOW_goidelic.txt b/common/culture/cultures/NEOW_goidelic.txt index 3fe64b8f..67507a1f 100644 --- a/common/culture/cultures/NEOW_goidelic.txt +++ b/common/culture/cultures/NEOW_goidelic.txt @@ -3,7 +3,7 @@ ethos = ethos_egalitarian heritage = heritage_goidelic - language = language_anglo_irish + language = NEOW_language_irish martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_north_germanic.txt b/common/culture/cultures/NEOW_north_germanic.txt index 417e999f..ac6132e0 100644 --- a/common/culture/cultures/NEOW_north_germanic.txt +++ b/common/culture/cultures/NEOW_north_germanic.txt @@ -3,7 +3,7 @@ ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_east_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -36,7 +36,7 @@ dansk = { ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -71,7 +71,7 @@ doggerlander = { ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_english + language = NEOW_language_doggerlandish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -112,7 +112,7 @@ faerosk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_faroese martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -145,7 +145,7 @@ gotsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_communal heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -179,7 +179,7 @@ smalandsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_spiritual heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -212,7 +212,7 @@ gutnsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_gutnish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -246,7 +246,7 @@ icelander = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_icelandic martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -281,7 +281,7 @@ jaamtsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_jaamtlandic martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -318,7 +318,7 @@ ostsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_egalitarian heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -351,7 +351,7 @@ trondheimer = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -386,7 +386,7 @@ skansk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_communal heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -426,7 +426,7 @@ slesvigsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -459,7 +459,7 @@ svealandsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bureaucratic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -493,7 +493,7 @@ norrlandsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -526,7 +526,7 @@ vestsk = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_nordic + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -560,7 +560,7 @@ danish = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_norse + language = NEOW_language_danish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -650,7 +650,7 @@ norwegian = { house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_stoic heritage = heritage_north_germanic - language = language_norse + language = NEOW_language_norweigian martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { @@ -694,7 +694,7 @@ swedish = { #Used for cultural history purposes house_coa_mask_scale = { 0.95 0.95 } ethos = ethos_bellicose heritage = heritage_north_germanic - language = language_norse + language = NEOW_language_swedish martial_custom = martial_custom_equal head_determination = head_determination_domain traditions = { diff --git a/common/culture/cultures/NEOW_rhaeto_helvetic.txt b/common/culture/cultures/NEOW_rhaeto_helvetic.txt index 87df495f..d01a4ac3 100644 --- a/common/culture/cultures/NEOW_rhaeto_helvetic.txt +++ b/common/culture/cultures/NEOW_rhaeto_helvetic.txt @@ -6,7 +6,7 @@ ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_north_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -43,7 +43,7 @@ pelonais = { ethos = ethos_bureaucratic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_south_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -83,7 +83,7 @@ romansch = { ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_romansch martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -120,7 +120,7 @@ sassun = { ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_north_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -156,7 +156,7 @@ swiss = { #Svizzer ethos = ethos_stoic heritage = heritage_rhaeto_helvetic - language = language_rhaeto_helvetic + language = NEOW_language_south_helvetic martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_south_slavic.txt b/common/culture/cultures/NEOW_south_slavic.txt index 79ef1968..c05b47cd 100644 --- a/common/culture/cultures/NEOW_south_slavic.txt +++ b/common/culture/cultures/NEOW_south_slavic.txt @@ -6,7 +6,7 @@ ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_slovene #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -37,7 +37,7 @@ NEOW_serbian = { ethos = ethos_stoic heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -68,7 +68,7 @@ NEOW_bosnian = { ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -99,7 +99,7 @@ NEOW_slovene = { ethos = ethos_egalitarian heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_slovene #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -130,7 +130,7 @@ NEOW_croatian = { ethos = ethos_ceremonious heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -161,7 +161,7 @@ NEOW_montenegran = { ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -192,7 +192,7 @@ NEOW_bulgarian = { ethos = ethos_communal heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_east_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain @@ -223,7 +223,7 @@ moliski = { #Moliški ethos = ethos_spiritual heritage = heritage_south_slavic - language = language_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin + language = NEOW_language_west_south_slavic #More or less a west slavic group who ended up adopting south slavic languages after the Avars cut off the slavs in the Pannonian basin martial_custom = martial_custom_equal head_determination = head_determination_domain diff --git a/common/culture/cultures/NEOW_west_germanic.txt b/common/culture/cultures/NEOW_west_germanic.txt index eee77bc3..ffb04440 100644 --- a/common/culture/cultures/NEOW_west_germanic.txt +++ b/common/culture/cultures/NEOW_west_germanic.txt @@ -5,7 +5,7 @@ ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_dutch + language = NEOW_language_dutch martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 @@ -39,7 +39,7 @@ frisian = { #Represented the "old frisians" in vanilla, actually playable here # ethos = ethos_stoic heritage = heritage_west_germanic - language = language_frisian + language = NEOW_language_frisian martial_custom = martial_custom_male_only head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -73,7 +73,7 @@ kleverlandish = { ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_dutch + language = NEOW_language_dutch martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_19 @@ -108,7 +108,7 @@ limburgisch = { ethos = ethos_bureaucratic heritage = heritage_west_germanic - language = language_dutch + language = NEOW_language_limburgish martial_custom = martial_custom_equal head_determination = head_determination_domain house_coa_frame = house_frame_03 diff --git a/common/culture/cultures/NEOW_west_slavic.txt b/common/culture/cultures/NEOW_west_slavic.txt index 1cf6b7b4..dcdf51c7 100644 --- a/common/culture/cultures/NEOW_west_slavic.txt +++ b/common/culture/cultures/NEOW_west_slavic.txt @@ -3,7 +3,7 @@ ethos = ethos_bureaucratic heritage = heritage_west_slavic - language = language_lechitic + language = NEOW_language_polish martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -33,7 +33,7 @@ NEOW_moravian = { ethos = ethos_bureaucratic heritage = heritage_west_slavic - language = language_czech_slovak + language = NEOW_language_czech martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { @@ -63,7 +63,7 @@ sorbian = { ethos = ethos_bureaucratic heritage = heritage_west_slavic - language = language_sorbian + language = NEOW_language_sorbian martial_custom = martial_custom_male_only head_determination = head_determination_domain traditions = { diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index df807d4b..ee91a16c 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -69,7 +69,7 @@ NEOW_language_irish = { } } - color = { 204 54 40 } + color = { 64 105 65 } } NEOW_language_manx = { type = language @@ -89,7 +89,7 @@ NEOW_language_manx = { } } - color = { 204 54 40 } + color = { 60 125 55 } } NEOW_language_scottish = { type = language @@ -109,7 +109,7 @@ NEOW_language_scottish = { } } - color = { 204 54 40 } + color = { 68 160 226 } } NEOW_language_north_brittannic = { type = language @@ -131,7 +131,7 @@ NEOW_language_north_brittannic = { } } - color = { 204 54 40 } + color = { 102 15 65 } } NEOW_language_cornish = { type = language @@ -151,7 +151,7 @@ NEOW_language_cornish = { } } - color = { 204 54 40 } + color = { 127 38 114 } } NEOW_language_welsh = { type = language @@ -171,7 +171,7 @@ NEOW_language_welsh = { } } - color = { 204 54 40 } + color = { 94 34 114 } } NEOW_language_south_french = { type = language @@ -192,7 +192,7 @@ NEOW_language_south_french = { } } - color = { 204 54 40 } + color = { 22 68 153 } } NEOW_language_north_french = { type = language @@ -212,7 +212,7 @@ NEOW_language_north_french = { } } - color = { 204 54 40 } + color = { 13 13 137 } } NEOW_language_griko = { type = language @@ -233,8 +233,438 @@ NEOW_language_griko = { } } + color = {0.01 0.21 0.58} +} +NEOW_language_swedish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_swedish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_swedish } + multiply = 10 + } + } + + color = { 45 107 229 } +} +NEOW_language_norweigian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_norweigian + } + } + parameters = { + west_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_norweigian } + multiply = 10 + } + } + + color = { 30 112 153 } +} +NEOW_language_danish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_danish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_danish } + multiply = 10 + } + } + + color = { 86 153 216 } +} +NEOW_language_jaamtlandic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_jaamtlandic + } + } + parameters = { + west_north_germanic_group_language_param = yes + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_jaamtlandic } + multiply = 10 + } + } + + color = { 30 30 117 } +} +NEOW_language_icelandic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_icelandic + } + } + parameters = { + west_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_icelandic } + multiply = 10 + } + } + + color = { 25 42 127 } +} +NEOW_language_gutnish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_gutnish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_gutnish } + multiply = 10 + } + } + + color = { 26 89 178 } +} +NEOW_language_faroese = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_faroese + } + } + parameters = { + west_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_faroese } + multiply = 10 + } + } + + color = { 32 47 216 } +} +NEOW_language_doggerlandish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_doggerlandish + } + } + parameters = { + low_franconian_group_language_param = yes + anglic_group_language_param = yes + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_doggerlandish } + multiply = 10 + } + } + + color = { 45 168 229 } +} +NEOW_language_east_danish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_east_danish + } + } + parameters = { + east_north_germanic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_east_danish } + multiply = 10 + } + } + + color = { 86 162 216 } +} +NEOW_language_dutch = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_dutch + } + } + parameters = { + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_dutch } + multiply = 10 + } + } + + color = { 216 86 32 } +} +NEOW_language_frisian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_frisian + } + } + parameters = { + frisian_language_param = yes + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_frisian } + multiply = 10 + } + } + + color = { 226 141 56 } +} +NEOW_language_limburgish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_limburgish + } + } + parameters = { + low_franconian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_limburgish } + multiply = 10 + } + } + + color = { 214 126 74 } +} +NEOW_language_west_south_slavic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_west_south_slavic + } + } + parameters = { + south_slavic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_west_south_slavic } + multiply = 10 + } + } + + color = { 0.4 0.65 0.4 } +} +NEOW_language_east_south_slavic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_east_south_slavic + } + } + parameters = { + south_slavic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_east_south_slavic } + multiply = 10 + } + } + + color = { 0.4 0.65 0.4 } +} +NEOW_language_sorbian = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_sorbian + } + } + parameters = { + west_slavic_group_language_param = yes + low_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_sorbian } + multiply = 10 + } + } + + color = { 0.35 0.7 0.8 } +} +NEOW_language_czech = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_czech + } + } + parameters = { + west_slavic_group_language_param = yes + middle_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_czech } + multiply = 10 + } + } + + color = { 0.35 0.8 0.8 } +} +NEOW_language_polish = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_polish + } + } + parameters = { + west_slavic_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_polish } + multiply = 10 + } + } + color = { 204 54 40 } } +NEOW_language_slovene = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_slovene + } + } + parameters = { + south_slavic_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_slovene } + multiply = 10 + } + } + + color = { 0.5 0.1 0.08 } +} +NEOW_language_north_helvetic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_north_helvetic + } + } + parameters = { + rhaeto_romance_group_language_param = yes + high_german_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_north_helvetic } + multiply = 10 + } + } + + color = { 153 45 117 } +} +NEOW_language_south_helvetic = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_south_helvetic + } + } + parameters = { + rhaeto_romance_group_language_param = yes + french_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_south_helvetic } + multiply = 10 + } + } + + color = { 229 91 114 } +} +NEOW_language_romansch = { + type = language + is_shown = { + language_is_shown_trigger = { + LANGUAGE = NEOW_language_romansch + } + } + parameters = { + rhaeto_romance_group_language_param = yes + gallo_italian_group_language_param = yes + } + ai_will_do = { + value = 10 + if = { + limit = { has_cultural_pillar = NEOW_language_romansch } + multiply = 10 + } + } + + color = { 178 89 178 } +} NEOW_language_sarphatique = { type = language is_shown = { @@ -363,7 +793,7 @@ NEOW_language_north_mosellic = { } } - color = { 204 54 40 } + color = { 209 209 31 } } NEOW_language_south_mosellic = { type = language @@ -385,7 +815,7 @@ NEOW_language_south_mosellic = { } } - color = { 204 54 40 } + color = { 204 168 61 } } NEOW_language_friulian = { type = language @@ -1391,7 +1821,7 @@ language_brittannic = { } } - color = { 127 12 41 } + color = { 114 17 41 } } language_scots = { @@ -1413,7 +1843,7 @@ language_scots = { } } - color = { 22 136 229 } + color = { 45 81 153 } } language_anglo_irish = { @@ -1435,7 +1865,7 @@ language_anglo_irish = { } } - color = { 47 191 150 } + color = { 237 85 35 } } language_mosellic = { diff --git a/common/script_values/01_starting_values.txt b/common/script_values/01_starting_values.txt index ff0538c2..6f620924 100644 --- a/common/script_values/01_starting_values.txt +++ b/common/script_values/01_starting_values.txt @@ -828,6 +828,66 @@ culture_acceptance_baseline = { } } # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = east_north_germanic_group_language_param + scope:culture = { has_cultural_parameter = east_north_germanic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_EAST_NORTH_GERMANIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = west_north_germanic_group_language_param + scope:culture = { has_cultural_parameter = west_north_germanic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_WEST_NORTH_GERMANIC + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = frisian_language_param + scope:culture = { has_cultural_parameter = frisian_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_FRISIAN + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = south_slavic_group_language_param + scope:culture = { has_cultural_parameter = south_slavic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_SOUTH_SLAVIC_GROUP + } + } + # Increase base acceptance for sharing same language origin + if = { + limit = { + NOT = { has_same_culture_language = scope:culture } + has_cultural_parameter = west_slavic_group_language_param + scope:culture = { has_cultural_parameter = west_slavic_group_language_param } + } + add = { + value = 5 # please update CULTURE_PILLAR_TOOLTIP_LANGUAGE_EFFECT if this number changes + desc = ACCEPTANCE_BASELINE_LANGUAGE_WEST_SLAVIC_GROUP + } + } + # Increase base acceptance for sharing same language origin if = { limit = { NOT = { has_same_culture_language = scope:culture } diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index 36564fbd..4e253e71 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -79,6 +79,27 @@ NEOW_language_lombard_piedmontese:0 "Lombard-piedmontese" NEOW_language_north_mosellic:0 "North Mosellic" NEOW_language_south_mosellic:0 "South Mosellic" + NEOW_language_swedish:0 "Swedish" + NEOW_language_norweigian:0 "Norweigian" + NEOW_language_danish:0 "Danish" + NEOW_language_jaamtlandic:0 "Jaamtlandic" + NEOW_language_icelandic:0 "Icelandic" + NEOW_language_gutnish:0 "Gutnish" + NEOW_language_faroese:0 "Faroese" + NEOW_language_doggerlandish:0 "Doggerlandish" + NEOW_language_east_danish:0 "East Danish" + NEOW_language_dutch:0 "Dutch" + NEOW_language_frisian:0 "Frisian" + NEOW_language_limburgish:0 "Limburgish" + NEOW_language_west_south_slavic:0 "Middle South Slavic" + NEOW_language_east_south_slavic:0 "East South Slavic" + NEOW_language_sorbian:0 "Sorbian" + NEOW_language_czech:0 "Czech" + NEOW_language_polish:0 "Polish" + NEOW_language_slovene:0 "West South Slavic" + NEOW_language_north_helvetic:0 "North Helvetic" + NEOW_language_south_helvetic:0 "South Helvetic" + NEOW_language_romansch:0 "Romansch" ######################################### # Grouping Stuff @@ -104,6 +125,11 @@ ACCEPTANCE_BASELINE_LANGUAGE_LOW_FRANCONIAN:0 "[languages|E] are both of #V Low Franconian Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_FAR_WEST_INDO_ARYAN:0 "[languages|E] are both of #V Far West Indo Aryan Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_GREEK:0 "[languages|E] are both of #V Greek Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_EAST_NORTH_GERMANIC:0 "[languages|E] are both of #V East North Germanic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_WEST_NORTH_GERMANIC:0 "[languages|E] are both of #V West North Germanic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_FRISIAN:0 "[languages|E] are both of #V Frisian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_SOUTH_SLAVIC_GROUP:0 "[languages|E] are both of #V South Slavic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_WEST_SLAVIC_GROUP:0 "[languages|E] are both of #V West Slavic Origin#!" culture_parameter_anglic_group_language_param: "This [language|E] is of #V Anglic Origin#!" culture_parameter_goidelic_group_language_param: "This [language|E] is of #V Goidelic Origin#!" @@ -127,6 +153,11 @@ culture_parameter_rhaeto_romance_group_language_param: "This [language|E] is of #V Rhaeto-Romance Origin#!" culture_parameter_low_franconian_group_language_param: "This [language|E] is of #V Low Franconian Origin#!" culture_parameter_far_west_indo_aryan_group_language_param: "This [language|E] is of #V Far West Indo-Aryan Origin#!" + culture_parameter_south_slavic_group_language_param: "This [language|E] is of #V South Slavic Origin#!" + culture_parameter_west_slavic_group_language_param: "This [language|E] is of #V West Slavic Origin#!" + culture_parameter_east_north_germanic_group_language_param: "This [language|E] is of #V East North Germanic Origin#!" + culture_parameter_west_north_germanic_group_language_param: "This [language|E] is of #V West North Germanic Origin#!" + culture_parameter_frisian_language_param: "This [language|E] is of #V Frisian Origin#!" language_english_desc:0 "This [language|E] is of #V Anglic Origin#!" language_brythonic_desc:0 "This [language|E] is of #V Brythonic Origin#!" @@ -195,6 +226,29 @@ NEOW_language_emilo_romagnol_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" NEOW_language_neapolitan_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#!" NEOW_language_lombard_piedmontese_desc:0 "This [language|E] is of #V Gallo-Italian Origin#!" - NEOW_language_north_mosellic:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Low Franconian Origin#!" - NEOW_language_south_mosellic:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Middle German Origin#!\n This [language|E] is of #V High German Origin#!" + NEOW_language_north_mosellic_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Low Franconian Origin#!" + NEOW_language_south_mosellic_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Middle German Origin#!\n This [language|E] is of #V High German Origin#!" + NEOW_language_swedish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" + NEOW_language_norweigian_desc:0 "This [language|E] is of #V West North Germanic Origin#!" + NEOW_language_danish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" + NEOW_language_jaamtlandic_desc:0 "This [language|E] is of #V West North Germanic Origin#! \n This [language|E] is of #V East North Germanic Origin#!" + NEOW_language_icelandic_desc:0 "This [language|E] is of #V West North Germanic Origin#!" + NEOW_language_gutnish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" + NEOW_language_faroese_desc:0 "This [language|E] is of #V West North Germanic Origin#!" + NEOW_language_doggerlandish_desc:0 "This [language|E] is of #V East North Germanic Origin#! \n This [language|E] is of #V Anglic Origin#!\n This [language|E] is of #V Low Franconian Origin#!" + NEOW_language_east_danish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" + NEOW_language_dutch_desc:0 "This [language|E] is of #V Low Franconian Origin#!" + NEOW_language_frisian_desc:0 "This [language|E] is of #V Frisian Origin#! \n This [language|E] is of #V Low Franconian Origin#!" + NEOW_language_limburgish_desc:0 "This [language|E] is of #V Low Franconian Origin#!" + NEOW_language_west_south_slavic_desc:0 "This [language|E] is of #V South Slavic Origin#!" + NEOW_language_east_south_slavic_desc:0 "This [language|E] is of #V South Slavic Origin#!" + NEOW_language_sorbian_desc:0 "This [language|E] is of #V West Slavic Origin#! \n This [language|E] is of #V Low German Origin#!" + NEOW_language_czech_desc:0 "This [language|E] is of #V West Slavic Origin#! \n This [language|E] is of #V Middle German Origin#!" + NEOW_language_polish_desc:0 "This [language|E] is of #V West Slavic Origin#!" + NEOW_language_slovene_desc:0 "This [language|E] is of #V South Slavic Origin#! \n This [language|E] is of #V High German Origin#!" + NEOW_language_north_helvetic:0 "This [language|E] is of #V Rhaeto-Romance Origin#! \n This [language|E] is of #V High German Origin#!" + NEOW_language_south_helvetic:0 "This [language|E] is of #V Rhaeto-Romance Origin#! \n This [language|E] is of #V French Origin#!" + NEOW_language_romansch:0 "This [language|E] is of #V Rhaeto-Romance Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" + + \ No newline at end of file From 8c329c5eb8b0445404f85c7dbe6e0875b1d5ac68 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 22 Mar 2026 23:41:45 +0000 Subject: [PATCH 42/52] icons --- gfx/interface/icons/faith/vaesenite_reformed.dds | 3 +++ gfx/interface/icons/faith/volksmarchen_reformed.dds | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 gfx/interface/icons/faith/vaesenite_reformed.dds create mode 100644 gfx/interface/icons/faith/volksmarchen_reformed.dds diff --git a/gfx/interface/icons/faith/vaesenite_reformed.dds b/gfx/interface/icons/faith/vaesenite_reformed.dds new file mode 100644 index 00000000..407b1d7a --- /dev/null +++ b/gfx/interface/icons/faith/vaesenite_reformed.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aabad5bf2942c7f60693d71141213b2a3faaf57e2d36611f91d8071c9ee6e31 +size 40128 diff --git a/gfx/interface/icons/faith/volksmarchen_reformed.dds b/gfx/interface/icons/faith/volksmarchen_reformed.dds new file mode 100644 index 00000000..24d64654 --- /dev/null +++ b/gfx/interface/icons/faith/volksmarchen_reformed.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e553862996cb1e56d7198d2bb9ac4628e47d589cf51bf454ab8f26c520424bd +size 40128 From f82451a7df065ecc5830e31516ee86ca176ac19f Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 22 Mar 2026 23:44:45 +0000 Subject: [PATCH 43/52] Update NEOW_folkgerman.txt --- common/religion/religions/NEOW_folkgerman.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/religion/religions/NEOW_folkgerman.txt b/common/religion/religions/NEOW_folkgerman.txt index 99b678f1..04d08db1 100644 --- a/common/religion/religions/NEOW_folkgerman.txt +++ b/common/religion/religions/NEOW_folkgerman.txt @@ -242,6 +242,7 @@ volksmarchen = { color = { 31 107 173 } icon = volksmarchen + reformed_icon = volksmarchen_reformed holy_site = teutoburger holy_site = paderborn @@ -401,6 +402,7 @@ vaesenite = { color = { 45 153 229 } icon = vaesenite + reformed_icon = vaesenite_reformed holy_site = uppsala holy_site = ranaheim @@ -418,6 +420,7 @@ folketro = { color = { 168 120 0 } icon = folketro + reformed_icon = folketro_reformed holy_site = uppsala holy_site = ranaheim @@ -438,6 +441,7 @@ midnighter = { color = { 39 20 102 } icon = midnighter + reformed_icon = midnighter_reformed holy_site = ranaheim holy_site = jorvik From 75219c794f23d88129a1f06024d35988d6f2742a Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Sun, 22 Mar 2026 23:48:47 +0000 Subject: [PATCH 44/52] icons and such --- common/religion/religions/NEOW_folkgerman.txt | 2 ++ gfx/interface/icons/faith/folketro_reformed.dds | 3 +++ gfx/interface/icons/faith/midnighter_reformed.dds | 3 +++ gfx/interface/icons/faith/viking_reformed.dds | 3 +++ 4 files changed, 11 insertions(+) create mode 100644 gfx/interface/icons/faith/folketro_reformed.dds create mode 100644 gfx/interface/icons/faith/midnighter_reformed.dds create mode 100644 gfx/interface/icons/faith/viking_reformed.dds diff --git a/common/religion/religions/NEOW_folkgerman.txt b/common/religion/religions/NEOW_folkgerman.txt index 04d08db1..c407a0dd 100644 --- a/common/religion/religions/NEOW_folkgerman.txt +++ b/common/religion/religions/NEOW_folkgerman.txt @@ -462,6 +462,7 @@ viking = { color = { 10 23 51 } icon = viking + reformed_icon = viking_reformed # religious_head = k_papal_state @@ -478,6 +479,7 @@ #Special Doctrine doctrine = special_doctrine_heathen_revanchism doctrine = doctrine_pluralism_righteous + doctrine = unreformed_faith_doctrine #Tenets | placeholder doctrine = tenet_terror_of_the_seas diff --git a/gfx/interface/icons/faith/folketro_reformed.dds b/gfx/interface/icons/faith/folketro_reformed.dds new file mode 100644 index 00000000..a21545c0 --- /dev/null +++ b/gfx/interface/icons/faith/folketro_reformed.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c37027cda4af1a9e72a398d91cf52e000d580e98ed10404c0f6e8d7c58311f7b +size 40128 diff --git a/gfx/interface/icons/faith/midnighter_reformed.dds b/gfx/interface/icons/faith/midnighter_reformed.dds new file mode 100644 index 00000000..14272b61 --- /dev/null +++ b/gfx/interface/icons/faith/midnighter_reformed.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d45c61b894757449fdbff1e5f414dc69ac5ae1eae46b64a8d9d8783517b1f65d +size 40128 diff --git a/gfx/interface/icons/faith/viking_reformed.dds b/gfx/interface/icons/faith/viking_reformed.dds new file mode 100644 index 00000000..f932b680 --- /dev/null +++ b/gfx/interface/icons/faith/viking_reformed.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a25b1fcdfc9d79aa679844de8b384dadf287b1ecfd76e4fd2f6e90dc63ffdb1 +size 40128 From 625f2fd2252a0bcc470f305080700f44ecdd7698 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 23 Mar 2026 17:59:21 +0000 Subject: [PATCH 45/52] fixes to --- common/domiciles/types/NEOW_domicile_types.txt | 1 - common/laws/01_title_succession_laws.txt | 9 +-------- common/on_action/game_start.txt | 2 +- common/on_action/title_on_actions.txt | 18 ++++++++++-------- common/on_action/yearly_on_actions.txt | 14 +++++++------- ...NEOW_cultural_maa_innovations_l_english.yml | 12 ++++++++++++ 6 files changed, 31 insertions(+), 25 deletions(-) diff --git a/common/domiciles/types/NEOW_domicile_types.txt b/common/domiciles/types/NEOW_domicile_types.txt index 7e9594e3..4f1a9cdb 100644 --- a/common/domiciles/types/NEOW_domicile_types.txt +++ b/common/domiciles/types/NEOW_domicile_types.txt @@ -8,7 +8,6 @@ palace = { map_pin_texture = "gfx/interface/icons/map_icons/map_icon_urban.dds" map_pin_anchor = up map_pin_lobby = yes - culture_and_faith = yes move_with_realm_capital = yes can_move_manually = no diff --git a/common/laws/01_title_succession_laws.txt b/common/laws/01_title_succession_laws.txt index 4a294c1d..c7e2c02c 100644 --- a/common/laws/01_title_succession_laws.txt +++ b/common/laws/01_title_succession_laws.txt @@ -275,14 +275,7 @@ can_title_have = { OR = { is_noble_family_title = yes - AND = { - is_nomad_title = yes - government_has_flag = government_is_prepublic - } - AND = { - is_nomad_title = yes - government_has_flag = government_is_urepublic - } + is_nomad_title = yes } } should_show_for_title = { # Never show this in the UI, just apply it through script diff --git a/common/on_action/game_start.txt b/common/on_action/game_start.txt index 7f63de6c..cadb4cd6 100644 --- a/common/on_action/game_start.txt +++ b/common/on_action/game_start.txt @@ -3069,7 +3069,7 @@ on_game_start_after_lobby = { save_scope_as = holder if = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } NOT = { any_held_title = { is_nomad_title = yes diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index 1972c741..49d3220d 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -315,7 +315,7 @@ on_title_gain = { ########### if = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } scope:title = { is_nomad_title = yes exists = title_domicile @@ -325,6 +325,7 @@ on_title_gain = { if = { limit = { root = { + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes exists = title_domicile @@ -335,6 +336,7 @@ on_title_gain = { if = { limit = { root = { + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } any_held_title = { is_nomad_title = yes exists = title_domicile @@ -370,7 +372,7 @@ on_title_gain = { } else_if = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } exists = var:player_domicile_title } root = { @@ -386,7 +388,7 @@ on_title_gain = { title_domicile = { if = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } exists = root.dynasty scope:previous_holder.dynasty ?= root.dynasty } @@ -413,7 +415,7 @@ on_title_gain = { root = { random_held_title = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } is_nomad_title = yes exists = title_domicile NOT = { this = scope:title } @@ -439,7 +441,7 @@ on_title_gain = { random_held_title = { limit = { root = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } is_nomad_title = yes exists = title_domicile @@ -451,7 +453,7 @@ on_title_gain = { title_domicile = { if = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } exists = root.dynasty scope:previous_holder.dynasty ?= root.dynasty } @@ -468,7 +470,7 @@ on_title_gain = { if = { limit = { exists = global_var:game_has_started - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } NOT = { exists = previous_holder } @@ -476,7 +478,7 @@ on_title_gain = { if = { limit = { root = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } OR = { house.house_head ?= { this != root diff --git a/common/on_action/yearly_on_actions.txt b/common/on_action/yearly_on_actions.txt index 0ec2cce7..3544dff8 100644 --- a/common/on_action/yearly_on_actions.txt +++ b/common/on_action/yearly_on_actions.txt @@ -2085,7 +2085,7 @@ yearly_playable_pulse = { government_has_flag = government_is_nomadic is_landed = no liege = { is_ai = yes } - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } every_held_title = { limit = { @@ -2124,13 +2124,13 @@ yearly_playable_pulse = { any_held_title = { is_nomad_title = yes } - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } save_scope_as = scoped_ruler if = { limit = { is_ai = yes - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } every_held_title = { limit = { @@ -2145,7 +2145,7 @@ yearly_playable_pulse = { else_if = { limit = { is_ai = no - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } change_government = nomad_government } @@ -2170,7 +2170,7 @@ yearly_playable_pulse = { any_held_title = { is_nomad_title = yes } - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } every_held_title = { limit = { @@ -2383,7 +2383,7 @@ three_year_playable_pulse = { any_held_title = { is_nomad_title = yes } - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } } every_held_title = { limit = { @@ -2467,7 +2467,7 @@ three_year_playable_pulse = { if = { limit = { - NOT = { government_has_flag = government_allows_nomad_domicile_titles } + NOR = { liege = { government_has_flag = government_allows_nomad_domicile_titles } government_has_flag = government_allows_nomad_domicile_titles } NOT = { any_held_title = { is_nomad_title = yes diff --git a/localization/english/replace/culture/zz_NEOW_cultural_maa_innovations_l_english.yml b/localization/english/replace/culture/zz_NEOW_cultural_maa_innovations_l_english.yml index e987efad..2e9b384f 100644 --- a/localization/english/replace/culture/zz_NEOW_cultural_maa_innovations_l_english.yml +++ b/localization/english/replace/culture/zz_NEOW_cultural_maa_innovations_l_english.yml @@ -204,6 +204,12 @@ building_type_air_dock_04_desc: "Airships call for dedicated production, storage and maintenance to remain functional. In order to recruit [GetMaA('airships').GetName] and other units that require this potent force, specialized buildings must be raised." building_air_dock_01: "Airship Complex" building_air_dock_01_desc: "A Complex at which airships can land, be maintained and manufactured." + building_air_dock_02: "Airship Complex" + building_air_dock_02_desc: "A Complex at which airships can land, be maintained and manufactured." + building_air_dock_03: "Airship Complex" + building_air_dock_03_desc: "A Complex at which airships can land, be maintained and manufactured." + building_air_dock_04: "Airship Complex" + building_air_dock_04_desc: "A Complex at which airships can land, be maintained and manufactured." air_dock_1_effect_desc: "$unlocks_building_desc$[airship|E] [men_at_arms|E] Recruitment Limit: #P +[EmptyScope.ScriptValue('airships_building_limit_bonus_1')|0]#!" air_dock_2_effect_desc: "$unlocks_building_desc$[airship|E] [men_at_arms|E] Recruitment Limit: #P +[EmptyScope.ScriptValue('airships_building_limit_bonus_2')|0]#!" air_dock_3_effect_desc: "$unlocks_building_desc$[airship|E] [men_at_arms|E] Recruitment Limit: #P +[EmptyScope.ScriptValue('airships_building_limit_bonus_3')|0]#!" @@ -222,6 +228,12 @@ building_type_chemistry_workshop_04_desc: "Chemical Weapons call for dedicated production, storage and maintenance to remain functional. In order to recruit [GetMaA('toxic_gas_slingers').GetName] and other units that require this noxious force, specialized buildings must be raised." building_chemistry_workshop_01: "Chemical Workshop" building_chemistry_workshop_01_desc: "A Workshop at which Chemical Weapons can be stored, maintained and manufactured." + building_chemistry_workshop_02: "Chemical Workshop" + building_chemistry_workshop_02_desc: "A Workshop at which Chemical Weapons can be stored, maintained and manufactured." + building_chemistry_workshop_03: "Chemical Workshop" + building_chemistry_workshop_03_desc: "A Workshop at which Chemical Weapons can be stored, maintained and manufactured." + building_chemistry_workshop_04: "Chemical Workshop" + building_chemistry_workshop_04_desc: "A Workshop at which Chemical Weapons can be stored, maintained and manufactured." chemistry_workshop_1_effect_desc: "$unlocks_building_desc$[chemical_weapons|E] [men_at_arms|E] Recruitment Limit: #P +[EmptyScope.ScriptValue('toxic_gas_slingers_building_limit_bonus_1')|0]#!" chemistry_workshop_2_effect_desc: "$unlocks_building_desc$[chemical_weapons|E] [men_at_arms|E] Recruitment Limit: #P +[EmptyScope.ScriptValue('toxic_gas_slingers_building_limit_bonus_2')|0]#!" chemistry_workshop_3_effect_desc: "$unlocks_building_desc$[chemical_weapons|E] [men_at_arms|E] Recruitment Limit: #P +[EmptyScope.ScriptValue('toxic_gas_slingers_building_limit_bonus_3')|0]#!" From b4562f3df5d8711f64b514ffc772cc4f7504adbe Mon Sep 17 00:00:00 2001 From: trashb0at Date: Mon, 23 Mar 2026 12:52:28 -0400 Subject: [PATCH 46/52] north of ireland culture + religion tweaks --- history/characters/NEOW_e_britannia.txt | 8 ++++---- history/provinces/e_britannia.txt | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/history/characters/NEOW_e_britannia.txt b/history/characters/NEOW_e_britannia.txt index 6a77e6d6..bdf9734a 100644 --- a/history/characters/NEOW_e_britannia.txt +++ b/history/characters/NEOW_e_britannia.txt @@ -1402,8 +1402,8 @@ britannia_parnel_charles = { britannia_russel_john = { name = "John" dynasty = dynn_britannia_russel - religion = "presbyterian" - culture = scottish + religion = "anglican_england" + culture = norner trait = education_intrigue_3 trait = wrathful trait = arrogant @@ -1419,8 +1419,8 @@ britannia_russel_john = { britannia_trimble_david = { name = "David" dynasty = dynn_britannia_trimble - religion = "anglican_england" - culture = norner + religion = "celtic" + culture = irish trait = education_diplomacy_3 trait = stubborn trait = honest diff --git a/history/provinces/e_britannia.txt b/history/provinces/e_britannia.txt index a9fab94e..218bd85c 100644 --- a/history/provinces/e_britannia.txt +++ b/history/provinces/e_britannia.txt @@ -1465,8 +1465,8 @@ ##d_ulster ###c_antrim 14 = { - culture = scottish - religion = presbyterian + culture = norner + religion = anglican_england holding = castle_holding special_building = belfast_cathedral_01 } @@ -1499,8 +1499,8 @@ } ###c_derry 12 = { - culture = norner - religion = anglican_england + culture = irish + religion = celtic holding = castle_holding } 9672 = { @@ -1512,7 +1512,7 @@ } ###c_tyrone 9669 = { - culture = norner + culture = irish religion = celtic holding = city_holding } @@ -1524,7 +1524,7 @@ } ###c_fermanagh 25 = { - culture = norner + culture = irish religion = celtic holding = city_holding } From 6bf06107b4caf72e8264d4d9046e52745d70ab8e Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 23 Mar 2026 18:03:27 +0000 Subject: [PATCH 47/52] Revert "north of ireland culture + religion tweaks" This reverts commit b4562f3df5d8711f64b514ffc772cc4f7504adbe. --- history/characters/NEOW_e_britannia.txt | 8 ++++---- history/provinces/e_britannia.txt | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/history/characters/NEOW_e_britannia.txt b/history/characters/NEOW_e_britannia.txt index bdf9734a..6a77e6d6 100644 --- a/history/characters/NEOW_e_britannia.txt +++ b/history/characters/NEOW_e_britannia.txt @@ -1402,8 +1402,8 @@ britannia_parnel_charles = { britannia_russel_john = { name = "John" dynasty = dynn_britannia_russel - religion = "anglican_england" - culture = norner + religion = "presbyterian" + culture = scottish trait = education_intrigue_3 trait = wrathful trait = arrogant @@ -1419,8 +1419,8 @@ britannia_russel_john = { britannia_trimble_david = { name = "David" dynasty = dynn_britannia_trimble - religion = "celtic" - culture = irish + religion = "anglican_england" + culture = norner trait = education_diplomacy_3 trait = stubborn trait = honest diff --git a/history/provinces/e_britannia.txt b/history/provinces/e_britannia.txt index 218bd85c..a9fab94e 100644 --- a/history/provinces/e_britannia.txt +++ b/history/provinces/e_britannia.txt @@ -1465,8 +1465,8 @@ ##d_ulster ###c_antrim 14 = { - culture = norner - religion = anglican_england + culture = scottish + religion = presbyterian holding = castle_holding special_building = belfast_cathedral_01 } @@ -1499,8 +1499,8 @@ } ###c_derry 12 = { - culture = irish - religion = celtic + culture = norner + religion = anglican_england holding = castle_holding } 9672 = { @@ -1512,7 +1512,7 @@ } ###c_tyrone 9669 = { - culture = irish + culture = norner religion = celtic holding = city_holding } @@ -1524,7 +1524,7 @@ } ###c_fermanagh 25 = { - culture = irish + culture = norner religion = celtic holding = city_holding } From 02ad6071597192f4f70649fa18386d7e54eb0e97 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Mon, 23 Mar 2026 23:17:50 +0000 Subject: [PATCH 48/52] fixes --- .../05_bp2_interactions.txt | 10 + common/governments/00_government_types.txt | 1 + .../situation/situations/the_great_steppe.txt | 1 + .../cultural_traditions_l_english.yml | 1649 +++++++++++++++++ .../zz_NEOW_cultural_languages_l_english.yml | 164 +- 5 files changed, 1699 insertions(+), 126 deletions(-) create mode 100644 localization/english/replace/culture/traditions/cultural_traditions_l_english.yml diff --git a/common/character_interactions/05_bp2_interactions.txt b/common/character_interactions/05_bp2_interactions.txt index 2cc2af32..0c0d81c3 100644 --- a/common/character_interactions/05_bp2_interactions.txt +++ b/common/character_interactions/05_bp2_interactions.txt @@ -94,12 +94,16 @@ offer_hostage_interaction = { } scope:actor = { OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic is_landless_ruler = no is_landless_administrative = yes } } scope:recipient = { OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic is_landless_ruler = no is_landless_administrative = yes } @@ -677,12 +681,16 @@ demand_hostage_interaction = { } scope:actor = { OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic is_landless_ruler = no is_landless_administrative = yes } } scope:recipient = { OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic is_landless_ruler = no is_landless_administrative = yes } @@ -1415,6 +1423,8 @@ exchange_hostage_interaction = { } } OR = { + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic is_landless_ruler = no is_landless_administrative = yes } diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index a1792ad9..de294c0c 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -773,6 +773,7 @@ urbanrepublic_government = { allow_out_of_realm_inheritance = no use_as_base_on_rank_up = yes sticky_government = yes + uses_county_fertility = yes inherit_from_dynastic_government = no treasury = yes replace_gold_cost_by_treasury = yes diff --git a/common/situation/situations/the_great_steppe.txt b/common/situation/situations/the_great_steppe.txt index bceeb592..e01bef04 100644 --- a/common/situation/situations/the_great_steppe.txt +++ b/common/situation/situations/the_great_steppe.txt @@ -114,6 +114,7 @@ limit = { is_ai = no NOT = { has_variable = mpo_the_great_steppe_events_0001_var } + has_government = peasantrepublic_government } trigger_event = mpo_the_great_steppe.0001 } diff --git a/localization/english/replace/culture/traditions/cultural_traditions_l_english.yml b/localization/english/replace/culture/traditions/cultural_traditions_l_english.yml new file mode 100644 index 00000000..988ec7ea --- /dev/null +++ b/localization/english/replace/culture/traditions/cultural_traditions_l_english.yml @@ -0,0 +1,1649 @@ +l_english: + # Ethoses + ethos_bellicose_name:0 "Bellicose" + ethos_bellicose_desc:1 "This culture considers conflict and violence to be necessary states of existence; ingrained in its people is the idea that one should stand up and fight for their own. " + ethos_stoic_name:0 "Stoic" + ethos_stoic_desc:1 "This culture believes in standing strong like a mountain, taking any and all hardships that life may throw at them and enduring them all with grim determination and an indomitable spirit." + ethos_bureaucratic_name:1 "Bureaucratic" + ethos_bureaucratic_desc:2 "No culture lasts longer than its oldest record, and this culture believes in accounting so meticulous as to guarantee immortality." + ethos_spiritual_name:0 "Spiritual" + ethos_spiritual_desc:1 "While some cultures turn to war and others to worldly knowledge, this culture places its trust in the only constant throughout its history - the divine. Spirituality is the only way forward in a harsh and uncaring world." + ethos_courtly_name:1 "Ceremonious" + ethos_courtly_desc_nhc:1 "The ceremony of court life is so integral to this culture that it forms a core part of people's social behavior. A place for everyone, and everyone in their place." + ethos_egalitarian_name:0 "Egalitarian" + ethos_egalitarian_desc:1 "Intolerance and isolationism may be the way for others, but this culture recognizes that accepting difference is far better than annihilating it." + ethos_communal_name:0 "Communal" + ethos_communal_desc:1 "This culture values the bonds of community above all else, fostering great loyalty and dedication by working together towards common goals." + + # Martial Customs + martial_custom_equal_name:0 "Equal" + martial_custom_equal_desc:2 "In this culture, any able-bodied person in the household may take up arms for their liege when called on." + martial_custom_male_only_name:0 "Men Only" + martial_custom_male_only_desc:0 "This culture considers only men to be physically strong and tough enough to fight in battle." + martial_custom_female_only_name:0 "Women Only" + martial_custom_female_only_desc:0 "This culture considers only women to be physically strong and tough enough to fight in battle." + ## ^The above descs mirror each other deliberately. + + # Traditions + tradition_court_eunuchs_name:0 "Court Eunuchs" + tradition_court_eunuchs_desc:1 "This culture makes extensive use of eunuchs at court, occupying positions ranging from domestic servants to bureaucratic administrators and even military commanders. Men with no desire are easy to trust." + tradition_byzantine_succession_name:1 "Byzantine Traditions" + tradition_byzantine_succession_desc:1 "This culture is closely associated with the imperial traditions of the Eastern Roman Empire and its legacy in the form of a complex and intricate code of courtly conduct." + tradition_african_tolerance_name:0 "Tolerance through Understanding" + tradition_african_tolerance_desc:1 "Though some would decry it as weakness, a realm founded on understanding and tolerance is a realm built on sturdy foundations." + tradition_memories_of_bactria_name:0 "Memories of Bactria" + tradition_memories_of_bactria_desc:1 "Enshrined in the cultural memory of these people is the ideal of the perfect land of Bactria, the beautiful crown of the East, whose time will come again." + tradition_equal_inheritance_name:0 "Equal Inheritance" + tradition_equal_inheritance_desc:0 "This culture has a history of rulers dividing their lands between all their children, even those who normally would be excluded." + tradition_equal_inheritance_link:0 "Equal Inheritance" + tradition_the_witenagemot_name:0 "The Witenagemot" + tradition_the_witenagemot_desc:1 "This culture has a long history of holding assemblies comprised of the land's ruling potentates, debating politics, law, finance, and, most importantly, how best to... #EMP advise#! the ruler." + tradition_things_name:1 "Ting-Meet" + tradition_things_desc:1 "In Scandinavia, the distances and wilderness render centralized authority ineffective. When disputes must be resolved and decisions made, the #EMP Ting-meet #!is gathered, an assembly of peers presided over by a lawspeaker." + tradition_caravaneers_name:0 "Caravaneers" + tradition_caravaneers_desc:1 "This culture is well-integrated into the commercial practices of the region, and its people are strongly associated with the caravan trade." + tradition_xenophilic_name:0 "Xenophilic" + tradition_xenophilic_desc:0 "This culture embraces everyone and is genuinely fascinated by all cultures." + tradition_legalistic_name:0 "Legalistic" + tradition_legalistic_desc:1 "This culture regards the rule of law and its codification as being the most important parameter of a civilized society." + tradition_warrior_culture_name:0 "Warrior Culture" + tradition_warrior_culture_desc:0 "This culture values martial prowess and strength above everything else. Children are brought up knowing how to fight, and are discouraged from scholarly pursuits. Weakness is not tolerated." + tradition_philosopher_culture_name:0 "Philosopher Culture" + tradition_philosopher_culture_desc:0 "This culture promotes thought and self-reflection." + tradition_chivalry_name:0 "Chivalry" + tradition_chivalry_desc:1 "This culture has embraced chivalry and chivalric codes of conduct as a social method of regulating behavior. Martial prowess, duty, honor and morality are prized, as is bad poetry and romantic literature." + tradition_hit_and_run_name:0 "Hit-and-Run Tacticians" + tradition_hit_and_run_desc:0 "This culture has mastered the use of lightly-armored units to hit the enemy hard, and then fall back." + tradition_stand_and_fight_name:0 "Stand and Fight!" + tradition_stand_and_fight_desc:0 "Warriors from this culture are unyielding and unshakable. They do not fall back - even in the face of overwhelming odds, for better or for worse." + tradition_horse_lords_name:0 "Horse Lords" + tradition_horse_lords_desc:0 "This culture has mastered the horse and its use in warfare." + tradition_adaptive_skirmishing_name:0 "Adaptive Skirmishers" + tradition_adaptive_skirmishing_desc:0 "This culture knows how to effectively field skirmishers in any environment." + tradition_formation_fighting_name:0 "Formation Fighting Experts" + tradition_formation_fighting_desc:0 "This culture knows how to create synergy between different types of units by use of efficient protective formations." + tradition_republican_legacy_name:0 "Republican Legacy" + tradition_republican_legacy_desc:1 "This culture has a long history of republican values, where the urban classes are just as important as the rural landholders." + tradition_hereditary_hierarchy_name:0 "Hereditary Hierarchy" + tradition_hereditary_hierarchy_desc:0 "It is ingrained in this culture that leadership in passed on by blood, nobility is bound by stone in castles, and that the feudal structure is unshakable. They do not easily forget those who break the feudal code." + tradition_theocratic_autonomy_name:0 "Theocratic Autonomy" + tradition_theocratic_autonomy_desc:1 "The religious authorities in this culture are given a great deal of leeway by the secular rulers and are afforded respect and obeisance by the populace." + tradition_saharan_nomads_name:0 "Saharan Nomads" + tradition_saharan_nomads_desc:1 "This culture is intimately accustomed with the Saharan desert, which it has traversed for centuries, connecting the Mediterranean with the sub-Saharan kingdoms of the Sahel." + tradition_himalayan_settlers_name:0 "Himalayan Settlers" + tradition_himalayan_settlers_desc:1 "This culture has made its home atop the 'roof of the world', where the air is fresh but cold, and the winters long and hard. They pride themselves that few of the cultures below would be able to live as well as this people does, among the peaks and plateaus where otherwise only sheep can thrive." + tradition_esteemed_hospitality_name:0 "Esteemed Hospitality" + tradition_esteemed_hospitality_desc:0 "In this culture rulers are known, and expected, to welcome anyone who might come to their court with open arms. Hosting guests and visitors in a spectacular fashion." + tradition_hard_working_name:0 "Industrious" + tradition_hard_working_desc:1 "This culture teaches and enshrines ideas of industriousness and hard work on behalf of one's community." + tradition_loyal_soldiers_name:1 "Loyal Subjects" + tradition_loyal_soldiers_desc:2 "For this culture, serving one's liege and country is both noble and just - a duty and a privilege, rather than an avaricious arrangement or an unwanted burden." + tradition_female_only_inheritance_name:0 "Matriarchal" + tradition_female_only_inheritance_desc:1 "This culture enforces a matriarchal hierarchy, where the ruling class is overwhelmingly comprised of women." + tradition_pacifism_name:0 "Pacifists" + tradition_pacifism_desc:1 "For this culture, the use of force can never be justified. Only by pursuing a path of non-violence can people truly live in peace." + tradition_scientific_curiosity_name:0 "Scientific Curiosity" + tradition_scientific_curiosity_desc:1 "Most people look left, right, backwards, and forwards for answers. Not these people. These people look up." + tradition_spartan_name:0 "Spartan" + tradition_spartan_desc:1 "This culture doesn't prize the trappings of power - the ceremony, the wealth, the pointless decoration. This culture is more interested in power itself, preferably in the form of towering walls and keeps." + tradition_tribe_unity_name:0 "Tribal Unity" + tradition_tribe_unity_desc:1 "This culture emphasizes the familial and communal bonds its people share, pushing them to remember their shared heritage." + tradition_astute_diplomats_name:0 "Astute Diplomats" + tradition_astute_diplomats_desc:1 "It is a common idea in this culture that the purest expression of superiority is the ability to subdue your enemy without fighting them." + tradition_collective_lands_name:0 "Collective Lands" + tradition_collective_lands_desc:1 "The idea that individuals personally own land is alien to this culture; land belongs to all people, for the common good. " + tradition_horse_breeder_name:0 "Horse Breeders" + tradition_horse_breeder_desc:1 "This culture has painstakingly accumulated knowledge and experience in the fine art and science of horse breeding. Whether destriers or coursers, the horses of these people are renowned for their superiority." + tradition_hunters_name:0 "Prolific Hunters" + tradition_hunters_desc:1 "Driven by economic necessity, or perhaps social expectation, this culture has refined their hunting practices to precise and almost beautiful art." + tradition_sacred_mountains_name:0 "Sacred Mountains" + tradition_sacred_mountains_desc:1 "This culture considers mountains to be connections to the divine, and treats them with reverence and respect." + tradition_culinary_art_name:0 "Culinary Artists" + tradition_culinary_art_desc:1 "Food isn't just sustenance for this culture; it is both an art and a ritual, a focal point for family and community alike." + tradition_festivities_name:0 "Frequent Festivities" + tradition_festivities_desc:1 "The frequency and exuberance with which this culture throws festivities would be considered vulgar to others, but a party is a party!" + tradition_tea_ceremony_name:0 "Tea Ceremonies" + tradition_tea_ceremony_desc:1 "Sometimes, all one needs to make everything better is a nice cup of tea." + tradition_vegetarianism_name:0 "Vegetarians" + tradition_vegetarianism_desc:1 "This culture has developed a strong aversion to consuming the flesh of animals, and practices vegetarianism throughout their society." + tradition_alpine_supremacy_name:0 "Alpine Supremacy" + tradition_alpine_supremacy_desc:1 "The people of this culture have adapted to living in and around mountainous regions, and their knowledge and expertise in alpine climes is second to none." + tradition_seafaring_name:0 "Seafarers" + tradition_seafaring_desc:1 "For this culture, the call of the sea is too strong to resist, and they live to sail like a dream on a crystal clear ocean, or ride on the crest of a wild raging storm." + tradition_strength_display_name:0 "Displays of Strength" + tradition_strength_display_desc:1 "Merely possessing strength is not enough. You have to #EMP demonstrate#! your strength before others, so that you know you could either face a worthy opponent, or fight alongside a valued ally." + tradition_mystical_ancestors_name:0 "Mystical Ancestors" + tradition_mystical_ancestors_desc:1 "Lineage is very important to this culture, to the point where ancestors have become mythical and legendary beings with many who claim to be their descendants." + tradition_priestly_caste_name:0 "Priestly Caste" + tradition_priestly_caste_desc:1 "This culture enforces a caste system to elevate the priesthood in their society. For them, individuals charged with interpreting the will of the divine are to be protected and obeyed." + tradition_religion_blending_name:0 "Religion Blending" + tradition_religion_blending_desc:1 "Members of this culture often live together with those sharing different faiths and beliefs, and do well in adopting foreign elements into their own worship." + tradition_religious_festivities_name:0 "Religious Festivities" + tradition_religious_festivities_desc:1 "The movement of the Sun and stars are irrelevant to this culture's conception of time. Instead, a much more popular way to mark the passage of days is by the multitude of regular religious festivals and celebrations, to which everyone is invited!" + tradition_religious_patronage_name:0 "Religious Patronage" + tradition_religious_patronage_desc:1 "For the salvation of the soul, one must commit to works of religious significance. You cannot purchase redemption, but having a temple of priests sing your praises #EMP helps.#!" + tradition_medicinal_plants_name:0 "Medicinal Herbalists" + tradition_medicinal_plants_desc:1 "This culture long ago developed knowledge of the medicinal properties of the plants and trees; to them most ailments are treatable with the right poultice, salve or stew." + tradition_storytellers_name:0 "Storytellers" + tradition_storytellers_desc:1 "This culture has a strong and persistent oral tradition. The past is preserved through ritualistic storytelling, where the heroes and legends of the past are passed down through generations." + tradition_sacred_hunts_name:0 "Sacred Hunts" + tradition_sacred_hunts_desc:1 "Hunting is neither a sport nor a pastime, it is nothing less than the purest expression of the human experience, where one may connect with the divine by demonstrating their mastery over nature." + tradition_wedding_ceremonies_name:1 "Marital Ceremonies" + tradition_wedding_ceremonies_desc:1 "For this culture, the union of two people in marriage is considered a highly public and ritualistic affair." + tradition_music_theory_name:0 "Musical Theorists" + tradition_music_theory_desc:1 "This culture treats music almost as the language of the divine, and thus many individuals take up the noble and celebrated pursuit of musical study from a young age." + tradition_poetry_name:0 "Refined Poetry" + tradition_poetry_desc:0 "Poetry is considered a noble art in this culture, and many spend their time piecing words together with meaning and thought." + tradition_culture_blending_name:0 "Culture Blending" + tradition_culture_blending_desc:1 "Members of this culture have often lived alongside people of other cultures. Through exposure, they have become adept at incorporating foreign languages, traditions and customs into their own lives." + tradition_family_entrepreneurship_name:0 "Family Business" + tradition_family_entrepreneurship_desc:2 "This culture encourages businesses to develop along familial lines, each generation picking up the tools and techniques of their trade from the last, building a strong tradition of ancestral professionalism." + tradition_fishermen_name:0 "Dexterous Fishermen" + tradition_fishermen_desc:1 "Anyone can fish, but to do so with such skill that any catch is bountiful, regardless of tide or wind, is a rarer talent. No one knows the coast, land or sea, better than these fishermen." + tradition_metal_craftsmanship_name:0 "Metalworkers" + tradition_metal_craftsmanship_desc:1 "This culture has enjoyed easy access to iron for centuries. Over time they have developed their understanding of metal to such a degree that their name has become a byword for durable and high quality arms and armor." + tradition_isolationist_name:0 "Isolationist" + tradition_isolationist_desc:0 "This culture prefers to keep to itself, and doesn't often look outside its own sphere." + tradition_winter_warriors_name:0 "Winter Warriors" + tradition_winter_warriors_desc:0 "This culture is used to the reality that harsh winds and bitter cold brings." + tradition_forest_fighters_name:0 "Forest Fighters" + tradition_forest_fighters_desc:0 "This culture is well-versed at fighting in forests." + tradition_mountaineers_name:0 "Mountaineers" + tradition_mountaineers_desc:0 "Soldiers of this culture carry all they need to traverse mountains." + tradition_warriors_of_the_dry_name:0 "Warriors of the Dry" + tradition_warriors_of_the_dry_desc:0 "This culture has mastered the art of fighting in very dry climates." + tradition_highland_warriors_name:0 "Highland Warriors" + tradition_highland_warriors_desc:0 "Warriors of this culture fight well in the slopes and valleys of their hilly homes." + tradition_jungle_warriors_name:0 "Jungle Warriors" + tradition_jungle_warriors_desc:0 "Warriors of this culture know well how to traverse treacherous jungles." + tradition_only_the_strong_name:0 "Only the Strong" + tradition_only_the_strong_desc:0 "This culture places a strong emphasis on having a few, well-trained warriors. If you're not the best-of-the-best, you're not welcome to serve." + tradition_warriors_by_merit_name:0 "Warriors by Merit" + tradition_warriors_by_merit_desc:0 "This culture believes that if you've proven yourself capable as a warrior, you should be allowed to fight — no matter who you are." + tradition_warrior_monks_name:0 "Warrior Priests" + tradition_warrior_monks_desc:0 "This culture believes that if you choose to pursue theological studies, you must also be able to defend your faith." + tradition_talent_acquisition_name:0 "Recognition of Talent" + tradition_talent_acquisition_desc:0 ""Kill me if you wish, but if you let me live, I shall serve you loyally."" + tradition_strength_in_numbers_name:0 "Strength in Numbers" + tradition_strength_in_numbers_desc:0 "This culture forsakes having elite troops, and instead favors massed armies." + tradition_frugal_armorsmiths_name:0 "Frugal Armorers" + tradition_frugal_armorsmiths_desc:0 "While a set of high-quality armor might save one life, having ten decent sets might win a battle." + tradition_malleable_invaders_name:0 "Malleable Invaders" + tradition_malleable_invaders_desc:1 "We will take your lands, your children, your traditions, and your #EMP future#!." + tradition_quarrelsome_name:0 "Quarrelsome" + tradition_quarrelsome_desc:0 "Border conflicts are common for rulers of this culture. Land often changes hands in unjust ways." + tradition_swords_for_hire_name:0 "Swords for Hire" + tradition_swords_for_hire_desc:0 "This culture views mercenary work favorably and encourages warriors to seek glory as mercenaries in-between wars." + tradition_reverence_for_veterans_name:0 "Reverence for Veterans" + tradition_reverence_for_veterans_desc:0 "This culture doesn't look down upon those who can no longer fight due to injury, instead they are celebrated as heroes and used as teachers." + tradition_stalwart_defenders_name:0 "Stalwart Defenders" + tradition_stalwart_defenders_desc:0 "Defending that which is one's own is of paramount importance to this culture." + tradition_battlefield_looters_name:0 "Battlefield Looters" + tradition_battlefield_looters_desc:0 "In this culture battles are not fought for prestige, but for profit. Who cares about one's standing if you're unable to pay for the war?" + tradition_fervent_temple_builders_name:0 "Fervent Temple Builders" + tradition_fervent_temple_builders_desc:0 "This culture finds constructing temples the most direct path to the divine. Fervent rulers are expected to build many, and grand, temples." + tradition_lords_of_the_elephant_name:0 "Lords of the Elephant" + tradition_lords_of_the_elephant_desc:0 "This culture venerates elephants, likening them to royalty. They are masterful at capturing them, training them, and using them for devastating effect in war." + tradition_zealous_people_name:0 "Strong Believers" + tradition_zealous_people_desc:0 "The people of this culture are particularly zealous and dedicated to their faith." + tradition_welcoming_name:1 "Charismatic" + tradition_welcoming_desc:1 "The people of this culture excel in diplomatic matters, and social etiquette is valued above all else." + tradition_agrarian_name:0 "Agrarian" + tradition_agrarian_desc:0 "This culture is distinctly agrarian, their lands producing ample crops for hungry armies. While not having to struggle for food means many peasants for the levy, it also means that each soldier is not as motivated as those from harsher regions." + tradition_eye_for_an_eye_name:0 "Eye for an Eye" + tradition_eye_for_an_eye_desc:0 "In this culture slights are not to be forgotten, nor forgiven. Its people can carry grudges for long, and vengeance is carried out with a passion." + tradition_forbearing_name:0 "Forbearing" + tradition_forbearing_desc:1 "In this culture being patient and restrained in the face of adversity is common." + tradition_equitable_name:0 "Equitable" + tradition_equitable_desc:0 "In this culture truth and impartial justice is valued highly." + tradition_charitable_name:0 "Charitable" + tradition_charitable_desc:0 "Regardless of faith, people of this culture are motivated to support those less fortunate." + tradition_modest_name:0 "Modest" + tradition_modest_desc:0 "This culture values modesty, one should not take up too much space or think oneself better than others." + tradition_hill_dwellers_name:0 "Hill Dwellers" + tradition_hill_dwellers_desc:0 "This culture is at home in hills, and know how to work its lands effectively." + tradition_forest_folk_name:0 "Forest Folk" + tradition_forest_folk_desc:0 "This culture lives close to vast forests, and knows how to forage its bounties." + tradition_mountain_homes_name:0 "Mountain Homes" + tradition_mountain_homes_desc:0 "This culture knows how to live and thrive on plateaus near the harsh slopes of mountains." + tradition_dryland_dwellers_name:0 "Dryland Dwellers" + tradition_dryland_dwellers_desc:0 "This culture is accustomed to living in dry climates, and know where to find water and how to work the lands." + tradition_jungle_dwellers_name:0 "Jungle Dwellers" + tradition_jungle_dwellers_desc:0 "This culture lives close to the jungle, and knows how to harvest its riches." + tradition_faith_bound_name:0 "Bound by Faith" + tradition_faith_bound_desc:0 "In this culture being of a different faith means that you're not eligible for succession." + tradition_by_the_sword_name:0 "By the Sword" + tradition_by_the_sword_desc:0 "Members of this culture believe that the best missionary is one carrying a sword. While support for holy wars are widespread, motives are scrutinized as to make sure the Divine powers would approve." + tradition_language_scholars_name:0 "Linguists" + tradition_language_scholars_desc:0 "To learn the words of a neighbor brings you one step closer to the language of the Divine." + tradition_pastoralists_name:0 "Pastorialists" + tradition_pastoralists_desc:0 "This culture is at home in wide and open terrain, where they herd large groups of animals." + tradition_desert_nomads_name:1 "Desert Travelers" + tradition_desert_nomads_desc:1 "This culture is no stranger to the harsh environment of the desert and has mastered the use of camels to aid them in travel, warfare, and everyday life." + tradition_gardening_name:0 "Garden Architects" + tradition_gardening_desc:0 "This culture has a long tradition of constructing and maintaining various types of gardens, building themselves a small paradise." + can_appoint_court_gardener_name: "[GetCultureTradition('tradition_gardening').GetName]" + tradition_monogamous_name:0 "Monogamous" + tradition_monogamous_desc:0 "In this culture one keeps a single spouse, regardless of faith." + tradition_polygamous_name:0 "Polygamous" + tradition_polygamous_desc:0 "In this culture one tend to have multiple spouses, regardless of faith." + tradition_concubines_name:1 "Concubines" + tradition_concubines_desc:1 "Rulers of this culture often keep a number of concubines in their household, regardless of their faith." + tradition_mendicant_mystics_name:0 "Mendicant Mystics" + tradition_mendicant_mystics_desc:1 "The holy people of this culture believe strongly that the faith should be ministered in the field, and their most devout frequently wander the world." + tradition_parochialism_name:0 "Parochialism" + tradition_parochialism_desc:0 "City residents of this culture are fiercely competitive and independent. They invest a lot of money and energy to make sure that #EMP their#! city is the grandest." + tradition_martial_admiration_name:0 "Martial Admiration" + tradition_martial_admiration_desc:0 "Those who are willing to take up sword and fight for their culture are worthy of admiration. No matter the odds." + tradition_chanson_de_geste_name:0 "Chanson de Geste" + tradition_chanson_de_geste_desc:0 "This culture values the heroic deeds of long gone ancestors. The romantic retelling of the lives of knights such as Guillaume, or Roland, will inspire generations to come." + tradition_ruling_caste_name:0 "Ruling Caste" + tradition_ruling_caste_desc:0 "Rulers of this culture are used to lording over subjects that are not their own culture. They know how to effectively suppress revolts, though at the cost of public perception." + tradition_staunch_traditionalists_name:0 "Staunch Traditionalists" + tradition_staunch_traditionalists_desc:1 "Tradition is tradition, it is immovable and unchangeable. We must be ready and willing to stand up for what makes us who we are." + tradition_sacred_groves_name:0 "Sacred Groves" + tradition_sacred_groves_desc:0 "Trees are considered sacred by this culture. The forest is a living being that ought to be cared for — not destroyed." + tradition_hold_the_line_name:0 "Hold the Line" + tradition_hold_the_line_desc:1 "This culture will have every combatant feel pride in their might. The rousing speeches of their commanders keep soldiers inspired until the very end." + tradition_legendary_noble_families_name:0 "Legendary Noble Families" + tradition_legendary_noble_families_desc:1 "Unless you are connected to one of the noble families who has helped forged this culture's fate, you are nothing." + tradition_castle_keepers_name:0 "Castle Keepers" + tradition_castle_keepers_desc:1 "Offense is not a good defense. A good defense is having the most castles on the face of the known world." + tradition_city_keepers_name:0 "City Keepers" + tradition_city_keepers_desc:1 "Cities are the beating urban heart of this culture, and they wish for every one of their metropolises to become enviable gems known across the world." + tradition_fractious_name:0 "Fractious" + tradition_fractious_desc:1 "The enemy of my enemy is #EMP also#! my enemy." + tradition_runestones_name:1 "Runestone Raisers" + tradition_runestones_desc:1 "Death, conquest, the acquisition of rank — are these not the things that define life in the nobility? Where our people go, so go the markers of our lives' worth." + tradition_insular_spirit_name:0 "Insular Spirit" + tradition_insular_spirit_desc:1 "This culture is determined not to be bend from its original ways, and will fight for any of its own being attacked by another culture." + tradition_monastic_communities_name:0 "Monastic Communities" + tradition_monastic_communities_desc:1 "This culture has a long history of sending noble progeny to serve the faith. Revered political thinkers often arise from the monastic orders." + tradition_roman_legacy_name:1 "Eastern Roman Legacy" + tradition_roman_legacy_desc:1 "The military organization of the Roman Empire is still in living memory within this culture. A professional army is favored over levied troops." + tradition_longbow_competitions_name:0 "Longbow Competitions" + tradition_longbow_competitions_desc:1 "This culture favors a bow more powerful than most could draw, and practicing with them once a week is as dear as any ritual of worship everywhere from the most rural villages to the largest urban metropoles." + tradition_illyrian_grit_name:0 "Illyrian Grit" + tradition_illyrian_grit_desc:1 "This culture may always be fighting against itself, but will rise to take on any invaders together when the time comes." + tradition_maritime_mercantilism_name:0 "Maritime Mercantilism" + tradition_maritime_mercantilism_desc:1 "The world may be ruled by armies, but this culture knows that it is truly controlled by whoever dominates the flow of gold across the seas." + tradition_sacral_kingship_name:0 "Sacral Kingship" + tradition_sacral_kingship_desc:1 "Rulers in this culture are either considered Gods, or kingship is seen as a divine virtue. What's a King to a God?" + tradition_reavers_name:0 "Reavers" + tradition_reavers_desc:1 "Many in this culture who live on the coast try their hand at boarding ships to go stealing from other ports. Though it is not condoned by their direct lords, every ruler knows it will make for better soldiers when the time comes." + tradition_practiced_pirates_name:0 "Practiced Pirates" + tradition_practiced_pirates_desc:1 "Storming a port, setting it ablaze, and taking everything that isn't nailed down may not be noble, but it #EMP is#! profitable." + tradition_determined_independence_name:0 "Determined Independence" + tradition_determined_independence_desc:1 "Death before submission! The rulers from this culture find no defeat worse than vassalization, and will do anything to become their own masters." + tradition_merciful_blindings_name:0 "Merciful Blindings" + tradition_merciful_blindings_desc:1 "No matter how far beyond forgiveness one has gone, this culture thinks it is better to gouge out an eye than run through a heart." + tradition_reindeer_hunters_name:0 "Reindeer Hunters" + tradition_reindeer_hunters_desc:1 "Chasing deer is nothing more than a dance over the taiga's constant frost. This culture has learned to use the hunting supplies they have for all they're worth." + tradition_mountaineer_ruralism_name:0 "Mountaineer Ruralism" + tradition_mountaineer_ruralism_desc:1 "From their origins in the hills of the Bohemian Forest, to the crags of the Ore and Tatra mountains, most in this culture know not only how to traverse the rocky lands, but handle life on a mountain with ease." + tradition_life_is_just_a_joke_name:0 "Life is just a Joke" + tradition_life_is_just_a_joke_desc:1 "This culture would chuckle on the chopping block with an axe above its head." + tradition_steppe_tolerance_name:0 "Steppe Tolerance" + tradition_steppe_tolerance_desc:1 "Those who live on the Steppe will always have much in common with those who share their way of life. Strangers may worship differently, but they still live in the saddle." + tradition_nubian_warrior_queens_name:0 "Warrior Queens" + tradition_nubian_warrior_queens_desc:0 "Those who live in East Africa well remember the great Warrior Queens who once stood against invaders and forged kingdoms on the Kush. Our neighbors may insist on the superiority of males, but we track our bloodlines through our mothers, and the warcry of powerful Nubian women send these foreign "men" running home." + tradition_nubian_warrior_kings_name:0 "Warrior Kings" + tradition_nubian_warrior_kings_desc:0 "Those who live in East Africa well remember the great Warrior Kings who once stood against invaders and forged kingdoms on the Kush. Our neighbors may insist on the superiority of females, but we track our bloodlines through our fathers, and the warcry of powerful Nubian men send these foreign "women" running home." + tradition_maritime_mangroves_name:0 "Maritime Mangroves" + tradition_maritime_mangroves_desc:1 "This culture has learned to sail swamplands other cultures find impassable. "They have used this to build unreachable bases from which to trade, raid, and explore the world." + tradition_mixed_governance_name:0 "Mixed Governance" + tradition_mixed_governance_desc:1 "This culture considers each thought worth hearing and every new way of rule worth trying. Rulers encourage vassals to govern however they see fit." + tradition_ritual_scarrification_name:0 "Ritual Scarification" + tradition_ritual_scarrification_desc:1 "This culture respects those whose flesh has tasted the blade. Whether to prove their mettle, or to create a beautiful design, they scar their own skin." + tradition_hidden_cities_name:0 "Hidden Cities" + tradition_hidden_cities_desc:2 "Whether they are up in the jungle trees, or protected by the organic maze, foreigners may not even know this culture's cities exist, let alone have a clue how to besiege them." + tradition_hereditary_bards_name:0 "Hereditary Bards" + tradition_hereditary_bards_desc:1 "For some cultures, there are stories passed down through generations, as valuable as any title deed." + tradition_ancient_miners_name:0 "Ancient Miners" + tradition_ancient_miners_desc:1 "This culture has always been surrounded by raw materials, ore, and uncut gems. They have an affinity for finding sites for mining excavations." + tradition_wetlanders_name:0 "Wetlanders" + tradition_wetlanders_desc:1 "This culture has mastered the bogs and marshes. Though life is at times a battle against mold, they have learned to use the peat to their advantage." + tradition_diasporic_name:0 "Diasporic" + tradition_diasporic_desc:1 "People of this culture have lost the homeland they once held dear. Some among them travel the world searching for a place where they may begin anew." + tradition_sorcerous_metallurgy_name:0 "Sorcerous Metallurgy" + tradition_sorcerous_metallurgy_desc:1 "There are as many alchemists in this culture attempting to turn metal into gold as there are smiths forging weapons. What does it matter if this culture's wealth and weaponry are enhanced by witchcraft?" + tradition_polders_name:0 "Polders" + tradition_polders_desc:0 "This culture has a long tradition of reclaiming land from the surrounding sea. This allows them to utilize what would normally be a shallow seabed for farming and construction." + tradition_caucasian_wolves_name:0 "Caucasian Wolves" + tradition_caucasian_wolves_desc:0 "Having spent centuries making themselves a home around the Caucasian gates, this culture has grown well at home with everything that mountain warfare entails." + tradition_artisans_name:0 "Expert Artisans" + tradition_artisans_desc:0 "Children in this culture often carry on the profession of their parents, accumulating extensive knowledge and skill for their trade across generations." + + # Debug Traditions + tradition_debug_name:0 "Mercurial Ways" + tradition_debug_desc:0 "This culture is known for its many eclectic & contradictory stances." + + # FP1 Traditions + tradition_fp1_coastal_warriors_name:0 "Coastal Warriors" + tradition_fp1_coastal_warriors_desc:1 "We have always been drawn to the shoreline. The sting of sea air, the crying gulls, the scent of smoked fish... what warrior would ever opt to live far from the water and its freedoms?" + tradition_fp1_performative_honour_name:0 "Performative Honor" + tradition_fp1_performative_honour_desc:1 "Honor is born, yes, but honor is also earned and lost through deeds. By pursuing and avenging slights, or failing to, soldiers fade to scum while whelps grow into warriors." + tradition_fp1_northern_stories_name:0 "Northern Stories" + tradition_fp1_northern_stories_desc:1 "Life is lived, told, and remembered through the lens of tales. What we say, and what people say about us, matters as much as what we do. We remember that, and it shows in our stories." + tradition_fp1_trials_by_combat_name:0 "Trials-by-Combat" + tradition_fp1_trials_by_combat_desc:1 "Words are a coward's substitute for weapons. Why leave justice to decrepit laws and corrupt magistrates when disputes can be settled faster and fairer with the blade?" + tradition_fp1_the_right_to_prove_name:0 "The Right to Prove" + tradition_fp1_the_right_to_prove_desc:0 "Though not all are born fighters, with the right mettle and a strong sword-arm, any can show themselves a warrior at heart and so become one in deed." + + # Tradition effects - Base Title + culture_parameter_city_buildings_more_county_opinion:0 "[city|E] [holdings|E] give more [county_opinion|E] per level" + culture_parameter_monastic_expectations:1 "[characters|E] of this [culture|E] are more likely to accept taking the Vows, especially your underage children" + culture_parameter_temperate_trait_bonuses:0 "The [GetTrait('temperate').GetName( GetNullCharacter )] [traits|E] have additional bonuses" + culture_parameter_devoted_trait_bonuses:0 "The [GetTrait('devoted').GetName( GetNullCharacter )] [traits|E] have additional bonuses" + tradition_strong_kinship_name:0 "Strong Kinship" + tradition_strong_kinship_desc:0 "This culture has a strong tradition of kinship within the extended family, or clan. In times of need a ruler will always be able to rely on their kin." + tradition_amharic_highlanders_name:0 "Amharic Highlanders" + tradition_amharic_highlanders_desc:0 "The Amharic highlands are quite suitable for farming as long as one knows how to best approach the matter. For many generations this people have worked and lived in this environment, thriving while developing their own traditions and customs." + + culture_parameter_witenagemot_succession_enabled:0 "Can enact the [GetLaw('saxon_elective_succession_law').GetName] [succession_law|E]" + culture_parameter_scandinavian_elective_enabled:0 "Can enact the [GetLaw('scandinavian_elective_succession_law').GetName] [succession_law|E]" + culture_parameter_gender_equal_inheritance:0 "Can enact the [GetLaw('equal_law').GetName] [gender_law|E]" + culture_parameter_can_enact_high_partition_succession_law:0 "Can enact the [GetLaw('high_partition_succession_law').GetName] [succession_law|E]" + + culture_parameter_female_preference_inheritance:0 "Can enact the [GetLaw('female_preference_law').GetName] [gender_law|E]" + culture_parameter_female_only_inheritance:0 "Can enact the [GetLaw('female_only_law').GetName] [gender_law|E]" + culture_parameter_can_blind_prisoners:0 "[rulers|E] can Blind [prisoners|E]" + culture_parameter_can_castrate_prisoners:0 "[rulers|E] can Castrate [prisoners|E]" + culture_parameter_children_can_be_born_in_the_purple:2 "[children|E] born to a [ruler|E] holding the $e_byzantium$ may gain the [GetTrait('born_in_the_purple').GetName( GetNullCharacter )] [trait|E]. Having the Born in the Purple Trait increases a character's candidate score under $acclamation_succession_law$." + culture_parameter_development_gain_on_building_complete:2 "Gain #V 25#! [development_growth|E] when a [building|E] is constructed #weak (up to once a year)#!" + culture_parameter_strong_traits_more_valued:1 "[traits|E] such as [GetTrait('strong').GetName( GetNullCharacter )] or [GetTrait('physique_good_1').GetName( GetNullCharacter )] are seen as [prestige_i][prestigious|E]" + culture_parameter_weak_traits_looked_down_upon:0 "[traits|E] such as [GetTrait('weak').GetName( GetNullCharacter )] or [GetTrait('physique_bad_1').GetName( GetNullCharacter )] are looked down upon" + culture_parameter_ambitious_trait_penalty:0 "The [GetTrait('ambitious').GetName( GetNullCharacter )] [trait|E] is looked down upon" + culture_parameter_adulterer_fornicator_penalties:0 "The [GetTrait('adulterer').GetName( GetNullCharacter )] and [GetTrait('fornicator').GetName( GetNullCharacter )] [traits|E] are despised" + culture_parameter_hostile_scheme_success_chance_vs_spouse_penalty:0 "[hostile_scheme|E] [success_chance|E] vs. [spouses|E]: #N -50%#!" + culture_parameter_cannot_divorce:0 "Cannot use any [divorce|E] [interactions|E]" + culture_parameter_strong_traits_more_common:0 "The [GetTrait('strong').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_minimum_prowess_for_knights:0 "[knights|E] #EMP must#! have at least [prowess_i]#V 12#! [prowess|E]" + culture_parameter_blademaster_trait_bonuses:1 "The [GetTrait('lifestyle_blademaster').GetName( GetNullCharacter )] [traits|E] have additional bonuses" + culture_parameter_prowess_from_martial_education:0 "The [martial|E] [education|E] [traits|E] also grant [prowess|E]" + culture_parameter_martial_education_more_valued:0 "The [martial|E] [education|E] [traits|E] are more valued" + culture_parameter_high_prowess_ignores_knight_restrictions:0 "Most restrictions on who can be a [knight|E] are lifted for characters with [prowess_i]#V 10#! or more [prowess|E]" + culture_parameter_blademaster_traits_more_common:1 "[knights|E] gain [GetTrait('lifestyle_blademaster').GetName( GetNullCharacter )] [traits|E] more often in battles" + culture_parameter_prowess_from_religious_traits:0 "[traits|E] such as [GetTrait('education_learning_3').GetName( GetNullCharacter )], [GetTrait('devoted').GetName( GetNullCharacter )] or [GetTrait('theologian').GetName( GetNullCharacter )] give [prowess|E]" + culture_parameter_prowess_traits_more_valued:0 "The [GetTrait('education_martial_prowess_1').GetName( GetNullCharacter )], [GetTrait('education_martial_prowess_2').GetName( GetNullCharacter )], [GetTrait('education_martial_prowess_3').GetName( GetNullCharacter )] and [GetTrait('education_martial_prowess_4').GetName( GetNullCharacter )] [traits|E] are more valued" + culture_parameter_culture_clergy_can_fight:0 "$doctrine_parameter_clergy_can_fight$" + culture_parameter_monastery_prowess_martial_bonus: "The #V $building_type_monastic_schools_01$#! line of [buildings|E] provide additional [prowess|E] and [martial|E] bonuses" + culture_parameter_can_recruit_prisoners_easily:0 "[prisoners|E] are more likely to accept recruitment, gain a positive [opinion|E] [modifier|E] when recruited, and the recruiter gets a [strong_hook|E]" + culture_parameter_better_knights_from_decision:0 "Get better [knights|E] from the #V $invite_knights_decision$#! [decision|E]" + culture_parameter_pardoning_gives_loyalty:0 "The #V $pardon_interaction$#! [interaction|E] gives much more positive [opinion|E] and a [strong_hook|E]" + culture_parameter_easier_to_hybridize:0 "Creating a Hybrid [culture|E] requires #V 50%#! less [cultural_acceptance|E]" + culture_parameter_cheaper_to_hybridize:0 "Hybrid [culture|E] Creation Cost: [prestige_i]#P -75%#!" + traditions_cheaper_value:0 "From [traditions|E]" + culture_parameter_harder_to_hybridize:0 "Creating a Hybrid [culture|E] requires #V 100%#! more [cultural_acceptance|E], it is also much harder to Hybridise with this Culture" + culture_parameter_can_use_conquest_cbs:0 "$doctrine_parameter_conquest_cb_enabled$" + culture_parameter_cb_lower_prestige_level_requirement:0 "All [casus_bellis|E] that require a specific [prestige_level|E] require one less" + culture_parameter_wounds_and_scars_give_bonuses:0 "Permanent [trait|E] injuries such as [GetTrait('scarred').GetName( GetNullCharacter )], [GetTrait('maimed').GetName( GetNullCharacter )] or [GetTrait('one_legged').GetName( GetNullCharacter )] give bonuses" + culture_parameter_guardians_can_transfer_commander_traits:0 "[guardians|E] can transfer [commander_traits|E] to their [wards|E]" + culture_parameter_gain_gold_from_battles:0 "Gain [gold|E][gold_i] from [battles|E] #weak (1 gold per 100 [dead_soldiers|E])#!" + culture_parameter_less_prestige_from_battles:0 "[prestige|E] and [prestige_experience|E] from [battles|E]: [prestige_i] #N -75%#!" + culture_parameter_same_faith_inheritance_only:0 "Only characters of the same [faith|E] can inherit" + culture_parameter_wanderers_gain_extra_combat_skills:0 "[wanderers|E] gain extra combat skills over time, such as [martial|E], [prowess|E] or [commander_traits|E]" + culture_parameter_wanderers_gain_extra_economic_skills:0 "[wanderers|E] gain extra economic skills over time, such as [stewardship|E] or [lifestyle_traits|E]" + culture_parameter_mercenary_courtiers_gain_extra_skills:0 "[knights|E] in [mercenary|E] [courts|E] rapidly gain [prowess|E]" + culture_parameter_more_likely_to_leave_court:0 "Idle [courtiers|E] are much more likely to become [wanderers|E]" + culture_parameter_unlocks_contract_assistance: "Unlocks the #V $contract_assistance_interaction$#! [interaction|E]" + culture_parameter_courtiers_less_likely_to_leave_same_culture_court:0 "Idle [courtiers|E] are less likely to become [wanderers|E] if their [liege|E] is of the same [culture|E]" + culture_parameter_dislikes_marrying_outside_of_culture:0 "[marriage|E] Acceptance towards other [cultures|E]: #N -50#!" + culture_parameter_ai_doesnt_marry_outside_culture:0 "Very unlikely to arrange [marriages|E] outside their own [culture|E]" + TRADITION_BONUS_WEDDING_CEREMONIES:0 "$tradition_wedding_ceremonies_name$ [culture_tradition|E]: $VALUE|+=0$" + TRADITION_PENALTY_ISOLATIONIST:0 "Isolationist [culture|E]: $VALUE|+=0$" + culture_parameter_more_fame_for_successful_defensive_wars:0 "[prestige|E] from winning Defensive [wars|E]: [prestige_i]#P +100%#!" + culture_parameter_more_gold_for_successful_defensive_wars:0 "[gold|E] from winning Defensive [wars|E]: [gold_i]#P +100%#!" + culture_parameter_can_end_defensive_wars_earlier:0 "Defensive [war|E] Peace Acceptance: #P +10#!" + culture_parameter_reduced_cost_for_conversion_to_pacifist_faith:0 "Cost for converting to a pacifist faith: #P -25%#!" + TRADITION_BONUS_DEFENSIVE_WARS:0 "Stalwart [culture|E]: $VALUE|+=0$" + TRADITION_BONUS_WHITE_PEACE:0 "$tradition_astute_diplomats_name$ [culture_tradition|E]: $VALUE|+=0$" + culture_parameter_rowdy_trait_more_common:0 "[children|E] are more likely to get the [GetTrait('rowdy').GetName( GetNullCharacter )] [trait|E]" + culture_parameter_pensive_trait_less_common:0 "[children|E] are less likely to get the [GetTrait('pensive').GetName( GetNullCharacter )] [trait|E]" + culture_parameter_pensive_trait_more_common:0 "[children|E] are more likely to get the [GetTrait('pensive').GetName( GetNullCharacter )] [trait|E]" + culture_parameter_rowdy_trait_less_common:0 "[children|E] are less likely to get the [GetTrait('rowdy').GetName( GetNullCharacter )] [trait|E]" + culture_parameter_cheaper_convert_to_local_culture:0 "#V $convert_to_local_culture_decision$#! [decision|E] Cost: [prestige_i]#P -75%#!" + culture_parameter_expensive_convert_to_local_culture:0 "#V $convert_to_local_culture_decision$#! [decision|E] Cost: [prestige_i]#N +300%#!" + culture_parameter_winter_trait_bonuses:0 "Some [commander_traits|E] and [personality_traits|E] have extra Winter bonuses" + culture_parameter_forest_trait_bonuses:0 "Some [commander_traits|E] and [personality_traits|E] have extra Forest bonuses" + culture_parameter_mountain_trait_bonuses:0 "Some [commander_traits|E] and [personality_traits|E] have extra Mountain bonuses" + culture_parameter_dry_trait_bonuses:0 "Some [commander_traits|E] and [personality_traits|E] have extra Dry Terrain bonuses" + culture_parameter_hill_trait_bonuses:0 "Some [commander_traits|E] and [personality_traits|E] have extra Hill bonuses" + culture_parameter_jungle_trait_bonuses:0 "Some [commander_traits|E] and [personality_traits|E] have extra Jungle bonuses" + culture_parameter_eunuch_trait_bonuses:0 "The [GetTrait('eunuch_1').GetName( GetNullCharacter )] and [GetTrait('beardless_eunuch').GetName( GetNullCharacter )] [traits|E] grant additional [skills|E], [aptitude|E], and [influence|E]" + culture_parameter_can_appoint_chief_eunuch:0 "Can appoint the #high [GetCourtPositionType( 'chief_eunuch_court_position' ).GetName()]#! [court_position|E]" + culture_parameter_palace_politics_trait_bonuses: "[GetTrait('loyal').GetName( GetNullCharacter )], [GetTrait('deceitful').GetName( GetNullCharacter )], [GetTrait('ambitious').GetName( GetNullCharacter )], [GetTrait('arbitrary').GetName( GetNullCharacter )], and [GetTrait('paranoid').GetName( GetNullCharacter )] [characters|E] gain additional monthly [influence|E]" + culture_parameter_palace_politics_trait_maluses: "[GetTrait( 'shy' ).GetName( GetNullCharacter )], [GetTrait( 'trusting' ).GetName( GetNullCharacter )], [GetTrait( 'maimed' ).GetName( GetNullCharacter )], [GetTrait( 'one_eyed' ).GetName( GetNullCharacter )], [GetTrait( 'one_legged' ).GetName( GetNullCharacter )], and [GetTrait( 'disfigured' ).GetName( GetNullCharacter )] [characters|E] have reduced monthly [influence|E]" + culture_parameter_physical_disfigurement_blocks_inheritance:1 "Physically disfigured and infertile [claimants|E] cannot press their [claims|E] against [rulers|E] of this [culture|E]" + culture_parameter_infertility_blocks_inheritance:0 "Infertile characters cannot inherit [titles|E]" + culture_parameter_can_recruit_winter_specialist:0 "Gain a [decision|E] to recruit Winter [commanders|E]" + culture_parameter_can_recruit_forest_specialist:0 "Gain a [decision|E] to recruit Forest [commanders|E]" + culture_parameter_can_recruit_open_specialist:0 "Gain a [decision|E] to recruit Open Terrain [commanders|E]" + culture_parameter_unlock_horse_pastures_building:0 "Can always build #V $building_type_horse_pastures_01$#! in [holdings|E] of this [culture|E]" + culture_parameter_can_recruit_mountain_specialist:0 "Gain a [decision|E] to recruit Mountain [commanders|E]" + culture_parameter_can_recruit_dry_specialist:0 "Gain a [decision|E] to recruit Dry Terrain [commanders|E]" + culture_parameter_can_recruit_hill_specialist:0 "Gain a [decision|E] to recruit Hill [commanders|E]" + culture_parameter_can_recruit_jungle_specialist:0 "Gain a [decision|E] to recruit Jungle [commanders|E]" + culture_parameter_winter_soldier_trait_more_common:0 "The [GetTrait('winter_soldier').GetName( GetNullCharacter )] [commander_trait|E] is more common" + culture_parameter_forest_fighter_trait_more_common:0 "The [GetTrait('forest_fighter').GetName( GetNullCharacter )] [commander_trait|E] is more common" + culture_parameter_rough_terrain_expert_trait_more_common:0 "The [GetTrait('rough_terrain_expert').GetName( GetNullCharacter )] [commander_trait|E] is more common" + culture_parameter_desert_warrior_trait_more_common:0 "The [GetTrait('desert_warrior').GetName( GetNullCharacter )] [commander_trait|E] is more common" + culture_parameter_jungle_stalker_trait_more_common:0 "The [GetTrait('jungle_stalker').GetName( GetNullCharacter )] [commander_trait|E] is more common" + culture_parameter_elephant_bonuses_for_rank_4_education:1 "[rulers|E] with high $game_concept_education_traits$ are considered a #EMP Gajapati#! and gain significant [elephant_cavalry|E] bonuses" + culture_parameter_build_bonuses_on_religious_traits:1 "[traits|E] such a [GetTrait('education_learning_2').GetName( GetNullCharacter )], [GetTrait('lifestyle_mystic').GetName( GetNullCharacter )], [GetTrait('humble').GetName( GetNullCharacter )] and #EMP especially#! [GetTrait('zealous').GetName( GetNullCharacter )] give [temple|E] construction bonuses" + culture_parameter_more_fervor_on_church_construction:0 "Constructing [temples|E] grants much more [fervor|E]" + culture_parameter_zealous_trait_more_common:0 "The [GetTrait('zealous').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_patient_trait_more_common:0 "The [GetTrait('patient').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_calm_trait_more_common:0 "The [GetTrait('calm').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_stubborn_trait_more_common:0 "The [GetTrait('stubborn').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_just_trait_more_common:0 "The [GetTrait('just').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_honest_trait_more_common:0 "The [GetTrait('honest').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_generous_trait_more_common:0 "The [GetTrait('generous').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_compassionate_trait_more_common:0 "The [GetTrait('compassionate').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_lustful_trait_less_common: "The [GetTrait('lustful').GetName( GetNullCharacter )] [trait|E] is less common" + culture_parameter_gives_more_gifts:0 "[rulers|E] of this [culture|E] use the [send_gift|E] [interaction|E] more often" + culture_parameter_more_gift_opinion:0 "[opinion|E] Gain from [send_gift|E]: #P +20%#!" + culture_parameter_temperate_trait_more_common:0 "The [GetTrait('temperate').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_harder_to_convert_character_faith:0 "[characters|E] are less likely to accept conversion" + culture_parameter_harder_to_convert_county_faith:0 "County Conversion Resistance: #P +30%#!" + culture_parameter_charming_trait_more_common:0 "[children|E] are more likely to get the [GetTrait('charming').GetName( GetNullCharacter )] [trait|E]" + culture_parameter_diplomacy_education_better_outcomes:0 "[children|E] tend to do better in the [diplomacy|E] [education|E]" + culture_parameter_martial_education_worse_outcomes:0 "[children|E] tend to do slightly worse in the [martial|E] [education|E]" + culture_parameter_hard_working_traits_more_valued:0 "The [GetTrait('diligent').GetName( GetNullCharacter )], [GetTrait('patient').GetName( GetNullCharacter )], and [GetTrait('athletic').GetName( GetNullCharacter )] [traits|E] have additional bonuses" + culture_parameter_rivalries_more_common:0 "[rivalries|E] are more common" + culture_parameter_vengeful_positive_forgiving_negative:0 "The [GetTrait('vengeful').GetName( GetNullCharacter )] [trait|E] is seen as positive, while the [GetTrait('forgiving').GetName( GetNullCharacter )] [trait|E] is looked down upon" + culture_parameter_craven_and_content_traits_looked_down_upon:0 "The [GetTrait('craven').GetName( GetNullCharacter )] and [GetTrait('content').GetName( GetNullCharacter )] [traits|E] are looked down upon" + culture_parameter_loyal_trait_more_valued:0 "The [GetTrait('loyal').GetName( GetNullCharacter )] [trait|E] is more valued" + culture_parameter_disloyal_trait_less_spurned:0 "The [GetTrait('disloyal').GetName( GetNullCharacter )] [trait|E] is less looked down upon than it is in other cultures" + culture_parameter_disloyal_trait_more_common:0 "The [GetTrait('disloyal').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_loyal_trait_more_common:0 "The [GetTrait('loyal').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_knights_slightly_more_prone_to_injury:0 "[knights|E] are slightly more prone to injury during [battles|E]" + culture_parameter_vengeful_trait_more_common:0 "The [GetTrait('vengeful').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_hostile_action_vs_rival_bonuses:0 "[hostile_scheme|E] [success_chance|E] vs. Rivals: #P +15#!" + culture_parameter_elephant_pens_building_bonuses:0 "The #V $building_type_elephant_pens_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_pastures_building_bonuses:0 "The #V $building_type_pastures_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_hill_farms_building_bonuses:0 "The #V $building_type_hill_farms_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_logging_camps_building_bonuses:0 "The #V $building_type_logging_camps_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_quarries_building_bonuses:0 "The #V $building_type_quarries_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_plantations_building_bonuses:0 "The #V $building_type_plantations_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_outposts_building_bonuses:0 "The #V $building_type_outposts_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_introverted_trait_bonuses:1 "The [GetTrait('chaste').GetName( GetNullCharacter )], [GetTrait('content').GetName( GetNullCharacter )], [GetTrait('humble').GetName( GetNullCharacter )], [GetTrait('shy').GetName( GetNullCharacter )], and [GetTrait('temperate').GetName( GetNullCharacter )] [traits|E] give bonuses" + culture_parameter_knight_errant_trait_bonuses: "The [GetTrait('knight_errant').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_poorly_educated_leaders_distrusted:0 "[rulers|E] with poor [education_traits|E], such as [GetTrait('education_stewardship_1').GetName( GetNullCharacter )] or [GetTrait('education_diplomacy_1').GetName( GetNullCharacter )], are distrusted" + culture_parameter_city_buildings_more_powerful:0 "[city_holdings|E] give more [taxes|E], [development|E] and [levies|E]" + culture_parameter_city_buildings_less_control:0 "[city_holdings|E] significantly lowers [control|E] gain" + culture_parameter_peasant_and_populist_factions_less_common:0 "Different-[culture|E] [peasant_factions|E] and [popular_factions|E] are less common" + culture_parameter_unlock_garuda_warrior_title:0 "Can appoint [knights|E] to the #V [GetCourtPositionType( 'garuda_court_position' ).GetName()]#! [court_position|E]" + culture_parameter_can_travel_along_rivers:0 "$unlocks_sailable_major_rivers$" + culture_parameter_wanderers_learn_languages:0 "[wanderers|E] tend to learn many [languages|E]" + culture_parameter_extra_language_cap:0 "Can learn #V 1#! additional [language|E] without any penalties" + culture_parameter_extra_language_cap_2:0 "$culture_parameter_extra_language_cap$" + culture_parameter_coastal_agriculture_building_bonuses:0 "The #V $building_type_pastures_01$#!, #V $building_type_cereal_fields_01$#!, #V $building_type_peat_quarries_01$#!, #V $building_type_farm_estates_01$#!, and #V $building_type_orchards_01$#! line of [buildings|E] have additional bonuses in Coastal [baronies|E] in [counties|E] of this [culture|E]" + culture_parameter_coastal_tribe_bonuses: "Bonus to [stationed|E] [men_at_arms|E] in coastal [tribal|E] [holdings|E]" + culture_parameter_coastal_holding_bonuses:0 "Bonus to construction speed of coastal [holdings|E]" + culture_parameter_can_levy_longbowmen:0 "Unlocks the [levy_longbowmen_decision|E]" + culture_parameter_archer_era_improvement:1 "The [GetMaA('longbowmen').GetName] [men_at_arms|E] get increasingly better every [era|E]" + culture_parameter_next_level_trade_ports:0 "The #V $building_type_common_tradeport_01$#! line of [buildings|E] can be constructed one [era|E] early" + culture_parameter_next_level_military_camps: "The #V $building_type_military_camps_01$#! line of [buildings|E] can be constructed one [era|E] early" + culture_parameter_next_level_barracks: "The #V $building_type_barracks_01$#! line of [buildings|E] can be constructed one [era|E] early" + culture_parameter_next_level_stables: "The #V $building_type_stables_01$#! line of [buildings|E] can be constructed one [era|E] early" + culture_parameter_formation_fighting_strategist: "The [GetTrait('strategist').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_maritime_mercantilism_coastal_holdings:1 "Coastal [holdings|E] in [counties|E] of this [culture|E] provide an additional #P +[EmptyScope.ScriptValue('maritime_mercantilism_coastal_holdings_value_tt')|0]%#! [gold_i][tax|E]" + culture_parameter_coastal_holdings_give_defensive_bonus:0 "Coastal [holdings|E] in [counties|E] of this [culture|E] provide additional Defender [advantage|E]" + culture_parameter_castle_fortifications_increase:1 "[castles|E] in [counties|E] of this [culture|E] provide an additional #V 5#! $MOD_DEFENDER_HOLDING_ADVANTAGE$ per [holding|E] level" + culture_parameter_castle_keepers_levies_and_gold:0 "[castle|E] [holdings|E] give fewer [levies|E] and less [income|E] per level" + culture_parameter_castle_grant_prestige:0 "[rulers|E] of this [culture|E] gain [prestige_i][prestige|E] and [dynasty_prestige_i][dynasty_prestige|E] from [castle|E] [holdings|E]" + culture_parameter_architect_trait_prestige:1 "The [GetTrait('architect').GetName( GetNullCharacter )] [trait|E] provides a [prestige_i][prestige|E] bonus" + culture_parameter_herbalist_trait_gives_bonuses:0 "The [GetTrait('lifestyle_herbalist').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_ai_more_likely_to_castle:0 "[rulers|E] of this [culture|E] are more likely to construct [castle|E] [holdings|E]" + culture_parameter_ai_more_likely_to_fortify:0 "[rulers|E] of this [culture|E] are more likely to construct [buildings|E] that increase [fort_level|E]" + culture_parameter_next_level_guild_halls:0 "The #V $building_type_guild_halls_01$#! line of [buildings|E] can be constructed one [era|E] early" + culture_parameter_ai_more_likely_to_city:0 "[rulers|E] of this [culture|E] are more likely to construct [city|E] [holdings|E]" + culture_parameter_culture_can_raid_at_sea_even_if_feudal:3 "[duchy|E]-[title_tier|E] and lower [rulers|E] may [raid|E] over seas, regardless of [government|E]" + culture_parameter_culture_can_raid_over_land_even_if_feudal:1 "[duchy|E]-[title_tier|E] and lower [rulers|E] may [raid|E] over land, regardless of [government|E]" + culture_parameter_culture_can_raid_at_sea_even_if_feudal_no_restrictions:0 "[rulers|E] may [raid|E] over seas, regardless of [government|E]" + culture_parameter_culture_can_raid_over_land_even_if_feudal_no_restrictions:0 "[rulers|E] may [raid|E] over land, regardless of [government|E]" + culture_parameter_not_tribal_raiding_malus:2 "When returning from a successful [raid|E], non-[tribal|E] characters #EMP lose#! [EmptyScope.ScriptValue('not_tribal_raid_prestige_multiplier')|1] [prestige_i][prestige|E] per 1 [loot|E] delivered" + culture_parameter_refuses_vassalisation:0 "[independent|E] [rulers|E] will never accept the #high $offer_vassalization_interaction$#! [interaction|E]" + culture_parameter_independent_ruler_defense_bonus:1 "When defending their [primary_title|E] or their independence in a [war|E], [independent|E] [rulers|E] of [duke|E] [rank|E] or lower receive an #P [EmptyScope.ScriptValue('determined_independence_defensive_advantage_value')|0]#! [advantage|E] bonus in [battle|E]" + culture_parameter_renown_gain_on_war_victory:1 "[independent|E] [rulers|E] gain [dynasty_prestige_i][dynasty_prestige|E] after winning certain [wars|E], such as Independence Wars as the attacker, or Vassalization Wars as the defender" + culture_parameter_culture_defensive_leagues:0 "[independent|E] [rulers|E] who are the primary defenders in a non-religious [war|E] are likely to receive #high $join_war_interaction$#! requests from nearby $game_concept_rulers$ of the same [culture|E]" + culture_parameter_grant_independence_prestige_and_renown_gain:1 "[independent|E] [rulers|E] that $grant_independence_interaction$ to their [vassals|E] gain [prestige_i][prestige|E] and [dynasty_prestige_i][dynasty_prestige|E]" + culture_parameter_grant_independence_opinion_buff:0 "[vassals|E] of this [culture|E] that receive independence will be much better disposed towards their former [liege|E]" + culture_parameter_gi_truces_last_longer:0 "[truces|E] formed as a result of a #high $grant_independence_interaction$#! [interaction|E] between a [liege|E] and their former [vassal|E] last longer" + culture_parameter_more_parochial_vassals:0 "$parochial_vassals$ are more common" + culture_parameter_byzantine_faction_differences:0 "[vassals|E] of this [culture|E] are less likely to join [dissolution_factions|E] against the [holder|E] of the #V $e_byzantium$#!" + culture_parameter_byzantine_faction_preffered_claimants:0 "[vassals|E] of this [culture|E] are much more likely to join [claimant_factions|E] against the [holder|E] of the #V $e_byzantium$#! if they are not the [preferred_heir|E]" + + culture_parameter_blindness_blocks_inheritance:0 "[GetTrait('blind').GetName( GetNullCharacter )] characters cannot inherit [titles|E]" + culture_parameter_merciful_blinding:1 "Using the $blind_interaction$ [interaction|E] on [criminals|E] with a [banish_reason|E] or [execute_reason|E] grants [piety_i][piety|E]" + culture_parameter_can_make_republican_vassals:1 "[rulers|E] of this [culture|E] can appoint up to #V [EmptyScope.ScriptValue('republican_vassal_interaction_limit')|0]#! [counts|E] to be overseers of local cities, turning them into [republican|E] [vassals|E]" + culture_parameter_republican_vassals_pay_more:0 "Republican [vassals|E] above the rank of [baron|E] provide more [taxes|E] and [levies|E]" + culture_parameter_characters_are_better_court_musicians:1 "[characters|E] of this [culture|E] perform better when appointed to the #high [GetCourtPositionType('court_musician_court_position').GetName]#! [court_position|E]" + culture_parameter_better_court_musicians: "[SelectLocalization( HasDlcFeature( 'royal_court' ), 'culture_parameter_better_court_musicians_has_dlc', 'culture_parameter_better_court_musicians_no_dlc' )]" + culture_parameter_better_court_musicians_has_dlc: "Unlock the #V [GetCourtPositionType('court_musician_court_position').GetName]#! [court_position|E] one [title_tier|E] earlier\n$EFFECT_LIST_BULLET$The #V [GetCourtPositionType('court_musician_court_position').GetName]#! [court_position|E] increases monthly [prestige_i][prestige|E]" + culture_parameter_better_court_musicians_no_dlc: "" # Intentionally empty + court_position_musicians_free: "Improved #V [GetCourtPositionType('court_musician_court_position').GetName]#!" + culture_parameter_characters_are_better_food_tasters:0 "[characters|E] of this [culture|E] perform better when appointed to the #high [GetCourtPositionType('food_taster_court_position').GetName]#! [court_position|E]" + culture_parameter_better_food_tasters: "[SelectLocalization( HasDlcFeature( 'royal_court' ), 'culture_parameter_better_food_tasters_has_dlc', 'culture_parameter_better_food_tasters_no_dlc' )]" + culture_parameter_better_food_tasters_has_dlc: "Unlock the #V [GetCourtPositionType('food_taster_court_position').GetName]#! [court_position|E] one [title_tier|E] earlier\n$EFFECT_LIST_BULLET$The #V [GetCourtPositionType('food_taster_court_position').GetName]#! [court_position|E] increases monthly [prestige_i][prestige|E]" + culture_parameter_better_food_tasters_no_dlc: "" # Intentionally empty + court_position_food_tasters_free: "Improved #V [GetCourtPositionType('food_taster_court_position').GetName]#!" + culture_parameter_characters_are_better_court_poets:0 "[characters|E] of this [culture|E] perform better when appointed to the #high [GetCourtPositionType('court_poet_court_position').GetName]#! [court_position|E]" + culture_parameter_naked_culture_active: "[characters|E] of this [culture|E] will be nude" + culture_parameter_characters_are_better_court_gardeners: "[characters|E] of this [culture|E] perform better when appointed to the #high $court_gardener_court_position$#! [court_position|E]" + culture_parameter_better_court_poets: "[SelectLocalization(HasDlcFeature('royal_court'), 'culture_parameter_better_court_poets_has_dlc', 'culture_parameter_better_court_poets_no_dlc')]" + culture_parameter_better_court_poets_has_dlc: "Unlock the #V [GetCourtPositionType('court_poet_court_position').GetName]#! [court_position|E] one [title_tier|E] earlier\n$EFFECT_LIST_BULLET$The #V [GetCourtPositionType('court_poet_court_position').GetName]#! [court_position|E] increases monthly [prestige_i][prestige|E]" + culture_parameter_better_court_poets_no_dlc: "" # Intentionally empty + court_position_poets_free: "Improved #V [GetCourtPositionType('court_poet_court_position').GetName]#!" + + culture_parameter_frugal_blacksmith_maa_size: "The #V $building_type_smiths_01$#! line of [buildings|E] increase the #V Number of [knight_i][knights|E]#! and the #V Size of [men_at_arms|E] [regiments|E]#!" + culture_parameter_warrior_lodges_lift_restrictions: "The #V $building_type_warrior_lodges_01$#! line of [buildings|E] can always be constructed in [counties|E] of this [culture|E]" + culture_parameter_strength_in_numbers_maa_limit_bonus: "The #V $building_type_barracks_01$#! and #V $building_type_war_camps_01$#! lines of [buildings|E] increase the #V [men_at_arms|E] Regiment Limit#!" + culture_parameter_strength_in_numbers_heavy_maa_ban: "@warning_icon! #X [heavy_infantry|E], [heavy_cavalry|E] and [elephant_cavalry|E] [men_at_arms|E] cannot be recruited by [rulers|E] of this [culture|E]#!" + culture_parameter_next_level_w_mills: "The #V $building_type_watermills_01$#! and #V $building_type_windmills_01$#! lines of [buildings|E] can be constructed one [era|E] early" + culture_parameter_next_level_smiths: "The #V $building_type_smiths_01$#! line of [buildings|E] can be constructed one [era|E] early" + culture_parameter_astute_diplomat_bonus: "The [GetTrait('diplomat').GetName( GetNullCharacter )] [trait|E] provides additional bonuses" + culture_parameter_unlocks_purchase_truce: "Unlocks the #V $purchase_truce_interaction$#! [interaction|E]" + culture_parameter_collective_lands_farms_bonuses: "The #V $building_type_cereal_fields_01$#! line of [buildings|E] provide [stationed|E] [men_at_arms|E] bonuses" + culture_parameter_peasant_leader_is_inherited: "The [GetTrait('peasant_leader').GetName( GetNullCharacter )] [trait|E] is inherited upon reaching adulthood" + culture_parameter_watermills_windmills_cities: "#V $building_type_watermills_01$#! or #V $building_type_windmills_01$#! or #V $building_type_caravanserai_01$#! lines of [buildings|E] can be constructed in [city_holdings|E] after discovering the #V $innovation_windmills$#! [innovation|E]" + culture_parameter_temple_next_level: "[temple_holdings|E] can be upgraded one [era|E] early" + culture_parameter_tribals_can_into_temples: "[temple_holdings|E] can be constructed by [tribal|E] [rulers|E]" + culture_parameter_legalistic_administrator_bonuses: "The [GetTrait('administrator').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_next_level_monasteries: "The #V $building_type_monastic_schools_01$#! line of [buildings|E] can be built one [era|E] early" + culture_parameter_monastic_monastery_learning_bonus: "The #V $building_type_monastic_schools_01$#! line of [buildings|E] provide additional [learning|E] bonuses" + culture_parameter_next_level_fortification: "The #V Fortification#! lines of [buildings|E] can be built one [era|E] earlier" + culture_parameter_next_level_cities: "The #V [city|E]#! main [buildings|E] can be built one [era|E] earlier" + culture_parameter_maritime_mercantilism_avaricious_bonus: "The [GetTrait('avaricious').GetName( GetNullCharacter )] [trait|E] provides additional bonuses" + culture_parameter_vegetarian_building_ban: "The #V $building_type_hunting_grounds_01$#! line of [buildings|E] #X cannot#! be constructed in [counties|E] of this [culture|E]" + culture_parameter_vegetarian_next_level_cereal_fields: "The #V $building_type_cereal_fields_01$#! line of [buildings|E] can be built one [era|E] early" + culture_parameter_vegetarian_fruit_orchard_allowed: "The #V $building_type_orchards_01$#! line of [buildings|E] can always be constructed in [counties|E] of this [culture|E]" + culture_parameter_ancient_miners_quarries_building_bonuses: "The #V $building_type_quarries_01$#! line of [buildings|E] provide additional bonuses" + culture_parameter_rice_cultivators_next_level_paddy_fields: "All #V $building_type_paddy_fields_01$#! line of [buildings|E] may be built an [era|E] early" + culture_parameter_rice_cultivators_can_construct_paddy_fields_in_hills_and_jungle: "The [GetBuilding('paddy_fields_01').GetTypeName|V] and [GetBuilding('farm_estates_01').GetTypeName|V] line of [buildings|E] may be built in [GetTerrain( 'hills' ).GetName] and [GetTerrain( 'jungle' ).GetName]" + + next_level_trade_ports_name: "#V $tradition_maritime_mercantilism_name$#!" + next_level_military_camps_name: "#V $tradition_adaptive_skirmishing_name$#!" + next_level_barracks_name: "#V $tradition_formation_fighting_name$#!" + next_level_stables_name: "#V $tradition_horse_breeder_name$#!" + next_level_guild_halls_name: "#V $tradition_city_keepers_name$#!" + next_level_w_mills_name: "#V $tradition_hard_working_name$#!" + next_level_smiths_name: "#V $tradition_metal_craftsmanship_name$#!" + temple_next_level_name: "#V $tradition_fervent_temple_builders_name$#!" + tribals_can_into_temples_name: "$temple_next_level_name$" + next_level_monasteries_name: "#V $tradition_monastic_communities_name$#!" + next_level_fortification_name: "#V $tradition_stalwart_defenders_name$#!" + next_level_cities_name: "[GetCultureTradition('tradition_parochialism').GetName] or [GetCultureTradition('tradition_republican_legacy').GetName]" + vegetarian_next_level_cereal_fields_name: "#V $tradition_vegetarianism_name$#!" + rice_cultivators_next_level_paddy_fields_name: "#V $tradition_tgp_rice_cultivators_name$#!" + vegetarian_building_ban_name: "#V $tradition_vegetarianism_name$#!" + warrior_lodges_lift_restrictions_name: "#V $tradition_reverence_for_veterans_name$#!" + farm_estates_pastures_unlock_name: "#V $tradition_pastoralists_name$#!" + watermills_forestries_unlock_name: "#V $tradition_forest_wardens_name$#!" + windmills_hill_farms_unlock_name: "#V $tradition_hill_dwellers_name$#!" + second_caravanserai_name: "#V $tradition_caravaneers_name$#!" + +### Decision loc + recruit_terrain_specialist_decision: "Recruit Terrain Specialist" + CHOOSE_TERRAIN_SPECIALIST_DECISION_NEXT_STEP_BUTTON: "Choose Terrain Specialist" + recruit_terrain_specialist_decision_confirm: "Recruit" + recruit_terrain_specialist_decision_tooltip: "You seek out a highly-skilled [commander|E] with the selected [commander_trait|E] to join your [court|E]\n\n#weak Your [culture_traditions|E] affect the types of commanders you may recruit#!" + recruit_terrain_specialist_decision_minister_tooltip: "You seek out a highly-skilled [commander|E] with the selected [commander_trait|E] to join your [court|E]\n\n#weak As a [minister|E], you may recruit any type of commander#!" + + recruit_winter_specialist_decision:0 "Recruit Winter Specialist" + recruit_winter_specialist_decision_desc:0 "My hardy people, the [ROOT.Char.GetCulture.GetCollectiveNoun], are masters of the cold. Should I require an expert commander to guide my troops through the unforgiving winter, I need but to send word — there is no shortage of frost-bitten veterans willing to heed my call." + recruit_winter_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('winter_soldier').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_winter_specialist_decision_tooltip:0 "$recruit_winter_specialist_decision.tt$" + recruit_winter_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_forest_specialist_decision:0 "Recruit Forest Specialist" + recruit_forest_specialist_decision_desc:0 "The [ROOT.Char.GetCulture.GetCollectiveNoun] treat the forest as their second home. It offers protection, shelter, and fuel for the hearth. If I need someone to guide my troops through the deep and treacherous forests, there's no shortage of willing hunters to heed the call." + recruit_forest_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('forest_fighter').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_forest_specialist_decision_tooltip:0 "$recruit_forest_specialist_decision.tt$" + recruit_forest_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_mountain_specialist_decision:0 "Recruit Mountain Specialist" + recruit_mountain_specialist_decision_desc:0 "My tough people, the [ROOT.Char.GetCulture.GetCollectiveNoun], can navigate the most treacherous mountain pass. If I want to move and fight in the mountains, I can call upon a seasoned guide to help my army find its way." + recruit_mountain_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('rough_terrain_expert').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_mountain_specialist_decision_tooltip:0 "$recruit_mountain_specialist_decision.tt$" + recruit_mountain_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_dry_specialist_decision:0 "Recruit Dry Terrain Specialist" + recruit_dry_specialist_decision_desc:0 "The [ROOT.Char.GetCulture.GetCollectiveNoun] are used to the scorching heat of the sun, and travel far and wide under its scorching influence. If I wish to move my armies without having them perish in the heat, I should ask for their guidance." + recruit_dry_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('desert_warrior').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_dry_specialist_decision_tooltip:0 "$recruit_dry_specialist_decision.tt$" + recruit_dry_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_hill_specialist_decision:0 "Recruit Hill Specialist" + recruit_hill_specialist_decision_desc:0 "The [ROOT.Char.GetCulture.GetCollectiveNoun] are at home in the hills and valleys where they herd their animals and fend off wild animals with ease. There's no shortage of skilled herders who would do just as well guiding an army." + recruit_hill_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('rough_terrain_expert').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_hill_specialist_decision_tooltip:0 "$recruit_hill_specialist_decision.tt$" + recruit_hill_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_jungle_specialist_decision:0 "Recruit Jungle Specialist" + recruit_jungle_specialist_decision_desc:0 "The jungle is harsh and treacherous to travel — but my people, the [ROOT.Char.GetCulture.GetCollectiveNoun], have mastered the art of traversing it. Seasoned explorers and guides stand at the ready to see my forces through this lush but deadly terrain." + recruit_jungle_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('jungle_stalker').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_jungle_specialist_decision_tooltip:0 "$recruit_jungle_specialist_decision.tt$" + recruit_jungle_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_open_specialist_decision:0 "Recruit Plains Specialist" + recruit_open_specialist_decision_desc:0 "In a sea of grass maneuver is almost entirely unrestricted, the [ROOT.Char.GetCulture.GetCollectiveNoun], have mastered the art of how to best make use of this mobility. Within the ranks of our own we would be able to quickly find commanders who would use our forces for envelopments and encirclements." + recruit_open_specialist_decision.tt:0 "A high-[martial|E] [commander|E] with the [GetTrait('open_terrain_expert').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_open_specialist_decision_tooltip:0 "$recruit_open_specialist_decision.tt$" + recruit_open_specialist_decision_confirm:0 "$invite_knights_decision_confirm$" + + recruit_terrain_specialist_decision_desc: "Our enemies are innumerable, and our armies cannot always choose the grounds on which we face them.\n\nTo ensure victory on every front, we require commanders who can skilfully turn even the land itself to our advantage." + + commander_recruited.t:0 "Commander Recruited" + commander_recruited.desc:0 "[new_commander.GetUIName] joined your court!" + + recruit_gardener_decision:0 "Recruit Gardener" + recruit_gardener_decision_desc:0 "We [ROOT.Char.GetCulture.GetCollectiveNoun] have extensive knowledge in shaping and caring for gardens of all types. There are plenty of skilled gardeners out there whose expertise I can put to great use." + recruit_gardener_decision_tt:0 "A high-[stewardship|E] [courtier|E] with the [GetTrait('lifestyle_gardener').GetName( GetNullCharacter )] [trait|E] joins your [court|E]" + recruit_gardener_decision_tooltip:0 "$recruit_gardener_decision_tt$" + recruit_gardener_decision_confirm:0 "$invite_knights_decision_confirm$" + gardener_recruited.t:0 "Gardener Recruited" + + ## Interactions Desc + offer_vassalization_interaction_determined_independence_tt:1 "[recipient.GetShortUINamePossessive|U] [culture|E] has the #high $tradition_determined_independence_name$#! [culture_tradition|E]: $VALUE|+=0$" + join_war_interaction_determined_independence:0 "[CHARACTER.GetUIName] does not share our [culture|E]" + merciful_blinding_interaction_tt:0 "Blinding [recipient.GetUIName] instead of [executing|E] [recipient.GetHerHim] will be considered an act of mercy by [vassals|E] who are not part of [recipient.GetUINamePossessiveNoTooltip] [close_family|E], as [recipient.GetUINameNoTooltip] is a [claimant|E] to one of your [titles|E]" + all_unrelated_vassals_to_recipient:0 "All vassals of [THIS.GetCharacter.GetShortUIName] who are not members of [recipient.GetShortUINamePossessive] [close_family|E]" + merciful_blindings_disinherited:1 "[recipient.GetUIName] is [GetTrait('blind').GetName( recipient.Self )] and cannot inherit titles according to their [culture_tradition|E]s" + + ## Modifiers + determined_independence_defender_bonus:0 "Determined to be Free" + determined_independence_defender_bonus_desc:0 "This character, true to their cultural heritage, will fight for their independence with all the skill and strength they can muster." + + ## Opinions + determined_independence_granted_opinion:0 "Granted Independence" + + ## Trait Loc + trait_culture_disinherited:0 "Disinherited" + trait_culture_disinherited_desc:0 "This character has been disinherited by the customs of their culture and cannot inherit any title." + + culture_parameter_courtiers_and_guests_less_likely_to_join_schemes:0 "[rulers|E] are less likely to have [courtiers|E] and [guests|E] join [hostile_schemes|E] against them" + culture_parameter_court_machinations_eunuch_trait_bonuses: "The [GetTrait('eunuch_1').GetName( GetNullCharacter )] and [GetTrait('beardless_eunuch').GetName( GetNullCharacter )] [traits|E] grant additional [skills|E], [aptitude|E], [merit|E] and [influence|E]" + culture_parameter_eunuch_powerful_scheme_agents: "Characters who are [GetTrait('eunuch_1').GetName( GetNullCharacter )] or [GetTrait('beardless_eunuch').GetName( GetNullCharacter )] are more powerful [agents|E] in schemes" + culture_parameter_courtiers_more_likely_to_join_hostile_schemes_in_court: "[courtiers|E] are more likely to join [hostile_schemes|E] against fellow [courtiers|E]" + culture_parameter_cheaper_cbs:1 "[casus_belli|E] Cost: [prestige_i]#P -20%#!" + culture_parameter_innovation_from_learning_traits:1 "[learning|E] [education_traits|E] and the [GetTrait('scholar').GetName( GetNullCharacter )] [trait|E] also give [cultural_fascination|E] Progress" + culture_parameter_cannot_attack_allies:1 "Cannot attack [allies|E]" + culture_parameter_cannot_attack_truces:0 "Cannot attack through a [truce|E]" + culture_parameter_facilitate_alliance_acceptance:0 "[alliance|E] Negotiation Acceptance: #P +50#!" + culture_parameter_facilitate_white_peace:0 "[white_peace|E] Acceptance: #P +10#!" + culture_parameter_more_frequent_hunts:1 "Delay between [GetActivityType('activity_hunt').GetName] [activities|E]: #P -50% #!" + culture_parameter_cannot_hunt:2 "Cannot use the [GetActivityType('activity_hunt').GetName] [activity|E]" + culture_parameter_sacred_hunts:2 "Completing a [GetActivityType('activity_hunt').GetName] [activity|E] provides [piety_i][piety|E]" + culture_parameter_hunting_traits_more_common:1 "[characters|E] gain [GetTrait('lifestyle_hunter').GetName( GetNullCharacter )] [traits|E] more often" + culture_parameter_reveler_traits_more_common:1 "[characters|E] gain [GetTrait('lifestyle_reveler').GetName( GetNullCharacter )] [traits|E] more often" + culture_parameter_hunting_traits_more_valued:3 "[GetTrait('lifestyle_hunter').GetName( GetNullCharacter )] [trait|E] is seen as [prestige_i][prestigious|E]" + culture_parameter_hunting_traits_more_pious:2 "[GetTrait('lifestyle_hunter').GetName( GetNullCharacter )] [trait|E] is seen as [piety_i][pious|E]" + culture_parameter_reveler_traits_more_valued:3 "[GetTrait('lifestyle_reveler').GetName( GetNullCharacter )] [trait|E] is seen as [prestige_i][prestigious|E]" + culture_parameter_prestige_gain_on_building_complete_in_mountains:1 "Gain [prestige_i][prestige|E] when completing [buildings|E] in [holdings|E] with either [GetTerrain( 'mountains' ).GetName] or [GetTerrain( 'desert_mountains' ).GetName] [terrain|E]" + culture_parameter_prestige_gain_on_building_complete_in_mountains_forest: "Gain [prestige_i][prestige|E] when completing [buildings|E] in [holdings|E] with either [GetTerrain( 'mountains' ).GetName] or [GetTerrain( 'forest' ).GetName] [terrain|E]" + culture_parameter_more_frequent_feasts:0 "Delay between [GetActivityType('activity_feast').GetName] and [GetActivityType('activity_camp_party').GetName] [activities|E]: #P -50% #!" + culture_parameter_refined_feasts:2 "Successful [GetActivityType('activity_feast').GetName] [activities|E] give more [prestige_i][prestige|E]" + culture_parameter_more_expensive_feasts:0 "[GetActivityType('activity_feast').GetName] [activity|E] Cost: [gold_i]#N +100%#!" + culture_parameter_renown_from_feasts:0 "Successful [GetActivityType('activity_feast').GetName] [activities|E] give [dynasty_prestige_i][dynasty_prestige|E]" + culture_parameter_free_ritual_tenets:0 "The $tenet_carnal_exaltation_name$ and $tenet_ritual_celebrations_name$ [core_tenets|E] are free when creating a new [faith|E]" + culture_parameter_better_ward_education:1 "[guardians|E] of this [culture|E] are more effective" + culture_parameter_tells_stories:0 "Characters tell each other stories, increasing [skills|E]" + culture_parameter_herbalist_traits_more_common:0 "[characters|e] gain the [GetTrait('lifestyle_herbalist').GetName( GetNullCharacter )] [trait|E] more often" + culture_parameter_more_easily_converted:0 "[counties|E] of this culture are more easily converted to another [faith|E]" + culture_parameter_unlock_admiring_birds_activity:0 "Unlocks the $admiring_birds_decision$ [decision|E]" + culture_parameter_desert_warrior_trait_is_better:1 "The [GetTrait('desert_warrior').GetName( GetNullCharacter )] [commander_trait|E] has additional [camel_cavalry|E] bonuses" + culture_parameter_humble_trait_more_common:0 "The [GetTrait('humble').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_diligent_trait_more_common: "The [GetTrait('diligent').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_content_trait_more_common:0 "The [GetTrait('content').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_cheaper_guest_recruitment:0 "[guest|E] Recruitment Cost: [gold_i]#P -20%#!" + culture_parameter_cheaper_court_positions:0 "[court_position|E] Salary Cost: [gold_i]#P -20%#!" + culture_parameter_cheaper_to_change_laws:0 "[law|E] Cost penalty from [realm_size|E]: #P -50%#!" + culture_parameter_court_physicians_are_better:0 "[characters|E] of this [culture|E] perform better in the role of #high $court_physician_court_position$#!" + culture_parameter_poet_trait_romance_bonuses:1 "The [GetTrait('lifestyle_poet').GetName( GetNullCharacter )] and [GetTrait('gallant').GetName( GetNullCharacter )] [traits|E] give significant [GetScheme('courting').GetTypeName] [scheme|E] bonuses" + culture_parameter_ai_romance_scheme_increase:1 "[rulers|E] are more likely to start the [GetScheme('courting').GetTypeName] [scheme|E]" + culture_parameter_romance_scheme_bonuses:2 "Successfully executing a [GetScheme('courting').GetTypeName] [scheme|E] gives [dynasty_prestige_i][dynasty_prestige|E]" + culture_parameter_romance_scheme_penalty:1 "Failing a [GetScheme('courting').GetTypeName] [scheme|E] gives [stress|E]" + culture_parameter_can_use_sparring_duel:0 "Can spar against own [knights|E] in [single_combat_fight|E] to gain [modifiers|E]" + culture_parameter_no_limit_to_kingdom_level_holy_wars:0 "No limit to the number of [kingdom|E]-level [holy_wars|E] that can be declared by any one [ruler|E]" + culture_parameter_cb_lower_piety_level_requirement:0 "All [casus_bellis|E] that require a specific [piety_level|E] require one less" + culture_parameter_can_host_joust_contests:0 "[SelectLocalization( HasDlcFeature( 'tours_and_tournaments' ), 'can_host_joust_contests_custom_effect_description_TOTO_DLC', 'can_host_joust_contests_custom_effect_description_NO_TOTO_DLC' )]" + can_host_joust_contests_custom_effect_description_TOTO_DLC:0 "Can hold a Joust [contest|E] in a [GetActivityType( 'activity_tournament' ).GetName]" + can_host_joust_contests_custom_effect_description_NO_TOTO_DLC:0 "" + culture_parameter_just_trait_gives_bonuses:0 "The [GetTrait('just').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_trade_port_building_bonuses:1 "The #V $building_type_common_tradeport_01$#! line of [buildings|E] will generate additional tax in [counties|E] of this [culture|E]" + culture_parameter_peat_quarries_building_bonuses:0 "The #V $building_type_peat_quarries_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_trade_ports_give_control_growth:0 "The #V $building_type_common_tradeport_01$#! line of [buildings|E] will increase #V Control Growth#! in [counties|E] of this [culture|E]" + culture_parameter_trade_ports_give_levies:0 "The #V $building_type_common_tradeport_01$#! line of [buildings|E] increase #V Levies#! and #V Size of [men_at_arms|E] [regiments|E]#! in [counties|E] of this [culture|E]" + culture_parameter_mystic_trait_gives_bonuses:1 "The [GetTrait('lifestyle_mystic').GetName( GetNullCharacter )] line of [traits|E] have additional bonuses" + culture_parameter_mystic_trait_more_common:1 "The [GetTrait('lifestyle_mystic').GetName( GetNullCharacter )] line of [traits|E] are more common" + culture_parameter_mendicant_mystics_may_appear:0 "Wandering mystics may appear at court, offering boons or criticisms" + culture_parameter_enable_garden_duchy_building:0 "Rulers can construct the #high $building_type_royal_garden_01$#! [duchy_building|E]" + culture_parameter_can_appoint_court_gardener:0 "Can appoint the [GetCourtPositionType('court_gardener_court_position').GetName()] [court_position|E]" + culture_parameter_can_recruit_gardeners:1 "Gain a [decision|E] to recruit characters with the [GetTrait('lifestyle_gardener').GetName( GetNullCharacter )] [trait|E]" + culture_parameter_number_of_spouses:0 "$doctrine_parameter_number_of_spouses$" + culture_parameter_number_of_spouses_1:0 "$doctrine_parameter_number_of_spouses_1$" + culture_parameter_number_of_consorts:0 "$doctrine_parameter_number_of_consorts$" + culture_parameter_number_of_consorts_barony: "Rulers of the [barony|E] tier, if allowed by [gender_law|E], can have up to $VALUE|V0$ [concubines|E]" + culture_parameter_number_of_consorts_county: "Rulers of the [county|E] tier, if allowed by [gender_law|E], can have up to $VALUE|V0$ [concubines|E]" + culture_parameter_number_of_consorts_duchy: "Rulers of the [duchy|E] tier, if allowed by [gender_law|E], can have up to $VALUE|V0$ [concubines|E]" + culture_parameter_number_of_consorts_kingdom: "Rulers of the [kingdom|E] tier, if allowed by [gender_law|E], can have up to $VALUE|V0$ [concubines|E]" + culture_parameter_number_of_consorts_empire: "Rulers of the [empire|E] tier, if allowed by [gender_law|E], can have up to $VALUE|V0$ [concubines|E]" + culture_parameter_number_of_consorts_hegemony: "Rulers of the [hegemony|E] tier, if allowed by [gender_law|E], can have up to $VALUE|V0$ [concubines|E]" + culture_parameter_poet_trait_gives_bonuses:0 "The [GetTrait('lifestyle_poet').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_poet_trait_more_common:0 "The [GetTrait('lifestyle_poet').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_piety_gain_on_building_complete_in_forest_taiga:2 "Gain [piety_i][piety|E] when completing [buildings|E] in [holdings|E] with either #V Forest#!, #V Jungle#! or #V Taiga#! [terrain|E]" + culture_parameter_piety_gain_on_building_complete_in_mountains:1 "Gain [piety_i][piety|E] when completing [buildings|E] in [holdings|E] with either #V Mountain#! or #V Desert Mountain#! [terrain|E]" + culture_parameter_can_duel_rivals:0 "$UNLOCKS_ABILITY_TO_DUEL_RIVALS$" + culture_parameter_cannot_fire_court_chaplain:0 "You cannot fire your [court_chaplain|E]" + culture_parameter_extra_piety_from_temple_construction: "[piety|E] from constructing [temple|E] [holdings|E]: [piety_i]#P +1500#!" + culture_parameter_renown_from_temple_construction:0 "Gain [dynasty_prestige_i][dynasty_prestige|E] when constructing and upgrading [temple|E] [holdings|E]" + culture_parameter_consolidate_rule_decision: "Gain access to the #high $consolidate_rule_decision$#! [decision|E] for [empires|E]" + culture_parameter_prestige_from_temple_construction:1 "Gain significant [prestige_i][prestige|E] from constructing [temple|E] [holdings|E]" + culture_parameter_less_likely_to_force_conversion:0 "[rulers|E] are less likely to Demand Conversion from their [vassals|E]" + culture_parameter_enables_unite_africa_decision:0 "Enables the Unite Africa [decision|E] for cultures without an African [heritage|E]" + culture_parameter_hunting_archery_building_bonuses:0 "The #V $building_type_hunting_grounds_01$#! line of [buildings|E] will improve #V Archers#!" + culture_parameter_gregarious_trait_gives_bonuses:0 "The [GetTrait('gregarious').GetName( GetNullCharacter )] [trait|E] has additional bonuses" + culture_parameter_trade_ports_enabled_for_tribals:0 "The #V $building_type_common_tradeport_01$#! line of [buildings|E] can be constructed in coastal [tribe|E] [holdings|E]" + culture_parameter_trade_ports_stationed_maa_bonus:0 "The #V $building_type_common_tradeport_01$#! line of [buildings|E] provide additional bonuses to [stationed|E] [men_at_arms|E]" + + culture_parameter_building_barracks_piety_bonuses:1 "Characters of this [culture|E] gain [piety_i][piety|E] from the #V $building_type_barracks_01$#! line of [buildings|E]" + culture_parameter_can_build_quarries_everywhere:2 "The #V $building_type_quarries_01$#! line of [buildings|E] can always be constructed in [counties|E] of this [culture|E]" + culture_parameter_better_armory_buildings:1 "The #V $building_type_royal_armory_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + culture_parameter_better_blacksmith_buildings:1 "The #V $building_type_blacksmiths_01$#! line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]" + CHARACTER_INTERACTION_MYSTICAL_ANCESTORS_DISINHERIT:0 "Your [culture_possessive|E] [traditions|E] prevent you from [disinheriting|E] [dynasty_members|E]" + culture_parameter_cannot_disherit:0 "Cannot [disinherit|E] [dynasty_members|E]" + culture_parameter_landing_house_members_gives_renown:1 "Gain [dynasty_prestige_i][dynasty_prestige|E] when granting [titles|E] to [house|E] members" + culture_parameter_piety_penalty_for_revoking_titles_from_house_members:1 "Lose [piety_i][piety|E] when revoking [titles|E] from [house|E] members" + culture_parameter_penalty_for_revoking_titles_from_close_family:0 "Lose [prestige_i][prestige|E] when revoking [titles|E] from [close_family|E]" + + culture_parameter_wants_to_learn_liege_language:0 "[vassals|E] of this [culture|E] will often learn the [language|E] of their [liege|E]" + culture_parameter_doesnt_care_about_culture_faith_in_factions:0 "[vassals|E] of this [culture|E] do not consider differing [faith|E] or [culture|E] when joining [factions|E]" + culture_parameter_extra_learn_language_success_chance_vs_liege:1 "[GetScheme('learn_language').GetTypeName] [success_chance|E] vs. [liege|E]: #P +50%#!" + culture_parameter_learns_more_languages:1 "[rulers|E] of this [culture|E] use the [GetScheme('learn_language').GetTypeName] [scheme|E] more often" + culture_parameter_trait_county_opinion_modifiers:1 "Certain [traits|E] such as [GetTrait('brave').GetName( GetNullCharacter )], [GetTrait('gregarious').GetName( GetNullCharacter )], [GetTrait('generous').GetName( GetNullCharacter )] or [GetTrait('lifestyle_blademaster').GetName( GetNullCharacter )] give [county_opinion|E]" + culture_parameter_unlock_schiltron_innovation:0 "The #high $innovation_rectilinear_schiltron$#! [innovation|E] becomes available in the $culture_era_late_medieval$ [era|E]" + culture_parameter_unlock_valets_innovation: "The #high $innovation_valets$#! [innovation|E] becomes available in the $culture_era_late_medieval$ [era|E]" + culture_parameter_unlock_sarawit_innovation: "The #high $innovation_sarawit$#! [innovation|E] becomes available in the $culture_era_high_medieval$ [era|E]" + culture_parameter_unlock_adaptive_militia_innovation: "The #high $innovation_adaptive_militia$#! [innovation|E] becomes available in the $culture_era_late_medieval$ [era|E]" + culture_parameter_unlock_innovation_pike_columns: "The #high $innovation_pike_columns$#! [innovation|E] becomes available in the $culture_era_high_medieval$ [era|E]" + culture_parameter_bonuses_from_patriarch_matriarch_trait:1 "Characters with the [GetTrait('family_first').GetName( GetNullCharacter )] [trait|E] are seen as [prestige_i][prestigious|E] and will be able to raise more [levies|E]" + culture_parameter_cultural_house_personal_scheme_success_chance:0 "[personal_scheme|E] [success_chance|E]: #P +[EmptyScope.ScriptValue('cultural_house_personal_scheme_success_chance')|0]%#! against [house|E] members" + culture_parameter_landing_house_members_give_prestige:1 "Gain [prestige_i][prestige|E] when granting titles to [house|E] members" + culture_parameter_penalty_for_revoking_titles_from_house_members:1 "Lose [prestige_i][prestige|E] when revoking titles from [house|E] members" + culture_parameter_piety_from_language_schemes:2 "Successfully executing a [GetScheme('learn_language').GetTypeName] gives significant [piety_i][piety|E]" + culture_parameter_language_success_chance_per_piety_level:2 "Each [piety_level|E] gives [GetScheme('learn_language').GetTypeName] [success_chance|E]" + culture_parameter_rulers_want_to_learn_languages_of_coreligionists:0 "[rulers|E] of this [culture|E] want to learn [languages|E] spoken by co-religionists" + culture_parameter_languages_speed_up_claims:0 "Each known [language|E] increases [fabricate_claim|E] speed by #P +10%#!" + + culture_parameter_more_expensive_weapon_inspiration:0 "It costs more [gold|E] to sponsor characters of this culture with a $weapon_inspiration$" + culture_parameter_more_expensive_armor_inspiration:1 "It costs more [gold|E] to sponsor characters of this culture with an $armor_inspiration$" + culture_parameter_more_expensive_book_inspiration:0 "It costs more [gold|E] to sponsor characters of this culture with a $book_inspiration$" + culture_parameter_more_expensive_weaver_inspiration:0 "It costs more [gold|E] to sponsor characters of this culture with a $weaver_inspiration$" + culture_parameter_more_expensive_adventure_inspiration:1 "It costs more [gold|E] to sponsor characters of this culture with an $adventure_inspiration$" + culture_parameter_more_expensive_artisan_inspiration:1 "It costs more [gold|E] to sponsor characters of this culture with an $artisan_inspiration$" + + culture_parameter_improved_weapon_inspiration:1 "[characters|E] of this [culture|E] produce higher-quality [artifacts|E] when completing a #high Weapon#! [inspiration|E]" + culture_parameter_improved_armor_inspiration:1 "Characters of this culture produce higher-quality Artifacts when completing an $armor_inspiration$" + culture_parameter_improved_book_inspiration:0 "Characters of this culture produce higher-quality Artifacts when completing a $book_inspiration$" + culture_parameter_improved_weaver_inspiration:1 "[characters|E] of this [culture|E] produce higher-quality [artifacts|E] when completing a #high Weaver#! [inspiration|E]" + culture_parameter_improved_adventure_inspiration:1 "Characters of this culture produce higher-quality Artifacts when completing an $adventure_inspiration$" + culture_parameter_improved_artisan_inspiration:2 "[characters|E] of this [culture|E] produce higher-quality [artifacts|E] when completing an #high Artisan#! [inspiration|E]" + culture_parameter_arbitrary_trait_vassal_opinion:0 "A [liege|E] with the [GetTrait('arbitrary').GetName( GetNullCharacter )] [trait|E] has higher [vassal|E] [opinion|E]" + culture_parameter_life_is_a_joke_trait_same_culture_opinion:1 "The [GetTrait('gregarious').GetName( GetNullCharacter )], [GetTrait('content').GetName( GetNullCharacter )], [GetTrait('cynical').GetName( GetNullCharacter )] and [GetTrait('fickle').GetName( GetNullCharacter )] [traits|E] give increased [opinion|E] towards [characters|E] of the same [culture|E]" + character_culture_opinion:0 "[trait|E] [characters|E] have increased [opinion|E] of same [culture|E] $game_concept_characters$" + culture_parameter_war_stress_loss:0 "[characters|E] of this [culture|E] lose [stress|E] on receiving a declaration of [war|E]" + culture_parameter_torture_madness_boost:0 "[characters|E] of this [culture|E] are likelier to inflict and develop madness from [torture|E]" + culture_parameter_execution_stress_loss:0 "[characters|E] lose all [stress|E] immediately before being [executed|E]" + culture_parameter_added_character_boldness:0 "[characters|E] take bolder actions and it is harder to make them [intimidated|E] or [cowed|E]" + culture_parameter_independent_ruler_monthly_piety:1 "[independent|E] [rulers|E] receive additional [piety_i][piety|E]" + culture_parameter_culture_monthly_piety_multiplier:0 "[GetTrait('august').GetName( GetNullCharacter )] [rulers|E] are seen as [pious|E]" + culture_parameter_war_outcome_piety_modifiers:0 "[independent|E] [rulers|E] gain and lose cultural [opinion|E] by winning and losing [wars|E], respectively" + culture_parameter_romance_scheme_bonus_vs_spouse:1 "[GetScheme('courting').GetTypeName] [success_chance|E] vs. [spouse|E]: #P +30%#!" + culture_parameter_grants_to_lowborns_bonuses:0 "Granting [counties|E] to [commoners|E] increases [county_control|E] and makes them a [GetTrait('peasant_leader').GetName( GetNullCharacter )]" + culture_parameter_better_spouses:0 "[skills|E] from [spouse|E] [councillor_tasks|E]: #P +25%#!" + culture_parameter_marriage_acceptance_bonus:0 "[marriage|E] Acceptance: #P +10#!" + culture_parameter_tribal_holding_fort_level_in_jungle_bonus:0 "[fort_level|E] per level of #V $building_type_castle_01$#! in Jungle [terrain|E]: [fort_level_i]#P +[EmptyScope.ScriptValue('tribal_holding_fort_level_in_jungle_bonus_value')|0]#!" + culture_parameter_castle_holding_fort_level_in_jungle_bonus:0 "[fort_level|E] per level of #V $building_type_tribe_01$#! in Jungle [terrain|E]: [fort_level_i]#P +[EmptyScope.ScriptValue('castle_holding_fort_level_in_jungle_bonus_value')|0]#!" + culture_parameter_tribal_holding_stationed_bonus: "The #V $building_type_tribe_01$#! line of [buildings|E] provide additional [stationed|E] [men_at_arms|E] bonuses" + + culture_parameter_close_family_better_councillors:0 "Base progress and [skill|E] impact on [councillor_tasks|E] is increased by #P +10%#! for [close_family|E] members" + culture_parameter_close_family_better_court_positions:0 "[court_position|E] [aptitude|E] for [close_family|E] members: #P +20#!" + culture_parameter_vassals_more_likely_accept_punishments:0 "[vassal|E] acceptance of rightful [criminal|E] punishments: #P +20#!" + + # Tradition effects - FP1 + culture_parameter_more_levies_from_coastal_counties:0 "Coastal [counties|E] give more [levies|E]" + culture_parameter_less_levies_from_inland_counties:0 "Inland [counties|E] give slightly less [levies|E]" + culture_parameter_has_access_to_shieldmaidens:0 "[characters|E] of this [culture|E] may become [GetTrait('shieldmaiden').GetName(GetNullCharacter)]s if their [faithpossessive|E] [gender_doctrines|E] are biased against them" + culture_parameter_has_access_to_trials_by_combat:0 "[crimes|E] by [characters|E] that you cannot [imprison|E] and who aren't your [liege|E] may be settled via [single_combat_fight|E]" + culture_parameter_has_access_to_runestones:1 "[rulers|E] may raise runestones to commemorate certain major life events, earning [prestige_i][prestige|E] #weak (Before the #color_white $culture_era_high_medieval$#! [era|E])#!" + culture_parameter_craven_trait_costs_prestige:1 "The [GetTrait('craven').GetName(GetNullCharacter)] [trait|E] drains monthly [prestige_i][prestige|E]" + culture_parameter_blademaster_traits_give_learning:1 "The [GetTrait('lifestyle_blademaster').GetName(GetNullCharacter)] [trait|E] gives [learning|E]" + + # Triggers and Tooltips + CULTURE_IS_NOT_PRESENT_IN_REALM_FOR_HYBRIDIZATION:0 "Target [culture|E] is #bold not#! present in at least one [county|E] in your realm" + CULTURE_IS_PARENT_CULTURE:0 "Your [culture|E] is derived from the target Culture" + CULTURE_IS_CHILD_CULTURE:0 "The target [culture|E] is derived from your Culture" + CULTURE_IS_NOT_PRESENT_IN_REALM_FOR_DIVERGENCE:0 "Your [culture|E] is #bold not#! present in at least one [county|E] in your realm" + CULTURE_HAS_TRADITION_COOLDOWN:0 "Your [culture|E] established a new tradition too recently\n#Weak (You can establish a new tradition [GetCurrentDateWithDiff( GetVarTimeRemaining( CHARACTER.GetCulture.MakeScope, 'tradition_cooldown') )])#!" + ACCEPTANCE_BASELINE_HERITAGE:0 "[cultures|E] share the same [heritage|E]" + ACCEPTANCE_BASELINE_LANGUAGE:0 "[cultures|E] share the same [language|E]" + ACCEPTANCE_BASELINE_ETHOS:0 "[cultures|E] are geographically close and share [ethos|E]" + ACCEPTANCE_BASELINE_RELIGION:0 "[cultures|E] share a majority [religion|E]" + ACCEPTANCE_BASELINE_EASTERN_RELIGION:0 "[cultures|E] both share a majority [GetReligionFamily('rf_eastern').GetName] [religion|E]" + ACCEPTANCE_BASELINE_CLOSE_PLURALISTS:0 "[cultures|E] are geographically close and share [GetFaithDoctrine('doctrine_pluralism_pluralistic').GetBaseName] majority [faiths|E]" + ACCEPTANCE_BASELINE_FAITH:0 "[cultures|E] share a majority [faith|E]" + TRADITION_ASTUTE_DIPLOMATS_ACCEPTANCE_MODIFIER:1 "$tradition_astute_diplomats_name$ [tradition|E]: $VALUE|=+0$" + CULTURE_HARD_TO_CONVERT_REASON: "$tradition_zealous_people_name$ [culture_tradition|E]: $VALUE|=+0$" + TRADITION_RELIGION_BLENDING_CONVERSION_MODIFIER:1 "$tradition_religion_blending_name$ [culture_tradition|E]" + TRADITION_HARDER_TO_CONVERT_CONVERSION_MODIFIER:0 "$tradition_zealous_people_name$ [culture_tradition|E]" + TRADITION_BREAKDOWN_LAW_REALM_SIZE_COST:0 "$KEY$: $VALUE|=-0$ #Weak (from [traditions|E]: #P -50%#!)#!" + + faith_conversion_cost_heritage:0 "Current [heritage|E]" + faith_conversion_cost_tradition:0 "Current [traditions|E]" + cheaper_tradition_from_faith:0 "Current [faith|E]" + + tradition_female_only_inheritance_requirements:0 "You must have a [GetFaithDoctrine('doctrine_gender_female_dominated').GetBaseName] [faith|E] or the #V $heritage_akan_name$#!, #V $heritage_west_african_name$#!, #V $heritage_senegambian_name$#!, or #V $heritage_yoruba_name$#! [heritage|E]" + no_eunuch_in_realms:1 "You must have at least one [vassal|E], [courtier|E], or [councillor|E], with the [GetTrait('eunuch_1').GetName( GetNullCharacter )] or [GetTrait('beardless_eunuch').GetName( GetNullCharacter )] [trait|E]" + no_eunuch_councillors_desc:0 "You do not have a [councillor|E] with the [GetTrait('eunuch_1').GetName( GetNullCharacter )] or [GetTrait('beardless_eunuch').GetName( GetNullCharacter )] [trait|E]" + no_glory_legacy_2_perk:0 "Your [dynasty|E] doesn't have the $glory_legacy_2_name$ [dynasty_perk|E]" + faith_not_allowed_holy_war_desc:0 "Your [faith|E] does not allow [holy_wars|E]" + has_other_cultures_in_council_desc:0 "You must not have any [councillors|E] with a different [culture|E] from your own" + 20_percent_churches:0 "The [culture|E] does not have a [temple|E] in #V 20%#! of its [counties|E]" + must_be_feudal_or_clan:0 "You must have the [feudal|E] or [clan|E] [government|E]" + must_be_feudal_clan_or_admin: "[SelectLocalization( HasDlcFeature( 'all_under_heaven' ), 'must_be_feudal_clan_or_admin_auh', 'must_be_feudal_clan_or_admin_base_game' )]" + must_be_feudal_clan_or_admin_base_game: "You must have the [feudal|E], [clan|E], or [administrative|E] [government|E]" + must_be_feudal_clan_or_admin_auh: "You must have the [feudal|E], [clan|E], [administrative|E], [celestial|E], [meritocratic|E], or [japan_feudal|E] [government|E]" + only_one_marriage_tradition_allowed:0 "Only one [marriage|E] [tradition|E] is allowed and the following cannot be combined: $tradition_monogamous_name$, $tradition_polygamous_name$, and $tradition_concubines_name$" + no_warrior_culture: "$tradition_fp3_beacon_of_learning_name$ is incompatible with $tradition_warrior_culture_name$" + no_philosopher_culture: "$tradition_fp3_beacon_of_learning_name$ is incompatible with $tradition_philosopher_culture_name$" + + culture_in_winter_geographical_region_trigger_desc:0 "The [culture|E] is not present in a [region|E] with winter" + culture_in_non_sedentary_geographical_region_trigger_desc:0 "The [culture|E] is not present in the [GetGeographicalRegion('world_steppe').GetName]" + #culture_in_britannia_region_trigger_desc: "The [culture|E] is not present in [GetGeographicalRegion('world_europe_west_britannia').GetName]" + #culture_in_world_europe_north_region_trigger_desc: "The [culture|E] is not present in [GetGeographicalRegion('world_europe_north').GetName]" + culture_in_india_region_trigger_desc:0 "The [culture|E] is not present in [GetGeographicalRegion('world_india').GetName]" + culture_in_roman_empire_desc:0 "The [culture|E] does not have #V 50#! of its [counties|E] in [GetGeographicalRegion('custom_eastern_roman_empire').GetName]" + culture_in_camel_region_desc:0 "The [culture|E] is not present in [GetGeographicalRegion('world_innovation_camels').GetName]" + culture_in_camel_region_percentage_desc:0 "The [culture|E] does not have #V [EmptyScope.ScriptValue('camel_percentage_trigger_value_desc')|0]%#! of its [counties|E] in [GetGeographicalRegion('world_innovation_camels').GetName]" + culture_in_forest_or_jungle_desc:0 "The [culture|E] is not present in any [county|E] with Forest, Jungle or Taiga [terrain|E]" + culture_in_forest_desc:0 "The [culture|E] is not present in any [county|E] with Forest or Taiga [terrain|E]" + culture_in_mountains_desc:0 "The [culture|E] is not present in any [county|E] with Mountain or Desert Mountain [terrain|E]" + culture_in_dryland_desc:0 "The [culture|E] is not present in any [county|E] with Desert or Dryland [terrain|E]" + culture_in_desert_desc:0 "The [culture|E] is not present in any [county|E] with Desert [terrain|E]" + culture_in_hills_desc:0 "The [culture|E] is not present in any [county|E] with Hilly [terrain|E]" + culture_in_jungle_desc:0 "The [culture|E] is not present in any [county|E] with Jungle [terrain|E]" + culture_in_plains_or_steppe_terrain_desc:0 "The [culture|E] does not have #V 40%#! of its [counties|E] in Plains [terrain|E], Steppe [terrain|E], or the [GetGeographicalRegion('world_steppe').GetName] [region|E]" + culture_in_wetlands_desc:0 "The [culture|E] is not present in any [county|E] with Wetland [terrain|E]" + culture_in_wetlands_count_desc:0 "The [culture|E] is not present in at least #V 3#! [counties|E] with Wetland [terrain|E]" + culture_in_farmlands_or_floodplains_terrain_desc:0 "The [culture|E] is not present in any [county|E] with Farmland or Floodplain [terrain|E]" + culture_in_terraced_hills_terrain_desc: "The [culture|E] is not present in any [county|E] with Terraced Hills [terrain|E]" + culture_in_farmlands_or_floodplains_terrain_count_desc:0 "The [culture|E] is not present in at least #V 5#! [counties|E] with Farmland or Floodplain [terrain|E]" + culture_in_terraced_hills_terrain_count_desc: "The [culture|E] is not present in at least #V 3#! [counties|E] with Terraced Hills [terrain|E]" + culture_in_plains_or_steppe_terrain_percentage_desc:0 "The [culture|E] does not have #V 60%#! of its [counties|E] in Plains [terrain|E], Steppe [terrain|E], or the [GetGeographicalRegion('world_steppe').GetName] [region|E]" + culture_in_steppe_desc:1 "At least #V 40%#! of the [counties|E] of this [culture|E] must be in the [GetGeographicalRegion('world_steppe').GetName] [region|E]" + culture_on_coast_desc:0 "The [culture|E] is not present in any coastal [county|E]" + percentage_of_culture_on_coast_desc:0 "At least #V 50%#! of the [counties|E] of this [culture|E] must be Coastal" + culture_acceptance_trigger_desc:0 "The [culture|E] does not have at least #V [EmptyScope.ScriptValue('xenophilic_acceptance_value')|0]%#! [cultural_acceptance|E] with #V [EmptyScope.ScriptValue('xenophilic_nr_of_cultures_value')|0]#! other cultures" + culture_not_egalitarian:1 "The [culture|E] has the $ethos_egalitarian_name$ [ethos|E]" + culture_not_bellicose:1 "The [culture|E] has the $ethos_bellicose_name$ [ethos|E]" + culture_not_pacifist_trigger_desc:0 "The [culture|E] has the $tradition_pacifism_name$ [tradition|E]" + culture_not_warlike_trigger_desc:0 "The [culture|E] has one or more [war|E] focused [traditions|E]:" + rulers_following_different_faiths_trigger_desc:0 "You do not have at least #V 2#! [vassals|E] of your [culture|E] that follows a different [faith|E]" + + # NOTE: when localising ethos stuff, try to use the order they appear in in 00_ethos.txt. This minimises overlap without us having to localise every possible variation. + + # Single lines. + not_bellicose_desc:0 "The [culture|E] does not have the $ethos_bellicose_name$ [ethos|E]" + not_stoic_desc:0 "The [culture|E] does not have the $ethos_stoic_name$ [ethos|E]" + not_bureaucratic_desc:1 "The [culture|E] does not have the $ethos_bureaucratic_name$ [ethos|E]" + not_spiritual_desc:0 "The [culture|E] does not have the $ethos_spiritual_name$ [ethos|E]" + not_courtly_desc:0 "The [culture|E] does not have the $ethos_courtly_name$ [ethos|E]" + not_egalitarian_desc:1 "The [culture|E] does not have the $ethos_egalitarian_name$ [ethos|E]" + not_communal_desc:0 "The [culture|E] does not have the $ethos_communal_name$ [ethos|E]" + northern_germanic_heritage_trigger:0 "The [culture|E] must be of Northern Germanic [heritage|E]" + + # Double lines. + not_bellicose_or_communal_desc:0 "The [culture|E] does not have the $ethos_bellicose_name$ or $ethos_communal_name$ [ethos|E]" + not_bellicose_or_stoic_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$ or $ethos_stoic_name$ [ethos|E]" + not_bellicose_or_bureaucratic_desc:2 "The [culture|E] does not have the $ethos_bellicose_name$ or $ethos_bureaucratic_name$ [ethos|E]" + not_bellicose_or_spiritual_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$ or $ethos_spiritual_name$ [ethos|E]" + not_bellicose_or_courtly_desc:0 "The [culture|E] does not have the $ethos_bellicose_name$ or $ethos_courtly_name$ [ethos|E]" + not_stoic_or_bureaucratic_desc:1 "The [culture|E] does not have the $ethos_stoic_name$ or $ethos_bureaucratic_name$ [ethos|E]" + not_stoic_or_communal_desc:0 "The [culture|E] does not have the $ethos_stoic_name$ or $ethos_communal_name$ [ethos|E]" + not_stoic_or_spiritual_desc:0 "The [culture|E] does not have the $ethos_stoic_name$ or $ethos_spiritual_name$ [ethos|E]" + not_stoic_or_egalitarian_desc:0 "The [culture|E] does not have the $ethos_stoic_name$ or $ethos_egalitarian_name$ [ethos|E]" + not_spiritual_or_courtly_desc:0 "The [culture|E] does not have the $ethos_spiritual_name$ or $ethos_courtly_name$ [ethos|E]" + not_spiritual_or_communal_desc:0 "The [culture|E] does not have the $ethos_spiritual_name$ or $ethos_communal_name$ [ethos|E]" + not_spiritual_or_egalitarian_desc:0 "The [culture|E] does not have the $ethos_spiritual_name$ or $ethos_egalitarian_name$ [ethos|E]" + requires_tribal_or_clan_government_trigger:0 "You do not have [tribal_government|E] or [clan_government|E]" + not_stoic_or_courtly_desc:0 "The [culture|E] does not have the $ethos_stoic_name$ or $ethos_courtly_name$ [ethos|E]" + + # Triple lines. + turkic_or_mongolic_and_capital_in_steppe_trigger:0 "The [culture|E] must be either Turkic or Mongolic [heritage|E], or your capital must be in the Steppe" + ## Bellicose. + not_bellicose_egalitarian_or_communal_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_egalitarian_name$ or $ethos_communal_name$ [ethos|E]" + not_bellicose_egalitarian_or_courtly_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_egalitarian_name$ or $ethos_courtly_name$ [ethos|E]" + not_bellicose_egalitarian_or_bureaucratic_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_egalitarian_name$ or $ethos_bureaucratic_name$ [ethos|E]" + not_bellicose_egalitarian_or_stoic_desc:0 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_stoic_name$ or $ethos_egalitarian_name$ [ethos|E]" + not_bellicose_stoic_or_communal_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_stoic_name$ or $ethos_communal_name$ [ethos|E]" + not_bellicose_stoic_or_bureaucratic_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_stoic_name$ or $ethos_bureaucratic_name$ [ethos|E]" + not_bellicose_courtly_or_communal_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_courtly_name$ or $ethos_communal_name$ [ethos|E]" + not_bellicose_stoic_or_courtly_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_stoic_name$ or $ethos_courtly_name$ [ethos|E]" + not_bellicose_spiritual_or_stoic_desc:1 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_spiritual_name$ or $ethos_stoic_name$ [ethos|E]" + not_bellicose_bureaucratic_or_spiritual_desc:0 "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_bureaucratic_name$ or $ethos_spiritual_name$ [ethos|E]" + not_bellicose_egalitarian_or_spiritual_desc: "The [culture|E] does not have the $ethos_bellicose_name$, $ethos_egalitarian_name$ or $ethos_spiritual_name$ [ethos|E]" + + + ## Stoic. + + + ## Bureaucratic. + not_bureaucratic_courtly_or_egalitarian_desc:1 "The [culture|E] does not have the $ethos_bureaucratic_name$, $ethos_courtly_name$ or $ethos_egalitarian_name$ [ethos|E]" + not_bureaucratic_spiritual_or_egalitarian_desc:1 "The [culture|E] does not have the $ethos_bureaucratic_name$, $ethos_spiritual_name$ or $ethos_egalitarian_name$ [ethos|E]" + not_bureaucratic_courtly_or_spiritual_desc: "The [culture|E] does not have the $ethos_bureaucratic_name$, $ethos_courtly_name$ or $ethos_spiritual_name$ [ethos|E]" + culture_parameter_can_adopt_administrative_government_as_kingdom_tier: "[SelectLocalization( HasDlcFeature( 'royal_court' ), 'can_adopt_administrative_government_as_kingdom_tier_text', '' )]" + can_adopt_administrative_government_as_kingdom_tier_text: "Rulers can adopt [administrative|E] [government|E] type as a [king|E] as well when they are [emperors|E]" + + + ## Spiritual. + not_spiritual_communal_or_stoic_desc: "The [culture|E] does not have the $ethos_spiritual_name$, $ethos_communal_name$ or $ethos_stoic_name$ [ethos|E]" + culture_parameter_ethos_spiritual_better_consult_the_skies: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'ethos_spiritual_better_consult_the_skies_effects', '' )]" + ethos_spiritual_better_consult_the_skies_effects: "$mpo_divination_decision$ [decision|E] has additional effects" + culture_parameter_ethos_spiritual_better_court_astrologers: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'ethos_spiritual_better_court_astrologers_effects', '' )]" + ethos_spiritual_better_court_astrologers_effects: "[characters|E] of this [culture|E] have increased $court_astrologer_court_position$ [aptitude|E]" + + + ## Courtly. + not_courtly_communal_or_spiritual_desc:1 "The [culture|E] does not have the $ethos_courtly_name$, $ethos_communal_name$ or $ethos_spiritual_name$ [ethos|E]" + not_courtly_communal_or_stoic_desc:1 "The [culture|E] does not have the $ethos_courtly_name$, $ethos_communal_name$ or $ethos_stoic_name$ [ethos|E]" + not_courtly_or_spiritual_desc:1 "The [culture|E] does not have the $ethos_courtly_name$ or $ethos_spiritual_name$ [ethos|E]" + + ## Egalitarian. + not_egalitarian_stoic_or_bureaucratic_desc:1 "The [culture|E] does not have the $ethos_egalitarian_name$, $ethos_stoic_name$ or $ethos_bureaucratic_name$ [ethos|E]" + not_egalitarian_or_courtly_desc:0 "The [culture|E] does not have the $ethos_egalitarian_name$ or $ethos_courtly_name$ [ethos|E]" + + + ## Communal. + not_communal_or_spiritual_desc:0 "The [culture|E] does not have the Communal or Spiritual [ethos|E]" + not_communal_bureaucratic_or_stoic_desc:1 "The [culture|E] does not have the $ethos_communal_name$, $ethos_bureaucratic_name$, or $ethos_stoic_name$ [ethos|E]" + not_communal_egalitarian_or_stoic_desc:0 "The [culture|E] does not have the Communal, Egalitarian or Stoic [ethos|E]" + not_communal_or_egalitarian_desc:0 "The [culture|E] does not have the Communal or Egalitarian [ethos|E]" + not_communal_spiritual_or_stoic_desc:0 "The [culture|E] does not have the Communal, Spiritual or Stoic [ethos|E]" + not_communal_egalitarian_or_courtly_desc:0 "The [culture|E] does not have the $ethos_communal_name$, $ethos_egalitarian_name$ or $ethos_courtly_name$ [ethos|E]" + not_communal_or_courtly_desc:0 "The [culture|E] does not have the $ethos_communal_name$ or $ethos_courtly_name$ [ethos|E]" + + + + + winter_soldier_affinity_desc:0 "The [culture_head|E] does not have the [GetTrait('winter_soldier').GetName( GetNullCharacter )] [trait|E]" + forest_fighter_affinity_desc:0 "The [culture_head|E] does not have the [GetTrait('forest_fighter').GetName( GetNullCharacter )] [trait|E]" + rough_terrain_expert_affinity_desc:0 "The [culture_head|E] does not have the [GetTrait('rough_terrain_expert').GetName( GetNullCharacter )] [trait|E]" + +## Tradition Cost Modifier Descs + replacing_tradition_cost_penalty_desc:1 "Replacing an existing [tradition|E] #weak (+[EmptyScope.ScriptValue('tradition_replacement_cost_factor_tooltip')|0]%)#!" + winter_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in a wintery [region|E]" + sahara_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in [GetGeographicalRegion('custom_sahara_proper').GetName]" + forest_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Forest or Taiga [terrain|E]" + mountain_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Mountain or Desert Mountain [terrain|E]" + mountain_true_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Mountain [terrain|E]" + dry_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Desert or Dryland [terrain|E]" + desert_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Desert [terrain|E]" + hill_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Hilly [terrain|E]" + jungle_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Jungle [terrain|E]" + steppe_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in Steppe [terrain|E]" + coastal_percentage_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] on a coast" + high_coastal_percentage_desc:0 "The [culture|E] does not have #V 70%#! of its [counties|E] on a coast" + multiple_cultures_in_realm_percentage_desc:2 "At least #V 30%#! of the [counties|E] in your [realm|E] is not of a different [culture|E]" + elephant_pens_percentage_desc:0 "The [culture|E] does not have #V 3#! [counties|E] with the #V $building_elephant_pens_02$#! [building|E]" + knights_with_prowess_desc:1 "You do not have #V 6#! [knights|E] with [prowess_i]#V 12#! [prowess|E]" + courtiers_with_prowess_who_cant_be_knight_desc:1 "You do not have #V 5#! [courtiers|E] with [prowess_i]#V 10#! [prowess|E] who cannot be [knights|E]" + culture_head_faith_clergy_prowess_desc:1 "There are not #V 15#! [clergy|E] [characters|E] of the same [faith|E] as you with [prowess_i]#V 10#! [prowess|E] who cannot be [knights|E]" + byzantion_desc:0 "You do not hold $c_byzantion$" + five_accepted_cultures_desc:0 "The [culture|E] needs #V 50%#! [cultural_acceptance|E] with at least #V 5#! other cultures" + skilled_prisoners_desc:1 "You do not have #V 10#! foreign [prisoners|E] with #V 12#! or more in any [skill|E]" + culture_head_small_soldiers_desc:1 "You do not have #V 500#! [skirmishers|E] and #V 500#! [archers|E]" + culture_head_skirmishers_and_light_cav_desc:0 "You do not have #V 500#! [skirmishers|E] and #V 500#! [light_cavalry|E]" + culture_head_heavy_inf_and_pikemen_desc:0 "You do not have #V 500#! [heavy_infantry|E] and #V 500#! [spearmen|E]" + culture_head_archers_and_pikemen_desc:0 "You do not have #V 500#! [archers|E] and #V 500#! [spearmen|E]" + culture_head_archers_desc:0 "You do not have #V 800#! [archers|E]" + culture_head_light_cavalry_desc:0 "You do not have #V 500#! [light_cavalry|E]" + culture_head_skirmishers_desc:0 "You do not have #V 800#! [skirmishers|E]" + culture_head_archer_cavalry_desc: "You do not have #V 600#! [archer_cavalry|E]" + culture_head_has_elephants_desc:0 "You do not have a [regiment|E] of [elephant_cavalry|E]" + turkic_or_mongolic_desc:0 "The [culture|E] does not have the Turkic or Mongolic [heritage|E]" + iranian_desc:0 "The [culture|E] does not have the Iranian [heritage|E]" + rulers_at_war_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] at [war|E]" + five_female_rulers_desc:1 "The [culture|E] does not have at least #V 5#! female [rulers|E] of rank [count|E] or above" + rulers_with_martial_edu_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('education_martial_4').GetName( GetNullCharacter )] [trait|E]" + rulers_with_martial_edu_and_learning_desc:0 "The [culture|E] does not have #V 3#! [rulers|E] with the [GetTrait('education_martial_4').GetName( GetNullCharacter )] [trait|E] and [learning_i]#V 10#! or more [learning_skill|E]" + rulers_with_diplomacy_edu_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('education_diplomacy_4').GetName( GetNullCharacter )] [trait|E]" + rulers_with_vengeful_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('vengeful').GetName( GetNullCharacter )] [trait|E]" + rulers_with_zealous_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('zealous').GetName( GetNullCharacter )] [trait|E]" + rulers_with_patient_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('patient').GetName( GetNullCharacter )] [trait|E]" + rulers_with_just_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('just').GetName( GetNullCharacter )] [trait|E]" + rulers_with_generous_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('generous').GetName( GetNullCharacter )] [trait|E]" + rulers_with_temperate_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('temperate').GetName( GetNullCharacter )] [trait|E]" + rulers_with_diligent_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('diligent').GetName( GetNullCharacter )] [trait|E]" + rulers_with_cynical_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('cynical').GetName( GetNullCharacter )] [trait|E]" + rulers_with_scars_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with a permanent physical injury [trait|E]" + rulers_with_scholar_desc:0 "The [culture|E] does not have #V 5#! [rulers|E] with the [GetTrait('scholar').GetName( GetNullCharacter )] [trait|E]" + king_with_vassals_desc:0 "You are not a [king|E] with #V 10#! [feudal|E] [vassals|E]" + 90_percent_cities_desc:1 "You do not have a [city_holding|E] in at least #V 90%#! of the [counties|E] that share your [culture|E] within your [realm|E]" + non_tolerated_cultures_desc:0 "[culture|E] [counties|E] in your [realm|E] must not border any Culture that they have #V 40%#! or more [cultural_acceptance|E] with" + has_other_cultures_in_realm_desc:0 "You must not have any [counties|E] of another [culture|E] in your [realm|E]" + rulers_with_hunter_lifestyle_desc:1 "The [culture|E] does not have #V 5#! [rulers|E] with [GetTrait('lifestyle_hunter').GetName( GetNullCharacter )] [traits|E]" + rulers_with_reveler_lifestyle_desc:1 "The [culture|E] does not have #V 5#! [rulers|E] with [GetTrait('lifestyle_reveler').GetName( GetNullCharacter )] [traits|E]" + rulers_with_peasant_leader_desc:0 "The [culture|E] does not have #V 2#! [rulers|E] with the [GetTrait('peasant_leader').GetName( GetNullCharacter )] [trait|E]" + rulers_with_adulterer_desc:0 "The [culture|E] has #V 5#! or more [rulers|E] with the [GetTrait('adulterer').GetName( GetNullCharacter )] [trait|E]" + march_building_desc:0 "The [culture|E] does not have any [county|E] with a #V $building_march_01$#! [duchy_building|E]" + rulers_with_reaver_desc:0 "The [culture|E] does not have #V 3#! [rulers|E] with the [GetTrait('reaver').GetName( GetNullCharacter )] [trait|E]" + rulers_with_poet_desc:0 "The [culture|E] does not have #V 3#! [rulers|E] with the [GetTrait('lifestyle_poet').GetName( GetNullCharacter )] [trait|E]" + rulers_with_mystic_desc:1 "The [culture|E] does not have #V 3#! [rulers|E] with [GetTrait('lifestyle_mystic').GetName( GetNullCharacter )] [traits|E]" + rulers_with_lifestyle_herbalist_desc:0 "The [culture|E] does not have #V 3#! [rulers|E] with the [GetTrait('lifestyle_herbalist').GetName( GetNullCharacter )] [trait|E]" + rulers_following_different_faiths_desc:0 "You do not have at least #V 5#! [vassals|E] of your [culture|E] that follows a different [faith|E]" + culture_head_cavalry_desc:2 "You do not have a [regiment|E] of [light_cavalry|E], [heavy_cavalry|E], or [archer_cavalry|E] of at least #V 8#! in size" + culture_head_heavy_cavalry_desc: "You do not have a [regiment|E] of [heavy_cavalry|E] of at least #V 8#! in size" + tradition_cultural_head_affinity_penalty_desc:0 "The [culture_head|E] does not have any corresponding [traits|E]" + tradition_cultural_head_trait_bonus:0 "[traits|E] of [culture_head|E]" + tradition_cultural_head_learning_penalty:0 "The [culture_head|E] has low [learning_skill|E]" + tradition_cultural_head_learning_bonus:0 "[culture_head|E] [learning_skill|E]" + three_gender_rulers_desc:0 "The [culture|E] does not have #V 3#! or more female [rulers|E] and #V 3#! or more male [rulers|E]" + three_witch_rulers_desc:0 "The [culture|E] does not have #V 3#! or more [rulers|E] with the [GetTrait('witch').GetName( GetNullCharacter )] [trait|E]" + steppe_heritage_reduction_desc:0 "The [culture|E] does not have a Turkic or Mongolic [heritage|E]" + culture_in_himalaya_desc:0 "The [culture|E] does not have #V 30%#! of its [counties|E] in [GetGeographicalRegion('world_himalaya').GetName]" + house_friends_desc:1 "You are not [friends|E] with at least #V 3#! members of your [house|E]" + strong_rulers_desc:0 "The [culture|E] does not have #V 3#! or more [rulers|E] with the [GetTrait('strong').GetName( GetNullCharacter )], [GetTrait('physique_good_1').GetName( GetNullCharacter )], [GetTrait('physique_good_2').GetName( GetNullCharacter )], or [GetTrait('physique_good_3').GetName( GetNullCharacter )] [trait|E]" + rulers_under_another_culture_desc:0 "The [culture|E] does not have #V 3#! or more [rulers|E] being vassals of a different-Culture [liege|E]" + lacks_high_piety_level_desc:1 "Your [piety_level|E] is not [GetModifier( 'piety_level_3' ).GetNameWithTooltip|L] or higher" + lacks_battlements_innovation_desc:1 "The [culture|E] has not discovered the #high $innovation_battlements$#! [innovation|E]" + lacks_development_02_innovation_desc:1 "The [culture|E] has not discovered the #high $innovation_development_02$#! [innovation|E]" + lacks_baliffs_innovation_desc:0 "The [culture|E] has not discovered the #high $innovation_baliffs$#! [innovation|E]" + culture_acceptance_cost_desc:0 "The [culture|E] does not have at least #V [EmptyScope.ScriptValue('xenophilic_acceptance_cost_value')|0]%#! [cultural_acceptance|E] with #V [EmptyScope.ScriptValue('xenophilic_nr_of_cultures_cost_value')|0]#! other cultures" + lack_iberian_heritage_or_language_penalty_desc:0 "The [culture|E] lacks $heritage_iberian_name$ [heritage|E] #EMP and#! the [culture_head|E] does not speak the $language_iberian_name$ [language|E]" + lack_martial_learning_or_chess_board_penalty_desc:0 "You have neither at least [EmptyScope.ScriptValue('very_high_skill_rating')|0] [martial|E], at least [EmptyScope.ScriptValue('very_high_skill_rating')|0] [learning|E], nor an [artifact|E] that would let you play [board_games|E]" + + culture_head_lacks_storytelling_traits_desc:1 "You do not have the [GetTrait('lifestyle_poet').GetName( GetNullCharacter )], [GetTrait('arrogant').GetName( GetNullCharacter )], or [GetTrait('journaller').GetName( GetNullCharacter )] [traits|E]" + rulers_lacks_storytelling_traits_desc:0 "The [culture|E] does not have at least #V 5#! [rulers|E] with the [GetTrait('lifestyle_poet').GetName( GetNullCharacter )], [GetTrait('arrogant').GetName( GetNullCharacter )], or [GetTrait('journaller').GetName( GetNullCharacter )] [traits|E]" + culture_head_lacks_archer_maa_desc:0 "The [culture_head|E] does not have at least [EmptyScope.ScriptValue('longbow_competitions_minimum_archer_maa_value')|0] [archer|E] [men_at_arms|E]" + no_imprisoned_claimant_desc:0 "You lack any [imprisoned|E] [claimant|E] to one of your [titles|E]" + no_prisoner_with_harsh_reason_desc:0 "You do not have a [prisoner|E] who you have a reason to [banish|E] or [execute|E]" + not_defending_in_war_desc:0 "You are not defending in a [war|E]" + rulers_with_same_faith_desc:0 "The [culture|E] must have #V 90%#! or more [rulers|E] of your [faith|E]" + rulers_with_same_faith_zealous_desc:0 "The [culture|E] must have #V 5#! or more [rulers|E] of your [faith|E] with the [GetTrait('zealous').GetName( GetNullCharacter )] [trait|E]" + piety_level_kown_languages_desc:0 "You must know #V 3#! [languages|E] and be a [GetModifier( 'piety_level_3' ).GetNameWithTooltip|L]" + counties_with_low_county_opinion_desc:0 "You must not have any [culture|E] [counties|E] in your [realm|E] with negative [county_opinion|E]" + councillor_with_negative_opinion_desc:0 "You must not have any [councillors|E] with negative [opinion|E]" + is_at_war_desc:0 "You are participating in a [war|E]" + prestige_level_desc:0 "Your [prestige_level|E] must be below @prestige_level_3_icon! [GetModifier( 'prestige_level_3' ).GetNameWithTooltip|L]" + + culture_emergence_events.0001.t:0 "Cultural Intermingling" + culture_emergence_events.0001.desc:0 "I am [ROOT.Char.GetCulture.GetName], but the people of my capital, the [capital_county_scope.GetBaseName], are [hybdridization_offer_culture.GetName]. As of late, I have seen my [hybdridization_offer_culture.GetNameNoTooltip] subjects emulating me and my [ROOT.Char.GetCulture.GetNameNoTooltip] ways.\n\nThey are blending our traditions. Some are old, some are new - but the most important thing is that they are more accepting of my rule!\n\nPerhaps this development should be encouraged?" + culture_emergence_events.0001.a:0 "If they act like me, then I shall act like them. Soon we will be as if one." + culture_emergence_events.0001.b:0 "Their admiration is enough!" + cultural_acceptance_gain_event:0 "From Events" + cultural_acceptance_loss_event:0 "From Events" + new_hybrid_culture_tt:0 "A [hybrid_culture|E] will appear that share a combination of [traditions|E] and [culture_pillars|E] from both the [ROOT.Char.GetCulture.GetName] and [hybdridization_offer_culture.GetName] [cultures|E]." + culture_emergence_events.0001.existing_hybrid:0 "You and your lands will adopt the [existing_hybrid_culture.GetName] [culture|E]" + culture_emergence_events.0001.new_hybrid:0 "You and your lands will adopt a newly emerged [hybrid_culture|E]" + + culture_emergence_events.0002.t:0 "A New Identity" + culture_emergence_events.0002.desc:0 "My people, the [ROOT.Char.GetCulture.GetCollectiveNoun], are a proud and wide-spread people.\n\nHowever similar we are, I cannot deny that my subjects have started to act differently from [ROOT.Char.GetCulture.GetCollectiveNounNoTooltip] elsewhere. Sometimes there's even conflict between visiting [ROOT.Char.GetCulture.GetNameNoTooltip] groups and those under my rule.\n\nWe are developing a new identity, we are [ROOT.Char.GetCulture.GetNameNoTooltip] - but at the same time we are not. Perhaps this development should be encouraged?" + culture_emergence_events.0002.a:0 "We will build a new, stronger identity!" + culture_emergence_events.0002.b:0 "We are [ROOT.Char.GetCulture.GetCollectiveNounNoTooltip] and nothing else! Get in line!" + new_divergent_culture_tt:0 "A [divergent_culture|E] will appear that share most [traditions|E] and [culture_pillars|E] as the [ROOT.Char.GetCulture.GetName] [culture|E], but with a new [ethos|E] and some Traditions replaced." + culture_emergence_events.0002.new_divergence:0 "You and your lands will adopt a newly emerged [divergent_culture|E]" + culture_emergence_events.vassals:0 "[vassals|E] might or might not join in" + + culture_emergence_events.0003.desc:0 "[culture_check_2.GetName]\n[duchy_title.GetName]\n[diverge_dummy.GetFullName]" + + culture_emergence_events.0005.t: "The Romance of Romansh" + culture_emergence_events.0005.desc: "While [county_scope.GetNameNoTierNoTooltip] celebrates the emergence of [new_culture_scope.GetName], I have noticed that some of the more #italic rustic#! people of the land still speak a dialect that is not quite what I thought [new_culture_scope.GetNameNoTooltip] was.\n\nOne peasant happens to be close to the road as I pass by, chattering with someone in the fields. "You there!" I thunder. "What on earth is that tongue you speak?"\n\nThe [rustic_peasant.GetWomanMan] pauses. "I suppose," [rustic_peasant.GetSheHe] answers slowly in [ROOT.Char.GetCulture.GetLanguage.GetNameNoTooltip], "we just call it #italic Romansh#!."\n\n'Romansh,' eh? Is this what my people truly are?" + culture_emergence_events.0005.a: "Our tongues must be as Romansh as our hearts." + culture_emergence_events.0005.a.tt: "[new_culture_scope.GetNameNoTooltip] will use #bold only#! Romansh names" + culture_emergence_events.0005.b: "Romansh shall become part of the [new_culture_scope.GetName] mosaic." + culture_emergence_events.0005.b.tt: "[new_culture_scope.GetNameNoTooltip] will use Romansh names #bold in addition to#! its current names" + culture_emergence_events.0005.c: "This peasant tongue is of no worth to [new_culture_scope.GetName]!" + culture_emergence_events.0005.c.tt: "[new_culture_scope.GetNameNoTooltip] shall remain as it is" + + realm_culture_size_diff:0 "Difference in size within the [realm|E]" + hybrid_cost_from_acceptance:0 "From [cultural_acceptance|E]" + culture_size_in_realm:0 "Number of controlled [culture|E] [counties|E]" + ai_cultural_hybridization_decision_tooltip:0 "" + ai_cultural_hybridization_decision_desc:0 "" + ai_cultural_hybridization_decision_confirm:0 "" + + culture_not_female_only_tt: "Your culture must have a [tradition|E] that enables [GetLaw('female_only_law').GetName] [succession|E] and your [faith|E] cannot have the [GetFaithDoctrine('doctrine_gender_male_dominated').GetBaseName] [doctrine|E]" + culture_not_male_only_tt: "Your culture must have a [tradition|E] that enables [GetLaw('male_only_law').GetName] [succession|E] and your [faith|E] can not have the [GetFaithDoctrine('doctrine_gender_female_dominated').GetBaseName] [doctrine|E]" + + female_only_law_faith_or_culture_trigger:0 "Your [faith|E] does not have the [GetFaithDoctrine('doctrine_gender_female_dominated').GetBaseName] [doctrine|E] and your [culture|E] does not have a [culture_tradition|E] that allow [GetLaw('female_only_law').GetName]" + male_only_law_faith_or_culture_trigger:0 "Your [faith|E] does not have the [GetFaithDoctrine('doctrine_gender_male_dominated').GetBaseName] [doctrine|E] and your [culture|E] does not have a [culture_tradition|E] that allow [GetLaw('male_only_law').GetName]" + female_preference_law_faith_or_culture_trigger:0 "Your [faith|E] does not have the [GetFaithDoctrine('doctrine_gender_equal').GetBaseName] or the [GetFaithDoctrine('doctrine_gender_female_dominated').GetBaseName] [doctrines|E] and your [culture|E] does not have a [culture_tradition|E] that allow [GetLaw('female_preference_law').GetName]" + male_preference_law_faith_or_culture_trigger:0 "Your [faith|E] does not have the [GetFaithDoctrine('doctrine_gender_equal').GetBaseName] or the [GetFaithDoctrine('doctrine_gender_male_dominated').GetBaseName] [doctrines|E] and your [culture|E] does not have a [culture_tradition|E] that allow [GetLaw('male_preference_law').GetName]" + equal_law_culture_faith_or_innovation_trigger:1 "Your [faith|E] does not have the [GetFaithDoctrine('doctrine_gender_equal').GetBaseName] [doctrine|E] and your [culture|E] does not have a [culture_tradition|E] that allow [GetLaw('equal_law').GetName]." + martial_customs_trigger_maleonly_malepref_or_equal:0 "You do #bold not#! have the [GetLaw('male_only_law').GetName], [GetLaw('male_preference_law').GetName] or [GetLaw('equal_law').GetName] [law|E]" + martial_customs_trigger_malepref_felamepref_or_equal:0 "You do #bold not#! have the [GetLaw('male_preference_law').GetName], [GetLaw('equal_law').GetName] or [GetLaw('female_preference_law').GetName] [law|E]" + martial_customs_trigger_femaleonly_femalepref_or_equal:0 "You do #bold not#! have the [GetLaw('female_only_law').GetName], [GetLaw('female_preference_law').GetName] or [GetLaw('equal_law').GetName] [law|E]" + martial_customs_trigger_femaleonly:0 "You do #bold not#! have the [GetLaw('female_only_law').GetName] [law|E]" + martial_customs_trigger_femaleonly_or_femalepref:0 "You do #bold not#! have the [GetLaw('female_only_law').GetName] or [GetLaw('female_preference_law').GetName] [law|E]" + martial_customs_trigger_maleonly:0 "You do #bold not#! have the [GetLaw('male_only_law').GetName] [law|E]" + martial_customs_trigger_maleonly_or_male_pref:0 "You do #bold not#! have the [GetLaw('male_only_law').GetName] or [GetLaw('male_preference_law').GetName] [law|E]" + cultural_traditions_trigger.already_has_unique_parameter.tt:0 "[ROOT.Char.GetCulture] has incompatible [traditions|E]" + culture_parameter_martial_custom_male_only_combatant:0 "Only men can be [commanders|E] and $knight_culture_player_plural$" + culture_parameter_martial_custom_equal_combatant:0 "Both men and women can be [commanders|E] and $knight_culture_player_plural$" + culture_parameter_martial_custom_female_only_combatant:0 "Only women can be [commanders|E] and $knight_culture_player_plural$" + + gardening_buildings_percentage_desc:0 "The [culture|E] does not have at least #V 10#! [counties|E] with one of the following [building|E] lines: #high $building_type_plantations_01$#!, #high $building_type_orchards_01$#! or #high $building_type_cereal_fields_01$#!" + not_numerous_close_family_desc:0 "You do not have at least #V 10#! living [close_family|E] members" + not_strong_opinion_close_family_desc:0 "You do not have enough [close_family|E] members with at least #V 80#! [opinion|E] of you" + lacks_blacksmiths_buildings_desc:0 "The [culture|E] does not have the #high $building_type_blacksmiths_01$#! line of [duchy_buildings|E] constructed in any of its [counties|E]" + lacks_royal_armory_buildings_desc:0 "The [culture|E] does not have the #high $building_type_royal_armory_01$#! line of [duchy_buildings|E] constructed in any of its [counties|E]" + has_a_special_mine_desc:0 "The [culture|E] does not have a mine [special_building|E] in any of its [counties|E]" + #has_courtier_or_guest_with_inspiration_desc: "The [culture|E] does not have at least #V 3#! [rulers|E] who has a [character|E] with (or had) an [inspiration|E] in their [court|E]" + has_courtier_or_guest_with_inspiration_desc:0 "The [culture|E] does not have at least #V 3#! [courts|E] with a [character|E] who has, or had, an [inspiration|E]" + + + appoint_podesta_interaction:0 "Appoint as Republican Overseer" + appoint_podesta_desc:0 "Appoint [recipient.GetShortUINameNoTooltip] to oversee the growing city of [recipient.GetCapitalLocation.GetTitle.GetNameNoTierNoTooltip], turning [recipient.GetHerHim] into a Republican vassal." + REQUEST_REPUBLIC_TEXT:0 "Greetings, my [actor.Custom2('RelationToMeShort', SCOPE.sC('recipient'))]. For some time it has become apparent the most wealthy part of the land you rule is urban commune within it. I invite you to take on the task of overseeing this growing Republic in my name." + spar_with_knight_interaction.effect.tt:0 "May gain a bonus" + spar_with_knight_interaction.negative_effect.tt:0 "...but there's always risk involved" + REQUEST_SPARRING_TEXT:0 "Greetings, my [actor.Custom2('RelationToMeShort', SCOPE.sC('recipient'))]. We both need to ready ourselves for war, hone our skills and sharpen our wits. I invite you to spar with me, bring whatever weapon you wish!" + spar_with_knight_interaction:0 "Spar with [GetPlayer.Custom( 'KnightCultureNoTooltip' )]" + spar_with_knight_interaction_desc:0 "Challenge a [knight|E] to a [single_combat_fight|E] sparring match, potentially gaining beneficial [modifiers|E]" + sparring_honed_skills_modifier:0 "Sparring: Honed Skills" + sparring_full_of_confidence_modifier:0 "Sparring: Full of Confidence" + sparring_chivalric_motivation_modifier:0 "Sparring: Chivalric Motivation" + sparring_valiant_knight_modifier:0 "Sparring: Valiant Knight" + sparring_noble_defender_modifier:0 "Sparring: Noble Defender" + sparring_delusions_of_superiority_modifier:0 "Sparring: Delusions of Superiority" + sparring_leader_of_knights_modifier:0 "Sparring: Leader of Knights" + sparring_sprained_ankle_modifier:0 "Sparring: Sprained Ankle" + culture_tradition_events.0002.t:0 "Spar with [GetPlayer.Custom( 'KnightCultureNoTooltip' )]: Conclusion" + culture_tradition_events.0002.desc:0 "I put my weapon down and turn to [recipient.GetTitledFirstName], giving [recipient.GetHerHim] a customary round of applause. [recipient.GetSheHe|U] does the same.\n\n" + culture_tradition_events.0002.desc_actor_victor_good:0 ""Well fought, my [actor.GetTitleTierName|U]! You bested me fair-and-square." [recipient.GetFirstNameNoTooltip] says.\n"This practice will surely serve us well, should there be war in the future of [actor.GetPrimaryTitle.GetNameNoTierNoTooltip]."\n\nThis was invigorating, I feel fit and ready!" + culture_tradition_events.0002.desc_actor_victor_bad:0 ""Well fought, my [actor.GetTitleTierName|U], I am throughly defeated." [recipient.GetFirstNameNoTooltip] whimpers.\n"Though remember, do not let this victory go to your head. I am not your enemy, they are still out there."\n\nBah! I feel just fine!" + culture_tradition_events.0002.desc_recipient_victor_good:0 ""Well fought, my [actor.GetTitleTierName|U], I win this round!" [recipient.GetFirstNameNoTooltip] says with a sporting tone. "Now we are ready to face anything!"\n\nIndeed we are, perhaps I should consider my next conquest?" + culture_tradition_events.0002.desc_recipient_victor_bad:0 ""Well fought, my [actor.GetTitleTierName|U]. I am sorry if I caused you harm. For a brief moment I was in a trance — me and my weapon were as one..." [recipient.GetFirstNameNoTooltip] says apologetically.\n"Perhaps you need a bit of rest?"\n\nNonsense, I am fit as a butcher's dog!" + culture_tradition_events.0002.a:0 "A good bout!" + culture_tradition_events.0002.b:0 "I might have lost, but it was good training!" + + FROM_CULTURE_TRADITIONS:0 "From [culture_traditions|E]: $VALUE|=+0$" + CULTURE_FORBIDS_DIVORCE:0 "Your [culture_traditions|E] forbid [divorce|E]" + more_expensive_court_positions:1 "[court_position|E] Salary Cost: [gold_i]#N +25%#![SelectLocalization( HasDlcFeature( 'royal_court' ), 'more_expensive_amenities_text', '' )]" + more_expensive_amenities_text:0 "\n$EFFECT_LIST_BULLET$[court_amenity|E] Cost: [gold_i]#N +25%#!" + TOTAL_TRADITION_SLOTS:0 "Max [culture_traditions]" + + cannot_combine_tradition_trigger_desc:0 "The [culture|E] already has the [tradition|E]" + cannot_have_tradition_warrior_culture:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_warrior_culture_name$#!" + cannot_have_tradition_seafaring:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_seafaring_name$#!" + cannot_have_tradition_fp1_coastal_warriors:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_fp1_coastal_warriors_name$#!" + cannot_have_tradition_maritime_way_of_life:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_maritime_way_of_life_name$#!" + cannot_have_tradition_fp1_trials_by_combat:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_fp1_trials_by_combat_name$#!" + cannot_have_tradition_fp1_the_right_to_prove:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_fp1_the_right_to_prove_name$#!" + cannot_have_tradition_runestones:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_runestones_name$#!" + cannot_have_tradition_poetry:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_poetry_name$#!" + cannot_have_tradition_storytellers:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_storytellers_name$#!" + cannot_have_tradition_fp1_northern_stories:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_fp1_northern_stories_name$#!" + cannot_have_tradition_fp1_performative_honour:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_fp1_performative_honour_name$#!" + cannot_have_tradition_city_keepers:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_city_keepers_name$#!" + cannot_have_tradition_castle_keepers:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_castle_keepers_name$#!" + cannot_have_tradition_sacred_hunts:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_sacred_hunts_name$#!" + cannot_have_tradition_hunters:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_hunters_name$#!" + cannot_have_tradition_vegetarianism:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_vegetarianism_name$#!" + cannot_have_tradition_court_eunuchs:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_court_eunuchs_name$#!" + cannot_have_tradition_merciful_blindings:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_merciful_blindings_name$#!" + cannot_have_tradition_byzantine_succession:0 "$cannot_combine_tradition_trigger_desc$ #high $tradition_byzantine_succession_name$#!" + cannot_have_vegetarianism_and_sacred_hunts:0 "The [tradition|E] #high $tradition_vegetarianism_name$#! cannot be combined with #high $tradition_sacred_hunts_name$#!" + cannot_have_vegetarianism_and_hunters:0 "The [tradition|E] #high $tradition_vegetarianism_name$#! cannot be combined with #high $tradition_hunters_name$#!" + + remove_marriage_traditions:0 "The [culture_scope.GetName] [culture|E] loses any [marriage|E]-altering [traditions|E] that conflict with the [doctrines|E] of [faith_scope.GetName]" + culture_tradition_events.0100.t:0 "A Clash of Culture and Faith" + culture_tradition_events.0100.desc:0 "A missive from [head_of_faith.GetTitledFirstName] has arrived. It starts off with pleasantries, and outlines the importance I hold in the eyes of the [culture_scope.GetName] people.\n\n" + culture_tradition_events.0100.tradition_monogamous:0 ""You must understand that for as long as your people practice monogamy, you are in violation of [faith_scope.GetAdjective] doctrine! I only wish for your salvation. The duty of every good [faith_scope.GetAdjectiveNoTooltip] cannot be fulfilled with but one spouse." the missive reads." + culture_tradition_events.0100.tradition_polygamous:0 ""Your practice of polygamy is in strict opposition of [faith_scope.GetAdjective] doctrine, and a sin in the eyes of [faith_scope.HighGodName]! I only wish for your salvation. Please, lead your people into the light and shed yourselves of excess spouses!" the missive reads." + culture_tradition_events.0100.tradition_concubines:0 ""Your practice of concubinage is not supported by [faith_scope.GetAdjective] doctrine, only through proper marriage will [faith_scope.HighGodName] smile upon your people! I only wish for your salvation. Set aside your concubines, for the good of us all." the missive reads." + culture_tradition_events.0100.end:0 "\n\nA dilemma indeed... which do I value more? The customs of my people, or the doctrines of our faith?" + culture_tradition_events.0100.a:0 "We must uphold [faith_scope.GetAdjectiveNoTooltip] doctrine." + culture_tradition_events.0100.b:0 "The customs of my people are more important!" + + culture_tradition_events.0101.t:0 "A Mystic's Mind" + culture_tradition_events.0101.desc:0 "It's rare enough for me to get a chance for a quiet meal without sycophants or matters of state interrupting, but tonight I've managed it. A nice, calm dinner, and a chance to rest my social muscles.\n\nWithin seconds, the door bursts off its hinges with a tragic inevitability, and a [mendicant_mystic.GetFaith.PriestNeuter] barges into the room. [mendicant_mystic.GetSheHe|U] carries gnarled-walking stick, still covered in splinters from battering down the door in a single swing.\n\n"Noble [ROOT.Char.GetTitleAsNameNoTooltip], I come with an offer! For a small stipend, I, #EMP [mendicant_mystic.GetFirstName]#!, will share knowledge of our people's ancient ways with the children of your court!"" + culture_tradition_events.0101.a:0 "Of course, noble [mendicant_mystic.GetFaith.PriestNeuter]. Please put the beating stick down." + culture_tradition_events.0101.a.tt:0 "All available [children|E] at [court|E] receive a boost to their ongoing [education|E]" + culture_tradition_events.0101.b:0 "Isn't this a little much for [mendicant_mystic.GetFaith.HighGodNamePossessive] work?" + culture_tradition_events.0101.b.tt.success:0 "You argue the mystic down" + culture_tradition_events.0101.b.tt.failure:0 "The mystic leaves your court in disgust" + culture_tradition_events.0101.c:0 "Be gone, beggar, I'm trying to eat my dinner!" + + culture_tradition_events.0111.t:0 "A Mystic's Speech" + culture_tradition_events.0111.desc:0 ""...is why we must submit ourselves to the beneficence of [mendicant_mystic.GetFaith.HighGodName] every moment of every day of our lives. Do you see? Shall I continue?"\n\nTwo. Straight. Hours.\n\nI don't even know how [mendicant_mystic.GetName] found [mendicant_mystic.GetHerHis] way into my chambers, but the [mendicant_mystic.GetFaith.PriestNeuter] has been lecturing me on the finer points of [mendicant_mystic.GetFaith.GetName] theology for #EMP two. Straight. Hours.#!\n\nAt long last, the [mendicant_mystic.GetWomanMan] falls silent, looking at me for a response. I feel my eye begin to twitch." + culture_tradition_events.0111.a:0 "Such inspiring words!" + culture_tradition_events.0111.b:0 "You've said your piece, now let me say mine..." + culture_tradition_events.0111.a.tt.success:0 "You demolish the mystic's argument" + culture_tradition_events.0111.a.tt.failure:0 "You stumble over your words" + culture_tradition_events.0111.c:0 "Who let this vagabond into my home? Guards! HELP!" + + culture_tradition_events.0121.t:0 "A Mystic's Service" + culture_tradition_events.0121.desc:0 "Almost uncharacteristically for [mendicant_mystic.GetHerHis] profession, [mendicant_mystic.GetFirstName] has waited patiently in an antechamber till I could give [mendicant_mystic.GetHerHim] an audience.\n\nThe [mendicant_mystic.GetFaith.PriestNeuter] seems nervous when I enter, but launches into a hasty speech the second I arrive regardless.\n\n"[ROOT.Char.Custom('FormOfAddressForLiege')|U], I have been a mendicant for some time now, and though it is [mendicant_mystic.GetFaith.HighGodNamePossessive] work, it as taxing for mind and body as it is nourishing for the soul."\n\n"If you would have me, I would hang up my wanderer's staff and serve you at court as best I am able. W-will you take me in?"" + culture_tradition_events.0121.a:0 "I can certainly use a [mendicant_mystic.GetWomanMan] of your talents..." + culture_tradition_events.0121.b:0 "A loyal [mendicant_mystic.GetFaith.PriestNeuter] you say..." + culture_tradition_events.0121.c:0 "Looking like that, #EMP smelling#! like that, and you want to live here?" + + culture_tradition_events.0131.t:0 "A Mystic's Wrath" + # Big credit to the greatest NPC of 2011. + culture_tradition_events.0131.desc:0 ""[ROOT.Char.GetTitleAsNameNoTooltip]? You're barely a worm, #EMP writhing in the filth#! of your own corruption! Repent your sins beneath [mendicant_mystic.GetFaith.HighGodName]! [mendicant_mystic.GetFaith.HighGodName] the Mighty! [mendicant_mystic.GetFaith.HighGodName] the Unerring! [mendicant_mystic.GetFaith.HighGodName] the Unassailable!"\n\nDamn and blast this irritating [mendicant_mystic.GetFaith.PriestNeuter]. It was bad enough when [mendicant_mystic.GetSheHe] was on the street corner! If I #EMP ever#! figure out who let [mendicant_mystic.GetFirstName] into my #EMP home#!, I'll have their eyes; [mendicant_mystic.GetSheHe]'s been here less than ten minutes and I've already got a cluster headache coming on.\n\nI can't take much more of the mendicant's tirade, I've got to act swiftly while there's a natural break in [mendicant_mystic.GetHerHis] rant." + culture_tradition_events.0131.a:0 "#EMP My#! sins? Let's talk about #EMP you#!." + culture_tradition_events.0131.a.tt.success:0 "You prove the mystic an utter hypocrite" + culture_tradition_events.0131.a.tt.failure:0 "The mystic shows you to be a fool" + culture_tradition_events.0131.b:0 "Will... will you teach me to be better?" + culture_tradition_events.0131.b.tt.success:0 "The mystic helps you to overcome your failings" + culture_tradition_events.0131.b.tt.failure:0 "You are overcome by mental anguish" + culture_tradition_events.0131.c:0 "#EMP Writhing in filth?#! Throw this lunatic into the nearest cess pit!" + + culture_tradition_events.0141.t:0 "A Mystic's Bargain" + culture_tradition_events.0141.desc:0 ""Don't you see, [ROOT.Char.Custom('FormOfAddressForLiege')], how you risk your soul with this... [ROOT.Char.GetFaith.GetName] idea? Allow me to bring you into the light of true [mendicant_mystic.GetFaith.GetAdjective] belief and rescue you from eternal misery!"\n\nAs a mendicant [mendicant_mystic.GetFaith.PriestNeuter], [mendicant_mystic.GetFirstName] is used to preaching to unbelieving [ROOT.Char.GetCulture.GetName] folk, but techniques that work on the peasantry do not necessarily hold water with the noblesse.\n\nSilence falls between us, and I find myself gazing deeply into the [mendicant_mystic.GetWomanMan]'s eyes, watching the lights of hope and hunger dance and flicker behind them." + culture_tradition_events.0141.a:0 "I find your words compelling, [mendicant_mystic.GetFaith.PriestNeuter]." + culture_tradition_events.0141.b:0 "Allow me to elucidate the merits of [ROOT.Char.GetFaith.GetNameNoTooltip] beliefs..." + culture_tradition_events.0141.b.tt.success:0 "You illuminate [mendicant_mystic.GetFirstNameNoTooltip]" + culture_tradition_events.0141.b.tt.failure:0 "You remain at loggerheads" + culture_tradition_events.0141.c:0 "Your [mendicant_mystic.GetFaith.HighGodName]! How many levies has [mendicant_mystic.GetFaith.HighGodNameSheHe|U] got?" + + #EP2 Traditions + tradition_ep2_avid_falconers_name:0 "Avid Falconers" + tradition_ep2_avid_falconers_desc:0 "The art of breeding, training, and hunting with raptors like falcons and hawks is one of most prestigious past-times among this culture's elite." + culture_parameter_falconer_traits_more_common:0 "[characters|E] gain more Falconer [trait_level_track_xp|E]" + culture_parameter_forest_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'forest' ).GetName] and [GetTerrain( 'taiga' ).GetName]" + culture_parameter_hills_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'hills' ).GetName]" + culture_parameter_desert_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'desert' ).GetName] and [GetTerrain( 'oasis' ).GetName]" + culture_parameter_steppe_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'steppe' ).GetName]" + culture_parameter_mountains_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'mountains' ).GetName] and [GetTerrain( 'desert_mountains' ).GetName]" + culture_parameter_drylands_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'drylands' ).GetName] and [GetTerrain( 'desert' ).GetName]" + culture_parameter_jungle_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'jungle' ).GetName]" + culture_parameter_wetlands_hunt_success_chance:0 "Increased [hunt_success_chance|E] in [GetTerrain( 'wetlands' ).GetName] and [GetTerrain( 'floodplains' ).GetName]" + + can_host_joust_contests_name: "[GetCultureTradition('tradition_chanson_de_geste').GetName] or [GetCultureTradition('tradition_chivalry').GetName]" + + #CE1 Traditions + tradition_ce1_ritual_washing_name: "Water Rituals" + tradition_ce1_ritual_washing_desc: "The purifying properties of water are an essential part of life for this culture and the ritual of ablution occupies a prominent position in their society." + culture_parameter_better_disease_resistance: "[characters|E] of this [culture|E] are less likely to get infected by [epidemics|E]" + doesnt_employ_court_physician_desc: "The [culture|E] does not have #high 5#! [rulers|E] employing a [GetCourtPositionType('court_physician_court_position').GetName()]" + cheaper_tradition_physician_or_whole_of_body: "You have the [GetTrait('lifestyle_physician').GetName( GetNullCharacter )] or [GetTrait('whole_of_body').GetName( GetNullCharacter )] [traits|E]" + cheaper_tradition_norse_washing: "$heritage_north_germanic_name$ [heritage|E]" + culture_parameter_always_unlock_legendary_hunting_lodge: "[SelectLocalization( HasDlcFeature( 'legends' ), 'culture_parameter_always_unlock_legendary_hunting_lodge_HAS_LEGENDS_DLC', 'culture_parameter_always_unlock_legendary_hunting_lodge_NO_LEGENDS_DLC' )]" + culture_parameter_always_unlock_legendary_hunting_lodge_NO_LEGENDS_DLC: "" + culture_parameter_always_unlock_legendary_hunting_lodge_HAS_LEGENDS_DLC: "[rulers|E] of this [culture|E] can always construct a $building_type_legendary_hunting_lodge$ after completing a [legend|E]" + culture_parameter_less_plague_spread_culture: "[characters|E] of this [culture|E] have a higher chance of [epidemics|E] not spreading into their lands" + + + #BP2 Traditions + tradition_noble_adoption_name: "Noble Adoption" + tradition_noble_adoption_desc: "Adopting orphaned children into noble houses is commonplace in this society. The blood of the covenant is thicker than the water of the womb." + culture_parameter_allows_adoption: "[characters|E] of this [culture|E] are able to offer [adoption|E] to [children|E] who are not directly related to any [rulers|E]" + culture_parameter_free_adoption: "[characters|E] of this [culture|E] can [adopt|E] without spending any [prestige|E] or [dynasty_prestige|E]" + culture_parameter_wider_adoption: "[characters|E] of this [culture|E] can [adopt|E] unrelated orphaned [children|E], and do not lose [opinion|E] for doing so" + + traditionalist_discount_desc: "The [culture|E] was led towards traditionalism by its [culture_head|E]" + culture_parameter_more_hostage_acceptance: "[characters|E] of this [culture|E] are more willing to send away, take, and return [hostages|E]" + culture_parameter_more_hostage_acceptance_for_vassals: "[characters|E] of this [culture|E] are more willing to send away, take, and return [hostages|E] with their [liege|E]" + +#EP3 Traditions + tradition_ep3_indomitable_azatani_name: "Indomitable Azatani" + tradition_ep3_indomitable_azatani_desc: "For this culture's fiercely proud nobles, riding down thunderously from their high strongholds, "The wound of a dagger heals, but that of a tongue — never!"" + culture_parameter_house_hostility_more_common: "[rulers|E] act more aggressively against other [houses|E]" + culture_parameter_vassals_more_likely_to_refuse_demands: "[characters|E] are more likely to refuse [imprisonment|E], [retractions|E] and [revocations|E]" + + tradition_ep3_audacious_cadets_name: "Audacious Cadets" + tradition_ep3_audacious_cadets_desc: "Restless throngs of younger sons define this culture. Bold and unscrupulous, these horsemen chase dreams of faraway adventure, of mercenary cruelties, and of glorious conquest." + + culture_parameter_ambitious_trait_more_common: "The [GetTrait('ambitious').GetName( GetNullCharacter )] [trait|E] is more common" + culture_parameter_reduced_bodyguard_aptitude: "Reduced [GetCourtPositionType('bodyguard_court_position').GetName()] [aptitude|E]" + + tradition_ep3_imperial_tagmata_name: "Imperial Tagmata" + tradition_ep3_imperial_tagmata_desc: "Elite, well-armored regiments form the backbone of this culture's military campaigns. Their haughty troops have little regard for petty warrior nobles and reckless acts of personal valor; instead, they honor discipline and the hallowed names of their units. #EMP Exkoubitoi! Scholai! Hikanatoi!#!" + + domain_counties_with_stables_desc: "The [culture_head|E] does not hold #high 8#! [counties|E] with $building_type_stables_01$ built in one of their [holdings|E]" + + tradition_ep3_roman_ceremonies_name: "Roman Ceremonies" + tradition_ep3_roman_ceremonies_desc: "The emperors of the past have bestowed this culture with lingering grandeur, spectacular rites, an awe for the imperial office... and a public life rich with unrest." + + tradition_ep3_palace_politics_name: "Palace Politics" + tradition_ep3_palace_politics_desc: "Powerful eunuchs and silk-robed sycophants man a vast political apparatus, impressing with fineries, flattering with honors, and plotting viciously in the name of advancement." + culture_head_court_grandeur_desc: "The [culture_head|E] does not have a [court_grandeur_level|E] of #high 8#! or higher" + culture_parameter_unlock_akolouthos: "Can appoint the [GetCourtPositionType('akolouthos_court_position').GetName()] [court_position|E], when the Varangian Guard has been founded." + +tradition_tgp_bushido_name: "Bushidō" +tradition_tgp_bushido_desc: "Rooted in a legacy of honor and martial discipline, this tradition elevates the bond between lord and vassal through acts of homage and valor. Strength of character and deeds of integrity forge unshakable loyalty and respect." +culture_parameter_must_pledge_loyalty_to_liege: "Must #v Pledge Loyalty#! promptly once the [decision|E] is available" +culture_parameter_better_petition_outcomes: "#v Petition#! [decision|E] yields better outcomes" +culture_parameter_opinion_from_prowess: "[opinion|E] bonuses from [prowess|E]" +culture_parameter_honorable_trait_bonuses: "Diligent, Humble, Brave and Just [personality_traits|E] are better." +culture_parameter_unlock_infantry_samurai_units: "Can recruit [GetMaA('samurai').GetName] as [men_at_arms|E]" +culture_parameter_stalwart_leader_non_admin_duels: "[GetPerk('stalwart_leader_perk').GetName(GetPlayer)] [single_combat_fight|E] available against any non-[administrative|E] [character|E] of [martial|E] gender of equal or lower [rank|E]" +culture_parameter_non_admin_close_family_non_martial_gender_knights_in_defensive_wars: "Non-[martial|E] gender unmarried [close_family|E] and [spouses|E] of non-[administrative|E] [rulers|E] may serve as $knight_culture_player_plural$ in defensive [wars|E]" + +tradition_tgp_court_machinations_name: "Court Machinations" +tradition_tgp_court_machinations_desc: "Within the labyrinthine halls of the court, eunuchs hold sway, consorts vie for favor, and whispers of treachery echo through gilded chambers." + + tradition_tgp_art_of_war_name: "Art of War" + tradition_tgp_art_of_war_desc: "This culture has studied military theory for a thousand years, and its generals and marshals have at their disposal a rich crop of military manuals and text books. This wealth of knowledge is only overshadowed by a great technical understanding of how to make strong armor and weapons." + duchies_with_examination_halls_desc: "The [culture|E] does not hold #high 5#! [duchies|E] with $building_type_examination_hall_01$ built in one of their [holdings|E]" + culture_parameter_unlock_maa_tiefutu: "Can recruit [GetMaA('tiefutu').GetName] as [men_at_arms|E]" + culture_parameter_unlock_maa_black_armor_cavalry: "Can recruit [GetMaA('black_armor_cavalry').GetName] as [men_at_arms|E]" + culture_parameter_unlock_zhanmadao: "Can recruit [GetMaA('zhanmadao_infantry').GetName] as [men_at_arms|E]" + culture_parameter_unlock_burenjia: "Can recruit [GetMaA('burenjia').GetName] as [men_at_arms|E]" + culture_parameter_unlock_shenbigong_innovation: "The #high $innovation_repeating_crossbow$#! [innovation|E] is available from the $culture_era_tribal$ [era|E] onward" + culture_parameter_military_governor_appointment_score: "[learning_skill|E] increases [candidate_score|E] for [GetSubjectContractType( 'celestial_provinces' ).GetObligationNameShort( 'celestial_province_military' )] Provinces" + + tradition_tgp_ephemeral_grace_name: "Ephemeral Grace" + tradition_tgp_ephemeral_grace_desc: "The aesthetic philosophy of #EMP Mono no Aware#! celebrates the transient beauty of fleeting moments. It fosters a deep harmony with nature and a reflective appreciation of art and life's impermanence." + culture_parameter_stress_loss_bonus_from_harmonious_traits: "Increased [stress|E] Loss from [GetTrait('temperate').GetName( GetNullCharacter )], [GetTrait('calm').GetName( GetNullCharacter )], [GetTrait('patient').GetName( GetNullCharacter )], and [GetTrait('compassionate').GetName( GetNullCharacter )] [traits|E]" + + tradition_tgp_imperial_peace_name: "Fragile Peace" + tradition_tgp_imperial_peace_desc: "Though largely kept safe from invasion by the sea, defending against raids from the north and maintaining Kanmu's peace against pretenders or upstart governors still demands skilled fighters and organization." + culture_parameter_unlock_mounted_samurai_units: "Can recruit [GetMaA('japanese_horse_archers').GetName] as [men_at_arms|E]" + + tradition_tgp_rice_cultivators_name: "Rice Cultivators" + tradition_tgp_rice_cultivators_desc: "Rice is the lifeblood of this culture. Through diligent labor and agricultural know-how, their harvests are rich as long as they control suitable lands for their crop. As a result, their economic prosperity and military might soar high above their less advanced neighbors." + + tradition_tgp_inward_perfection_name: "Inward Perfection" + tradition_tgp_inward_perfection_desc: "This culture favors self-reliance and the enrichment of inner virtues over foreign influence. Diplomatic ties may wither, but knowledge and introspection flourish in tranquil isolation." + +tradition_tgp_fortified_strongholds_name: "Fortified Strongholds" +tradition_tgp_fortified_strongholds_desc: "This culture is characterized by great fortified cities which fulfill religious, military and governmental functions. The protection of those cultural strongholds is critical and foundation of further cities is a matter of great prestige." +culture_parameter_founding_temple_citadels_gives_more_piety: "Founding [temple_citadel|e] [holdings|e] grants #P +100%#! [piety|e]" +culture_parameter_warmonger_city_founders: "Founding [temple_citadel|e] [holdings|e] sets [control_i|e][control|e] to #P 100%#!" +culture_parameter_temple_citadel_fort_level_bonus: "[temple_citadels|e] have increased [fort_level_i][fort_level|E]" +culture_parameter_temple_citadel_control_bonus: "[temple_citadels|e] provide a small [control_i][control|E] bonus" +not_a_defense_focused_culture: "Less than #N 50%#! of the [culture|e] [counties|e] are [coastal|e]" + +tradition_tgp_hydraulic_builders_name: "Hydraulic Builders" +tradition_tgp_hydraulic_builders_desc: "This culture places great importance in utilizing waterworks in spiritual ways. At the center of this fascination is the [GetBuilding('sacred_pool_06').GetName], which tend to be expanded into large reservoirs with utmost religious significance. " +culture_parameter_sacred_pool_additional_bonuses: "The [GetBuilding('sacred_pool_01').GetTypeName|V] line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]#V $building_type_sacred_pool_01$#!" +culture_parameter_waterworks_additional_bonuses: "The [GetBuilding('waterworks_01').GetTypeName|V] line of [buildings|E] have additional bonuses in [counties|E] of this [culture|E]#V $building_type_waterworks_01$#!" +culture_parameter_may_build_sacred_pools_ahead_of_time: "All [GetBuilding('sacred_pool_01').GetTypeName|V] [buildings|E] can be built one [era|E] earlier" + +tradition_tgp_esoteric_power_name: "Esoteric Power" +tradition_tgp_esoteric_power_desc: "Divine and mysterious are the two words that describe the nobility in the eyes of this culture. Rulers that wish to secure their mandate need to engage in elaborate rituals and manifest their power via the display of divine artifacts." +culture_parameter_increases_effect_of_mandala_realm_contracts: "[piety|e] and [legitimacy|e] gain from [mandala_rituals|e] is increased" +culture_parameter_may_commission_kris: "May use the [GetDecisionWithKey('commission_artifact_decision').GetName] [decision|e] to comission Kris [artifacts|E]" +culture_parameter_piety_level_affect_artifact_quality: "[inspirations|E] produce higher-quality [artifacts|E] the higher the [piety_level|E] of the commissioner" +culture_parameter_kris_artifacts_are_more_powerful: "Produced Kris $artifact_dagger$ [artifacts|e] receive additional benefits" + +tradition_tgp_barangay_confederations_name: "Barangay Confederations" +tradition_tgp_barangay_confederations_desc: "The rulers of this culture lead many disparate city-states littered along river estuaries and the coast. Such states vary greatly in size, but tend to unite in confederations, which are led by a chief chosen from amongst the members' [Glossary( 'Datu', 'DATU_GLOSS' )]." +DATU_GLOSS: "A title that denotes the chiefs of different polities found across the Philippines." +culture_parameter_religious_relations_is_empowered: "[piety|e] gain from [religious_relations|e] is increased by #P +20%#!" +culture_parameter_forming_confederations_is_easier: "Forming a [confederation|E] no longer requires either a powerful neighbor, or the [GetTrait('diplomat').GetName(GetNullCharacter)] or [GetTrait('family_first').GetName(GetNullCharacter)] [traits|E]" +culture_parameter_forming_confederations_is_less_expensive: "Forming a [confederation|e] costs #P 50%#! less [prestige|e] and [piety|e]" +culture_parameter_invite_to_confederation_extra_reasons: "$offer_confederation_interaction$ [character_interaction|e] Acceptance: #P +20#!" +culture_parameter_mandala_tributaries: "The [GetDecision('convert_to_mandala_government_decision').GetName] [decision|E] turns all [confederates|E] into [tributaries|E]" +culture_parameter_confederation_tribal_authority: "Can increase [tribal_authority|E] despite being in a [confederation|E]" +confederates_to_tributaries_tt: "All [confederates|E] become your [tributaries|E]" +BARANGAY_TRADITION_REASON: "[actor.GetCulture.GetName] [culture_traditions|E]: $VALUE|=+0$" +forming_confederations_is_less_expensive_desc: "[actor.GetCulture.GetName] has [culture_tradition|e] reducing cost: $VALUE|=-1$" + +tradition_tgp_religious_hospitality_name: "Religious Hospitality" +tradition_tgp_religious_hospitality_desc: "This culture is adept at blending foreign religions with their customs, leading to a more cosmopolitan society with many faiths living peacefully amongst each other. Much of this is achieved through trade and international relations." +not_a_coastal_culture: "Less than #N 50.0%#! of the [culture|e] [counties|e] are [coastal|e]" +culture_parameter_development_gain_from_religious_exiles_is_doubled: "The [development|e] gain from [GetDecisionWithKey('invite_religious_exiles_decision').GetName] [decision|e] is doubled" +culture_parameter_invite_courtiers_reasons: "Invite to Court [character_interaction|e] Acceptance: #P +15#!" +invite_courtiers_additional_reason: "[actor.GetCulture.GetName] [culture_traditions|E]: $VALUE|=+0$" +culture_parameter_less_cost_to_invite_religious_exiles: "The [GetDecisionWithKey('invite_religious_exiles_decision').GetName] [decision|e] costs #P 50%#! less [piety|e]" +culture_parameter_ai_uses_religious_exiles: "Characters use the [GetDecisionWithKey('invite_religious_exiles_decision').GetName] [decision|e] more often" + + tradition_tgp_defiant_ambushers_name: "Defiant Ambushers" + tradition_tgp_defiant_ambushers_desc: "Ever-harried by encroaching invaders, mastery of the saddle and bow allows limited numbers to be used to devastating effect in hit-and-run raiding and ambushes." + culture_parameter_unlock_emishi_horse_archers_units: "Can recruit [GetMaA('emishi_horse_archers').GetName] as [men_at_arms|E]" + culture_parameter_county_peasant_and_populist_factions_more_common: "$doctrine_parameter_peasant_and_populist_factions_more_common$" + + tradition_tgp_mountain_island_name: "Yashima" + tradition_tgp_mountain_island_desc: "The mountains and forests of the many islands of the Japanese archipelago rise and fall across the ocean, their inhabitants well versed in traversing its rugged and diverse landscapes." + + tradition_tgp_japanese_houses_name: "Dynastic Pragmatism" + tradition_tgp_japanese_houses_desc: "While the norms of marriage are important to maintain for appearances and legal expediency, pleasure is a natural gift bestowed by the gods and vital to good health, whatever the ramifications on pedigree." + culture_parameter_adultery_always_accepted: "Characters with the [GetTrait('adulterer').GetName( GetNullCharacter )] and [GetTrait('fornicator').GetName( GetNullCharacter )] [traits|E] are always fully accepted" + culture_parameter_increased_house_relation_changes: "All [house_relation|E] changes are quadrupled" + + capital_province_development_level_desc: "The [culture_head|E]'s capital does not have a [county_development|E] of #high 30#! or higher" + + culture_parameter_other_cultures_more_likely_to_hybridize: "Other-[culture|E] [rulers|E] are more likely to [hybridize|E] with this [culture|E]" + culture_parameter_estate_building_upgrade_development_gain: "Gain #V [EmptyScope.ScriptValue('cultivated_sophistication_development_gain')|0]#! [development_growth|E] in your [realm_capital|E] when you construct or upgrade an [estate_building|E] in the same [county|E]" + + tradition_ep3_cultivated_sophistication_name: "Cultivated Sophistication" + tradition_ep3_cultivated_sophistication_desc: "Barbarians gaze in envy upon this culture's resplendent luxuries, their society's sophistication. Fueled by a sense of primacy, this culture rejects any contradictions that lie outside their cosmopolitan sphere of influence." + must_have_administrative_government_tt: "The [culture_head|E]'s [government|E] type must be [administrative|E]" + + hosts_chariot_races_name: "[GetCultureTradition('tradition_ep3_roman_ceremonies').GetName]" + culture_parameter_hosts_chariot_races: "May host the [GetActivityType('activity_chariot_race').GetName] [activity|E] and hire both a [GetCourtPositionType('charioteer_court_position').GetName] and a [GetCourtPositionType('bookmaker_court_position').GetName]" + culture_parameter_unlock_voluntary_laampdom: "[SelectLocalization( HasDlcFeature( 'landless_playable' ), 'culture_parameter_unlock_voluntary_laampdom_DLC', 'culture_parameter_unlock_voluntary_laampdom_NO_DLC' )]" + culture_parameter_unlock_voluntary_laampdom_DLC: "Allows the [GetDecisionWithKey('become_landless_adventurer_decision').GetName] [decision|E]" + culture_parameter_unlock_voluntary_laampdom_NO_DLC: "" + unlock_voluntary_laampdom_name: "[GetCultureTradition('tradition_swords_for_hire').GetName], [GetCultureTradition('tradition_horse_lords').GetName], [GetCultureTradition('tradition_futuwaa').GetName], [GetCultureTradition('tradition_ep3_audacious_cadets').GetName], [GetCultureTradition('tradition_hird').GetName], [GetCultureTradition('tradition_caravaneers').GetName], [GetCultureTradition('tradition_diasporic').GetName], or [GetCultureTradition('tradition_fp1_coastal_warriors').GetName]" + + unlock_junior_emperors_name: "[nominal_duumvirates|E]" + culture_parameter_unlock_junior_emperors: "[administrative|E] [emperors|E] may appoint one of their [children|E] as [junior_emperor|E], entering into a [nominal_duumvirate|E] until the $game_concept_child$ comes of age" + unlock_co_emperors_name: "[duumvirates|E]" + culture_parameter_unlock_co_emperors: "[administrative|E] [emperors|E] may enter into [duumvirates|E], voluntarily [sharing_power|E] with another [character|E] for powerful bonuses" + + holds_triumphs_name: "Holds Triumphs" + culture_parameter_holds_triumphs: "Gain a [decision|E] to Hold a Triumph" + + culture_parameter_farm_estates_pastures_unlock: "The construction of #V $building_pastures_04$#! [building|E] unlocks the first four tiers of #V $building_type_farm_estates_01$#! line of [buildings|E]" + culture_parameter_watermills_forestries_unlock: "The construction of #V $building_logging_camps_04$#! [building|E] unlocks the first four tiers of #V $building_type_watermills_01$#! line of [buildings|E]" + culture_parameter_windmills_hill_farms_unlock: "The construction of #V $building_hill_farms_04$#! [building|E] unlocks the first four tiers of #V $building_type_windmills_01$#! line of [buildings|E]" + culture_parameter_second_caravanserai: "A second #V $building_type_caravanserai_01$#! can be constructed in [counties|E] of this [culture|E]" + has_two_caravanserai_in_county: "There are already 2 $building_type_caravanserai_01$ in the county" + not_allowed_second_caravanserai: "You need the [GetCultureTradition('tradition_caravaneers').GetName] [culture_tradition|E] to build another $building_type_caravanserai_01$ in the county" + + culture_parameter_family_castration: "Can use the $castrate_child_interaction$ [interaction|E]" + + EVENT_BONUS_INTERMARRYING_ADMIN: "Longstanding ties between [houses|E]: $VALUE|+=0$" + + culture_parameter_allows_noble_family_adoption: "[noble_family|E] [house_heads|E] may use the #V $noble_family_adoption_interaction$#! [interaction|E]" + + culture_parameter_much_more_likely_to_be_laamps: "[SelectLocalization( HasDlcFeature( 'landless_playable' ), 'culture_parameter_much_more_likely_to_be_laamps_DLC', 'culture_parameter_much_more_likely_to_be_laamps_NO_DLC' )]" + culture_parameter_much_more_likely_to_be_laamps_DLC: "[characters|E] are much more likely to become [adventurers|E]" + culture_parameter_much_more_likely_to_be_laamps_NO_DLC: "" + culture_parameter_more_likely_to_be_laamps: "[SelectLocalization( HasDlcFeature( 'landless_playable' ), 'culture_parameter_more_likely_to_be_laamps_DLC', 'culture_parameter_more_likely_to_be_laamps_NO_DLC' )]" + culture_parameter_more_likely_to_be_laamps_DLC: "[characters|E] are much more likely to become [adventurers|E]" + culture_parameter_more_likely_to_be_laamps_NO_DLC: "" + + culture_parameter_frontier_themes_borrow_neighbor_troops: "Frontier Administration [governorships|E] may borrow the [title_men_at_arms|E] of non-Frontier neighbors" + + culture_parameter_less_likely_to_culture_convert: "The #high Convert to Local Culture#! [decision|E] causes [stress|E] gain and is avoided by [rulers|E]" + culture_parameter_less_likely_to_promote_culture: "[rulers|E] will seldom use the #V $task_promote_culture$#! [councillor_task|E]" + + culture_parameter_resistant_to_desert_privation: "" + culture_parameter_resistant_to_mountain_privation: "" + culture_parameter_resistant_to_winter_privation: "" + + allows_brewery: "Unlocks the #color_white $building_type_breweries_01$#! line of [buildings|E]" + culture_parameter_allows_brewery: "$allows_brewery$ for [city_holdings|E]" + culture_parameter_brewery_farming_bonus: "The #color_white $building_type_cereal_fields_01$#! and #color_white $building_type_farm_estates_01$#! line of [buildings|E] provide [county_opinion|E] bonuses" + tradition_brewery_name: "Brewing Culture" + tradition_brewery_desc: "This culture views brewing and drinking alcohol as playing an important role both in festivities and in daily life." + culture_in_farm_or_mansion_count_desc: "The [culture|E] is not present in at least #V 5#! [counties|E] with a #color_white $building_type_cereal_fields_01$#! or #color_white $building_type_farm_estates_01$#! [building|E]" + + can_appoint_chief_eunuch_name_tt: "[THIS.GetCharacter.GetCulture.GetName] [culture|E] has one of the following [traditions|E]:\n\t$EFFECT_LIST_BULLET$[GetCultureTradition('tradition_court_eunuchs').GetName]\n\t$EFFECT_LIST_BULLET$[GetCultureTradition('tradition_byzantine_succession').GetName]\n\t$EFFECT_LIST_BULLET$[GetCultureTradition('tradition_ep3_palace_politics').GetName]\n\t$EFFECT_LIST_BULLET$[GetCultureTradition('tradition_tgp_court_machinations').GetName]" + +#MPO + tradition_mpo_iron_cavalry_name: "Iron Cavalry" + tradition_mpo_iron_cavalry_desc: "Even horse peoples can be bested by cavalry clad head-to-hoof in lamellar plate. This culture has not only developed a taste for such expensive armament, but employs those born in the saddle — bow in hand — as its heavily armored riders." + culture_parameter_unlock_maa_cataphract_archers: "Can recruit [GetMaA('cataphract_archers').GetName] as [men_at_arms|E]" + + tradition_mpo_wolves_of_the_deep_steppe_name: "Wolves of the Deep Steppe" + tradition_mpo_wolves_of_the_deep_steppe_desc: "Far from the touch of 'civilized' comforts, men live by what they can take, and dream of death on their horse's back. Weaker peoples are driven before these warriors." + culture_parameter_unlock_maa_mangudai: "Can recruit [GetMaA('mangudai').GetName] as [men_at_arms|E]" + unlock_maa_mangudai_name: "[GetCultureTradition('tradition_mpo_wolves_of_the_deep_steppe').GetName]" + + tradition_mpo_northern_tribes_name: "Tribes of the North" + tradition_mpo_northern_tribes_desc: "This is one of the cultures known generally as the 'Forest People' to their southern neighbors. These northerners are in some places reputable hunters, in others fine river-fishers, sometimes iron-smelters, and often herders." + culture_parameter_unlock_maa_maturkan_warriors: "Can recruit [GetMaA('maturkan_warriors').GetName] as [men_at_arms|E]" + + tradition_devoted_horsemanship_name: "Devoted Horsemanship" + tradition_devoted_horsemanship_desc: "Even palatial comforts cannot keep the people of this culture from the saddle. Wherever they find themselves, their herds are there too, and the horses are tended to with a careful eye." + + + inspired_by_culture_desc: "Inspired by [tradition|E]" + inspire_by_culture_tt: "[tradition_scope.GetName]:\n\t$BULLET$Cost of [tradition|E]: [prestige_i]#P -50%#!" + + culture_parameter_metalworkers_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_metalworkers_nomadic_desc', 'blank_line' )]" + culture_parameter_sorcerous_metallurgy_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_sorcerous_metallurgy_nomadic_desc', 'blank_line' )]" + culture_parameter_nomadic_metal_artifact_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_nomadic_metal_nomadic_desc', 'blank_line' )]" + culture_parameter_zealous_people_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_zealous_people_nomadic_desc', 'blank_line' )]" + culture_parameter_loyal_soldiers_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_loyal_soldiers_nomadic_desc', 'blank_line' )]" + culture_parameter_nomadic_loyal_soldiers_obedience: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_nomadic_loyal_nomadic_desc', 'blank_line' )]" + culture_parameter_forbearing_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_forbearing_nomadic_desc', 'blank_line' )]" + culture_parameter_stalwart_defenders_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_stalwart_defenders_nomadic_desc', 'blank_line' )]" + culture_parameter_legalistic_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_legalistic_nomadic_desc', 'blank_line' )]" + culture_parameter_forest_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_forest_nomadic_desc', 'blank_line' )]" + culture_parameter_hills_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_hills_nomadic_desc', 'blank_line' )]" + culture_parameter_mountains_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_mountains_nomadic_desc', 'blank_line' )]" + culture_parameter_desert_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_desert_nomadic_desc', 'blank_line' )]" + culture_parameter_skirmisher_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_skirmisher_nomadic_desc', 'blank_line' )]" + culture_parameter_formation_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_formation_nomadic_desc', 'blank_line' )]" + culture_parameter_stand_fight_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_stand_fight_nomadic_desc', 'blank_line' )]" + culture_parameter_hit_run_nomadic_cultrad_stationing_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_hit_run_nomadic_desc', 'blank_line' )]" + culture_parameter_horse_breeder_internal_yurt_unlock: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'cultrad_horse_breeder_nomadic_desc', 'blank_line' )]" + + cultrad_metalworkers_nomadic_desc: "Unlocks the [GetDomicileBuilding('metalworkers_cultrad_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_sorcerous_metallurgy_nomadic_desc: "Unlocks the [GetDomicileBuilding('sorcerous_metallurgy_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_nomadic_metal_nomadic_desc: "Unlocks the #V $commission_artifact_decision$#! [decision|E] for metal [artifacts|E]" + cultrad_zealous_people_nomadic_desc: "Unlocks the [GetDomicileBuilding('zealous_people_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_loyal_soldiers_nomadic_desc: "Unlocks the [GetDomicileBuilding('loyal_soldiers_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_nomadic_loyal_nomadic_desc: "[characters|E] of this [culture|E] are more likely to become [obedient|E]" + cultrad_forbearing_nomadic_desc: "Unlocks the [GetDomicileBuilding('forbearing_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_stalwart_defenders_nomadic_desc: "Unlocks the [GetDomicileBuilding('stalwart_defenders_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_legalistic_nomadic_desc: "Unlocks the [GetDomicileBuilding('legalistic_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + cultrad_forest_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] bonuses for [nomads|E] in #V Forest#! and #V Taiga#! [terrain|E]" + cultrad_hills_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] bonuses for [nomads|E] in #V Hills#! [terrain|E]" + cultrad_mountains_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] bonuses for [nomads|E] in #V Mountains#! and #V Desert Mountains#! [terrain|E]" + cultrad_desert_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] bonuses for [nomads|E] in #V Desert#! and #V Drylands#! [terrain|E]" + cultrad_skirmisher_nomadic_desc: "Increased [skirmishers|E] and [archers|E] [stationed|E] [men_at_arms|E] bonuses for [nomads|E]" + cultrad_formation_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] bonuses for [nomads|E]" + cultrad_stand_fight_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] [toughness|E] bonus for [nomads|E]" + cultrad_hit_run_nomadic_desc: "Increased [stationed|E] [men_at_arms|E] [damage|E] bonus for [nomads|E]" + cultrad_horse_breeder_nomadic_desc: "Unlocks the [GetDomicileBuilding('horse_breeder_yurt_01').GetName] [domicile_building_upgrade|E] for [GetGovernment( 'nomad_government' ).GetName] [domiciles|E]" + + + culture_parameter_better_herders_pasturalists: "$culture_parameter_ethos_communal_herders_bonus$" + culture_parameter_ethos_communal_herders_bonus: "[SelectLocalization( HasDlcFeature( 'khans_of_the_steppe' ), 'ethos_communal_herders_bonus_effects', '' )]" + ethos_communal_herders_bonus_effects: "[herders|E] have a higher $MOD_MONTHLY_COUNTY_FERTILITY_GROWTH$" + + cultrad_not_nomadic_government_type: "Your [government|E] is [GetGovernment( 'nomad_government' ).GetName]" + + mpo_northern_tribes_percentage_desc:0 "The [culture|E] does not have #V 50%#! of its [counties|E] with the #V $mpo_siberian_permafrost_modifier$#! [modifier|E]" + permafrost_feudal_ban: "Your [culture|E] has #V $tradition_mpo_northern_tribes_name$#! [culture_tradition|E]" + culture_parameter_permafrost_unlock_tribal_building: "[tribal|E] [building|E] upgrades do not require [innovations|E] in [counties|E] of this [culture|E] that have #V $mpo_siberian_permafrost_modifier$#! [modifier|E]" + culture_parameter_permafrost_cannot_become_feudal: "Can not take the #V Adopt Feudal Ways#! and #V Adopt Feudal Ways through Liege#! [decisions|E]" + culture_parameter_permafrost_modifier_mechanic: "[counties|E] of this [culture|E] start with #V $mpo_siberian_permafrost_modifier$#! [modifier|E] that reduces [development|E] and [control|E]. If the [holder|E] and [county|E] have [culture|E] with this [culture_tradition|E], #V $mpo_siberian_permafrost_modifier$#! does not lower [control|E] and provides bonuses." + culture_parameter_permafrost_modifier_removal_condition: "#V $mpo_siberian_permafrost_modifier$#! [modifier|E] can be removed by the #V $expand_the_steppe_decision_generic$#! [decision|E] or #V $feudalize_holding_interaction$#! [interaction|E]" + permafrost_modifier_removal_desc: "Removes #V $mpo_siberian_permafrost_modifier$#! from every [county|E] that has it" + culture_parameter_martial_traits_give_out_hcav_bonus: "[GetTrait('gallant').GetName( GetNullCharacter )], [GetTrait('overseer').GetName( GetNullCharacter )], and [GetTrait('strategist').GetName( GetNullCharacter )] [traits|E] provide bonuses to [heavy_cavalry|E] [men_at_arms|E]" + culture_parameter_stewardship_traits_give_out_cav_bonus: "[GetTrait('avaricious').GetName( GetNullCharacter )], [GetTrait('architect').GetName( GetNullCharacter )], and [GetTrait('administrator').GetName( GetNullCharacter )] [traits|E] provide bonuses to [light_cavalry|E], [heavy_cavalry|E], and [archer_cavalry|E] [men_at_arms|E]" + + mpo_siberian_permafrost_modifier: "Siberian Permafrost" + mpo_siberian_permafrost_modifier_desc: "Soil frozen for millennia, no groundwater access, sparse vegetation. Terrain shifts every year due to repeated melting and refreezing. To make these lands their own, those who live here need centuries to adapt. Everybody, everything else will perish and join the ancient dead beneath the ice.\n\n#weak This modifier can be removed either by the #V $feudalize_holding_interaction$#! [interaction|E] or after conquering the whole North by the #V $expand_the_steppe_decision_generic$#! [decision|E] for the #V $dlc_mpo_steppe_siberia_further_expansion_tooltip$#! region#!\n\n" + + mpo_siberian_permafrost_modifier_bad: "$mpo_siberian_permafrost_modifier$" + mpo_siberian_permafrost_modifier_bad_desc: "$mpo_siberian_permafrost_modifier_desc$" + cannot_hybridize_northern_tribes: "The [tradition|E] #high $tradition_mpo_northern_tribes_name$#! cannot be picked for a [hybrid_culture|E]" + + # TGP + tradition_cultural_primacy_name: "Cultural Primacy" + tradition_cultural_primacy_desc: "This proud culture is content to look to its own rich history and social life, and feels little need to stoop to mingling with its neighbors." + culture_parameter_reduced_marriage_acceptance_outside_culture: "[characters|E] are less willing to marry with other [cultures|E]" + culture_parameter_reduced_marriage_acceptance_distant_realms: "[characters|E] are less willing to marry with distant [realms|E]" + REDUCED_MARRIAGE_ACCEPTANCE_OUTSIDE_CULTURE_REASON: "[secondary_recipient.GetCulture.GetName] reluctance to marry other [cultures|E]: $VALUE|=+0$" + REDUCED_MARRIAGE_ACCEPTANCE_DISTANT_REALMS_REASON: "[secondary_recipient.GetCulture.GetName] reluctance to marry distant [realms|E]: $VALUE|=+0$" + REDUCED_MARRIAGE_ACCEPTANCE_DISTANT_REALMS_INVERTED_REASON: "Reciprocal [secondary_recipient.GetCulture.GetName] reluctance to marry distant [realms|E]: $VALUE|=+0$" + REDUCED_MARRIAGE_ACCEPTANCE_HOUSE_RELATION_REASON: "[house_relation|E]: $VALUE|=+0$" + + tradition_maritime_way_of_life_name: "Maritime Way of Life" + tradition_maritime_way_of_life_desc: "Since time immemorial the outrigger Catamarans of this culture have been sighted on the horizon. Long sea voyages is a second nature to this people.\nFor someone who consider life at sea natural there are no limits to where they can settle, how they can trade or who they can raid." + + tradition_nudists_name: "Nudists" + tradition_nudists_desc: "Adherents of this culture do not believe in protecting one's body from the elements, opting instead to live as their creator made them." + + tradition_stratified_society_name: "Stratified Society" + tradition_stratified_society_desc: "There are those who are born to lead, and then there are those who are born to serve. In a $tradition_stratified_society_name$, the reality of hereditary privilege often overrides the principles of meritocracy and proximity to power is everything." + culture_parameter_family_shares_merit: "When reaching the @merit_level_5_icon![GetModifier( 'merit_level_5' ).GetNameWithTooltip|L] of [merit|E], every preferred gender [close_family_member|E] below this rank will gain substantial [merit|E]" + culture_parameter_family_skips_exams: "Additionally, those same [close_family_members|E] will also be treated as having passed the @provincial_exam_icon! [GetActivityType( 'activity_local_examination' ).GetName]" + culture_parameter_marrying_into_the_ruling_family_gives_influence: "When an [independent_ruler|E] marries a [character|E] within the same [realm|E] and shares this [tradition|E], the [spouse_possessive|e] [house_head|e] will gain immense [influence|E]" + culture_parameter_unlocks_gakgung_archers_maa: "Can recruit [GetMaA('gakgung_archers').GetName] as [men_at_arms|E]" + + tradition_stratified_society_toast_title: "[ROOT.Char.GetHouse.GetNameNoTooltip] Ascendant" + tradition_stratified_society_toast_desc: "As a privilege of your distinguished rank, your close relatives have gained [merit|E] and need not take the @provincial_exam_icon! [GetActivityType( 'activity_local_examination' ).GetName]" + tradition_stratified_society_family_member_toast_title: "$tradition_stratified_society_toast_title$" + tradition_stratified_society_family_member_toast_desc: "Thanks to the achievements of [family_success.GetName], you have gained [merit|E] and need not take the @provincial_exam_icon! [GetActivityType( 'activity_local_examination' ).GetName]" + tgp_nepotism_bypass_exams_modifier: "Examination Exempt" + tgp_nepotism_bypass_exams_modifier_desc: "This character has circumvented the typical examination needed to become an official through a close relative's influence." + + tenet_takamin_name: "Takamin" + tenet_takamin_desc: "Believing bears as manifestations of gods, the sanctity of these animals must be respected, and the killing of one during hunts should be done with utmost respect." + doctrine_parameter_allows_bear_sacrifice: "Unlocks the [GetDecisionWithKey('sacrifice_bear_decision').GetName] [decision|E]" + doctrine_parameter_chance_to_gain_prowess_during_bear_hunts: "Slaying a #V Bear#! during a [GetActivityType('activity_hunt').GetName] gives [prowess_i][prowess|e] and [martial_i][martial|E]" + doctrine_parameter_frequent_bear_sightings: "[hunt_sightings|E] for #V Bears#! will appear periodically" + doctrine_parameter_efficient_hunt_cornering: "During [GetActivityType('activity_hunt').GetName]s, the #V Corner#! method is more likely to succeed" + culture_tradition_events.3000.t: "Bear Sighting" + culture_tradition_events.3000.desc: "Hunters in [bear_sighting.GetName] have sighted a [bear_sighting_county.Custom('GetAnimalGroup')] of [bear_sighting_county.Custom('GetAnimalPlural')] roaming the [bear_sighting.Custom('GetTerrainTypePlural')] — broad prints in the mud, claw-marked trees, broken brush.\n\nIf I were to [GetActivityType('activity_hunt').GetName|l] and slay or capture one, the spirits would surely take notice." + culture_tradition_events.3000.a: "I should ready my spear..." + bear_sacrifice_war_modifier: "Bear War Sacrifice" + bear_sacrifice_war_modifier_desc: "This character has sacrificed a bear and believes that they are blessed with success in war." + bear_sacrifice_authority_modifier: "Bear Authority Sacrifice" + bear_sacrifice_authority_modifier_desc: "This character has sacrificed a bear and believes that they are blessed with an authoritative presence." + sacrifice_bear_decision_effect: "Get a choice between [piety_i][piety|E], [GetModifier('bear_sacrifice_war_modifier').GetNameWithTooltip], or [GetModifier('bear_sacrifice_authority_modifier').GetNameWithTooltip]" + culture_tradition_events.3100.t: "Bear Sacrifice" + culture_tradition_events.3100.desc: "We bind the great bear in silence. The hunters sing low, voices steady, smoke rising with the scent of spruce.\n\nI kneel, press my brow to its snout, and whisper my thanks before the blade falls. We will share its flesh, so that its strength might live among us." + culture_tradition_events.3100.a: "Let us feast!" + culture_tradition_events.3100.b: "Our enemies shall fall!" + culture_tradition_events.3100.c: "Obey, for the bear-spirit is at my side." + + tradition_ordo_riders_name: "Ordo Riders" + tradition_ordo_riders_desc: "The demand for herd and the need to strengthen the tribe's unity has forced many of the horde people of this culture to become hardened warriors, being able to fend off attacks whilst also being able to effectively gather supplies for the people." + culture_parameter_unlocks_ordo_riders_maa: "Can recruit [GetMaA('ordo_riders_horse_archers').GetName] as [men_at_arms|E]" + culture_parameter_reaver_gives_buffs_to_horse_archers: "[GetTrait('reaver').GetName( GetNullCharacter )] [traits|E] will grant buffs to [archer_cavalry|e] [men_at_arms|e]" + + tradition_chinese_arts_name: "Chinese Arts" + tradition_chinese_arts_desc: "The way of the pen, the way of the brush, all important elements for this culture. Rather than depending only on military might or complex administration, the Chinese put emphasis on perfecting any forms of art." + culture_parameter_commissions_cheaper: "The #bold $commission_artifact_decision$#! [decision|e] will cost #P 50%#! less [gold_i] [gold|e]" + culture_parameter_scholars_and_poets_are_viewed_more_positively: "The [GetTrait('lifestyle_poet').GetName( GetNullCharacter )] and [GetTrait('scholar').GetName( GetNullCharacter )] [traits|E] are seen as positive" + + tradition_sinophilic_name: "Sinophilic" + tradition_sinophilic_desc: "The influence of the Chinese hegemony over this realm has led to many of its people adopting customs from them." + culture_parameter_can_adopt_chinese_culture: "May adopt the [GetCultureByKey('han').GetCollectiveNoun] [culture|e]" + culture_parameter_more_successful_kowtows: "[tribute_missions|E] have a higher chance of being successful" + culture_parameter_may_adopt_silk_road_innovations: "May access [silk_road_innovations|E] known to the [GetCultureByKey('han').GetCollectiveNoun] [culture|E]" + + tradition_tgp_warrior_monks_name: "Warrior Monks" + tradition_tgp_warrior_monks_desc: "Devotion to living morally should not preclude the use of force, especially when there is need to protect the religious community from rival sects and corrupt officials, or to defend the needy." + culture_parameter_unlock_warrior_monk_units: "Can recruit [GetMaA('warrior_monks').GetName] as [men_at_arms|E]" + +tradition_scholar_officials_name: "Scholar Officials" +tradition_scholar_officials_desc: "The pen and brush is mightier than the sword... This culture strongly believes in an ideal where influence is given to loyal officials educated in the noble arts." +culture_parameter_can_always_convert_to_confucianism: "Can use the [GetDecisionWithKey('convert_to_confucianism').GetName] [decision|E]" +culture_parameter_can_always_convert_to_taoism: "Can use the [GetDecisionWithKey('convert_to_taoism').GetName] [decision|E]" +culture_parameter_can_author_books: "Can take the #V $author_book_decision$#! [decision|E]" +culture_parameter_scholar_official_trait_bonuses: "The [GetTrait('confucian_education').GetName( GetNullCharacter )] and [GetTrait('loyal').GetName( GetNullCharacter )] [traits|E] have additional bonuses" +culture_parameter_wants_to_learn_chinese:0 "Characters of this [culture|E] will often learn the Chinese [language|E]" +culture_parameter_learn_language_success_chance_for_others: "[GetScheme('learn_language').GetTypeName] [success_chance|E]: #P +50%#! when learning the [language|E] of this culture" +culture_parameter_mystic_trait_from_education: "Children may gain the [GetTrait('lifestyle_mystic').GetName( GetNullCharacter )] [trait|E] if they have a [guardian|E] of this [culture|E] with #V 12+#! [learning_i][learning|E] " + +tradition_cultivation_name: "Cultivation" +tradition_cultivation_desc: "Tuning the body, the breath, and the mind until the mud of the heart settles and inner virtue rises like clear water." + + tradition_intensive_farming_name: "Intensive Farming" + tradition_intensive_farming_desc: "This culture highly values a large farming class that supports its non-agrarian population. Through millennia of experience they have been able to greatly increase the output of wheat and rice depending on what fits the local circumstances the best." + + # ACH + oath_mend_the_fracture_tradition_name:0 "Legacy of Oathsworn Concilliation" + oath_mend_the_fracture_tradition_desc:0 "From the anger and bloody mistrust, a concilliation emerged. Guided by its oathsworn sovereign, this culture has mended the rift between them and the other peoples of the realm, achieving peace and prosperity." + culture_parameter_synergy_cultures_counties_development: "Every three years, [counties|E] of this [culture|E] can gain [GetModifier('oath_mend_the_fracture_county').GetNameWithTooltip] [modifier|E]" + culture_parameter_synergy_cultures_maa_spawn: "Every three years, the [culture_head|E] can gain additional special [soldiers|E]" + culture_parameter_synergy_cultures_opinion_gain: "Every three years, the [culture_head|E] can gain a [opinion|E] with the [culture_head|E] of the concilliated [culture|E]" + culture_parameter_synergy_cultures_positive_chance_desc: "The chance and strength of the effects above is influenced by the [cultural_acceptance|E] between the concilliated [cultures|E] and [opinion|E] with the other [culture_head|E]" + ach_culture_synergy_troops: "Oathsworn Troops" + diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index 4e253e71..e99fc400 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -64,42 +64,42 @@ NEOW_language_alpine_bavarian_name:0 "Alpine Bavarian" NEOW_language_griko_name:0 "Griko" NEOW_language_sarphatique_name:0 "Sarphatique" - NEOW_language_new_yiddish:0 "Neo-Yiddish" - NEOW_language_new_hebrew:0 "Neo-Hebrew" - NEOW_language_median:0 "Median" - NEOW_language_ladin:0 "Ladin" - NEOW_language_maltese:0 "Maltese" - NEOW_language_friulian:0 "Friulian" - NEOW_language_ligurian:0 "Ligurian" - NEOW_language_venetian:0 "Venetian" - NEOW_language_tusco_corsican:0 "Tusco-corsican" - NEOW_language_sicilian:0 "Sicilian" - NEOW_language_emilo_romagnol:0 "Emilo-Romagnol" - NEOW_language_neapolitan:0 "Neapolitan" - NEOW_language_lombard_piedmontese:0 "Lombard-piedmontese" - NEOW_language_north_mosellic:0 "North Mosellic" - NEOW_language_south_mosellic:0 "South Mosellic" - NEOW_language_swedish:0 "Swedish" - NEOW_language_norweigian:0 "Norweigian" - NEOW_language_danish:0 "Danish" - NEOW_language_jaamtlandic:0 "Jaamtlandic" - NEOW_language_icelandic:0 "Icelandic" - NEOW_language_gutnish:0 "Gutnish" - NEOW_language_faroese:0 "Faroese" - NEOW_language_doggerlandish:0 "Doggerlandish" - NEOW_language_east_danish:0 "East Danish" - NEOW_language_dutch:0 "Dutch" - NEOW_language_frisian:0 "Frisian" - NEOW_language_limburgish:0 "Limburgish" - NEOW_language_west_south_slavic:0 "Middle South Slavic" - NEOW_language_east_south_slavic:0 "East South Slavic" - NEOW_language_sorbian:0 "Sorbian" - NEOW_language_czech:0 "Czech" - NEOW_language_polish:0 "Polish" - NEOW_language_slovene:0 "West South Slavic" - NEOW_language_north_helvetic:0 "North Helvetic" - NEOW_language_south_helvetic:0 "South Helvetic" - NEOW_language_romansch:0 "Romansch" + NEOW_language_new_yiddish_name:0 "Neo-Yiddish" + NEOW_language_new_hebrew_name:0 "Neo-Hebrew" + NEOW_language_median_name:0 "Median" + NEOW_language_ladin_name:0 "Ladin" + NEOW_language_maltese_name:0 "Maltese" + NEOW_language_friulian_name:0 "Friulian" + NEOW_language_ligurian_name:0 "Ligurian" + NEOW_language_venetian_name:0 "Venetian" + NEOW_language_tusco_corsican_name:0 "Tusco-corsican" + NEOW_language_sicilian_name:0 "Sicilian" + NEOW_language_emilo_romagnol_name:0 "Emilo-Romagnol" + NEOW_language_neapolitan_name:0 "Neapolitan" + NEOW_language_lombard_piedmontese_name:0 "Lombard-piedmontese" + NEOW_language_north_mosellic_name:0 "North Mosellic" + NEOW_language_south_mosellic_name:0 "South Mosellic" + NEOW_language_swedish_name:0 "Swedish" + NEOW_language_norweigian_name:0 "Norweigian" + NEOW_language_danish_name:0 "Danish" + NEOW_language_jaamtlandic_name:0 "Jaamtlandic" + NEOW_language_icelandic_name:0 "Icelandic" + NEOW_language_gutnish_name:0 "Gutnish" + NEOW_language_faroese_name:0 "Faroese" + NEOW_language_doggerlandish_name:0 "Doggerlandish" + NEOW_language_east_danish_name:0 "East Danish" + NEOW_language_dutch_name:0 "Dutch" + NEOW_language_frisian_name:0 "Frisian" + NEOW_language_limburgish_name:0 "Limburgish" + NEOW_language_west_south_slavic_name:0 "Middle South Slavic" + NEOW_language_east_south_slavic_name:0 "East South Slavic" + NEOW_language_sorbian_name:0 "Sorbian" + NEOW_language_czech_name:0 "Czech" + NEOW_language_polish_name:0 "Polish" + NEOW_language_slovene_name:0 "West South Slavic" + NEOW_language_north_helvetic_name:0 "North Helvetic" + NEOW_language_south_helvetic_name:0 "South Helvetic" + NEOW_language_romansch_name:0 "Romansch" ######################################### # Grouping Stuff @@ -130,6 +130,7 @@ ACCEPTANCE_BASELINE_LANGUAGE_FRISIAN:0 "[languages|E] are both of #V Frisian Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_SOUTH_SLAVIC_GROUP:0 "[languages|E] are both of #V South Slavic Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_WEST_SLAVIC_GROUP:0 "[languages|E] are both of #V West Slavic Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_OCCITANIC:0 "[languages|E] are both of #V Occitanic Origin#!" culture_parameter_anglic_group_language_param: "This [language|E] is of #V Anglic Origin#!" culture_parameter_goidelic_group_language_param: "This [language|E] is of #V Goidelic Origin#!" @@ -158,97 +159,8 @@ culture_parameter_east_north_germanic_group_language_param: "This [language|E] is of #V East North Germanic Origin#!" culture_parameter_west_north_germanic_group_language_param: "This [language|E] is of #V West North Germanic Origin#!" culture_parameter_frisian_language_param: "This [language|E] is of #V Frisian Origin#!" + culture_parameter_occitanic_group_language_param: "This [language|E] is of #V Occitanic Origin#!" - language_english_desc:0 "This [language|E] is of #V Anglic Origin#!" - language_brythonic_desc:0 "This [language|E] is of #V Brythonic Origin#!" - language_anglic_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Anglic Origin#!" - language_anglo_irish_desc:0 "This [language|E] is of #V Goidelic Origin#! \n This [language|E] is of #V Anglic Origin#!" - language_brittannic_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Brythonic Origin#!" - language_scots_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Goidelic Origin#!" - language_goidelic_desc:0 "This [language|E] is of #V Goidelic Origin#!" - NEOW_language_irish_desc:0 "This [language|E] is of #V Goidelic Origin#!" - NEOW_language_manx_desc:0 "This [language|E] is of #V Goidelic Origin#!" - NEOW_language_scottish_desc:0 "This [language|E] is of #V Goidelic Origin#!" - NEOW_language_north_brittannic_desc:0 "This [language|E] is of #V Goidelic Origin#! \n This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Brythonic Origin#!" - NEOW_language_cornish_desc:0 "This [language|E] is of #V Brythonic Origin#!" - NEOW_language_welsh_desc:0 "This [language|E] is of #V Brythonic Origin#!" - NEOW_language_south_french_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Occitanic Origin#!" - NEOW_language_north_french_desc:0 "This [language|E] is of #V French Origin#!" - NEOW_language_east_french_desc:0 "This [language|E] is of #V French Origin#!" - NEOW_language_breton_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Brythonic Origin#!" - NEOW_language_catalan_desc:0 "This [language|E] is of #V East Hispanic Origin#! \n This [language|E] is of #V Occitanic Origin#!" - NEOW_language_occitan_desc:0 "This [language|E] is of #V Occitanic Origin#! \n This [language|E] is of #V French Origin#!" - NEOW_language_aragonese_desc:0 "This [language|E] is of #V East Hispanic Origin#!" - NEOW_language_asturleonese_desc:0 "This [language|E] is of #V Lusatian Origin#! \n This [language|E] is of #V West Hispanic Origin#!" - NEOW_language_balearic_desc:0 "This [language|E] is of #V Occitanic Origin#!" - NEOW_language_basque_desc:0 "This [language|E] is of #V Vasconic Origin#! \n This [language|E] is of #V East Hispanic Origin#!" - NEOW_language_castillian_desc:0 "This [language|E] is of #V Middle Hispanic Origin#!" - NEOW_language_valencian_desc:0 "This [language|E] is of #V Occitanic Origin#! \n This [language|E] is of #V Middle Hispanic Origin#!" - NEOW_language_portuguese_desc:0 "This [language|E] is of #V Lusatian Origin#!" - NEOW_language_canarian_desc:0 "This [language|E] is of #V Middle Hispanic Origin#!" - NEOW_language_andalusian_desc:0 "This [language|E] is of #V Middle Hispanic Origin#!" - NEOW_language_llanito_desc:0 "This [language|E] is of #V Middle Hispanic Origin#! \n This [language|E] is of #V Anglic Origin#!" - NEOW_language_galician_desc:0 "This [language|E] is of #V Lusatian Origin#! \n This [language|E] is of #V West Hispanic Origin#!" - NEOW_language_extremeno_desc:0 "This [language|E] is of #V West Hispanic Origin#! \n This [language|E] is of #V Lusatian Origin#!" - NEOW_language_weslander_desc:0 "This [language|E] is of #V Anglic Origin#!" - NEOW_language_souflander_desc:0 "This [language|E] is of #V Anglic Origin#!" - NEOW_language_norner_desc:0 "This [language|E] is of #V Anglic Origin#!" - NEOW_language_norflander_desc:0 "This [language|E] is of #V Anglic Origin#!" - NEOW_language_easlander_desc:0 "This [language|E] is of #V Anglic Origin#!" - NEOW_language_arbereshe_desc:0 "This [language|E] is of #V Albanian Origin#! \n This [language|E] is of #V Italo-Dalmatian Origin#!" - NEOW_language_albanian_desc:0 "This [language|E] is of #V Albanian Origin#!" - NEOW_language_german_turk_desc:0 "This [language|E] is of #V Low German Origin#! \n This [language|E] is of #V Middle German Origin#!" - NEOW_language_swabian_desc:0 "This [language|E] is of #V High German Origin#!" - NEOW_language_saxon_desc:0 "This [language|E] is of #V Low German Origin#!" - NEOW_language_rottish_desc:0 "This [language|E] is of #V High German Origin#! \n This [language|E] is of #V French Origin#!" - NEOW_language_rhinelandic_desc:0 "This [language|E] is of #V High german Origin#! \n This [language|E] is of #V Middle German Origin#!" - NEOW_language_palatine_desc:0 "This [language|E] is of #V Middle German Origin#!" - NEOW_language_pomeranian_desc:0 "This [language|E] is of #V Low German Origin#!" - NEOW_language_westphalian_desc:0 "This [language|E] is of #V Low German Origin#!" - NEOW_language_ramsteiner_desc:0 "This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Middle German Origin#!" - NEOW_language_hessian_desc:0 "This [language|E] is of #V Middle German Origin#!" - NEOW_language_franconian_desc:0 "This [language|E] is of #V Middle German Origin#!" - NEOW_language_margravian_desc:0 "This [language|E] is of #V Low German Origin#!" - NEOW_language_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" - NEOW_language_alpine_bavarian_desc:0 "This [language|E] is of #V High German Origin#!" - NEOW_language_griko_desc:0 "This [language|E] is of #V Greek Origin#! \n This [language|E] is of #V Italo-Dalmatian Origin#!" - NEOW_language_sarphatique_desc:0 "This [language|E] is of #V Hebrew Origin#! \n This [language|E] is of #V French Origin#! \n This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V Middle Hispanic Origin#!" - NEOW_language_new_yiddish_desc:0 "This [language|E] is of #V Hebrew Origin#! \n This [language|E] is of #V French Origin#! \n This [language|E] is of #V Anglic Origin#! \n This [language|E] is of #V H Origin#!" - NEOW_language_new_hebrew_desc:0 "This [language|E] is of #V Hebrew Origin#!" - NEOW_language_median_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#!" - NEOW_language_ladin_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Rhaeto-Romance Origin#!" - NEOW_language_maltese_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Arabic Origin#!\n This [language|E] is of #V Anglic Origin#!" - NEOW_language_friulian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Rhaeto-Romance Origin#!" - NEOW_language_ligurian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" - NEOW_language_venetian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" - NEOW_language_tusco_corsican_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Sardic Origin#!" - NEOW_language_sicilian_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Arabic Origin#!" - NEOW_language_emilo_romagnol_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" - NEOW_language_neapolitan_desc:0 "This [language|E] is of #V Italo-Dalmatian Origin#!" - NEOW_language_lombard_piedmontese_desc:0 "This [language|E] is of #V Gallo-Italian Origin#!" - NEOW_language_north_mosellic_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Low Franconian Origin#!" - NEOW_language_south_mosellic_desc:0 "This [language|E] is of #V French Origin#! \n This [language|E] is of #V Middle German Origin#!\n This [language|E] is of #V High German Origin#!" - NEOW_language_swedish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" - NEOW_language_norweigian_desc:0 "This [language|E] is of #V West North Germanic Origin#!" - NEOW_language_danish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" - NEOW_language_jaamtlandic_desc:0 "This [language|E] is of #V West North Germanic Origin#! \n This [language|E] is of #V East North Germanic Origin#!" - NEOW_language_icelandic_desc:0 "This [language|E] is of #V West North Germanic Origin#!" - NEOW_language_gutnish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" - NEOW_language_faroese_desc:0 "This [language|E] is of #V West North Germanic Origin#!" - NEOW_language_doggerlandish_desc:0 "This [language|E] is of #V East North Germanic Origin#! \n This [language|E] is of #V Anglic Origin#!\n This [language|E] is of #V Low Franconian Origin#!" - NEOW_language_east_danish_desc:0 "This [language|E] is of #V East North Germanic Origin#!" - NEOW_language_dutch_desc:0 "This [language|E] is of #V Low Franconian Origin#!" - NEOW_language_frisian_desc:0 "This [language|E] is of #V Frisian Origin#! \n This [language|E] is of #V Low Franconian Origin#!" - NEOW_language_limburgish_desc:0 "This [language|E] is of #V Low Franconian Origin#!" - NEOW_language_west_south_slavic_desc:0 "This [language|E] is of #V South Slavic Origin#!" - NEOW_language_east_south_slavic_desc:0 "This [language|E] is of #V South Slavic Origin#!" - NEOW_language_sorbian_desc:0 "This [language|E] is of #V West Slavic Origin#! \n This [language|E] is of #V Low German Origin#!" - NEOW_language_czech_desc:0 "This [language|E] is of #V West Slavic Origin#! \n This [language|E] is of #V Middle German Origin#!" - NEOW_language_polish_desc:0 "This [language|E] is of #V West Slavic Origin#!" - NEOW_language_slovene_desc:0 "This [language|E] is of #V South Slavic Origin#! \n This [language|E] is of #V High German Origin#!" - NEOW_language_north_helvetic:0 "This [language|E] is of #V Rhaeto-Romance Origin#! \n This [language|E] is of #V High German Origin#!" - NEOW_language_south_helvetic:0 "This [language|E] is of #V Rhaeto-Romance Origin#! \n This [language|E] is of #V French Origin#!" - NEOW_language_romansch:0 "This [language|E] is of #V Rhaeto-Romance Origin#! \n This [language|E] is of #V Gallo-Italian Origin#!" \ No newline at end of file From 8715595ea89a2014ea31476b752a1763eeb3c9c5 Mon Sep 17 00:00:00 2001 From: JulesFlammenkueche Date: Tue, 24 Mar 2026 16:26:06 +0100 Subject: [PATCH 49/52] minor fixes to languages --- common/culture/cultures/NEOW_italian.txt | 2 +- common/culture/pillars/NEOW_language.txt | 3 +++ .../zz_NEOW_cultural_languages_l_english.yml | 20 +++++++++---------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/common/culture/cultures/NEOW_italian.txt b/common/culture/cultures/NEOW_italian.txt index 0809a73e..757a023a 100644 --- a/common/culture/cultures/NEOW_italian.txt +++ b/common/culture/cultures/NEOW_italian.txt @@ -40,7 +40,7 @@ corsican = { #Corsu ethos = ethos_communal heritage = heritage_italian - language = NEOW_tusco_corsican + language = NEOW_language_tusco_corsican martial_custom = martial_custom_male_only head_determination = head_determination_domain diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index ee91a16c..ab9a067f 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -633,6 +633,7 @@ NEOW_language_south_helvetic = { parameters = { rhaeto_romance_group_language_param = yes french_group_language_param = yes + high_german_group_language_param = yes } ai_will_do = { value = 10 @@ -720,6 +721,7 @@ NEOW_language_new_hebrew = { } parameters = { hewbrew_group_language_param = yes + arabic_group_language_param = yes } ai_will_do = { value = 10 @@ -1257,6 +1259,7 @@ NEOW_language_andalusian = { } } parameters = { + arabic_group_language_param = yes middle_hispanic_group_language_param = yes } ai_will_do = { diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index e99fc400..9d060b0c 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -17,6 +17,7 @@ language_maltese_name:0 "Maltese" language_rhaetoromance_name:0 "Rhaetic" language_sorbian_name:0 "Sorbian" + NEOW_language_irish_name:0 "Irish" NEOW_language_manx_name:0 "Manx" NEOW_language_scottish_name:0 "Scottish" @@ -33,7 +34,7 @@ NEOW_language_asturleonese_name:0 "Asturleonese" NEOW_language_balearic_name:0 "Balearic" NEOW_language_basque_name:0 "Basque" - NEOW_language_castillian_name:0 "Castillian" + NEOW_language_castillian_name:0 "Castilian" NEOW_language_valencian_name:0 "Valencian" NEOW_language_portuguese_name:0 "Portuguese" NEOW_language_canarian_name:0 "Canarian" @@ -46,13 +47,13 @@ NEOW_language_norner_name:0 "Nornish" NEOW_language_norflander_name:0 "Norflandish" NEOW_language_easlander_name:0 "Easlandish" - NEOW_language_arbereshe_name:0 "Arbereshian" + NEOW_language_arbereshe_name:0 "Arbëresh" NEOW_language_albanian_name:0 "Albanian" NEOW_language_german_turk_name:0 "Turko-German" NEOW_language_swabian_name:0 "Swabian" NEOW_language_saxon_name:0 "Saxon" - NEOW_language_rottish_name:0 "Rhonish" - NEOW_language_rhinelandic_name:0 "Rhinelandic" + NEOW_language_rottish_name:0 "Rhodanic" + NEOW_language_rhinelandic_name:0 "Rhenish" NEOW_language_palatine_name:0 "Palatine" NEOW_language_pomeranian_name:0 "Pomeranian" NEOW_language_westphalian_name:0 "Westphalian" @@ -72,15 +73,15 @@ NEOW_language_friulian_name:0 "Friulian" NEOW_language_ligurian_name:0 "Ligurian" NEOW_language_venetian_name:0 "Venetian" - NEOW_language_tusco_corsican_name:0 "Tusco-corsican" + NEOW_language_tusco_corsican_name:0 "Corso-Tuscan" NEOW_language_sicilian_name:0 "Sicilian" - NEOW_language_emilo_romagnol_name:0 "Emilo-Romagnol" + NEOW_language_emilo_romagnol_name:0 "Emilian–Romagnol" NEOW_language_neapolitan_name:0 "Neapolitan" - NEOW_language_lombard_piedmontese_name:0 "Lombard-piedmontese" + NEOW_language_lombard_piedmontese_name:0 "Lombard-Piedmontese" NEOW_language_north_mosellic_name:0 "North Mosellic" NEOW_language_south_mosellic_name:0 "South Mosellic" NEOW_language_swedish_name:0 "Swedish" - NEOW_language_norweigian_name:0 "Norweigian" + NEOW_language_norweigian_name:0 "Norwegian" NEOW_language_danish_name:0 "Danish" NEOW_language_jaamtlandic_name:0 "Jaamtlandic" NEOW_language_icelandic_name:0 "Icelandic" @@ -99,7 +100,7 @@ NEOW_language_slovene_name:0 "West South Slavic" NEOW_language_north_helvetic_name:0 "North Helvetic" NEOW_language_south_helvetic_name:0 "South Helvetic" - NEOW_language_romansch_name:0 "Romansch" + NEOW_language_romansch_name:0 "Romansh" ######################################### # Grouping Stuff @@ -163,4 +164,3 @@ - \ No newline at end of file From 02f089e1bfe24d5475f7cb9005c2092e76f28c54 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Tue, 24 Mar 2026 22:26:44 +0000 Subject: [PATCH 50/52] fix --- common/culture/pillars/NEOW_language.txt | 2 ++ .../zz_NEOW_cultural_languages_l_english.yml | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index ab9a067f..8efc88a7 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -653,6 +653,7 @@ NEOW_language_romansch = { } } parameters = { + high_german_group_language_param = yes rhaeto_romance_group_language_param = yes gallo_italian_group_language_param = yes } @@ -1282,6 +1283,7 @@ NEOW_language_llanito = { parameters = { middle_hispanic_group_language_param = yes anglic_group_language_param = yes + arabic_group_language_param = yes } ai_will_do = { value = 10 diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index 9d060b0c..1441de51 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -92,12 +92,12 @@ NEOW_language_dutch_name:0 "Dutch" NEOW_language_frisian_name:0 "Frisian" NEOW_language_limburgish_name:0 "Limburgish" - NEOW_language_west_south_slavic_name:0 "Middle South Slavic" - NEOW_language_east_south_slavic_name:0 "East South Slavic" + NEOW_language_west_south_slavic_name:0 "Serbocroatian" + NEOW_language_east_south_slavic_name:0 "Bulgarian" NEOW_language_sorbian_name:0 "Sorbian" NEOW_language_czech_name:0 "Czech" NEOW_language_polish_name:0 "Polish" - NEOW_language_slovene_name:0 "West South Slavic" + NEOW_language_slovene_name:0 "Slovenian" NEOW_language_north_helvetic_name:0 "North Helvetic" NEOW_language_south_helvetic_name:0 "South Helvetic" NEOW_language_romansch_name:0 "Romansh" @@ -110,7 +110,7 @@ ACCEPTANCE_BASELINE_LANGUAGE_BRYTHONIC:0 "[languages|E] are both of #V Brythonic Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_FRENCH:0 "[languages|E] are both of #V French Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_GERMAN:0 "[languages|E] are both of #V Middle German Origin#!" - ACCEPTANCE_BASELINE_LANGUAGE_LAUSATIAN:0 "[languages|E] are both of #V Lusatian Origin#!" + ACCEPTANCE_BASELINE_LANGUAGE_LAUSATIAN:0 "[languages|E] are both of #V Lusitanian Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_WEST_HISPANIC:0 "[languages|E] are both of #V West Hispanic Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_VASCONIC:0 "[languages|E] are both of #V Vasconic Origin#!" ACCEPTANCE_BASELINE_LANGUAGE_MIDDLE_HISPANIC:0 "[languages|E] are both of #V Middle Hispanic Origin#!" @@ -139,7 +139,7 @@ culture_parameter_french_group_language_param: "This [language|E] is of #V French Origin#!" culture_parameter_middle_german_group_language_param: "This [language|E] is of #V Middle German Origin#!" culture_parameter_east_hispanic_group_language_param: "This [language|E] is of #V East Hispanic Origin#!" - culture_parameter_lausatian_group_language_param: "This [language|E] is of #V Lusatian Origin#!" + culture_parameter_lausatian_group_language_param: "This [language|E] is of #V Lusitanian Origin#!" culture_parameter_west_hispanic_group_language_param: "This [language|E] is of #V West Hispanic Origin#!" culture_parameter_basque_group_language_param: "This [language|E] is of #V Basque Origin#!" culture_parameter_middle_hispanic_group_language_param: "This [language|E] is of #V Middle Hispanic Origin#!" From 2af5330b443a2dfa124aae1b7c9d83a57ee4c8d9 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Tue, 24 Mar 2026 22:29:03 +0000 Subject: [PATCH 51/52] Delete NEOW_carolingian_coa.txt --- .../NEOW_carolingian_coa.txt | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt diff --git a/common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt b/common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt deleted file mode 100644 index 32debd9a..00000000 --- a/common/coat_of_arms/dynamic_definitions/NEOW_carolingian_coa.txt +++ /dev/null @@ -1,55 +0,0 @@ - -e_europa = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = e_lotharingia - } -} - -e_france = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = e_west_francia - } -} - -e_germany = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = e_east_francia - } -} - -k_france = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = k_neustria - } -} - -k_belgium = { - item = { - trigger = { - holder = { - faith = faith:carolingian - } - } - coat_of_arms = k_austrasia - } -} \ No newline at end of file From 09a20252ac98d11763da99fe3b048988a4991575 Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Thu, 26 Mar 2026 21:35:45 +0000 Subject: [PATCH 52/52] absolute fuckin moon logic code --- common/governments/00_government_types.txt | 4 + .../00_scripted_rule_triggers.txt | 139 ++++++++++++++++++ .../00_tutorial_triggers.txt | 16 ++ 3 files changed, 159 insertions(+) create mode 100644 common/scripted_triggers/00_scripted_rule_triggers.txt create mode 100644 common/scripted_triggers/00_tutorial_triggers.txt diff --git a/common/governments/00_government_types.txt b/common/governments/00_government_types.txt index de294c0c..ca05baac 100644 --- a/common/governments/00_government_types.txt +++ b/common/governments/00_government_types.txt @@ -738,6 +738,8 @@ peasantrepublic_government = { # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). flags = { + government_can_raid_rule + government_enables_naval_raiding government_is_settled may_elevate_co_monarch government_uses_domain_limit @@ -823,6 +825,8 @@ urbanrepublic_government = { # Use flags instead of has_government for moddability if possible (i.e., wherever not visible to the player). flags = { + government_can_raid_rule + government_enables_naval_raiding government_has_influence government_is_settled government_has_treasury diff --git a/common/scripted_triggers/00_scripted_rule_triggers.txt b/common/scripted_triggers/00_scripted_rule_triggers.txt new file mode 100644 index 00000000..edc34f1d --- /dev/null +++ b/common/scripted_triggers/00_scripted_rule_triggers.txt @@ -0,0 +1,139 @@ +#Controls the can_raid rule. +can_raid_trigger = { + OR = { + # Government logic. + government_has_flag = government_can_raid_rule + ## Admin - Frontier themes + vassal_contract_has_flag = admin_theme_can_raid + ## Clan - Ghazi + vassal_contract_has_flag = vassal_contract_allow_raiding + # Faith Logic. + faith = { has_doctrine_parameter = faith_can_raid } + # Dynasty logic. + dynasty ?= { + OR = { + can_raid_dynasty_modifiers_that_enable_raiding_overseas_list_trigger = yes + can_raid_dynasty_modifiers_that_enable_raiding_overland_list_trigger = yes + } + } + # House logic. + house ?= { + OR = { + can_raid_house_modifiers_that_enable_raiding_overseas_list_trigger = yes + can_raid_house_modifiers_that_enable_raiding_overland_list_trigger = yes + } + } + # Cultural logic. + ## With restrictions. + AND = { + can_raid_cultural_parameter_requirements_for_non_tribals_trigger = yes + culture = { + OR = { + has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal + has_cultural_parameter = culture_can_raid_over_land_even_if_feudal + } + } + } + ## Without restrictions. + culture = { + OR = { + has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal_no_restrictions + has_cultural_parameter = culture_can_raid_over_land_even_if_feudal_no_restrictions + } + } + # Trait logics. + ## With restrictions. + AND = { + can_raid_trait_flag_standard_requirements_trigger = yes + has_trait_with_flag = trait_enable_raiding_per_standard_restrictions + } + ## Without restrictions. + has_trait_with_flag = trait_enable_raiding_without_restrictions + } + # Some faiths prohibit this. + OR = { + NOR = { + faith = { has_doctrine_parameter = holy_wars_forbidden } + government_has_flag = government_is_landless_adventurer + } + # But not for Nomads or Wanua + government_has_flag = government_is_nomadic + government_has_flag = government_is_wanua + government_has_flag = government_is_urepublic + government_has_flag = government_is_prepublic + } + is_landed = yes +} + +# Here so that you can plug in whatever dynasty modifiers you want without overwriting the whole scripted rule trigger. +can_raid_dynasty_modifiers_that_enable_raiding_overseas_list_trigger = { + # Yes, I realise the OR is redundant till someone else puts something in here. Shoosh. + has_dynasty_modifier = fp1_legacy_of_piracy_modifier + +} +can_raid_dynasty_modifiers_that_enable_raiding_overland_list_trigger = { + OR = { + # Yes, I realise the OR is redundant till someone else puts something in here. Shoosh. + # Always = no because we have no vanilla use-case atm — the assumption is that modders'll overwrite it. + always = no + } +} + +# Here so that you can plug in whatever house modifiers you want without overwriting the whole scripted rule trigger. +can_raid_house_modifiers_that_enable_raiding_overseas_list_trigger = { + OR = { + # Yes, I realise the OR is redundant till someone else puts something in here. Shoosh. + # Always = no because we have no vanilla use-case atm — the assumption is that modders'll overwrite it. + always = no + } +} +can_raid_house_modifiers_that_enable_raiding_overland_list_trigger = { + OR = { + # Yes, I realise the OR is redundant till someone else puts something in here. Shoosh. + # Always = no because we have no vanilla use-case atm — the assumption is that modders'll overwrite it. + always = no + } +} + +# Here so that you can tweak the rules on how non-tribals raid via CulTrad without overriding the whole scripted rule trigger. +can_raid_cultural_parameter_requirements_for_non_tribals_trigger = { + OR = { + highest_held_title_tier <= tier_duchy + realm_size <= minor_realm_size + } +} + +# Here so that you can tweak the rules on which innovations allow raiding without overriding the whole scripted rule trigger. +can_ran_raid_overseas_cultural_innovations_trigger = { + OR = { + has_innovation = innovation_longboats + has_innovation = innovation_african_canoes + } +} + +# Here so that you can tweak the rules on characters with a trait that lets them raid under certain circumstances raid without overriding the whole scripted rule trigger. +can_raid_trait_flag_standard_requirements_trigger = { + # We don't use this in vanilla, so we don't have any actual requirements atm. + always = yes +} + +can_raid_across_water_trigger = { + OR = { + # Culture logic. + culture = { + OR = { + can_ran_raid_overseas_cultural_innovations_trigger = yes + has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal + has_cultural_parameter = culture_can_raid_at_sea_even_if_feudal_no_restrictions + } + } + # Dynasty logic. + dynasty ?= { can_raid_dynasty_modifiers_that_enable_raiding_overseas_list_trigger = yes } + # House logic. + house ?= { can_raid_house_modifiers_that_enable_raiding_overseas_list_trigger = yes } + # Can raid overseas by government rules + government_has_flag = government_enables_naval_raiding + #Is Hereward. + has_trait = the_wake + } +} diff --git a/common/scripted_triggers/00_tutorial_triggers.txt b/common/scripted_triggers/00_tutorial_triggers.txt new file mode 100644 index 00000000..5cc05770 --- /dev/null +++ b/common/scripted_triggers/00_tutorial_triggers.txt @@ -0,0 +1,16 @@ +should_show_tutorial_alert = { + OR= { + can_start_tutorial_lesson = $LESSON$ + is_tutorial_lesson_active = $LESSON$ + } +} + +valid_raid_target_trigger = { + NOR = { + has_raid_immunity_against = root + is_allied_to = root + has_truce = root + target_is_vassal_or_below = root + top_liege = root.top_liege + } +}