From 511d09699898f81d770d3ec5baf8e08aabb52f7f Mon Sep 17 00:00:00 2001 From: mr vain Date: Fri, 30 Jan 2026 03:36:50 -0800 Subject: [PATCH 1/3] you need my dna --- common/dna_data/NEOW_dna.txt | 227 ++++++++++++++++++++++++ history/characters/NEOW_e_britannia.txt | 7 + history/characters/NEOW_e_hispania.txt | 7 + 3 files changed, 241 insertions(+) diff --git a/common/dna_data/NEOW_dna.txt b/common/dna_data/NEOW_dna.txt index c3c880e1..7e6f9e53 100644 --- a/common/dna_data/NEOW_dna.txt +++ b/common/dna_data/NEOW_dna.txt @@ -1604,3 +1604,230 @@ dna_bookwyrm={ enabled=yes } +dna_alfonso={ + portrait_info = { + genes={ hair_color={ 80 252 80 252 } + skin_color={ 180 101 145 107 } + eye_color={ 22 223 26 173 } + gene_chin_forward={ "chin_forward_neg" 95 "chin_forward_neg" 125 } + gene_chin_height={ "chin_height_neg" 116 "chin_height_neg" 116 } + gene_chin_width={ "chin_width_neg" 118 "chin_width_neg" 118 } + gene_eye_angle={ "eye_angle_pos" 95 "eye_angle_pos" 136 } + gene_eye_depth={ "eye_depth_neg" 76 "eye_depth_neg" 116 } + gene_eye_height={ "eye_height_neg" 213 "eye_height_neg" 115 } + gene_eye_distance={ "eye_distance_neg" 132 "eye_distance_neg" 118 } + gene_eye_shut={ "eye_shut_pos" 141 "eye_shut_pos" 212 } + gene_forehead_angle={ "forehead_angle_neg" 173 "forehead_angle_neg" 126 } + gene_forehead_brow_height={ "forehead_brow_height_neg" 73 "forehead_brow_height_neg" 121 } + gene_forehead_roundness={ "forehead_roundness_pos" 137 "forehead_roundness_pos" 137 } + gene_forehead_width={ "forehead_width_neg" 121 "forehead_width_neg" 121 } + gene_forehead_height={ "forehead_height_neg" 123 "forehead_height_neg" 123 } + gene_head_height={ "head_height_pos" 178 "head_height_pos" 178 } + gene_head_width={ "head_width_neg" 83 "head_width_neg" 106 } + gene_head_profile={ "head_profile_neg" 30 "head_profile_neg" 30 } + gene_head_top_height={ "head_top_height_neg" 105 "head_top_height_neg" 118 } + gene_head_top_width={ "head_top_width_neg" 44 "head_top_width_neg" 109 } + gene_jaw_angle={ "jaw_angle_neg" 73 "jaw_angle_neg" 120 } + gene_jaw_forward={ "jaw_forward_pos" 207 "jaw_forward_pos" 139 } + gene_jaw_height={ "jaw_height_pos" 114 "jaw_height_pos" 137 } + gene_jaw_width={ "jaw_width_pos" 99 "jaw_width_pos" 155 } + gene_mouth_corner_depth={ "mouth_corner_depth_neg" 255 "mouth_corner_depth_neg" 107 } + gene_mouth_corner_height={ "mouth_corner_height_pos" 83 "mouth_corner_height_pos" 138 } + gene_mouth_forward={ "mouth_forward_pos" 128 "mouth_forward_pos" 128 } + gene_mouth_height={ "mouth_height_pos" 176 "mouth_height_pos" 136 } + gene_mouth_width={ "mouth_width_pos" 127 "mouth_width_pos" 127 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 156 "mouth_upper_lip_size_neg" 108 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 88 "mouth_lower_lip_size_neg" 88 } + gene_mouth_open={ "mouth_open_neg" 186 "mouth_open_neg" 53 } + gene_neck_length={ "neck_length_neg" 83 "neck_length_neg" 85 } + gene_neck_width={ "neck_width_neg" 70 "neck_width_neg" 38 } + gene_bs_cheek_forward={ "cheek_forward_neg" 57 "cheek_forward_pos" 15 } + gene_bs_cheek_height={ "cheek_height_pos" 25 "cheek_height_neg" 4 } + gene_bs_cheek_width={ "cheek_width_pos" 45 "cheek_width_pos" 13 } + gene_bs_ear_angle={ "ear_angle_pos" 25 "ear_angle_pos" 25 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 20 "ear_inner_shape_pos" 20 } + gene_bs_ear_bend={ "ear_lower_bend_pos" 39 "ear_lower_bend_pos" 39 } + gene_bs_ear_outward={ "ear_outward_pos" 17 "ear_outward_pos" 17 } + gene_bs_ear_size={ "ear_size_neg" 41 "ear_size_neg" 41 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 123 "eye_corner_depth_pos" 39 } + gene_bs_eye_fold_shape={ "eye_fold_shape_pos" 81 "eye_fold_shape_pos" 81 } + gene_bs_eye_size={ "eye_size_pos" 255 "eye_size_pos" 46 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_neg" 195 "eye_upper_lid_size_pos" 15 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_neg" 137 "forehead_brow_curve_neg" 113 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 99 "forehead_brow_forward_pos" 6 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_neg" 93 "forehead_brow_inner_height_pos" 96 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 43 "forehead_brow_outer_height_pos" 4 } + gene_bs_forehead_brow_width={ "forehead_brow_width_neg" 20 "forehead_brow_width_neg" 20 } + gene_bs_jaw_def={ "jaw_def_pos" 15 "jaw_def_pos" 165 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 205 "mouth_lower_lip_def_pos" 123 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 111 "mouth_lower_lip_full_pos" 13 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_pos" 117 "mouth_lower_lip_pad_neg" 99 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_pos" 83 "mouth_lower_lip_width_pos" 83 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 153 "mouth_philtrum_def_pos" 38 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_pos" 5 "mouth_philtrum_shape_pos" 40 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_pos" 14 "mouth_philtrum_width_pos" 14 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 255 "mouth_upper_lip_def_pos" 9 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_pos" 20 "mouth_upper_lip_full_pos" 20 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_pos" 255 "mouth_upper_lip_profile_pos" 42 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_pos" 51 "mouth_upper_lip_width_pos" 59 } + gene_bs_nose_forward={ "nose_forward_pos" 255 "nose_forward_pos" 4 } + gene_bs_nose_height={ "nose_height_pos" 71 "nose_height_neg" 99 } + gene_bs_nose_length={ "nose_length_pos" 13 "nose_length_neg" 87 } + gene_bs_nose_nostril_height={ "nose_nostril_height_pos" 98 "nose_nostril_height_pos" 98 } + gene_bs_nose_nostril_width={ "nose_nostril_width_pos" 105 "nose_nostril_width_neg" 40 } + gene_bs_nose_profile={ "nose_profile_pos" 19 "nose_profile_neg" 6 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_neg" 135 "nose_ridge_angle_neg" 7 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 213 "nose_ridge_width_neg" 43 } + gene_bs_nose_size={ "nose_size_pos" 131 "nose_size_neg" 49 } + gene_bs_nose_tip_angle={ "nose_tip_angle_pos" 17 "nose_tip_angle_neg" 16 } + gene_bs_nose_tip_forward={ "nose_tip_forward_pos" 1 "nose_tip_forward_neg" 162 } + gene_bs_nose_tip_width={ "nose_tip_width_neg" 51 "nose_tip_width_neg" 51 } + face_detail_cheek_def={ "cheek_def_01" 122 "cheek_def_01" 19 } + face_detail_cheek_fat={ "cheek_fat_04_pos" 255 "cheek_fat_01_neg" 75 } + face_detail_chin_cleft={ "chin_cleft" 255 "chin_cleft" 14 } + face_detail_chin_def={ "chin_def" 254 "chin_def" 125 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 255 "eye_lower_lid_def" 232 } + face_detail_eye_socket={ "eye_socket_color_02" 255 "eye_socket_03" 10 } + face_detail_nasolabial={ "nasolabial_03" 247 "nasolabial_03" 17 } + face_detail_nose_ridge_def={ "nose_ridge_def_pos" 163 "nose_ridge_def_pos" 4 } + face_detail_nose_tip_def={ "nose_tip_def" 150 "nose_tip_def" 63 } + face_detail_temple_def={ "temple_def" 199 "temple_def" 243 } + expression_brow_wrinkles={ "brow_wrinkles_04" 255 "brow_wrinkles_04" 35 } + expression_eye_wrinkles={ "eye_wrinkles_02" 255 "eye_wrinkles_01" 59 } + expression_forehead_wrinkles={ "forehead_wrinkles_01" 0 "forehead_wrinkles_01" 98 } + expression_other={ "cheek_wrinkles_both_01" 0 "cheek_wrinkles_both_01" 0 } + complexion={ "complexion_6" 255 "complexion_3" 217 } + gene_height={ "normal_height" 121 "normal_height" 121 } + gene_bs_body_type={ "body_fat_head_fat_low" 120 "body_fat_head_fat_full" 120 } + gene_bs_body_shape={ "body_shape_pear_full" 236 "body_shape_pear_full" 52 } + gene_bs_bust={ "bust_clothes" 80 "bust_shape_3_full" 100 } + gene_age={ "old_2" 220 "old_2" 220 } + gene_eyebrows_shape={ "avg_spacing_low_thickness" 198 "close_spacing_high_thickness" 216 } + gene_eyebrows_fullness={ "layer_2_low_thickness" 210 "layer_2_low_thickness" 204 } + gene_body_hair={ "body_hair_dense_lower_stubble" 94 "body_hair_sparse" 94 } + gene_hair_type={ "hair_wavy" 186 "hair_wavy" 186 } + gene_baldness={ "male_pattern_baldness" 191 "male_pattern_baldness" 191 } + eye_accessory={ "normal_eyes" 50 "normal_eyes" 50 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 15 "normal_eyelashes" 15 } + hairstyles={ "tgp_southeast_hairstyles" 255 "all_hairstyles" 0 } + beards={ "fp3_iranian_beards_straight" 255 "no_beard" 0 } + clothes={ "western_bedchamber" 79 "most_clothes" 0 } + } + enabled=yes + } +} + +dna_freddiemercury={ + portrait_info = { + genes={ hair_color={ 15 252 68 247 } + skin_color={ 151 117 192 127 } + eye_color={ 57 234 65 194 } + gene_chin_forward={ "chin_forward_pos" 108 "chin_forward_pos" 149 } + gene_chin_height={ "chin_height_pos" 95 "chin_height_pos" 136 } + gene_chin_width={ "chin_width_neg" 152 "chin_width_neg" 117 } + gene_eye_angle={ "eye_angle_neg" 89 "eye_angle_neg" 118 } + gene_eye_depth={ "eye_depth_pos" 78 "eye_depth_pos" 133 } + gene_eye_height={ "eye_height_pos" 176 "eye_height_pos" 139 } + gene_eye_distance={ "eye_distance_neg" 132 "eye_distance_neg" 112 } + gene_eye_shut={ "eye_shut_pos" 78 "eye_shut_pos" 136 } + gene_forehead_angle={ "forehead_angle_neg" 124 "forehead_angle_neg" 124 } + gene_forehead_brow_height={ "forehead_brow_height_pos" 80 "forehead_brow_height_pos" 141 } + gene_forehead_roundness={ "forehead_roundness_pos" 179 "forehead_roundness_pos" 150 } + gene_forehead_width={ "forehead_width_neg" 64 "forehead_width_neg" 122 } + gene_forehead_height={ "forehead_height_pos" 136 "forehead_height_pos" 129 } + gene_head_height={ "head_height_neg" 220 "head_height_neg" 106 } + gene_head_width={ "head_width_pos" 154 "head_width_pos" 177 } + gene_head_profile={ "head_profile_neg" 126 "head_profile_neg" 108 } + gene_head_top_height={ "head_top_height_pos" 146 "head_top_height_pos" 127 } + gene_head_top_width={ "head_top_width_pos" 144 "head_top_width_pos" 173 } + gene_jaw_angle={ "jaw_angle_pos" 108 "jaw_angle_pos" 137 } + gene_jaw_forward={ "jaw_forward_neg" 131 "jaw_forward_neg" 105 } + gene_jaw_height={ "jaw_height_neg" 165 "jaw_height_neg" 87 } + gene_jaw_width={ "jaw_width_neg" 112 "jaw_width_neg" 90 } + gene_mouth_corner_depth={ "mouth_corner_depth_pos" 0 "mouth_corner_depth_pos" 136 } + gene_mouth_corner_height={ "mouth_corner_height_neg" 194 "mouth_corner_height_neg" 118 } + gene_mouth_forward={ "mouth_forward_pos" 137 "mouth_forward_pos" 137 } + gene_mouth_height={ "mouth_height_neg" 116 "mouth_height_neg" 116 } + gene_mouth_width={ "mouth_width_pos" 176 "mouth_width_pos" 133 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_pos" 128 "mouth_upper_lip_size_pos" 128 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 115 "mouth_lower_lip_size_neg" 94 } + gene_mouth_open={ "mouth_open_neg" 57 "mouth_open_neg" 22 } + gene_neck_length={ "neck_length_neg" 100 "neck_length_neg" 113 } + gene_neck_width={ "neck_width_pos" 151 "neck_width_pos" 132 } + gene_bs_cheek_forward={ "cheek_forward_pos" 135 "cheek_forward_neg" 6 } + gene_bs_cheek_height={ "cheek_height_pos" 133 "cheek_height_neg" 181 } + gene_bs_cheek_width={ "cheek_width_pos" 97 "cheek_width_pos" 16 } + gene_bs_ear_angle={ "ear_angle_pos" 49 "ear_angle_neg" 64 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 186 "ear_inner_shape_pos" 54 } + gene_bs_ear_bend={ "ear_upper_bend_pos" 83 "ear_lower_bend_pos" 36 } + gene_bs_ear_outward={ "ear_outward_neg" 9 "ear_outward_pos" 2 } + gene_bs_ear_size={ "ear_size_neg" 12 "ear_size_neg" 12 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 104 "eye_corner_depth_neg" 104 } + gene_bs_eye_fold_shape={ "eye_fold_shape_neg" 225 "eye_fold_shape_pos" 49 } + gene_bs_eye_size={ "eye_size_pos" 111 "eye_size_neg" 192 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_pos" 215 "eye_upper_lid_size_pos" 98 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_neg" 141 "forehead_brow_curve_neg" 40 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 85 "forehead_brow_forward_pos" 11 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_neg" 7 "forehead_brow_inner_height_pos" 1 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 17 "forehead_brow_outer_height_neg" 2 } + gene_bs_forehead_brow_width={ "forehead_brow_width_neg" 47 "forehead_brow_width_neg" 15 } + gene_bs_jaw_def={ "jaw_def_pos" 37 "jaw_def_pos" 108 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 116 "mouth_lower_lip_def_pos" 145 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 111 "mouth_lower_lip_full_pos" 33 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_neg" 47 "mouth_lower_lip_pad_neg" 68 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_pos" 41 "mouth_lower_lip_width_neg" 114 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 0 "mouth_philtrum_def_pos" 46 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_pos" 199 "mouth_philtrum_shape_neg" 72 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_pos" 69 "mouth_philtrum_width_pos" 69 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 25 "mouth_upper_lip_def_pos" 25 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_neg" 79 "mouth_upper_lip_full_pos" 34 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_pos" 255 "mouth_upper_lip_profile_pos" 238 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_neg" 171 "mouth_upper_lip_width_neg" 42 } + gene_bs_nose_forward={ "nose_forward_pos" 79 "nose_forward_neg" 30 } + gene_bs_nose_height={ "nose_height_pos" 145 "nose_height_pos" 18 } + gene_bs_nose_length={ "nose_length_pos" 63 "nose_length_neg" 51 } + gene_bs_nose_nostril_height={ "nose_nostril_height_neg" 199 "nose_nostril_height_neg" 51 } + gene_bs_nose_nostril_width={ "nose_nostril_width_neg" 99 "nose_nostril_width_pos" 15 } + gene_bs_nose_profile={ "nose_profile_pos" 41 "nose_profile_hawk_pos" 24 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_neg" 255 "nose_ridge_angle_neg" 105 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 93 "nose_ridge_width_neg" 45 } + gene_bs_nose_size={ "nose_size_neg" 3 "nose_size_pos" 79 } + gene_bs_nose_tip_angle={ "nose_tip_angle_neg" 139 "nose_tip_angle_neg" 29 } + gene_bs_nose_tip_forward={ "nose_tip_forward_pos" 143 "nose_tip_forward_pos" 78 } + gene_bs_nose_tip_width={ "nose_tip_width_neg" 165 "nose_tip_width_neg" 34 } + face_detail_cheek_def={ "cheek_def_01" 190 "cheek_def_02" 177 } + face_detail_cheek_fat={ "cheek_fat_01_pos" 84 "cheek_fat_01_neg" 55 } + face_detail_chin_cleft={ "chin_cleft" 89 "chin_dimple" 23 } + face_detail_chin_def={ "chin_def" 122 "chin_def" 10 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 172 "eye_lower_lid_def" 84 } + face_detail_eye_socket={ "eye_socket_02" 0 "eye_socket_02" 185 } + face_detail_nasolabial={ "nasolabial_01" 149 "nasolabial_01" 13 } + face_detail_nose_ridge_def={ "nose_ridge_def_pos" 182 "nose_ridge_def_pos" 141 } + face_detail_nose_tip_def={ "nose_tip_def" 76 "nose_tip_def" 218 } + face_detail_temple_def={ "temple_def" 0 "temple_def" 148 } + expression_brow_wrinkles={ "brow_wrinkles_04" 177 "brow_wrinkles_04" 4 } + expression_eye_wrinkles={ "eye_wrinkles_01" 90 "eye_wrinkles_01" 90 } + expression_forehead_wrinkles={ "forehead_wrinkles_01" 226 "forehead_wrinkles_01" 226 } + expression_other={ "cheek_wrinkles_both_01" 0 "cheek_wrinkles_both_01" 0 } + complexion={ "complexion_3" 237 "complexion_3" 135 } + gene_height={ "normal_height" 134 "normal_height" 134 } + gene_bs_body_type={ "body_fat_head_fat_full" 133 "body_fat_head_fat_full" 109 } + gene_bs_body_shape={ "body_shape_hourglass_half" 174 "body_shape_apple_half" 0 } + gene_bs_bust={ "bust_clothes" 83 "bust_shape_4_full" 81 } + gene_age={ "old_3" 4 "old_2" 4 } + gene_eyebrows_shape={ "far_spacing_lower_thickness" 255 "avg_spacing_avg_thickness" 223 } + gene_eyebrows_fullness={ "layer_2_avg_thickness" 255 "layer_2_avg_thickness" 206 } + gene_body_hair={ "body_hair_dense" 53 "body_hair_sparse" 89 } + gene_hair_type={ "hair_wavy" 107 "hair_wavy" 107 } + gene_baldness={ "no_baldness" 127 "no_baldness" 127 } + eye_accessory={ "normal_eyes" 135 "normal_eyes" 135 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 84 "normal_eyelashes" 84 } + hairstyles={ "fp2_hairstyles_iberian_christian_wavy" 127 "all_hairstyles" 0 } + beards={ "western_beards_straight" 110 "no_beard" 0 } + clothes={ "western_bedchamber" 79 "most_clothes" 0 } + } + } + enabled=yes +} diff --git a/history/characters/NEOW_e_britannia.txt b/history/characters/NEOW_e_britannia.txt index e349c7fb..9ecc17eb 100644 --- a/history/characters/NEOW_e_britannia.txt +++ b/history/characters/NEOW_e_britannia.txt @@ -4,6 +4,7 @@ britannia_cyflymarhyan_frydyryk = { dynasty = dynn_britannia_cyflymarhyan religion = "victorian" culture = soueyrneg + dna = dna_freddiemercury trait = education_intrigue_4 trait = shrewd #trait = just @@ -11,6 +12,12 @@ britannia_cyflymarhyan_frydyryk = { trait = compassionate trait = brave trait = lifestyle_poet + portrait_override={ + portrait_modifier_overrides={ + custom_hair=male_hair_fp2_iberian_christian_01 + custom_beards=male_beard_western_05 + } + } sexuality = bisexual 2509.1.1 = { birth = yes diff --git a/history/characters/NEOW_e_hispania.txt b/history/characters/NEOW_e_hispania.txt index 3ef9c5ac..fb2c07da 100644 --- a/history/characters/NEOW_e_hispania.txt +++ b/history/characters/NEOW_e_hispania.txt @@ -29,11 +29,18 @@ hispania0002 = { dynasty_house = house_bourbon_anjou religion = "sevillian" culture = castilian + dna = dna_alfonso trait = education_stewardship_2 trait = compassionate trait = diligent trait = temperate trait = strong + portrait_override={ + portrait_modifier_overrides={ + custom_hair=male_hair_fp2_iberian_muslim_03 + custom_beards=male_beard_indian_01 + } + } 2501.10.7 = { birth = yes } From 78795c76ca9f9c9471e41982baf964782789e10e Mon Sep 17 00:00:00 2001 From: GoTouchSomeGrass314 Date: Fri, 30 Jan 2026 14:15:27 +0100 Subject: [PATCH 2/3] Special Building in Southern France MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added several more special buildings and some generic universities. Added: Fourvière, Capitole de Toulouse, Château de Bretagne, Fort de Bordeaux, Fortified Port of Monaco and Port of La Rochelle. Added generic universities to : Rennes, Poitiers, Clerment Ferrand and Gernoble --- common/buildings/NEOW_special_buildings.txt | 551 +++++++++++++++++- .../icon_structure_drassanes.dds | 3 + .../icon_structure_jvari_monastery.dds | 3 + .../icon_structure_palace_of_achen.dds | 3 + .../icon_structure_walls_of_genoa.dds | 3 + history/provinces/e_alps.txt | 3 + history/provinces/e_france.txt | 9 +- .../replace/NEOW_buildings_l_english.yml | 42 +- 8 files changed, 612 insertions(+), 5 deletions(-) create mode 100644 gfx/interface/icons/building_types/icon_structure_drassanes.dds create mode 100644 gfx/interface/icons/building_types/icon_structure_jvari_monastery.dds create mode 100644 gfx/interface/icons/building_types/icon_structure_palace_of_achen.dds create mode 100644 gfx/interface/icons/building_types/icon_structure_walls_of_genoa.dds diff --git a/common/buildings/NEOW_special_buildings.txt b/common/buildings/NEOW_special_buildings.txt index 05aaeb08..2b68d9ff 100644 --- a/common/buildings/NEOW_special_buildings.txt +++ b/common/buildings/NEOW_special_buildings.txt @@ -1367,6 +1367,8 @@ statue_isildur_01 = { alw ays = yes } + constrcution_time = very_slow_construction_time + cost = { gold = 1000 } @@ -1374,7 +1376,7 @@ statue_isildur_01 = { character_modifier = { glory_hound_opinion = 5 glory_hound_tax_contribution_mult = 0.05 - monthly_dynasty_prestige_mult = 0.05 + monthly_dynasty_prestige_mult = 0.1 monthly_prestige_gain_mult = 0.2 } @@ -1384,7 +1386,7 @@ statue_isildur_01 = { province_modifier = { stationed_maa_damage_add = 20 - stationed_maa_damage_mult = 0.1 + stationed_maa_damage_mult = 0.15 } ai_value = { @@ -1398,4 +1400,547 @@ statue_isildur_01 = { type = special flag = travel_point_of_interest_martial -} \ No newline at end of file +} + +########## +# Fourvière - historic core of the city of Lyon +########## + +fourviere_01 = { + + constrcution_time = very_slow_construction_time + + type_icon = "icon_structure_jvari_monastery.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + cost_gold = 500 + + county_holder_character_modifier = { + monthly_piety = 0.25 + monthly_prestige = 0.25 + } + + county_modifier = { + development_growth = 0.2 + development_growth_factor = 0.2 + tax_mult = 0.25 + } + + province_modifier = { + monthly_income = 1 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_learning +} + +########## +# Capitole de Toulouse - administrative center of Southern France +########## + +capitole_toulouse_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_palace_of_achen.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + effect_desc = feast_cost_discount_max_desc + + cost_gold = 1000 + + county_holder_character_modifier = { + diplomacy_per_prestige_level = 1 + monthly_prestige = 0.35 + legitimacy_gain_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.15 + development_growth = 0.15 + development_growth_factor = 0.20 + } + + province_modifier = { + monthly_income = 1.50 + garrison_size = 0.15 + } + + ai_value = { + base = 100 + ai_general_building_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + type = special + + flag = travel_point_of_interest_diplomatic +} + +########## +# Château de Bretagne - center of Britanny ; post event +########## + +chateau_bretagne_01 = { + + constrcution_time = very_slow_construction_time + + type_icon = "icon_building_leisure_palace.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + effect_desc = feast_cost_discount_max_desc + + cost_gold = 500 + + county_holder_character_modifier = { + monthly_dynasty_prestige_mult = 0.05 + monthly_prestige_gain_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.15 + } + + province_modifier = { + monthly_income = 1 + } + + next_building = chateau_bretagne_02 + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_diplomatic +} + +chateau_bretagne_02 = { + + constrcution_time = very_slow_construction_time + + type_icon = "icon_building_leisure_palace.dds" + + can_construct_potential = { + building_requirement_castle_city_church = { LEVEL = 03 } + scope:holder = { + prestige_level >= 4 + highest_held_title_tier >= tier_duchy + } + scope:holder.culture = { has_innovation = innovation_guilds } + building_requirement_tribal = no + } + + effect_desc = feast_cost_discount_max_desc + + cost_gold = 1000 + + county_holder_character_modifier = { + monthly_dynasty_prestige = 0.10 + monthly_dynasty_prestige_mult = 0.15 + monthly_prestige_gain_mult = 0.15 + monthly_prestige = 0.25 + courtly_tax_contribution_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.15 + development_growth_factor = 0.20 + } + + province_modifier = { + monthly_income = 2 + } + + ai_value = { + base = 100 + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_diplomatic +} + +########## +# Fort de Bordeaux - post-event, large fort/naval fort +########## + +fort_de_bordeaux_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_walls_of_genoa.dds" + + can_construct_potential = { + building_requirement_tribal = no + } + + cost_gold = 1500 + + county_holder_character_modifier = { + martial_per_prestige_level = 1 + } + + county_modifier = { + tax_mult = 0.25 + development_growth = 0.20 + development_growth_factor = 0.25 + hostile_raid_time = 0.50 + defender_holding_advantage = 5 + } + + province_modifier = { + monthly_income = 2.50 + fort_level = 4 + garrison_size = 0.20 + travel_danger = -15 + } + + ai_value = { + base = 100 + ai_general_building_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_martial +} + + +########## +# Fortified Port of Monaco +########## + +fortified_port_of_monaco_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_drassanes.dds" + + can_construct_potential = { + scope:holder.culture = { has_innovation = innovation_manorialism } + scope:holder = { highest_held_title_tier >= tier_duchy } + } + + cost_gold = 350 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.05 + naval_movement_speed_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.10 + hostile_raid_time = 0.25 + defender_holding_advantage = 2 + } + + province_modifier = { + monthly_income = 1 + fort_level = 1 + garrison_size = 0.10 + travel_danger = -10 + } + + next_building = fortified_port_of_monaco_02 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +fortified_port_of_monaco_02 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_drassanes.dds" + + can_construct_potential = { + scope:holder.culture = { has_innovation = innovation_windmills } + scope:holder = { highest_held_title_tier >= tier_duchy } + building_requirement_castle_city_church = { LEVEL = 02 } + } + + cost_gold = 800 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.10 + naval_movement_speed_mult = 0.10 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.15 + development_growth_factor = 0.20 + hostile_raid_time = 0.35 + defender_holding_advantage = 3 + } + + province_modifier = { + monthly_income = 3 + fort_level = 2 + garrison_size = 0.15 + travel_danger = -15 + } + + next_building = fortified_port_of_monaco_03 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +fortified_port_of_monaco_03 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_structure_drassanes.dds" + + can_construct_potential = { + scope:holder.culture = { has_innovation = innovation_windmills } + scope:holder = { highest_held_title_tier >= tier_duchy } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 1500 + + county_holder_character_modifier = { + stewardship_per_prestige_level = 1 + embarkation_cost_mult = -0.20 + naval_movement_speed_mult = 0.20 + } + + county_modifier = { + tax_mult = 0.35 + development_growth = 0.25 + development_growth_factor = 0.35 + hostile_raid_time = 0.50 + defender_holding_advantage = 5 + } + + province_modifier = { + monthly_income = 7.50 + fort_level = 4 + garrison_size = 0.25 + travel_danger = -20 + } + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + + +########## +# Port of La Rochelle +########## + +port_of_la_rochelle_01 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_building_tradeport.dds" + + can_construct_potential = { + scope:holder.culture = { has_innovation = innovation_manorialism } + scope:holder = { highest_held_title_tier >= tier_duchy } + } + + cost_gold = 350 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.05 + naval_movement_speed_mult = 0.05 + } + + county_modifier = { + tax_mult = 0.10 + development_growth = 0.10 + development_growth_factor = 0.10 + } + + province_modifier = { + monthly_income = 1 + } + + next_building = port_of_la_rochelle_02 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +port_of_la_rochelle_02 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_building_tradeport.dds" + + can_construct_potential = { + scope:holder.culture = { has_innovation = innovation_windmills } + scope:holder = { highest_held_title_tier >= tier_duchy } + building_requirement_castle_city_church = { LEVEL = 02 } + } + + cost_gold = 800 + + county_holder_character_modifier = { + embarkation_cost_mult = -0.10 + naval_movement_speed_mult = 0.10 + } + + county_modifier = { + tax_mult = 0.20 + development_growth = 0.15 + development_growth_factor = 0.20 + } + + province_modifier = { + monthly_income = 3 + } + + next_building = port_of_la_rochelle_03 + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} + +port_of_la_rochelle_03 = { + + construction_time = very_slow_construction_time + + type_icon = "icon_building_tradeport.dds" + + can_construct_potential = { + scope:holder.culture = { has_innovation = innovation_windmills } + scope:holder = { highest_held_title_tier >= tier_duchy } + building_requirement_castle_city_church = { LEVEL = 03 } + } + + cost_gold = 1500 + + county_holder_character_modifier = { + stewardship_per_prestige_level = 1 + embarkation_cost_mult = -0.20 + naval_movement_speed_mult = 0.20 + } + + county_modifier = { + tax_mult = 0.35 + development_growth = 0.25 + development_growth_factor = 0.35 + } + + province_modifier = { + monthly_income = 7.50 + } + + ai_value = { + base = 100 + ai_general_building_modifier = yes + directive_to_build_economy_modifier = yes + ai_economical_building_preference_modifier = yes + modifier = { # Fill all building slots before going for special buildings + factor = 0 + free_building_slots > 0 + } + } + + type = special + + flag = travel_point_of_interest_economic +} diff --git a/gfx/interface/icons/building_types/icon_structure_drassanes.dds b/gfx/interface/icons/building_types/icon_structure_drassanes.dds new file mode 100644 index 00000000..8d5910b2 --- /dev/null +++ b/gfx/interface/icons/building_types/icon_structure_drassanes.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66e5e698358f3f7025a5ce82c82feb332295bd8a4d5fadc65105df278345aceb +size 20192 diff --git a/gfx/interface/icons/building_types/icon_structure_jvari_monastery.dds b/gfx/interface/icons/building_types/icon_structure_jvari_monastery.dds new file mode 100644 index 00000000..78029a05 --- /dev/null +++ b/gfx/interface/icons/building_types/icon_structure_jvari_monastery.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39981964bac55a5e0212f5b863bbfe590f50b35c2e68170a1e79fb03c33a5c9d +size 78128 diff --git a/gfx/interface/icons/building_types/icon_structure_palace_of_achen.dds b/gfx/interface/icons/building_types/icon_structure_palace_of_achen.dds new file mode 100644 index 00000000..37d8c6f7 --- /dev/null +++ b/gfx/interface/icons/building_types/icon_structure_palace_of_achen.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10d504b0522a46ae4b911b9a38e6984e8846985fcb07a3b76affe5a485a0afdc +size 78128 diff --git a/gfx/interface/icons/building_types/icon_structure_walls_of_genoa.dds b/gfx/interface/icons/building_types/icon_structure_walls_of_genoa.dds new file mode 100644 index 00000000..deb630a6 --- /dev/null +++ b/gfx/interface/icons/building_types/icon_structure_walls_of_genoa.dds @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f782fdf9604efa001a4e0ec3dab36b01285ecdb1af04f1217166fcc12d94c11 +size 78128 diff --git a/history/provinces/e_alps.txt b/history/provinces/e_alps.txt index a22ee729..9af9e02e 100644 --- a/history/provinces/e_alps.txt +++ b/history/provinces/e_alps.txt @@ -239,6 +239,7 @@ culture = pelonais religion = helvetic holding = castle_holding + special_building = fourviere_01 } 2018 = { # Villefranche-sur-Saône holding = church_holding @@ -278,6 +279,7 @@ culture = patoues religion = rocambolist holding = castle_holding + special_building_slot = generic_university } 2028 = { # Vienne holding = city_holding @@ -393,6 +395,7 @@ culture = azurrano religion = fraticelli holding = castle_holding + special_building = fortified_port_of_monaco_01 } 8720 = { # Tende holding = none diff --git a/history/provinces/e_france.txt b/history/provinces/e_france.txt index 1855ffb7..b1d3722e 100644 --- a/history/provinces/e_france.txt +++ b/history/provinces/e_france.txt @@ -51,6 +51,7 @@ culture = galo religion = numenorian holding = castle_holding + special_building_slot = generic_university 1066.1.1 = { buildings = { ramparts_01 @@ -69,13 +70,14 @@ culture = galo religion = numenorian holding = castle_holding + special_building = chateau_bretagne_01 } 2153 = { holding = church_holding } 2166 = { holding = city_holding - } + } 2151 = { holding = none @@ -788,6 +790,7 @@ culture = poitevin religion = carolingian holding = castle_holding + special_building_slot = generic_university 1066.1.1 = { buildings = { curtain_walls_01 @@ -886,6 +889,7 @@ culture = poitevin religion = carolingian holding = castle_holding + special_building_slot = port_of_la_rochelle_01 } 2243 = { holding = none @@ -1026,6 +1030,7 @@ culture = gascon religion = rocambolist holding = castle_holding + special_building = fort_de_bordeaux_01 867.1.1 = { buildings = { hunting_grounds_01 @@ -1235,6 +1240,7 @@ culture = axiton religion = rocambolist holding = castle_holding + special_building = capitole_toulouse_01 1066.1.1 = { buildings = { cereal_fields_01 @@ -1349,6 +1355,7 @@ culture = axiton religion = girondin holding = castle_holding + special_building_slot = generic_university } 2288 = { holding = none diff --git a/localization/english/replace/NEOW_buildings_l_english.yml b/localization/english/replace/NEOW_buildings_l_english.yml index e8339bcd..578ef399 100644 --- a/localization/english/replace/NEOW_buildings_l_english.yml +++ b/localization/english/replace/NEOW_buildings_l_english.yml @@ -118,4 +118,44 @@ building_type_statue_isildur_01:1 "Statue of Isildur Bonaparte" building_type_statue_isildur_01_desc:0 "$building_statue_isildur_01_desc$" building_statue_isildur_01:0 "Statue of Isildur Bonaparte" - building_statue_isildur_01_desc:0 "WIP" \ No newline at end of file + building_statue_isildur_01_desc:0 "WIP" + + building_type_fourviere_01:1 "Fourvière" + building_type_fourviere_01_desc:0 "$building_fourviere_01_desc$" + building_fourviere_01:0 "Fourvière" + building_fourviere_01_desc:0 "WIP" + + building_type_capitole_toulouse_01:1 "Capitole de Toulouse" + building_type_capitole_toulouse_01_desc:0 "$building_capitole_toulouse_01_desc$" + building_capitole_toulouse_01:0 "Capitole de Toulouse" + building_capitole_toulouse_01_desc:0 "WIP" + + building_type_chateau_bretagne_01:1 "Château de Bretagne" + building_type_chateau_bretagne_01_desc:0 "$building_chateau_bretagne_01_desc$" + building_chateau_bretagne_01:0 "Château de Bretagne" + building_chateau_bretagne_01_desc:0 "WIP" + building_chateau_bretagne_02:0 "Château de Bretagne" + building_chateau_bretagne_02_desc:0 "WIP" + + building_type_fort_de_bordeaux_01:1 "Fort de Bordeaux" + building_type_fort_de_bordeaux_01_desc:0 "$building_fort_de_bordeaux_01_desc$" + building_fort_de_bordeaux_01:0 "Fort de Bordeaux" + building_fort_de_bordeaux_01_desc:0 "WIP" + + building_type_fortified_port_of_monaco_01:1 "Fortified Port of Monaco" + building_type_fortified_port_of_monaco_01_desc:0 "$building_fortified_port_of_monaco_01_desc$" + building_fortified_port_of_monaco_01:0 "Fortified Harbors" + building_fortified_port_of_monaco_01_desc:0 "WIP" + building_fortified_port_of_monaco_02:0 "Fortified Port" + building_fortified_port_of_monaco_02_desc:0 "WIP" + building_fortified_port_of_monaco_03:0 "Fortified Grand Port" + building_fortified_port_of_monaco_03_desc:0 "WIP" + + building_type_port_of_la_rochelle_01:1 "Port of Calais" + building_type_port_of_la_rochelle_01_desc:0 "$building_port_of_la_rochelle_01$" + building_port_of_la_rochelle_01:0 "Extensive Harbour" + building_port_of_la_rochelle_01_desc:0 "A small port has been constructed in a trade-rich region to allow for easier transport of goods overseas. Several small harbors work together to bring goods in and out of the city, but the capacity is small while the opportunity is large." + building_port_of_la_rochelle_02:0 "Bustling Port" + building_port_of_la_rochelle_02_desc:0 "As trade grows, so does the port. With the influx of new merchants into the city, the port needs to grow too , harboring ships from faraway lands and trading goods never seen before." + building_port_of_la_rochelle_03:0 "Grand Port" + building_port_of_la_rochelle_03_desc:0 "As trade grew increasingly, several new docks were set up, covering almost the entire coastline of the city. New harbor storage and cargo cranes were needed. With the increased need for ships, several shipyards popped up to facilitate the new demand." \ No newline at end of file From c25e9dbcf627e46d73ff55294f9cbc2beae43089 Mon Sep 17 00:00:00 2001 From: trashmasteruni Date: Fri, 30 Jan 2026 18:52:41 +0100 Subject: [PATCH 3/3] vanilla banners for now --- common/religion/religions/NEOW_catholic.txt | 2 +- common/religion/religions/NEOW_orthodox.txt | 2 +- common/religion/religions/NEOW_protestant.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/religion/religions/NEOW_catholic.txt b/common/religion/religions/NEOW_catholic.txt index 42189388..a926f2ed 100644 --- a/common/religion/religions/NEOW_catholic.txt +++ b/common/religion/religions/NEOW_catholic.txt @@ -1,7 +1,7 @@ catholic_religion = { family = rf_abrahamic - doctrine_background_icon = core_tenet_banner_catholic.dds + doctrine_background_icon = core_tenet_banner_christian.dds doctrine = abrahamic_hostility_doctrine #Main Group | placeholder diff --git a/common/religion/religions/NEOW_orthodox.txt b/common/religion/religions/NEOW_orthodox.txt index c0e7d663..ecbbb374 100644 --- a/common/religion/religions/NEOW_orthodox.txt +++ b/common/religion/religions/NEOW_orthodox.txt @@ -1,7 +1,7 @@ eastern_orthodox_religion = { family = rf_abrahamic - doctrine_background_icon = core_tenet_banner_orthodox.dds + doctrine_background_icon = core_tenet_banner_christian.dds doctrine = abrahamic_hostility_doctrine #Main Group | placeholder diff --git a/common/religion/religions/NEOW_protestant.txt b/common/religion/religions/NEOW_protestant.txt index 8c5cecd7..8b089f72 100644 --- a/common/religion/religions/NEOW_protestant.txt +++ b/common/religion/religions/NEOW_protestant.txt @@ -1,7 +1,7 @@ protestant_religion = { family = rf_abrahamic - doctrine_background_icon = core_tenet_banner_protestant.dds + doctrine_background_icon = core_tenet_banner_christian.dds doctrine = abrahamic_hostility_doctrine #Main Group