diff --git a/.github/workflows/branch-naming-scheme.yml b/.github/workflows/branch-naming-scheme.yml new file mode 100644 index 0000000000..a7cb1ed6c1 --- /dev/null +++ b/.github/workflows/branch-naming-scheme.yml @@ -0,0 +1,26 @@ +name: Branch Naming Policy Action + +on: + create: + delete: + pull_request: + branches: + - '**' + +jobs: + branch-naming-policy: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run Branch Naming Policy Action + uses: nicklegan/github-repo-branch-naming-policy-action@v1.1.1 + if: github.ref_type == 'branch' || github.ref_type == 'pull_request' + with: + token: ${{ secrets.GITHUB_TOKEN }} + regex: '^(feat|fix)\/(mixed|code|2D|3D|map|char|l10n|magic)\/([a-z0-9]+)' + flags: i + # token: ${{ secrets.REPO_TOKEN }} + # delete: true diff --git a/common/buildings/wc_special_buildings.txt b/common/buildings/wc_special_buildings.txt index 06945e92cf..5d61eecdd2 100644 --- a/common/buildings/wc_special_buildings.txt +++ b/common/buildings/wc_special_buildings.txt @@ -64,6 +64,10 @@ corpse_of_agamaggan_01 = { dark_portal_01 = { type_icon = "icon_structure_dark_portal.dds" + asset = { + type = pdxmesh + name = "building_special_dark_portal2_mesh" + } is_enabled = { dark_portal_building_enabled_trigger = yes @@ -85,6 +89,10 @@ dark_portal_01 = { dark_portal_02 = { type_icon = "icon_structure_dark_portal.dds" + asset = { + type = pdxmesh + name = "building_special_dark_portal_mesh" + } is_enabled = { dark_portal_building_enabled_trigger = yes diff --git a/common/casus_belli_types/00_civil_war.txt b/common/casus_belli_types/00_civil_war.txt index 4175534cd0..00f05d8885 100644 --- a/common/casus_belli_types/00_civil_war.txt +++ b/common/casus_belli_types/00_civil_war.txt @@ -241,7 +241,7 @@ independence_faction_war = { value = medium_prestige_value multiply = -1 } - + # Warcraft decrease_any_authority_effect = yes } @@ -286,9 +286,9 @@ independence_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -303,8 +303,8 @@ independence_faction_war = { scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } add_character_flag = { flag = recent_independence_faction_war @@ -391,7 +391,7 @@ independence_faction_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -441,15 +441,15 @@ liberty_faction_war = { #EP2 Accolade glory gain from winning against higher ranked enemy scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } - + # LEGITIMACY FROM LOSING FACTION WAR faction_war_end_defeat_legitimacy_effect = yes - + scope:defender = { # Warcraft decrease_any_authority_effect = yes - + add_prestige = -500 every_character_war = { @@ -540,9 +540,9 @@ liberty_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -556,8 +556,8 @@ liberty_faction_war = { } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } add_character_flag = { flag = recent_liberty_faction_war years = faction_war_white_peace_cooldown @@ -624,7 +624,7 @@ liberty_faction_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -682,7 +682,7 @@ populist_war = { on_victory_desc = { desc = populist_war_victory_desc - + } on_victory = { @@ -753,16 +753,16 @@ populist_war = { on_white_peace_desc = { desc = populist_war_white_peace_desc - + } on_white_peace = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } on_white_peace_faction_revolt_war = yes hidden_effect = { @@ -802,7 +802,7 @@ populist_war = { on_defeat_desc = { desc = populist_war_defeat_desc - + } on_defeat = { @@ -878,7 +878,7 @@ populist_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -974,15 +974,15 @@ claimant_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } on_white_peace_faction_revolt_war = yes @@ -1042,7 +1042,7 @@ claimant_faction_war = { max_attacker_score_from_battles = 50 max_defender_score_from_battles = 100 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1178,14 +1178,14 @@ depose_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } on_white_peace_faction_revolt_war = yes } @@ -1236,7 +1236,7 @@ depose_war = { defender_score_from_occupation_scale = 50 max_attacker_score_from_battles = 100 max_defender_score_from_battles = 100 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1395,15 +1395,15 @@ refused_liege_demand_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -1459,7 +1459,7 @@ refused_liege_demand_war = { } } } - + on_lost_request_revolt_war = yes } @@ -1485,7 +1485,7 @@ refused_liege_demand_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1644,9 +1644,9 @@ independence_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -1662,8 +1662,8 @@ independence_war = { scope:defender = { add_prestige = minor_prestige_value stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } } @@ -1733,7 +1733,7 @@ independence_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1794,7 +1794,7 @@ nation_fracturing_faction_war = { #EP2 Accolade glory gain from winning against higher ranked enemy scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } - + create_title_and_vassal_change = { type = independency save_scope_as = change @@ -1863,9 +1863,9 @@ nation_fracturing_faction_war = { limit = { is_ai = no } send_interface_toast = { type = event_generic_neutral - title = liege_primary_title_dissolution - desc = liege_primary_title_dissolution_desc - left_icon = scope:defender + title = liege_primary_title_dissolution + desc = liege_primary_title_dissolution_desc + left_icon = scope:defender } } } @@ -1914,9 +1914,9 @@ nation_fracturing_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -1931,8 +1931,8 @@ nation_fracturing_faction_war = { scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } add_character_flag = { flag = recent_nation_fracturing_faction_war @@ -2004,7 +2004,7 @@ nation_fracturing_faction_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 diff --git a/common/casus_belli_types/wc_genocide_wars.txt b/common/casus_belli_types/wc_genocide_wars.txt new file mode 100644 index 0000000000..b709b6c4c1 --- /dev/null +++ b/common/casus_belli_types/wc_genocide_wars.txt @@ -0,0 +1,211 @@ +committed_genocide_war = { + group = invasion + ai = yes + + combine_into_one = yes + + allowed_for_character = { always = yes } + + allowed_against_character = { + OR = { + genocide_cb_can_avenge_culture = yes + genocide_cb_can_avenge_faith = yes + } + } + + target_titles = none + target_de_jure_regions_above = yes + + valid_to_start = { always = yes } + + ai_score_mult = { + value = 1 + + if = { + limit = { + genocide_cb_can_avenge_faith = yes + scope:attacker = { + has_trait = zealous + } + } + + add = 1 + } + } + + should_invalidate = { + NOT = { + OR = { + genocide_cb_can_avenge_culture = yes + genocide_cb_can_avenge_faith = yes + } + } + } + + on_invalidated_desc = msg_committed_genocide_invalid_message + + on_invalidated = { + + } + + cost = { + prestige = { + value = 0 + add = { + value = genocide_cb_prestige_cost + desc = CB_BASE_COST + } + } + piety = { + value = 0 + add = { + value = genocide_cb_piety_cost + desc = CB_BASE_COST + } + } + } + + on_declaration = { + on_declared_war = yes + + if = { # Vassals of the same culture approve of defending your culture + limit = { + genocide_cb_can_avenge_culture = yes + } + + scope:attacker = { + every_vassal_or_below = { + limit = { + culture = scope:attacker.culture + } + + add_opinion = { + target = scope:attacker + modifier = vassal_approves_of_defending_genocide_opinion + } + } + } + } + + if = { # Vassals of the same faith approve of defending your faith + limit = { + genocide_cb_can_avenge_faith = yes + } + + scope:attacker = { + every_vassal_or_below = { + limit = { + faith = scope:attacker.faith + } + + add_opinion = { + target = scope:attacker + modifier = vassal_approves_of_defending_genocide_opinion + } + } + } + } + } + + on_victory = { + scope:attacker = { + show_pow_release_message_effect = yes + accolade_attacker_war_end_glory_gain_med_effect = yes + } + + create_title_and_vassal_change = { + type = conquest + save_scope_as = change + add_claim_on_loss = yes + } + + add_genocide_cb_rewards = { OUTCOME = flag:win PRESTIGE_BASE_VALUE = medium_prestige_value PIETY_BASE_VALUE = medium_piety_value } + + resolve_title_and_vassal_change = scope:change + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + # Truce + add_truce_attacker_victory_effect = yes + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + } + + on_victory_desc = { + first_valid = { + triggered_desc = { + trigger = { scope:attacker = { is_local_player = yes } } + desc = committed_genocide_cb_victory_desc_attacker + } + desc = committed_genocide_cb_victory_desc + } + } + + on_white_peace = { + scope:attacker = { show_pow_release_message_effect = yes } + + add_genocide_cb_rewards = { OUTCOME = flag:white_peace PRESTIGE_BASE_VALUE = medium_prestige_value PIETY_BASE_VALUE = medium_piety_value } + + add_truce_white_peace_effect = yes + } + + on_white_peace_desc = { + first_valid = { + triggered_desc = { + trigger = { scope:defender = { is_local_player = yes } } + desc = committed_genocide_cb_white_peace_desc_defender + } + desc = committed_genocide_cb_white_peace_desc + } + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_med_effect = yes + } + + add_genocide_cb_rewards = { OUTCOME = flag:loss PRESTIGE_BASE_VALUE = medium_prestige_value PIETY_BASE_VALUE = medium_piety_value } + + add_truce_attacker_defeat_effect = yes + + scope:attacker = { + save_temporary_scope_as = loser + } + on_lost_aggression_war_discontent_loss = yes + } + + on_defeat_desc = { + first_valid = { + triggered_desc = { + trigger = { scope:defender = { is_local_player = yes } } + desc = committed_genocide_cb_defeat_desc_defender + } + desc = committed_genocide_cb_defeat_desc + } + } + + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + transfer_behavior = transfer + + check_attacker_inheritance_validity = yes + check_defender_inheritance_validity = yes + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "GENOCIDE_WAR_NAME" + cb_name = "GENOCIDE_WAR_CB_NAME" + interface_priority = 98 #Below take all and regular dejure. + + max_ai_diplo_distance_to_title = 500 + +} \ No newline at end of file diff --git a/common/council_tasks/wc_genocide_councilor_tasks.txt b/common/council_tasks/wc_genocide_councilor_tasks.txt new file mode 100644 index 0000000000..465a7b195e --- /dev/null +++ b/common/council_tasks/wc_genocide_councilor_tasks.txt @@ -0,0 +1,662 @@ +task_purge_population = { + position = councillor_marshal + + task_type = task_type_county + county_target = realm + ai_county_target = realm + task_progress = task_progress_value + task_current_value = scope:councillor_liege.marshal_purge_population_current_progress + task_max_value = marshal_purge_population_threshold + highlight_own_realm = yes + restart_on_finish = no + + effect_desc = { + desc = task_purge_population_effect_desc + triggered_desc = { + trigger = { + scope:councillor_liege = { can_corrupt_trigger = yes } + } + desc = task_purge_population_effect_corrupt_desc + } + triggered_desc = { + trigger = { scope:councillor_liege = { government_has_flag = government_dark_frenzy_from_conversions } } + desc = task_dark_frenzy_gain + } + triggered_desc = { + trigger = { + scope:councillor_liege = { + any_vassal = { + has_vassal_stance = minority + } + } + } + desc = minority_disapproves_genocide_tooltip + } + + desc = { + desc = council_task_possible_side_effects + # Corrupt + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + } + scope:councillor ?= { + martial < high_skill_rating + } + } + desc = council_task_cursed_lands + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + } + scope:councillor ?= { + martial < high_skill_rating + } + } + desc = council_task_marauders + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + + cp:councillor_court_chaplain ?= { + learning > mediocre_skill_rating + } + } + scope:councillor ?= { + martial >= high_skill_rating + } + } + desc = council_task_devotion_demonstration + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + } + scope:councillor ?= { + martial >= high_skill_rating + } + } + desc = council_task_harness_energy + } + + # Cleanse + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_champion_challenge + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_wild_energy + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_army_spawn + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_large_raid + } + + # Purge + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_neighboring_unrest + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_emigration + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_friendly_champion + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_found_supplies + } + } + } + + progress = { + value = 0 + add = { + value = marshal_purge_population_base_total + desc = INCREASE_CONTROL_BASE + } + + add = { + value = marshal_purge_population_skill_bonus + desc = SCALED_COUNCILLOR_MARTIAL_VALUE + } + + # Relation Bonuses/Penalties + if = { # Friend + limit = { + scope:councillor_liege = { + has_relation_friend = scope:councillor + NOT = { has_relation_best_friend = scope:councillor } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_friend_bonus + desc = COUNCILLOR_IS_YOUR_FRIEND + } + } + if = { # Best Friend + limit = { + scope:councillor_liege = { + has_relation_best_friend = scope:councillor + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_best_friend_bonus + desc = COUNCILLOR_IS_YOUR_BEST_FRIEND + } + } + if = { # Rival + limit = { + scope:councillor_liege = { + has_relation_rival = scope:councillor + NOT = { has_relation_nemesis = scope:councillor } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_rival_bonus + desc = COUNCILLOR_IS_YOUR_RIVAL + } + } + if = { # Nemesis + limit = { + scope:councillor_liege = { + has_relation_nemesis = scope:councillor + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_nemesis_bonus + desc = COUNCILLOR_IS_YOUR_NEMESIS + } + } + + #Partially completed bonuses + if = { # Same culture + limit = { + scope:county = { + culture = scope:councillor_liege.culture + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_same_culture_bonus + desc = COUNTY_IS_YOUR_CULTURE + } + } + if = { # Same faith + limit = { + scope:county = { + faith = scope:councillor_liege.faith + + NOT = { + has_variable = false_convert + } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_same_faith_bonus + desc = COUNTY_IS_YOUR_FAITH + } + } + if = { # Has corruption modifier + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_already_corrupted_bonus + DESC = COUNTY_ALREADY_CORRUPTED + } + } + + # bonus for army strength when armies are unraised + if = { + limit = { + scope:councillor_liege = { has_raised_armies = no } + } + + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_unraised_army_bonus + desc = GENOCIDE_ARMY_STRENGTH_BONUS + } + } + + # Sacrificed cleanse speed bonus + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = sacrificed_cleansing_targets_modifier + } + } + + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_sacrifice_bonus + desc = GENOCIDE_SACRIFICE_BONUS + } + } + + # Local champion purge speed bonus + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = genocide_local_champion_modifier + } + } + + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_champion_bonus + desc = GENOCIDE_CHAMPION_BONUS + } + } + + # Fervor bonus + if = { + limit = { + scope:county = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_fervor_penalty + DESC = MARSHAL_GENOCIDE_FERVOR_IMPACT + } + } + + # Development reduces the speed. Should be the last non-multiply modifier applied to avoid negative values + if = { + limit = { + exists = scope:county + scope:county = { + development_level > 0 + } + } + add = { + value = scope:county.marshal_purge_population_monthly_increase_development_penalty + desc = STEWARD_PROMOTE_CULTURE_DEVELOPMENT_PENALTY + } + } + + if = { + limit = { + exists = scope:county + scope:county = { + OR = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + NOT = { + marshal_purge_population_game_rule_mult = 1 + } + } + } + multiply = { + value = marshal_purge_population_game_rule_mult + desc = FROM_CONVERSION_SPEED_GAME_RULE + } + } + } + + potential_county = { + scope:county = { + trigger_if = { + limit = { + NOT = { + county_controller = holder + } + } + + county_controller = { + OR = { + is_liege_or_above_of = scope:county.holder + is_vassal_or_below_of = scope:county.holder + } + } + } + trigger_if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + } + + allow_corrupt_this_province_trigger = yes + } + trigger_else_if = { + limit = { + allow_cleanse_this_province_trigger = yes + } + always = yes + } + trigger_else = { + OR = { + allow_genocide_this_province_trigger = yes + } + } + } + } + + on_start_task_county = { + scope:county = { + if = { + limit = { + allow_corrupt_this_province_trigger = yes + } + + add_county_modifier = ongoing_corruption_modifier + } + else_if = { + limit = { + allow_cleanse_this_province_trigger = yes + } + + add_county_modifier = ongoing_cleansing_modifier + } + else = { + add_county_modifier = ongoing_genocide_modifier + } + } + } + + on_cancel_task_county = { + scope:county = { + remove_genocide_modifiers = yes + } + } + + on_finish_task_county = { + scope:county = { + set_variable = { + name = finished_genocide + } + if = { + limit = { + has_county_modifier = ongoing_corruption_modifier + } + + scope:councillor_liege = { + trigger_event = genocide_task.2001 + } + } + else_if = { + limit = { + has_county_modifier = ongoing_cleansing_modifier + } + + scope:councillor_liege = { + trigger_event = genocide_task.2101 + } + } + else = { + scope:councillor_liege = { + trigger_event = genocide_task.2201 + } + } + } + + scope:councillor = { + start_default_task = yes + } + } + + on_monthly_county = { + if = { + limit = { + NOT = { + scope:county ?= { + has_variable = purge_population_current_progress + } + } + } + + scope:county = { + set_variable = { + name = purge_population_current_progress + value = 0 + } + } + } + + scope:county = { + change_variable = { + name = purge_population_current_progress + add = marshal_purge_population_total + } + } + + + scope:councillor_liege = { # monthly_on_action doesn't work + trigger_event = { + on_action = task_purge_population_side_effects + } + } + } + + ai_target_score = { + value = 20 + + if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + has_beneficial_corruption_this_province_trigger = no + } + } + + add = 100 + } + + if = { + limit = { # Only factor in opinion if genocide, not cleanse or corrupt + scope:councillor_liege = { + can_corrupt_trigger = no + } + scope:county = { + allow_cleanse_this_province_trigger = no + } + } + scope:councillor_liege = { # Only genocide if bad opinion of holder + add = { + value = "opinion(scope:county.holder)" + multiply = -1 + } + } + } + + if = { + limit = { # AI shouldn't genocide parent/child culture + scope:county = { + allow_genocide_this_province_parent_culture_trigger = no + } + } + + multiply = 0 + } + } + + ai_will_do = { + value = 0 + + if = { + limit = { + scope:councillor = { + is_performing_council_task = task_purge_population + } + } + add = 10000 # Always keep going if this is already chosen + } + else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + } + add = 1000 + } + else_if = { + limit = { + scope:councillor_liege = { + any_sub_realm_county = { + allow_cleanse_this_province_trigger = yes + } + } + } + add = 1000 + } + else = { + add = { + value = ai_zeal + } + add = { + value = ai_greed + } + add = { + value = ai_compassion + multiply = -1 + } + add = { + value = ai_honor + multiply = -1 + } + } + + if = { + # Don't do this too often + limit = { + scope:councillor_liege = { + has_character_flag = no_ai_genocide + } + } + multiply = 0 + } + } + +} +# task_relocate_population = { +# +# } \ No newline at end of file diff --git a/common/culture/name_lists/wc_orcish.txt b/common/culture/name_lists/wc_orcish.txt index 0ec74f993f..b4c676a97c 100644 --- a/common/culture/name_lists/wc_orcish.txt +++ b/common/culture/name_lists/wc_orcish.txt @@ -14,7 +14,7 @@ Gozar'Gen Gozurmok Gramgal Gramugg Grim'Guld Grimmurarm Grimnarton Grimramm Grom'Tur Gromphon Grugurdar Gullgas Gulnarru Hargargul Hog'Guld Honuda Hormurokk Hun'Thunk Hunmurul Itave Kafar Kalgar'Tur Kallzul Kalmak Kaltuda Kalturkuda Kamgak Karm'Ral Karnarmok Karogul Kartur'Ruz Kel'Phan Kelgas Kelrum Kil'Geld Kolmos Komgarlak Komnaram Komosh Kordurokk Kradurrak Kragaru Kulmur'Thak Kurnurus Kurom Kuzurolek Laarg Lamdurdu Lumtar'Raz Lumurg Maggarstan Magven Mahlgurton Makban Maknurgorn Mal'Gan Maldru - Maosh Marmurak Mordargeld Morlgal Mouda Mu'Dur Mugmak Mugoran Mugturfur Mukdarokk Mukdgald Mukud Mulzok Muramur'Phan Murarost Muthuk Nastrac Neezurthus Oggumargul Ogufur + Maosh Marmurak Mordargeld Morlgal Mouda Mu'Dur Mugmak Mugoran Mugturfur Mukdarokk Mukdgald Mukud Mulzok Muramur'Phan Murarost Muthuk Nastrac Nazgrim Neezurthus Oggumargul Ogufur Ogugarmar Ogunogg Okgorm Oko'Dar Okturthas Ollaramm Ollazgorm Orloch Oroam Orodaruld Orogurdan Oroma Orrus Ragnar Ronagarstan Ronamar Rongorm Ronllak Sadaragg Sargam Sargarom Sarrek Sarzphan Somurrek Sorgogg Tartarians Thadurgorm Tharosh Thok Thragagus Thrarus Throdran Throguld Thronurstan Thrugor Trakgarven Trukaro Trukgar'Dur Ukru'Gald Ukrugron Ukruu Ullagvor Ullatgron Ullathus Urdurgeld Urthaban Urthazuk Urthuurg Urtruok Utok Zasma Zatzal Zevnarg Zuda Zuloch Zurmolak Zurrus Zuslaro Zusrak @@ -262,7 +262,7 @@ name_list_burning_blade = { Gozar'Gen Gozurmok Gramgal Gramugg Grim'Guld Grimmurarm Grimnarton Grimramm Grom'Tur Gromphon Grugurdar Gullgas Gulnarru Hargargul Hog'Guld Honuda Hormurokk Hun'Thunk Hunmurul Itave Kafar Kalgar'Tur Kallzul Kalmak Kaltuda Kalturkuda Kamgak Karm'Ral Karnarmok Karogul Kartur'Ruz Kel'Phan Kelgas Kelrum Kil'Geld Kolmos Komgarlak Komnaram Komosh Kordurokk Kradurrak Kragaru Kulmur'Thak Kurnurus Kurom Kuzurolek Laarg Lamdurdu Lumtar'Raz Lumurg Maggarstan Magven Mahlgurton Makban Maknurgorn Mal'Gan Maldru - Maosh Marmurak Moogul Mordargeld Morlgal Mouda Mu'Dur Mugmak Mugoran Mugturfur Mukdarokk Mukdgald Mukud Mulzok Muramur'Phan Murarost Muthuk Nastrac Neezurthus Oggumargul Ogufur + Mankrik Maosh Marmurak Moogul Mordargeld Morlgal Mouda Mu'Dur Mugmak Mugoran Mugturfur Mukdarokk Mukdgald Mukud Mulzok Muramur'Phan Murarost Muthuk Nastrac Neezurthus Oggumargul Ogufur Ogugarmar Ogunogg Okgorm Oko'Dar Okturthas Ollaramm Ollazgorm Orloch Oroam Orodaruld Orogurdan Oroma Orrus Ragnar Ronagarstan Ronamar Rongorm Ronllak Sadaragg Sargam Sargarom Sarrek Sarzphan Somurrek Sorgogg Tartarians Thadurgorm Tharosh Thok Thragagus Thrarus Throdran Throguld Thronurstan Thrugor Trakgarven Trukaro Trukgar'Dur Ukru'Gald Ukrugron Ukruu Ullagvor Ullatgron Ullathus Urdurgeld Urthaban Urthazuk Urthuurg Urtruok Utok Xerash Zasma Zatzal Zevnarg Zuda Zuloch Zurmolak Zurrus Zuslaro Zusrak @@ -607,7 +607,7 @@ name_list_frostwolf = { female_names = { Aggralan Aldaryla Aldis Alguna Alika Eluja Falgynu Feldarner Felmuroda Fol'Kuno Foldis Fulkes Gaedo Gagurras Gartras Gatarliku Gath'ras Gayra Geyah Gigardres Giguris Gijaina Gikumo Gilika Ginarika Giulo Gomuros Gootra Gorkes Goyno Greturkit Gronardrus Kagra Keryle - Ket'Tur Ketra Kidrus Kikamo Kotdurotra Kureda Kutdardris Lokra Merkit Mernaradu Mordarodu Mormardres Nizka Olgdas Olldis Rahklatra + Ket'Tur Ketra Kidrus Kikamo Kotdurotra Kureda Kutdardris Lokra Merkit Mernaradu Mordarodu Mormardres Nizka Olgdas Olgra Olldis Rahklatra Rahklthas Ramdis Rashket Rastra Rawdarviu Rawstrom Rawturyla Rawyl Rawynu Raylu Rehze Rohkkamo Rohknuranu Rohonu Rokuno Roshka Rozina Ryal Sannarodu Santhas Sarrak Semyja Sendulo Senlami Senus Shaksa Shaliko Shedurkuji Shekumo Sheturano Sheyro Shuddus Shudes Shuloda Shutyna Sinlinu Suira Suis Sukis Summaryle Sumnurkys Sumyja Sun'Kuna Suyno Tamdus Tamkumo Temmurynu Umagaredo @@ -770,7 +770,7 @@ name_list_durotaric = { Gozar'Gen Gozurmok Gramgal Gramugg Grim'Guld Grimmurarm Grimnarton Grimramm Grom'Tur Gromphon Grugurdar Gullgas Gulnarru Hargargul Hog'Guld Honuda Hormurokk Hun'Thunk Hunmurul Itave Kafar Kalgar'Tur Kallzul Kalmak Kaltuda Kalturkuda Kamgak Karm'Ral Karnarmok Karogul Kartur'Ruz Kel'Phan Kelgas Kelrum Kil'Geld Kolmos Komgarlak Komnaram Komosh Kordurokk Kradurrak Kragaru Kruk Kug Kulmur'Thak Kurnurus Kurom Kuzurolek Laarg Lamdurdu Lumtar'Raz Lumurg Maggarstan Magven Mahlgurton Makban Maknurgorn Mal'Gan Maldru - Maosh Marmurak Mathogg Maug Mogrin Mordargeld Morlgal Mouda Mu'Dur Mugmak Mugoran Mugturfur Mukdarokk Mukdgald Mukud Mulzok Muramur'Phan Murarost Muthuk Nastrac Neezurthus Oggumargul Ogufur + Mankrik Maosh Marmurak Mathogg Maug Mogrin Mordargeld Morlgal Mouda Mu'Dur Mugmak Mugoran Mugturfur Mukdarokk Mukdgald Mukud Mulzok Muramur'Phan Murarost Muthuk Nastrac Nazgrim Neezurthus Oggumargul Ogufur Ogugarmar Ogunogg Okgorm Oko'Dar Okturthas Ollaramm Ollazgorm Orloch Oroam Orodaruld Orogurdan Oroma Orrus Ragnar Ronagarstan Ronamar Rongorm Ronllak Sadaragg Sargam Sargarom Sarrek Sarzphan Somurrek Sorgogg Tartarians Thadurgorm Tharosh Thok Thragagus Thrarus Throdran Throguld Thronurstan Thrugor Trakgarven Trukaro Trukgar'Dur Ukru'Gald Ukrugron Ukruu Ullagvor Ullatgron Ullathus Urdurgeld Urthaban Urthazuk Urthuurg Urtruok Utok Zasma Zatzal Zevnarg Zuda Zuloch Zurmolak Zurrus Zuslaro Zusrak @@ -779,7 +779,7 @@ name_list_durotaric = { female_names = { Aldaryla Aldis Alguna Alika Eluja Falgynu Feldarner Felmuroda Fol'Kuno Foldis Fulkes Gaedo Gagurras Gartras Gatarliku Gayra Gigardres Giguris Gijaina Gikumo Gilika Ginarika Giulo Gomuros Gootra Gorkes Goyno Greturkit Gronardrus Keryle - Ket'Tur Ketra Kidrus Kikamo Kotdurotra Kureda Kutdardris Merkit Mernaradu Mordarodu Mormardres Olgdas Olldis Rahklatra + Ket'Tur Ketra Kidrus Kikamo Kotdurotra Kureda Kutdardris Merkit Mernaradu Mordarodu Mormardres Olgdas Olgra Olldis Rahklatra Rahklthas Ramdis Rashket Rastra Rawdarviu Rawstrom Rawturyla Rawyl Rawynu Raylu Rehze Rohkkamo Rohknuranu Rohonu Rokuno Roshka Rozina Sannarodu Santhas Semyja Sendulo Senlami Senus Shaliko Shedurkuji Shekumo Sheturano Sheyro Shuddus Shudes Shuloda Shutyna Sinlinu Suira Suis Sukis Summaryle Sumnurkys Sumyja Sun'Kuna Suyno Tamdus Tamkumo Temmurynu Umagaredo diff --git a/common/customizable_localization/wc_genocide_custom_loc.txt b/common/customizable_localization/wc_genocide_custom_loc.txt new file mode 100644 index 0000000000..e6e00fbc11 --- /dev/null +++ b/common/customizable_localization/wc_genocide_custom_loc.txt @@ -0,0 +1,298 @@ +TaskPurgePopulationTitle = { + type = character + text = { + localization_key = TaskPurgePopulationTitle_Corrupt + trigger = { + can_corrupt_trigger = yes + } + } + text = { + localization_key = TaskPurgePopulationTitle_Purge + fallback = yes + } +} + +GenocideEventRelevantMagic = { + type = character + text = { + localization_key = GenocideEventRelevantMagic_Light + trigger = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantMagic_Void + trigger = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Arcane + trigger = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Fel + trigger = { + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Life + trigger = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Death + trigger = { + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } +} + +GenocideEventRelevantCountyMagic = { + type = landed_title + text = { + localization_key = GenocideEventRelevantMagic_Light + trigger = { + has_county_modifier = county_corruption_light_modifier + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantMagic_Void + trigger = { + has_county_modifier = county_corruption_void_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Arcane + trigger = { + has_county_modifier = county_corruption_arcane_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Fel + trigger = { + has_county_modifier = county_corruption_fel_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Life + trigger = { + has_county_modifier = county_corruption_life_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Death + trigger = { + has_county_modifier = county_corruption_death_modifier + } + } +} + +GenocideEventRelevantGod = { + type = character + text = { + localization_key = GenocideEventRelevantGod_FaithGod + trigger = { + evil_public_religion_trigger = yes + faith = { + OR = { + has_doctrine = doctrine_light_magic_approved + has_doctrine = doctrine_shadow_magic_approved + has_doctrine = doctrine_order_magic_approved + has_doctrine = doctrine_disorder_magic_approved + has_doctrine = doctrine_life_magic_approved + has_doctrine = doctrine_death_magic_approved + } + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantGod_Light + trigger = { + has_trait = being_light + } + } + text = { + localization_key = GenocideEventRelevantGod_Void + trigger = { + has_trait = being_void + } + } + text = { + localization_key = GenocideEventRelevantGod_Arcane + trigger = { + has_trait = being_order + } + } + text = { + localization_key = GenocideEventRelevantGod_Fel + trigger = { + has_trait = being_demon + } + } + text = { + localization_key = GenocideEventRelevantGod_Life + trigger = { + has_trait = being_life + } + } + text = { + localization_key = GenocideEventRelevantGod_Death + trigger = { + has_trait = being_undead + } + } +} + +GenocideEventRelevantPower = { + type = character + text = { + localization_key = GenocideEventRelevantPower_Holy + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantPower_Dark + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + } + text = { + localization_key = GenocideEventRelevantPower_Arcane + trigger = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } +} + +GenocideEventRelevantName = { + type = character + text = { + localization_key = GenocideEventRelevantName_Hallowed + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantName_Unholy + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + } +} + +GenocideEventRelevantNameCounty = { + type = landed_title + text = { + localization_key = GenocideEventRelevantName_Hallowed + trigger = { + OR = { + has_county_modifier = county_corruption_light_modifier + has_county_modifier = county_corruption_arcane_modifier + has_county_modifier = county_corruption_life_modifier + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantName_Unholy + trigger = { + OR = { + has_county_modifier = county_corruption_void_modifier + has_county_modifier = county_corruption_fel_modifier + has_county_modifier = county_corruption_death_modifier + } + } + } +} + +GenocideEventGenocidedPopulationsOr = { + type = character + + text = { + localization_key = GenocideEventGenocidedPopulationsOr_Both + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + fallback = yes + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Culture + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + } + } + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Faith + trigger = { + scope:second = { + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + } +} + +GenocideEventGenocidedPopulationsAnd = { + type = character + + text = { + localization_key = GenocideEventGenocidedPopulationsAnd_Both + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + fallback = yes + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Culture + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + } + } + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Faith + trigger = { + scope:second = { + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + } +} \ No newline at end of file diff --git a/common/dna_data/wc_easter_egg_dna.txt b/common/dna_data/wc_easter_egg_dna.txt index 2223a7dfe0..850aba6ffb 100644 --- a/common/dna_data/wc_easter_egg_dna.txt +++ b/common/dna_data/wc_easter_egg_dna.txt @@ -1445,4 +1445,442 @@ muaddib_dna = { #by Gaben } } enabled=yes +} + +1995_orc_dna={ #by Grekopithikos + portrait_info = { + genes={ + hair_color={ 37 255 37 255 } + skin_color={ 84 152 80 155 } + eye_color={ 0 212 26 220 } + gene_chin_forward={ "chin_forward_neg" 123 "chin_forward_neg" 113 } + gene_chin_height={ "chin_height_neg" 200 "chin_height_neg" 152 } + gene_chin_width={ "chin_width_neg" 255 "chin_width_neg" 215 } + gene_eye_angle={ "eye_angle_neg" 123 "eye_angle_neg" 101 } + gene_eye_depth={ "eye_depth_neg" 174 "eye_depth_neg" 142 } + gene_eye_height={ "eye_height_neg" 175 "eye_height_neg" 99 } + gene_eye_distance={ "eye_distance_neg" 136 "eye_distance_neg" 158 } + gene_eye_shut={ "eye_shut_neg" 136 "eye_shut_neg" 152 } + gene_forehead_angle={ "forehead_angle_pos" 218 "forehead_angle_pos" 26 } + gene_forehead_brow_height={ "forehead_brow_height_pos" 79 "forehead_brow_height_pos" 79 } + gene_forehead_roundness={ "forehead_roundness_pos" 192 "forehead_roundness_pos" 192 } + gene_forehead_width={ "forehead_width_pos" 189 "forehead_width_pos" 136 } + gene_forehead_height={ "forehead_height_pos" 155 "forehead_height_pos" 105 } + gene_head_height={ "head_height_pos" 144 "head_height_pos" 145 } + gene_head_width={ "head_width_pos" 228 "head_width_pos" 152 } + gene_head_profile={ "head_profile_neg" 172 "head_profile_neg" 131 } + gene_head_top_height={ "head_top_height_neg" 29 "head_top_height_neg" 42 } + gene_head_top_width={ "head_top_width_neg" 99 "head_top_width_neg" 92 } + gene_jaw_angle={ "jaw_angle_pos" 97 "jaw_angle_pos" 137 } + gene_jaw_forward={ "jaw_forward_neg" 146 "jaw_forward_neg" 247 } + gene_jaw_height={ "jaw_height_neg" 242 "jaw_height_neg" 201 } + gene_jaw_width={ "jaw_width_pos" 185 "jaw_width_pos" 203 } + gene_mouth_corner_depth={ "mouth_corner_depth_neg" 119 "mouth_corner_depth_neg" 127 } + gene_mouth_corner_height={ "mouth_corner_height_pos" 234 "mouth_corner_height_pos" 133 } + gene_mouth_forward={ "mouth_forward_neg" 80 "mouth_forward_neg" 0 } + gene_mouth_height={ "mouth_height_neg" 46 "mouth_height_neg" 27 } + gene_mouth_width={ "mouth_width_pos" 232 "mouth_width_pos" 216 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 151 "mouth_upper_lip_size_neg" 136 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 218 "mouth_lower_lip_size_neg" 222 } + gene_mouth_open={ "mouth_open_neg" 161 "mouth_open_neg" 6 } + gene_neck_length={ "neck_length_pos" 140 "neck_length_pos" 152 } + gene_neck_width={ "neck_width_pos" 139 "neck_width_pos" 132 } + gene_bs_cheek_forward={ "cheek_forward_pos" 35 "cheek_forward_neg" 12 } + gene_bs_cheek_height={ "cheek_height_pos" 119 "cheek_height_pos" 105 } + gene_bs_cheek_width={ "cheek_width_pos" 85 "cheek_width_pos" 166 } + gene_bs_ear_angle={ "ear_angle_pos" 177 "ear_angle_pos" 176 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 45 "ear_inner_shape_pos" 45 } + gene_bs_ear_bend={ "ear_upper_bend_pos" 4 "ear_upper_bend_pos" 12 } + gene_bs_ear_outward={ "ear_outward_neg" 29 "ear_outward_pos" 4 } + gene_bs_ear_size={ "ear_size_neg" 113 "ear_size_neg" 149 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 113 "eye_corner_depth_neg" 212 } + gene_bs_eye_fold_shape={ "eye_fold_shape_neg" 139 "eye_fold_shape_neg" 235 } + gene_bs_eye_size={ "eye_size_pos" 109 "eye_size_neg" 48 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_pos" 31 "eye_upper_lid_size_pos" 113 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_pos" 127 "forehead_brow_curve_pos" 106 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 215 "forehead_brow_forward_pos" 238 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_pos" 87 "forehead_brow_inner_height_pos" 144 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 135 "forehead_brow_outer_height_pos" 127 } + gene_bs_forehead_brow_width={ "forehead_brow_width_pos" 255 "forehead_brow_width_pos" 158 } + gene_bs_jaw_def={ "jaw_def_neg" 27 "jaw_def_pos" 29 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 222 "mouth_lower_lip_def_pos" 145 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 97 "mouth_lower_lip_full_pos" 15 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_pos" 121 "mouth_lower_lip_pad_neg" 150 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_neg" 1 "mouth_lower_lip_width_pos" 15 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 236 "mouth_philtrum_def_pos" 1 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_pos" 211 "mouth_philtrum_shape_pos" 154 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_pos" 89 "mouth_philtrum_width_neg" 40 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 0 "mouth_upper_lip_def_pos" 98 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_neg" 237 "mouth_upper_lip_full_neg" 176 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_pos" 27 "mouth_upper_lip_profile_pos" 170 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_pos" 255 "mouth_upper_lip_width_pos" 230 } + gene_bs_nose_forward={ "nose_forward_pos" 123 "nose_forward_pos" 204 } + gene_bs_nose_height={ "nose_height_neg" 61 "nose_height_pos" 238 } + gene_bs_nose_length={ "nose_length_pos" 17 "nose_length_neg" 97 } + gene_bs_nose_nostril_height={ "nose_nostril_height_pos" 181 "nose_nostril_height_pos" 219 } + gene_bs_nose_nostril_width={ "nose_nostril_width_pos" 141 "nose_nostril_width_neg" 172 } + gene_bs_nose_profile={ "nose_profile_hawk" 177 "nose_profile_hawk_pos" 56 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_neg" 99 "nose_ridge_angle_pos" 25 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 255 "nose_ridge_width_pos" 194 } + gene_bs_nose_size={ "nose_size_pos" 227 "nose_size_pos" 168 } + gene_bs_nose_tip_angle={ "nose_tip_angle_pos" 175 "nose_tip_angle_pos" 171 } + gene_bs_nose_tip_forward={ "nose_tip_forward_neg" 139 "nose_tip_forward_neg" 132 } + gene_bs_nose_tip_width={ "nose_tip_width_pos" 215 "nose_tip_width_neg" 13 } + face_detail_cheek_def={ "cheek_def_01" 235 "cheek_def_02" 235 } + face_detail_cheek_fat={ "cheek_fat_04_pos" 200 "cheek_fat_01_pos" 114 } + face_detail_chin_cleft={ "chin_cleft" 221 "chin_cleft" 112 } + face_detail_chin_def={ "chin_def_neg" 255 "chin_def" 192 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 255 "eye_lower_lid_def" 132 } + face_detail_eye_socket={ "eye_socket_color_03" 254 "eye_socket_01" 139 } + face_detail_nasolabial={ "nasolabial_02" 244 "nasolabial_02" 250 } + face_detail_nose_ridge_def={ "nose_ridge_def_neg" 190 "nose_ridge_def_neg" 190 } + face_detail_nose_tip_def={ "nose_tip_def" 40 "nose_tip_def" 72 } + face_detail_temple_def={ "temple_def" 157 "temple_def" 77 } + expression_brow_wrinkles={ "brow_wrinkles_02" 255 "brow_wrinkles_02" 255 } + expression_eye_wrinkles={ "eye_wrinkles_02" 14 "eye_wrinkles_02" 14 } + expression_forehead_wrinkles={ "forehead_wrinkles_02" 157 "forehead_wrinkles_02" 157 } + expression_other={ "cheek_wrinkles_both_01" 133 "cheek_wrinkles_both_01" 133 } + complexion={ "complexion_3" 34 "complexion_1" 5 } + gene_height={ "normal_height" 149 "normal_height" 159 } + gene_bs_body_type={ "body_fat_head_fat_low" 164 "body_fat_head_fat_low" 164 } + gene_bs_body_shape={ "body_shape_triangle_half" 255 "body_shape_triangle_half" 206 } + gene_bs_bust={ "bust_clothes" 20 "bust_shape_2_half" 70 } + gene_age={ "old_1" 126 "old_1" 126 } + gene_eyebrows_shape={ "no_eyebrows" 114 "no_eyebrows" 198 } + gene_eyebrows_fullness={ "no_eyebrows" 163 "no_eyebrows" 148 } + gene_body_hair={ "body_hair_dense" 102 "body_hair_sparse" 54 } + gene_hair_type={ "hair_wavy" 172 "hair_wavy" 172 } + gene_baldness={ "no_baldness" 153 "male_pattern_baldness" 153 } + eye_accessory={ "normal_eyes" 81 "normal_eyes" 81 } + eye_left_accessory={ "normal_eyes" 178 "normal_eyes" 178 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 15 "normal_eyelashes" 15 } + gene_body_markings={ "no_body_markings" 255 "no_body_markings" 255 } + gene_facial_markings={ "orc_eyeliner" 151 "no_markings" 100 } + gene_facial_markings_2={ "no_markings" 127 "no_markings" 127 } + special_eyebrows={ "no_eyebrows" 80 "no_eyebrows" 80 } + claws={ "no_claws" 0 "no_claws" 0 } + hooves={ "no_hoves" 0 "no_hoves" 0 } + horns={ "no_horns" 0 "no_horns" 0 } + legs={ "no_legs" 0 "no_legs" 0 } + gene_race={ "creature_orc" 191 "creature_orc" 191 } + gene_being={ "no_being" 127 "no_being" 127 } + gene_skin_value={ "skin_value_neg" 87 "skin_value_neg" 0 } + gene_bs_ear_lenght={ "erect_ear_lenght" 29 "erect_ear_lenght" 38 } + gene_bs_ear_tip={ "ear_tip_pos" 0 "ear_tip_pos" 0 } + gene_bs_mouth_tusks={ "mouth_fangs" 255 "mouth_fangs" 255 } + gene_bs_fingers={ "fingers_troll" 0 "fingers_troll" 0 } + gene_grade={ "plantigrade" 0 "plantigrade" 0 } + gene_mustaches={ "mustaches" 255 "mustaches" 0 } + gene_hair_aging={ "normal_hair_aging" 127 "normal_hair_aging" 127 } + gene_sexual_dimorphism={ "no_dimorphism" 127 "no_dimorphism" 127 } + leg_skin={ "no_leg_skin" 127 "no_leg_skin" 127 } + special_eyes={ "glowing_iris" 68 "no_special_eyes" 127 } + static_eyes={ "no_static_eyes" 0 "no_static_eyes" 0 } + static_hairstyles={ "no_static_hairstyles" 0 "no_static_hairstyles" 0 } + static_hairstyles2={ "no_static_hairstyles2" 0 "no_static_hairstyles2" 0 } + static_model={ "no_static_model" 0 "no_static_model" 0 } + static_mustaches={ "no_static_mustaches" 0 "no_static_mustaches" 0 } + static_beards={ "no_static_beards" 0 "no_static_beards" 0 } + tusks={ "orcish_tusks" 255 "orcish_tusks" 255 } + tail={ "no_tail" 0 "no_tail" 0 } + tendrils={ "no_tendrils" 0 "no_tendrils" 0 } + wings={ "no_wings" 0 "no_wings" 0 } + hairstyles={ "no_hairstyles" 0 "all_hairstyles" 0 } + beards={ "no_beard" 255 "no_beard" 0 } + } + } + enabled=yes +} + +2023_orc_dna={ #by Grekopithikos + portrait_info = { + genes={ + hair_color={ 194 235 26 255 } + skin_color={ 86 163 86 163 } + eye_color={ 5 207 27 221 } + gene_chin_forward={ "chin_forward_neg" 130 "chin_forward_neg" 117 } + gene_chin_height={ "chin_height_neg" 134 "chin_height_neg" 134 } + gene_chin_width={ "chin_width_neg" 255 "chin_width_neg" 166 } + gene_eye_angle={ "eye_angle_neg" 107 "eye_angle_neg" 86 } + gene_eye_depth={ "eye_depth_neg" 56 "eye_depth_neg" 142 } + gene_eye_height={ "eye_height_neg" 255 "eye_height_neg" 65 } + gene_eye_distance={ "eye_distance_neg" 139 "eye_distance_neg" 118 } + gene_eye_shut={ "eye_shut_neg" 0 "eye_shut_neg" 146 } + gene_forehead_angle={ "forehead_angle_pos" 88 "forehead_angle_pos" 11 } + gene_forehead_brow_height={ "forehead_brow_height_pos" 255 "forehead_brow_height_pos" 81 } + gene_forehead_roundness={ "forehead_roundness_pos" 253 "forehead_roundness_pos" 253 } + gene_forehead_width={ "forehead_width_pos" 137 "forehead_width_pos" 137 } + gene_forehead_height={ "forehead_height_pos" 105 "forehead_height_pos" 105 } + gene_head_height={ "head_height_pos" 172 "head_height_pos" 166 } + gene_head_width={ "head_width_pos" 187 "head_width_pos" 187 } + gene_head_profile={ "head_profile_neg" 172 "head_profile_neg" 149 } + gene_head_top_height={ "head_top_height_neg" 60 "head_top_height_neg" 60 } + gene_head_top_width={ "head_top_width_neg" 44 "head_top_width_neg" 44 } + gene_jaw_angle={ "jaw_angle_pos" 111 "jaw_angle_pos" 163 } + gene_jaw_forward={ "jaw_forward_neg" 253 "jaw_forward_neg" 249 } + gene_jaw_height={ "jaw_height_neg" 223 "jaw_height_neg" 208 } + gene_jaw_width={ "jaw_width_pos" 173 "jaw_width_pos" 194 } + gene_mouth_corner_depth={ "mouth_corner_depth_neg" 127 "mouth_corner_depth_neg" 127 } + gene_mouth_corner_height={ "mouth_corner_height_pos" 255 "mouth_corner_height_pos" 89 } + gene_mouth_forward={ "mouth_forward_neg" 120 "mouth_forward_neg" 0 } + gene_mouth_height={ "mouth_height_neg" 142 "mouth_height_neg" 59 } + gene_mouth_width={ "mouth_width_pos" 211 "mouth_width_pos" 232 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 111 "mouth_upper_lip_size_neg" 135 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 255 "mouth_lower_lip_size_neg" 205 } + gene_mouth_open={ "mouth_open_neg" 255 "mouth_open_neg" 70 } + gene_neck_length={ "neck_length_pos" 104 "neck_length_pos" 146 } + gene_neck_width={ "neck_width_pos" 179 "neck_width_pos" 128 } + gene_bs_cheek_forward={ "cheek_forward_pos" 125 "cheek_forward_neg" 22 } + gene_bs_cheek_height={ "cheek_height_pos" 255 "cheek_height_neg" 28 } + gene_bs_cheek_width={ "cheek_width_pos" 235 "cheek_width_pos" 171 } + gene_bs_ear_angle={ "ear_angle_pos" 209 "ear_angle_pos" 199 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 0 "ear_inner_shape_pos" 45 } + gene_bs_ear_bend={ "ear_upper_bend_pos" 198 "ear_upper_bend_pos" 12 } + gene_bs_ear_outward={ "ear_outward_pos" 25 "ear_outward_pos" 74 } + gene_bs_ear_size={ "ear_size_pos" 115 "ear_size_pos" 130 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 179 "eye_corner_depth_pos" 108 } + gene_bs_eye_fold_shape={ "eye_fold_shape_pos" 255 "eye_fold_shape_pos" 88 } + gene_bs_eye_size={ "eye_size_pos" 255 "eye_size_neg" 90 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_pos" 4 "eye_upper_lid_size_pos" 4 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_pos" 255 "forehead_brow_curve_pos" 21 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 153 "forehead_brow_forward_pos" 251 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_neg" 115 "forehead_brow_inner_height_neg" 153 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 95 "forehead_brow_outer_height_pos" 95 } + gene_bs_forehead_brow_width={ "forehead_brow_width_pos" 240 "forehead_brow_width_pos" 240 } + gene_bs_jaw_def={ "jaw_def_pos" 191 "jaw_def_pos" 191 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 255 "mouth_lower_lip_def_pos" 150 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 173 "mouth_lower_lip_full_pos" 33 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_pos" 173 "mouth_lower_lip_pad_pos" 147 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_pos" 165 "mouth_lower_lip_width_pos" 52 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 44 "mouth_philtrum_def_pos" 18 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_neg" 255 "mouth_philtrum_shape_pos" 138 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_pos" 255 "mouth_philtrum_width_neg" 64 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 45 "mouth_upper_lip_def_pos" 14 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_neg" 131 "mouth_upper_lip_full_neg" 156 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_pos" 178 "mouth_upper_lip_profile_pos" 178 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_pos" 201 "mouth_upper_lip_width_pos" 134 } + gene_bs_nose_forward={ "nose_forward_pos" 15 "nose_forward_pos" 186 } + gene_bs_nose_height={ "nose_height_pos" 255 "nose_height_pos" 248 } + gene_bs_nose_length={ "nose_length_neg" 102 "nose_length_neg" 102 } + gene_bs_nose_nostril_height={ "nose_nostril_height_pos" 255 "nose_nostril_height_pos" 247 } + gene_bs_nose_nostril_width={ "nose_nostril_width_neg" 73 "nose_nostril_width_neg" 208 } + gene_bs_nose_profile={ "nose_profile_hawk_pos" 105 "nose_profile_hawk_pos" 105 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_pos" 0 "nose_ridge_angle_pos" 0 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 247 "nose_ridge_width_pos" 163 } + gene_bs_nose_size={ "nose_size_pos" 209 "nose_size_pos" 204 } + gene_bs_nose_tip_angle={ "nose_tip_angle_pos" 221 "nose_tip_angle_pos" 159 } + gene_bs_nose_tip_forward={ "nose_tip_forward_neg" 173 "nose_tip_forward_neg" 177 } + gene_bs_nose_tip_width={ "nose_tip_width_neg" 3 "nose_tip_width_neg" 209 } + face_detail_cheek_def={ "cheek_def_01" 228 "cheek_def_01" 228 } + face_detail_cheek_fat={ "cheek_fat_03_pos" 178 "cheek_fat_02_pos" 146 } + face_detail_chin_cleft={ "chin_cleft" 178 "chin_cleft" 211 } + face_detail_chin_def={ "chin_def" 0 "chin_def" 210 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 196 "eye_lower_lid_def" 146 } + face_detail_eye_socket={ "eye_socket_02" 173 "eye_socket_03" 207 } + face_detail_nasolabial={ "nasolabial_01" 231 "nasolabial_01" 231 } + face_detail_nose_ridge_def={ "nose_ridge_def_neg" 106 "nose_ridge_def_neg" 106 } + face_detail_nose_tip_def={ "nose_tip_def" 0 "nose_tip_def" 207 } + face_detail_temple_def={ "temple_def" 133 "temple_def" 133 } + expression_brow_wrinkles={ "brow_wrinkles_03" 156 "brow_wrinkles_03" 156 } + expression_eye_wrinkles={ "eye_wrinkles_02" 211 "eye_wrinkles_02" 211 } + expression_forehead_wrinkles={ "forehead_wrinkles_02" 150 "forehead_wrinkles_02" 150 } + expression_other={ "cheek_wrinkles_both_01" 132 "cheek_wrinkles_both_01" 132 } + complexion={ "complexion_6" 175 "complexion_7" 175 } + gene_height={ "normal_height" 149 "normal_height" 149 } + gene_bs_body_type={ "body_fat_head_fat_low" 176 "body_fat_head_fat_low" 176 } + gene_bs_body_shape={ "body_shape_triangle_half" 255 "body_shape_triangle_half" 216 } + gene_bs_bust={ "bust_clothes" 36 "bust_default" 58 } + gene_age={ "old_3" 196 "old_3" 196 } + gene_eyebrows_shape={ "no_eyebrows" 26 "no_eyebrows" 26 } + gene_eyebrows_fullness={ "no_eyebrows" 82 "no_eyebrows" 82 } + gene_body_hair={ "body_hair_sparse" 8 "body_hair_sparse" 8 } + gene_hair_type={ "hair_wavy" 150 "hair_wavy" 150 } + gene_baldness={ "male_pattern_baldness" 186 "male_pattern_baldness" 109 } + eye_accessory={ "normal_eyes" 228 "normal_eyes" 228 } + eye_left_accessory={ "normal_eyes" 154 "normal_eyes" 154 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 246 "normal_eyelashes" 246 } + gene_body_markings={ "no_body_markings" 255 "no_body_markings" 255 } + gene_facial_markings={ "no_markings" 218 "orc_eyeliner" 218 } + gene_facial_markings_2={ "no_markings" 127 "no_markings" 127 } + special_eyebrows={ "no_eyebrows" 76 "no_eyebrows" 76 } + claws={ "no_claws" 0 "no_claws" 0 } + hooves={ "no_hoves" 0 "no_hoves" 0 } + horns={ "no_horns" 0 "no_horns" 0 } + legs={ "no_legs" 0 "no_legs" 0 } + gene_race={ "creature_orc" 226 "creature_orc" 226 } + gene_being={ "no_being" 127 "no_being" 127 } + gene_skin_value={ "skin_value_pos" 15 "skin_value_neg" 0 } + gene_bs_ear_lenght={ "erect_ear_lenght" 33 "erect_ear_lenght" 40 } + gene_bs_ear_tip={ "ear_tip_pos" 179 "ear_tip_pos" 0 } + gene_bs_mouth_tusks={ "mouth_fangs" 255 "mouth_fangs" 255 } + gene_bs_fingers={ "fingers_troll" 0 "fingers_troll" 0 } + gene_grade={ "plantigrade" 0 "plantigrade" 0 } + gene_mustaches={ "mustaches" 255 "mustaches" 255 } + gene_hair_aging={ "normal_hair_aging" 127 "normal_hair_aging" 127 } + gene_sexual_dimorphism={ "no_dimorphism" 127 "no_dimorphism" 127 } + leg_skin={ "no_leg_skin" 127 "no_leg_skin" 127 } + special_eyes={ "glowing_iris" 140 "no_special_eyes" 127 } + static_eyes={ "no_static_eyes" 0 "no_static_eyes" 0 } + static_hairstyles={ "no_static_hairstyles" 0 "no_static_hairstyles" 0 } + static_hairstyles2={ "no_static_hairstyles2" 0 "no_static_hairstyles2" 0 } + static_model={ "no_static_model" 0 "no_static_model" 0 } + static_mustaches={ "no_static_mustaches" 0 "no_static_mustaches" 0 } + static_beards={ "no_static_beards" 0 "no_static_beards" 0 } + tusks={ "orcish_tusks" 27 "orcish_tusks" 27 } + tail={ "no_tail" 0 "no_tail" 0 } + tendrils={ "no_tendrils" 0 "no_tendrils" 0 } + wings={ "no_wings" 0 "no_wings" 0 } + hairstyles={ "indian_hairstyles_straight" 255 "all_hairstyles" 0 } + beards={ "no_beard" 255 "no_beard" 0 } + } + } + enabled=yes +} + +shrok_dna={ #by Grekopithikos + portrait_info = { + genes={ + hair_color={ 37 255 37 255 } + skin_color={ 84 152 80 155 } + eye_color={ 30 209 26 220 } + gene_chin_forward={ "chin_forward_neg" 127 "chin_forward_neg" 113 } + gene_chin_height={ "chin_height_neg" 156 "chin_height_neg" 152 } + gene_chin_width={ "chin_width_neg" 255 "chin_width_neg" 215 } + gene_eye_angle={ "eye_angle_neg" 122 "eye_angle_neg" 101 } + gene_eye_depth={ "eye_depth_neg" 116 "eye_depth_neg" 142 } + gene_eye_height={ "eye_height_neg" 114 "eye_height_neg" 99 } + gene_eye_distance={ "eye_distance_neg" 131 "eye_distance_neg" 158 } + gene_eye_shut={ "eye_shut_neg" 130 "eye_shut_neg" 152 } + gene_forehead_angle={ "forehead_angle_pos" 167 "forehead_angle_pos" 26 } + gene_forehead_brow_height={ "forehead_brow_height_pos" 134 "forehead_brow_height_pos" 79 } + gene_forehead_roundness={ "forehead_roundness_pos" 164 "forehead_roundness_pos" 192 } + gene_forehead_width={ "forehead_width_pos" 207 "forehead_width_pos" 136 } + gene_forehead_height={ "forehead_height_pos" 123 "forehead_height_pos" 105 } + gene_head_height={ "head_height_pos" 173 "head_height_pos" 145 } + gene_head_width={ "head_width_pos" 255 "head_width_pos" 152 } + gene_head_profile={ "head_profile_neg" 180 "head_profile_neg" 131 } + gene_head_top_height={ "head_top_height_neg" 17 "head_top_height_neg" 42 } + gene_head_top_width={ "head_top_width_neg" 63 "head_top_width_neg" 92 } + gene_jaw_angle={ "jaw_angle_pos" 98 "jaw_angle_pos" 137 } + gene_jaw_forward={ "jaw_forward_neg" 98 "jaw_forward_neg" 247 } + gene_jaw_height={ "jaw_height_neg" 220 "jaw_height_neg" 201 } + gene_jaw_width={ "jaw_width_pos" 151 "jaw_width_pos" 203 } + gene_mouth_corner_depth={ "mouth_corner_depth_neg" 245 "mouth_corner_depth_neg" 127 } + gene_mouth_corner_height={ "mouth_corner_height_pos" 255 "mouth_corner_height_pos" 133 } + gene_mouth_forward={ "mouth_forward_neg" 143 "mouth_forward_neg" 0 } + gene_mouth_height={ "mouth_height_neg" 46 "mouth_height_neg" 27 } + gene_mouth_width={ "mouth_width_pos" 255 "mouth_width_pos" 216 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 149 "mouth_upper_lip_size_neg" 136 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 218 "mouth_lower_lip_size_neg" 222 } + gene_mouth_open={ "mouth_open_neg" 115 "mouth_open_neg" 6 } + gene_neck_length={ "neck_length_pos" 77 "neck_length_pos" 152 } + gene_neck_width={ "neck_width_pos" 255 "neck_width_pos" 132 } + gene_bs_cheek_forward={ "cheek_forward_pos" 27 "cheek_forward_neg" 12 } + gene_bs_cheek_height={ "cheek_height_pos" 45 "cheek_height_pos" 105 } + gene_bs_cheek_width={ "cheek_width_pos" 75 "cheek_width_pos" 166 } + gene_bs_ear_angle={ "ear_angle_pos" 49 "ear_angle_pos" 176 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 174 "ear_inner_shape_pos" 45 } + gene_bs_ear_bend={ "ear_lower_bend_pos" 133 "ear_upper_bend_pos" 12 } + gene_bs_ear_outward={ "ear_outward_pos" 67 "ear_outward_pos" 4 } + gene_bs_ear_size={ "ear_size_neg" 159 "ear_size_neg" 149 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 21 "eye_corner_depth_neg" 212 } + gene_bs_eye_fold_shape={ "eye_fold_shape_pos" 85 "eye_fold_shape_neg" 235 } + gene_bs_eye_size={ "eye_size_pos" 211 "eye_size_neg" 48 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_pos" 79 "eye_upper_lid_size_pos" 113 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_neg" 125 "forehead_brow_curve_pos" 106 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 231 "forehead_brow_forward_pos" 238 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_pos" 81 "forehead_brow_inner_height_pos" 144 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 159 "forehead_brow_outer_height_pos" 127 } + gene_bs_forehead_brow_width={ "forehead_brow_width_pos" 255 "forehead_brow_width_pos" 158 } + gene_bs_jaw_def={ "jaw_def_neg" 135 "jaw_def_pos" 29 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 222 "mouth_lower_lip_def_pos" 145 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_neg" 219 "mouth_lower_lip_full_pos" 15 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_pos" 171 "mouth_lower_lip_pad_neg" 150 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_pos" 173 "mouth_lower_lip_width_pos" 15 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 109 "mouth_philtrum_def_pos" 1 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_neg" 67 "mouth_philtrum_shape_pos" 154 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_pos" 245 "mouth_philtrum_width_neg" 40 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 120 "mouth_upper_lip_def_pos" 98 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_neg" 167 "mouth_upper_lip_full_neg" 176 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_neg" 127 "mouth_upper_lip_profile_pos" 170 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_pos" 225 "mouth_upper_lip_width_pos" 230 } + gene_bs_nose_forward={ "nose_forward_pos" 23 "nose_forward_pos" 204 } + gene_bs_nose_height={ "nose_height_pos" 79 "nose_height_pos" 238 } + gene_bs_nose_length={ "nose_length_pos" 99 "nose_length_neg" 97 } + gene_bs_nose_nostril_height={ "nose_nostril_height_pos" 55 "nose_nostril_height_pos" 219 } + gene_bs_nose_nostril_width={ "nose_nostril_width_pos" 255 "nose_nostril_width_neg" 172 } + gene_bs_nose_profile={ "nose_profile_neg" 185 "nose_profile_hawk_pos" 56 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_neg" 73 "nose_ridge_angle_pos" 25 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 255 "nose_ridge_width_pos" 194 } + gene_bs_nose_size={ "nose_size_pos" 255 "nose_size_pos" 168 } + gene_bs_nose_tip_angle={ "nose_tip_angle_pos" 7 "nose_tip_angle_pos" 171 } + gene_bs_nose_tip_forward={ "nose_tip_forward_neg" 179 "nose_tip_forward_neg" 132 } + gene_bs_nose_tip_width={ "nose_tip_width_pos" 255 "nose_tip_width_neg" 13 } + face_detail_cheek_def={ "cheek_def_01" 86 "cheek_def_02" 235 } + face_detail_cheek_fat={ "cheek_fat_02_pos" 146 "cheek_fat_01_pos" 114 } + face_detail_chin_cleft={ "chin_cleft" 134 "chin_cleft" 112 } + face_detail_chin_def={ "chin_def_neg" 255 "chin_def" 192 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 224 "eye_lower_lid_def" 132 } + face_detail_eye_socket={ "eye_socket_01" 90 "eye_socket_01" 139 } + face_detail_nasolabial={ "nasolabial_01" 255 "nasolabial_02" 250 } + face_detail_nose_ridge_def={ "nose_ridge_def_neg" 190 "nose_ridge_def_neg" 190 } + face_detail_nose_tip_def={ "nose_tip_def" 42 "nose_tip_def" 72 } + face_detail_temple_def={ "temple_def" 14 "temple_def" 77 } + expression_brow_wrinkles={ "brow_wrinkles_02" 255 "brow_wrinkles_02" 255 } + expression_eye_wrinkles={ "eye_wrinkles_02" 14 "eye_wrinkles_02" 14 } + expression_forehead_wrinkles={ "forehead_wrinkles_02" 157 "forehead_wrinkles_02" 157 } + expression_other={ "cheek_wrinkles_both_01" 133 "cheek_wrinkles_both_01" 133 } + complexion={ "complexion_3" 145 "complexion_1" 5 } + gene_height={ "normal_height" 205 "normal_height" 198 } + gene_bs_body_type={ "body_fat_head_fat_medium" 237 "body_fat_head_fat_low" 237 } + gene_bs_body_shape={ "body_shape_apple_full" 255 "body_shape_apple_full" 216 } + gene_bs_bust={ "bust_clothes" 48 "bust_shape_2_half" 70 } + gene_age={ "old_1" 126 "old_1" 126 } + gene_eyebrows_shape={ "avg_spacing_low_thickness" 184 "no_eyebrows" 198 } + gene_eyebrows_fullness={ "layer_2_high_thickness" 189 "no_eyebrows" 148 } + gene_body_hair={ "body_hair_dense" 102 "body_hair_sparse" 54 } + gene_hair_type={ "hair_wavy" 172 "hair_wavy" 172 } + gene_baldness={ "male_pattern_baldness" 153 "male_pattern_baldness" 153 } + eye_accessory={ "normal_eyes" 81 "normal_eyes" 81 } + eye_left_accessory={ "normal_eyes" 178 "normal_eyes" 178 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 15 "normal_eyelashes" 15 } + gene_body_markings={ "no_body_markings" 255 "no_body_markings" 255 } + gene_facial_markings={ "no_markings" 151 "no_markings" 100 } + gene_facial_markings_2={ "no_markings" 127 "no_markings" 127 } + special_eyebrows={ "no_eyebrows" 80 "no_eyebrows" 80 } + claws={ "no_claws" 0 "no_claws" 0 } + hooves={ "no_hoves" 0 "no_hoves" 0 } + horns={ "no_horns" 0 "no_horns" 0 } + legs={ "no_legs" 0 "no_legs" 0 } + gene_race={ "creature_orc" 191 "creature_orc" 191 } + gene_being={ "no_being" 127 "no_being" 127 } + gene_skin_value={ "skin_value_pos" 67 "skin_value_neg" 0 } + gene_bs_ear_lenght={ "erect_ear_lenght" 24 "erect_ear_lenght" 38 } + gene_bs_ear_tip={ "ear_tip_pos" 0 "ear_tip_pos" 0 } + gene_bs_mouth_tusks={ "mouth_fangs" 255 "mouth_fangs" 255 } + gene_bs_fingers={ "fingers_troll" 0 "fingers_troll" 0 } + gene_grade={ "plantigrade" 0 "plantigrade" 0 } + gene_mustaches={ "mustaches" 255 "mustaches" 0 } + gene_hair_aging={ "normal_hair_aging" 127 "normal_hair_aging" 127 } + gene_sexual_dimorphism={ "no_dimorphism" 127 "no_dimorphism" 127 } + leg_skin={ "no_leg_skin" 127 "no_leg_skin" 127 } + special_eyes={ "no_special_eyes" 68 "no_special_eyes" 127 } + static_eyes={ "no_static_eyes" 0 "no_static_eyes" 0 } + static_hairstyles={ "no_static_hairstyles" 0 "no_static_hairstyles" 0 } + static_hairstyles2={ "no_static_hairstyles2" 0 "no_static_hairstyles2" 0 } + static_model={ "no_static_model" 0 "no_static_model" 0 } + static_mustaches={ "no_static_mustaches" 0 "no_static_mustaches" 0 } + static_beards={ "no_static_beards" 0 "no_static_beards" 0 } + tusks={ "orcish_tusks" 255 "orcish_tusks" 255 } + tail={ "no_tail" 0 "no_tail" 0 } + tendrils={ "no_tendrils" 0 "no_tendrils" 0 } + wings={ "no_wings" 0 "no_wings" 0 } + hairstyles={ "no_hairstyles" 0 "all_hairstyles" 0 } + beards={ "no_beard" 255 "no_beard" 0 } + } + } + enabled=yes } \ No newline at end of file diff --git a/common/dna_data/wc_orc_dna.txt b/common/dna_data/wc_orc_dna.txt index b1cda068f0..c4631e7fd9 100644 --- a/common/dna_data/wc_orc_dna.txt +++ b/common/dna_data/wc_orc_dna.txt @@ -2487,4 +2487,295 @@ garona_dna = { # by ercarp } } enabled=yes -} \ No newline at end of file +} + +#Mankrik +mankrik_dna={ #by Grekopithikos + portrait_info = { + genes={ + hair_color={ 27 237 41 237 } + skin_color={ 90 135 84 175 } + eye_color={ 27 160 60 89 } + gene_chin_forward={ "chin_forward_neg" 108 "chin_forward_neg" 108 } + gene_chin_height={ "chin_height_neg" 179 "chin_height_neg" 178 } + gene_chin_width={ "chin_width_neg" 245 "chin_width_neg" 213 } + gene_eye_angle={ "eye_angle_neg" 93 "eye_angle_neg" 126 } + gene_eye_depth={ "eye_depth_neg" 129 "eye_depth_neg" 142 } + gene_eye_height={ "eye_height_neg" 70 "eye_height_neg" 70 } + gene_eye_distance={ "eye_distance_neg" 129 "eye_distance_neg" 116 } + gene_eye_shut={ "eye_shut_neg" 160 "eye_shut_neg" 132 } + gene_forehead_angle={ "forehead_angle_pos" 131 "forehead_angle_pos" 60 } + gene_forehead_brow_height={ "forehead_brow_height_pos" 140 "forehead_brow_height_pos" 114 } + gene_forehead_roundness={ "forehead_roundness_pos" 131 "forehead_roundness_pos" 201 } + gene_forehead_width={ "forehead_width_pos" 81 "forehead_width_pos" 81 } + gene_forehead_height={ "forehead_height_pos" 84 "forehead_height_pos" 146 } + gene_head_height={ "head_height_pos" 161 "head_height_pos" 157 } + gene_head_width={ "head_width_pos" 201 "head_width_pos" 136 } + gene_head_profile={ "head_profile_neg" 155 "head_profile_neg" 148 } + gene_head_top_height={ "head_top_height_neg" 83 "head_top_height_neg" 60 } + gene_head_top_width={ "head_top_width_neg" 190 "head_top_width_neg" 38 } + gene_jaw_angle={ "jaw_angle_pos" 125 "jaw_angle_pos" 124 } + gene_jaw_forward={ "jaw_forward_neg" 234 "jaw_forward_neg" 234 } + gene_jaw_height={ "jaw_height_neg" 220 "jaw_height_neg" 222 } + gene_jaw_width={ "jaw_width_pos" 213 "jaw_width_pos" 208 } + gene_mouth_corner_depth={ "mouth_corner_depth_neg" 53 "mouth_corner_depth_neg" 127 } + gene_mouth_corner_height={ "mouth_corner_height_pos" 173 "mouth_corner_height_pos" 173 } + gene_mouth_forward={ "mouth_forward_neg" 0 "mouth_forward_neg" 0 } + gene_mouth_height={ "mouth_height_neg" 76 "mouth_height_neg" 76 } + gene_mouth_width={ "mouth_width_pos" 255 "mouth_width_pos" 220 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 225 "mouth_upper_lip_size_neg" 127 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 255 "mouth_lower_lip_size_neg" 220 } + gene_mouth_open={ "mouth_open_neg" 13 "mouth_open_neg" 25 } + gene_neck_length={ "neck_length_pos" 67 "neck_length_pos" 148 } + gene_neck_width={ "neck_width_pos" 180 "neck_width_pos" 138 } + gene_bs_cheek_forward={ "cheek_forward_pos" 95 "cheek_forward_neg" 20 } + gene_bs_cheek_height={ "cheek_height_pos" 163 "cheek_height_neg" 35 } + gene_bs_cheek_width={ "cheek_width_pos" 127 "cheek_width_pos" 127 } + gene_bs_ear_angle={ "ear_angle_pos" 71 "ear_angle_pos" 218 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 0 "ear_inner_shape_pos" 45 } + gene_bs_ear_bend={ "ear_lower_bend_pos" 27 "ear_upper_bend_pos" 12 } + gene_bs_ear_outward={ "ear_outward_pos" 95 "ear_outward_pos" 26 } + gene_bs_ear_size={ "ear_size_pos" 197 "ear_size_pos" 140 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 135 "eye_corner_depth_pos" 192 } + gene_bs_eye_fold_shape={ "eye_fold_shape_pos" 71 "eye_fold_shape_pos" 29 } + gene_bs_eye_size={ "eye_size_pos" 63 "eye_size_neg" 188 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_pos" 67 "eye_upper_lid_size_pos" 106 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_neg" 97 "forehead_brow_curve_neg" 194 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 255 "forehead_brow_forward_pos" 191 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_neg" 17 "forehead_brow_inner_height_neg" 43 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_neg" 63 "forehead_brow_outer_height_pos" 89 } + gene_bs_forehead_brow_width={ "forehead_brow_width_pos" 179 "forehead_brow_width_pos" 22 } + gene_bs_jaw_def={ "jaw_def_pos" 159 "jaw_def_pos" 159 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 0 "mouth_lower_lip_def_pos" 64 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 195 "mouth_lower_lip_full_pos" 194 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_pos" 111 "mouth_lower_lip_pad_neg" 35 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_pos" 51 "mouth_lower_lip_width_pos" 96 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 31 "mouth_philtrum_def_pos" 31 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_pos" 10 "mouth_philtrum_shape_pos" 10 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_neg" 29 "mouth_philtrum_width_neg" 99 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 9 "mouth_upper_lip_def_pos" 9 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_neg" 176 "mouth_upper_lip_full_neg" 176 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_pos" 225 "mouth_upper_lip_profile_pos" 225 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_pos" 37 "mouth_upper_lip_width_pos" 157 } + gene_bs_nose_forward={ "nose_forward_neg" 31 "nose_forward_pos" 119 } + gene_bs_nose_height={ "nose_height_pos" 173 "nose_height_pos" 215 } + gene_bs_nose_length={ "nose_length_neg" 57 "nose_length_neg" 87 } + gene_bs_nose_nostril_height={ "nose_nostril_height_pos" 252 "nose_nostril_height_pos" 252 } + gene_bs_nose_nostril_width={ "nose_nostril_width_neg" 21 "nose_nostril_width_neg" 205 } + gene_bs_nose_profile={ "nose_profile_hawk_pos" 117 "nose_profile_hawk_pos" 113 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_neg" 113 "nose_ridge_angle_pos" 229 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 255 "nose_ridge_width_neg" 50 } + gene_bs_nose_size={ "nose_size_pos" 199 "nose_size_pos" 199 } + gene_bs_nose_tip_angle={ "nose_tip_angle_pos" 213 "nose_tip_angle_pos" 230 } + gene_bs_nose_tip_forward={ "nose_tip_forward_neg" 141 "nose_tip_forward_neg" 201 } + gene_bs_nose_tip_width={ "nose_tip_width_neg" 125 "nose_tip_width_neg" 191 } + face_detail_cheek_def={ "cheek_def_01" 228 "cheek_def_01" 228 } + face_detail_cheek_fat={ "cheek_fat_03_pos" 135 "cheek_fat_04_pos" 135 } + face_detail_chin_cleft={ "chin_cleft" 160 "chin_cleft" 248 } + face_detail_chin_def={ "chin_def" 182 "chin_def" 182 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 255 "eye_lower_lid_def" 180 } + face_detail_eye_socket={ "eye_socket_03" 181 "eye_socket_02" 236 } + face_detail_nasolabial={ "nasolabial_04" 153 "nasolabial_01" 135 } + face_detail_nose_ridge_def={ "nose_ridge_def_pos" 157 "nose_ridge_def_pos" 47 } + face_detail_nose_tip_def={ "nose_tip_def" 210 "nose_tip_def" 178 } + face_detail_temple_def={ "temple_def" 158 "temple_def" 145 } + expression_brow_wrinkles={ "brow_wrinkles_04" 254 "brow_wrinkles_04" 254 } + expression_eye_wrinkles={ "eye_wrinkles_02" 118 "eye_wrinkles_02" 118 } + expression_forehead_wrinkles={ "forehead_wrinkles_01" 224 "forehead_wrinkles_01" 224 } + expression_other={ "cheek_wrinkles_both_01" 198 "cheek_wrinkles_both_01" 198 } + complexion={ "complexion_1" 0 "complexion_1" 31 } + gene_height={ "normal_height" 143 "normal_height" 143 } + gene_bs_body_type={ "body_fat_head_fat_low" 167 "body_fat_head_fat_low" 167 } + gene_bs_body_shape={ "body_shape_triangle_half" 255 "body_shape_triangle_half" 187 } + gene_bs_bust={ "bust_clothes" 96 "bust_shape_1_full" 150 } + gene_age={ "old_1" 224 "old_1" 224 } + gene_eyebrows_shape={ "no_eyebrows" 198 "avg_spacing_avg_thickness" 186 } + gene_eyebrows_fullness={ "no_eyebrows" 129 "no_eyebrows" 135 } + gene_body_hair={ "body_hair_sparse" 73 "body_hair_sparse" 73 } + gene_hair_type={ "hair_straight" 98 "hair_straight" 98 } + gene_baldness={ "male_pattern_baldness" 126 "male_pattern_baldness" 131 } + eye_accessory={ "normal_eyes" 249 "normal_eyes" 249 } + eye_left_accessory={ "normal_eyes" 175 "normal_eyes" 175 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 185 "normal_eyelashes" 185 } + gene_body_markings={ "no_body_markings" 255 "no_body_markings" 255 } + gene_facial_markings={ "no_markings" 104 "no_markings" 104 } + gene_facial_markings_2={ "no_markings" 127 "no_markings" 127 } + special_eyebrows={ "no_eyebrows" 18 "no_eyebrows" 18 } + claws={ "no_claws" 0 "no_claws" 0 } + hooves={ "no_hoves" 0 "no_hoves" 0 } + horns={ "no_horns" 0 "no_horns" 0 } + legs={ "no_legs" 0 "no_legs" 0 } + gene_race={ "creature_orc" 65 "creature_orc" 65 } + gene_being={ "no_being" 127 "no_being" 127 } + gene_skin_value={ "skin_value_pos" 0 "skin_value_neg" 0 } + gene_bs_ear_lenght={ "erect_ear_lenght" 42 "erect_ear_lenght" 42 } + gene_bs_ear_tip={ "ear_tip_pos" 255 "ear_tip_pos" 0 } + gene_bs_mouth_tusks={ "mouth_fangs" 255 "mouth_fangs" 255 } + gene_bs_fingers={ "fingers_troll" 0 "fingers_troll" 0 } + gene_grade={ "plantigrade" 0 "plantigrade" 0 } + gene_mustaches={ "mustaches" 255 "mustaches" 255 } + gene_hair_aging={ "normal_hair_aging" 127 "normal_hair_aging" 127 } + gene_sexual_dimorphism={ "no_dimorphism" 127 "no_dimorphism" 127 } + leg_skin={ "no_leg_skin" 127 "no_leg_skin" 127 } + special_eyes={ "glowing_iris" 8 "no_special_eyes" 127 } + static_eyes={ "no_static_eyes" 0 "no_static_eyes" 0 } + static_hairstyles={ "no_static_hairstyles" 0 "no_static_hairstyles" 0 } + static_hairstyles2={ "no_static_hairstyles2" 0 "no_static_hairstyles2" 0 } + static_model={ "no_static_model" 0 "no_static_model" 0 } + static_mustaches={ "no_static_mustaches" 0 "no_static_mustaches" 0 } + static_beards={ "no_static_beards" 0 "no_static_beards" 0 } + tusks={ "orcish_tusks" 26 "orcish_tusks" 26 } + tail={ "no_tail" 0 "no_tail" 0 } + tendrils={ "no_tendrils" 0 "no_tendrils" 0 } + wings={ "no_wings" 0 "no_wings" 0 } + } + } + enabled=yes +} + +nazgrim_dna={ #by Grekopithikos + portrait_info = { + genes={ + hair_color={ 39 255 39 255 } + skin_color={ 122 123 87 151 } + eye_color={ 65 172 43 226 } + gene_chin_forward={ "chin_forward_neg" 123 "chin_forward_neg" 127 } + gene_chin_height={ "chin_height_neg" 147 "chin_height_neg" 166 } + gene_chin_width={ "chin_width_neg" 242 "chin_width_neg" 234 } + gene_eye_angle={ "eye_angle_neg" 153 "eye_angle_neg" 153 } + gene_eye_depth={ "eye_depth_neg" 118 "eye_depth_neg" 142 } + gene_eye_height={ "eye_height_neg" 74 "eye_height_neg" 74 } + gene_eye_distance={ "eye_distance_neg" 135 "eye_distance_neg" 135 } + gene_eye_shut={ "eye_shut_neg" 173 "eye_shut_neg" 173 } + gene_forehead_angle={ "forehead_angle_pos" 89 "forehead_angle_pos" 28 } + gene_forehead_brow_height={ "forehead_brow_height_pos" 144 "forehead_brow_height_pos" 79 } + gene_forehead_roundness={ "forehead_roundness_pos" 112 "forehead_roundness_pos" 153 } + gene_forehead_width={ "forehead_width_pos" 185 "forehead_width_pos" 127 } + gene_forehead_height={ "forehead_height_pos" 200 "forehead_height_pos" 155 } + gene_head_height={ "head_height_pos" 123 "head_height_pos" 147 } + gene_head_width={ "head_width_pos" 173 "head_width_pos" 173 } + gene_head_profile={ "head_profile_neg" 139 "head_profile_neg" 158 } + gene_head_top_height={ "head_top_height_neg" 102 "head_top_height_neg" 70 } + gene_head_top_width={ "head_top_width_neg" 156 "head_top_width_neg" 88 } + gene_jaw_angle={ "jaw_angle_pos" 148 "jaw_angle_pos" 154 } + gene_jaw_forward={ "jaw_forward_neg" 252 "jaw_forward_neg" 234 } + gene_jaw_height={ "jaw_height_neg" 201 "jaw_height_neg" 254 } + gene_jaw_width={ "jaw_width_pos" 187 "jaw_width_pos" 234 } + gene_mouth_corner_depth={ "mouth_corner_depth_neg" 183 "mouth_corner_depth_neg" 127 } + gene_mouth_corner_height={ "mouth_corner_height_pos" 92 "mouth_corner_height_pos" 106 } + gene_mouth_forward={ "mouth_forward_neg" 0 "mouth_forward_neg" 0 } + gene_mouth_height={ "mouth_height_neg" 51 "mouth_height_neg" 17 } + gene_mouth_width={ "mouth_width_pos" 249 "mouth_width_pos" 249 } + gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 119 "mouth_upper_lip_size_neg" 139 } + gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 228 "mouth_lower_lip_size_neg" 228 } + gene_mouth_open={ "mouth_open_neg" 91 "mouth_open_neg" 63 } + gene_neck_length={ "neck_length_pos" 133 "neck_length_pos" 147 } + gene_neck_width={ "neck_width_pos" 174 "neck_width_pos" 138 } + gene_bs_cheek_forward={ "cheek_forward_pos" 35 "cheek_forward_neg" 21 } + gene_bs_cheek_height={ "cheek_height_pos" 107 "cheek_height_pos" 61 } + gene_bs_cheek_width={ "cheek_width_pos" 131 "cheek_width_pos" 160 } + gene_bs_ear_angle={ "ear_angle_neg" 73 "ear_angle_pos" 84 } + gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 0 "ear_inner_shape_pos" 45 } + gene_bs_ear_bend={ "ear_upper_bend_pos" 55 "ear_upper_bend_pos" 12 } + gene_bs_ear_outward={ "ear_outward_pos" 135 "ear_outward_pos" 33 } + gene_bs_ear_size={ "ear_size_pos" 255 "ear_size_pos" 242 } + gene_bs_eye_corner_depth={ "eye_corner_depth_neg" 73 "eye_corner_depth_neg" 6 } + gene_bs_eye_fold_shape={ "eye_fold_shape_pos" 207 "eye_fold_shape_pos" 178 } + gene_bs_eye_size={ "eye_size_pos" 203 "eye_size_neg" 136 } + gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_pos" 71 "eye_upper_lid_size_pos" 71 } + gene_bs_forehead_brow_curve={ "forehead_brow_curve_neg" 77 "forehead_brow_curve_neg" 187 } + gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 217 "forehead_brow_forward_pos" 187 } + gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_neg" 233 "forehead_brow_inner_height_neg" 233 } + gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 151 "forehead_brow_outer_height_pos" 73 } + gene_bs_forehead_brow_width={ "forehead_brow_width_pos" 208 "forehead_brow_width_pos" 208 } + gene_bs_jaw_def={ "jaw_def_pos" 198 "jaw_def_pos" 198 } + gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 242 "mouth_lower_lip_def_pos" 242 } + gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 229 "mouth_lower_lip_full_pos" 229 } + gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_neg" 235 "mouth_lower_lip_pad_neg" 235 } + gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_pos" 89 "mouth_lower_lip_width_pos" 73 } + gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 14 "mouth_philtrum_def_pos" 14 } + gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_pos" 38 "mouth_philtrum_shape_pos" 38 } + gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_neg" 242 "mouth_philtrum_width_neg" 242 } + gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 255 "mouth_upper_lip_def_pos" 255 } + gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_neg" 182 "mouth_upper_lip_full_neg" 182 } + gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_neg" 255 "mouth_upper_lip_profile_pos" 13 } + gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_pos" 204 "mouth_upper_lip_width_pos" 204 } + gene_bs_nose_forward={ "nose_forward_pos" 87 "nose_forward_pos" 52 } + gene_bs_nose_height={ "nose_height_pos" 237 "nose_height_pos" 183 } + gene_bs_nose_length={ "nose_length_neg" 91 "nose_length_neg" 91 } + gene_bs_nose_nostril_height={ "nose_nostril_height_pos" 157 "nose_nostril_height_pos" 164 } + gene_bs_nose_nostril_width={ "nose_nostril_width_neg" 121 "nose_nostril_width_neg" 175 } + gene_bs_nose_profile={ "nose_profile_pos" 61 "nose_profile_pos" 61 } + gene_bs_nose_ridge_angle={ "nose_ridge_angle_pos" 107 "nose_ridge_angle_pos" 64 } + gene_bs_nose_ridge_width={ "nose_ridge_width_pos" 103 "nose_ridge_width_pos" 204 } + gene_bs_nose_size={ "nose_size_pos" 255 "nose_size_pos" 231 } + gene_bs_nose_tip_angle={ "nose_tip_angle_pos" 109 "nose_tip_angle_pos" 128 } + gene_bs_nose_tip_forward={ "nose_tip_forward_neg" 235 "nose_tip_forward_neg" 232 } + gene_bs_nose_tip_width={ "nose_tip_width_neg" 127 "nose_tip_width_neg" 55 } + face_detail_cheek_def={ "cheek_def_01" 227 "cheek_def_02" 208 } + face_detail_cheek_fat={ "cheek_fat_02_pos" 111 "cheek_fat_01_pos" 2 } + face_detail_chin_cleft={ "chin_cleft" 229 "chin_cleft" 11 } + face_detail_chin_def={ "chin_def_neg" 202 "chin_def" 18 } + face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 157 "eye_lower_lid_def" 157 } + face_detail_eye_socket={ "eye_socket_03" 158 "eye_socket_03" 206 } + face_detail_nasolabial={ "nasolabial_01" 196 "nasolabial_02" 196 } + face_detail_nose_ridge_def={ "nose_ridge_def_pos" 120 "nose_ridge_def_neg" 120 } + face_detail_nose_tip_def={ "nose_tip_def" 204 "nose_tip_def" 86 } + face_detail_temple_def={ "temple_def" 56 "temple_def" 129 } + expression_brow_wrinkles={ "brow_wrinkles_03" 181 "brow_wrinkles_03" 181 } + expression_eye_wrinkles={ "eye_wrinkles_03" 229 "eye_wrinkles_03" 229 } + expression_forehead_wrinkles={ "forehead_wrinkles_02" 149 "forehead_wrinkles_02" 149 } + expression_other={ "cheek_wrinkles_both_01" 202 "cheek_wrinkles_both_01" 202 } + complexion={ "complexion_1" 247 "complexion_6" 247 } + gene_height={ "normal_height" 140 "normal_height" 140 } + gene_bs_body_type={ "body_fat_head_fat_full" 156 "body_fat_head_fat_low" 156 } + gene_bs_body_shape={ "body_shape_triangle_half" 255 "body_shape_triangle_half" 224 } + gene_bs_bust={ "bust_clothes" 39 "bust_default" 78 } + gene_age={ "old_2" 227 "old_2" 227 } + gene_eyebrows_shape={ "no_eyebrows" 228 "no_eyebrows" 228 } + gene_eyebrows_fullness={ "no_eyebrows" 188 "no_eyebrows" 188 } + gene_body_hair={ "body_hair_sparse" 24 "body_hair_sparse" 24 } + gene_hair_type={ "hair_wavy" 107 "hair_wavy" 107 } + gene_baldness={ "male_pattern_baldness" 179 "male_pattern_baldness" 179 } + eye_accessory={ "normal_eyes" 71 "normal_eyes" 71 } + eye_left_accessory={ "normal_eyes" 229 "normal_eyes" 229 } + teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 } + eyelashes_accessory={ "normal_eyelashes" 152 "normal_eyelashes" 152 } + gene_body_markings={ "no_body_markings" 255 "no_body_markings" 255 } + gene_facial_markings={ "no_markings" 162 "no_markings" 183 } + gene_facial_markings_2={ "no_markings" 127 "no_markings" 127 } + special_eyebrows={ "no_eyebrows" 1 "no_eyebrows" 1 } + claws={ "no_claws" 0 "no_claws" 0 } + hooves={ "no_hoves" 0 "no_hoves" 0 } + horns={ "no_horns" 0 "no_horns" 0 } + legs={ "no_legs" 0 "no_legs" 0 } + gene_race={ "creature_orc" 211 "creature_orc" 211 } + gene_being={ "no_being" 127 "no_being" 127 } + gene_skin_value={ "skin_value_pos" 3 "skin_value_neg" 0 } + gene_bs_ear_lenght={ "erect_ear_lenght" 52 "erect_ear_lenght" 31 } + gene_bs_ear_tip={ "ear_tip_pos" 39 "ear_tip_pos" 0 } + gene_bs_mouth_tusks={ "mouth_fangs" 255 "mouth_fangs" 255 } + gene_bs_fingers={ "fingers_troll" 0 "fingers_troll" 0 } + gene_grade={ "plantigrade" 0 "plantigrade" 0 } + gene_mustaches={ "mustaches" 255 "mustaches" 0 } + gene_hair_aging={ "normal_hair_aging" 127 "normal_hair_aging" 127 } + gene_sexual_dimorphism={ "no_dimorphism" 127 "no_dimorphism" 127 } + leg_skin={ "no_leg_skin" 127 "no_leg_skin" 127 } + special_eyes={ "no_special_eyes" 127 "no_special_eyes" 127 } + static_eyes={ "no_static_eyes" 0 "no_static_eyes" 0 } + static_hairstyles={ "no_static_hairstyles" 0 "no_static_hairstyles" 0 } + static_hairstyles2={ "no_static_hairstyles2" 0 "no_static_hairstyles2" 0 } + static_model={ "no_static_model" 0 "no_static_model" 0 } + static_mustaches={ "no_static_mustaches" 0 "no_static_mustaches" 0 } + static_beards={ "no_static_beards" 0 "no_static_beards" 0 } + tusks={ "orcish_tusks" 27 "orcish_tusks" 27 } + tail={ "no_tail" 0 "no_tail" 0 } + tendrils={ "no_tendrils" 0 "no_tendrils" 0 } + wings={ "no_wings" 0 "no_wings" 0 } + beards={ "northern_beards_straight" 90 "no_beard" 0 } + hairstyles={ "no_hairstyles" 0 "all_hairstyles" 0 } + } + } + enabled=yes +} diff --git a/common/dynasties/28000_goblin.txt b/common/dynasties/28000_goblin.txt index 5fe54f74ba..1f83f8e25f 100644 --- a/common/dynasties/28000_goblin.txt +++ b/common/dynasties/28000_goblin.txt @@ -143,3 +143,12 @@ noggenfogger = {name = "Noggenfogger" culture = goblin} ###Gilblin### 28900 = { name = "dynn_Peddlefin" culture = gilblin } +28901 = { name = "dynn_Mistyreed" culture = gilblin } # SoS Gilblins +28902 = { name = "dynn_Sharpfin" culture = gilblin } # Unshackled +28903 = { name = "dynn_Gurbfin" culture = gilblin } # Gurboggle +28904 = { name = "dynn_Bitterbrine" culture = gilblin } +28905 = { name = "dynn_Blackfin" culture = gilblin } +28906 = { name = "dynn_Brackfin" culture = gilblin } +28907 = { name = "dynn_Deepfin" culture = gilblin } +28908 = { name = "dynn_Muckskin" culture = gilblin } +28909 = { name = "dynn_Murkmouth" culture = gilblin } \ No newline at end of file diff --git a/common/ethnicities/wc_ethnicities_aquatic.txt b/common/ethnicities/wc_ethnicities_aquatic.txt index f85ea87de3..d9c95da209 100644 --- a/common/ethnicities/wc_ethnicities_aquatic.txt +++ b/common/ethnicities/wc_ethnicities_aquatic.txt @@ -5,27 +5,27 @@ gene_race = { 1 = { name = creature_sea_giant range = { 0 1 } } } skin_color = { - 1 = { 0.569 0.439 0.741 0.478 } # 1. Blue - 1 = { 0.349 0.333 0.522 0.431 } # Yellow-Green to Green - 1 = { 0.655 0.298 0.675 0.318 } # Greenish Gray - 1 = { 0.447 0.455 0.475 0.5 } # Blue-green + 25 = { 0.569 0.439 0.741 0.478 } # 1. Blue + 25 = { 0.349 0.333 0.522 0.431 } # Yellow-Green to Green + 25 = { 0.655 0.298 0.675 0.318 } # Greenish Gray + 25 = { 0.447 0.455 0.475 0.5 } # Blue-green } eye_color = { - 1 = { 0.714 0.098 0.714 0.631 } # Gray to Blue - 1 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow - 1 = { 0.314 0.788 0.314 0.820 } # Hazel + 40 = { 0.714 0.098 0.714 0.631 } # Gray to Blue + 30 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow + 30 = { 0.314 0.788 0.314 0.820 } # Hazel } hair_color = { - 1 = { 0.094 0.918 0.094 0.918 } # Brown - 1 = { 0.063 0.773 0.063 0.839 } # Orange/Ginger - 1 = { 0.004 0.443 0.067 0.541 } #Red/Orange - 1 = { 0.784 0.824 0.992 0.824 } # Dark Blue, Purple, Pink-ish - 2 = { 0.624 0.239 0.714 0.310 } # Blue/Green-ish - 2 = { 0.447 0.455 0.475 0.5 } # Blue-green - 1 = { 0.314 0.820 0.365 0.949 } # Dark Green - 1 = { 0.004 0.910 0.231 0.937 } # Red & Brown - 1 = { 0.584 0.455 0.584 0.5 } # Blue/Cyan - 1 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple + 30 = { 0.094 0.918 0.094 0.918 } # Brown + 10 = { 0.063 0.773 0.063 0.839 } # Orange/Ginger + 5 = { 0.004 0.443 0.067 0.541 } #Red/Orange + 5 = { 0.784 0.824 0.992 0.824 } # Dark Blue, Purple, Pink-ish + 5 = { 0.624 0.239 0.714 0.310 } # Blue/Green-ish + 15 = { 0.447 0.455 0.475 0.5 } # Blue-green + 10 = { 0.314 0.820 0.365 0.949 } # Dark Green + 5 = { 0.004 0.910 0.231 0.937 } # Red & Brown + 10 = { 0.584 0.455 0.584 0.5 } # Blue/Cyan + 5 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple } #Height diff --git a/common/ethnicities/wc_ethnicities_demonic.txt b/common/ethnicities/wc_ethnicities_demonic.txt index acf3059fac..4f95e4bfdb 100644 --- a/common/ethnicities/wc_ethnicities_demonic.txt +++ b/common/ethnicities/wc_ethnicities_demonic.txt @@ -8,31 +8,31 @@ nathrezim_ethnicity = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { #Tint 1 - 1 = { 0.718 0.318 0.718 0.318 } # Gray/Blue + 20 = { 0.718 0.318 0.718 0.318 } # Gray/Blue #Tint 2 - 1 = { 0.337 0.082 0.337 0.082 } # Light + 20 = { 0.337 0.082 0.337 0.082 } # Light #Tint 3 - 1 = { 0.655 0.298 0.675 0.318 } # Greenish Gray + 20 = { 0.655 0.298 0.675 0.318 } # Greenish Gray #Tint 4 - 1 = { 0.710 0.314 0.788 0.314 } # Blue to Purple + 20 = { 0.710 0.314 0.788 0.314 } # Blue to Purple #Tint 5 - 1 = { 0.773 0.196 0.784 0.231 } # Light Pink + 20 = { 0.773 0.196 0.784 0.231 } # Light Pink } eye_color = { #Tint 1 - 1 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple + 20 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple #Tint 2 - 1 = { 0.447 0.455 0.475 0.5 } # Blue-green + 20 = { 0.447 0.455 0.475 0.5 } # Blue-green #Tint 3 - 1 = { 0.318 0.455 0.318 0.5 } # Fel Green + 20 = { 0.318 0.455 0.318 0.5 } # Fel Green #Tint 4 - 1 = { 0 0.6 0 0.7 } # Red + 20 = { 0 0.6 0 0.7 } # Red #Tint 5 - 1 = { 0.584 0.455 0.584 0.5 } # Blue/Cyan + 20 = { 0.584 0.455 0.584 0.5 } # Blue/Cyan } gene_skin_value = { @@ -422,15 +422,15 @@ nathrezim_tint1 = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { #Tint 1 - 1 = { 0.718 0.318 0.718 0.318 } # Gray/Blue + 100 = { 0.718 0.318 0.718 0.318 } # Gray/Blue } eye_color = { #Tint 1 - 1 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple + 100 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple } gene_skin_value = { 1 = { name = skin_value_neg range = { 0.35 0.45 } } @@ -443,16 +443,16 @@ nathrezim_tint2 = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { #Tint 2 #1 = { 0.643 0.141 0.643 0.141 } # Light - 1 = { 0.337 0.082 0.337 0.082 } # Light + 100 = { 0.337 0.082 0.337 0.082 } # Light } eye_color = { #Tint 2 - 1 = { 0.447 0.455 0.475 0.5 } # Blue-green + 100 = { 0.447 0.455 0.475 0.5 } # Blue-green } gene_skin_value = { 1 = { name = skin_value_neg range = { 0 0.25 } } @@ -465,15 +465,15 @@ nathrezim_tint3 = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { #Tint 3 - 1 = { 0.655 0.298 0.675 0.318 } # Greenish Gray + 100 = { 0.655 0.298 0.675 0.318 } # Greenish Gray } eye_color = { #Tint 3 - 1 = { 0.318 0.455 0.318 0.5 } # Fel Green + 100 = { 0.318 0.455 0.318 0.5 } # Fel Green } } @@ -483,15 +483,15 @@ nathrezim_tint4 = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { #Tint 4 - 1 = { 0.710 0.314 0.788 0.314 } # Blue to Purple + 100 = { 0.710 0.314 0.788 0.314 } # Blue to Purple } eye_color = { #Tint 4 - 1 = { 0 0.6 0 0.7 } # Red + 100 = { 0 0.6 0 0.7 } # Red } gene_skin_value = { 1 = { name = skin_value_neg range = { 0 0.25 } } @@ -504,15 +504,15 @@ nathrezim_tint5 = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { #Tint 5 - 1 = { 0.773 0.196 0.784 0.231 } # Light Pink + 100 = { 0.773 0.196 0.784 0.231 } # Light Pink } eye_color = { #Tint 5 - 1 = { 0.584 0.455 0.584 0.5 } # Blue/Cyan + 100 = { 0.584 0.455 0.584 0.5 } # Blue/Cyan } } @@ -524,15 +524,15 @@ succubus_ethnicity = { # Colors hair_color = { - 1 = { 0.694 0.988 0.694 0.988 } # PH + 100 = { 0.694 0.988 0.694 0.988 } # PH } skin_color = { - 1 = { 0.588 0.239 0.588 0.239 } # PH (Blue) - 1 = { 0.902 0.298 0.965 0.329 } # PH (Purple/Pink) - 1 = { 0.002 0.298 0.059 0.3 } # PH (Red) + 40 = { 0.588 0.239 0.588 0.239 } # PH (Blue) + 30 = { 0.902 0.298 0.965 0.329 } # PH (Purple/Pink) + 30 = { 0.002 0.298 0.059 0.3 } # PH (Red) } eye_color = { - 1 = { 0.549 0.388 0.635 0.420 } + 100 = { 0.549 0.388 0.635 0.420 } } #Height @@ -919,10 +919,10 @@ succubus_red = { # Colors hair_color = { - 1 = { 0 0.965 0.043 1 } # Black with a tint of green/blue/purple + 100 = { 0 0.965 0.043 1 } # Black with a tint of green/blue/purple } skin_color = { - 1 = { 0.002 0.298 0.059 0.4 } # PH (Red) + 100 = { 0.002 0.298 0.059 0.4 } # PH (Red) } } @@ -933,10 +933,10 @@ succubus_blue = { # Colors hair_color = { - 1 = { 0.7 0.949 0.757 0.957 } # Black with a tint of green/blue/purple + 100 = { 0.7 0.949 0.757 0.957 } # Black with a tint of green/blue/purple } skin_color = { - 1 = { 0.624 0.239 0.714 0.310 } # Blue/Green-ish + 100 = { 0.624 0.239 0.714 0.310 } # Blue/Green-ish } } @@ -947,9 +947,9 @@ succubus_magenta = { # Colors hair_color = { - 1 = { 0.847 0.922 0.910 0.957 } # Black with a tint of green/blue/purple + 100 = { 0.847 0.922 0.910 0.957 } # Black with a tint of green/blue/purple } skin_color = { - 1 = { 0.812 0.259 0.910 0.310 } # Blue/Green-ish + 100 = { 0.812 0.259 0.910 0.310 } # Blue/Green-ish } } \ No newline at end of file diff --git a/common/ethnicities/wc_ethnicities_draenei.txt b/common/ethnicities/wc_ethnicities_draenei.txt index 23b5dfac3e..c63c174e5f 100644 --- a/common/ethnicities/wc_ethnicities_draenei.txt +++ b/common/ethnicities/wc_ethnicities_draenei.txt @@ -30,24 +30,24 @@ draenei_ethnicity = { #5 = { 0.914 0.814 0.961 0.859 } # Dark Red/Pink-ish #1 = { 0.024 0.914 0.024 0.914 } # Dark Brown/Red #1 = { 0.469 0.273 0.469 0.305 } # Pale Green - 1 = { 0 0.95 0.137 0.97 } # Dark Brown - 1 = { 0.114 0 0.114 0 } # Gray + 20 = { 0 0.95 0.137 0.97 } # Dark Brown + 20 = { 0.114 0 0.114 0 } # Gray #1 = { 0.102 0.063 0.227 0.165 } # Blonde - 1 = { 0.333 0.95 0.753 0.97 } # Dark Green/Blue - 1 = { 0.540 0.773 0.749 0.875 } # Light Green/Blue - 1 = { 0.902 0.85 0.953 0.97 } # Dark Violet + 20 = { 0.333 0.95 0.753 0.97 } # Dark Green/Blue + 20 = { 0.540 0.773 0.749 0.875 } # Light Green/Blue + 20 = { 0.902 0.85 0.953 0.97 } # Dark Violet } skin_color = { - 2 = { 0.609 0.25 0.623 0.4 } # Pale Green/Gray - 4 = { 0.8 0.35 0.845 0.425 } # Purple - 10 = { 0.7 0.4 0.75 0.45 } # Light Blue + 20 = { 0.609 0.25 0.623 0.4 } # Pale Green/Gray + 20 = { 0.8 0.35 0.845 0.425 } # Purple + 60 = { 0.7 0.4 0.75 0.45 } # Light Blue } gene_skin_value = { 1 = { name = skin_value_neg range = { 0 0.25 } } } eye_color = { - 1 = { 0.639 0.3 0.667 0.376 } # Blue + 100 = { 0.639 0.3 0.667 0.376 } # Blue } #Height @@ -362,17 +362,17 @@ manari_ethnicity = { gene_being = { 1 = { name = being_demon range = { 0 1 } } } hair_color = { - 25 = { 0 0.94 0.100 0.97 } # Dark Brown - 1 = { 0.114 0 0.114 0 } # Gray + 40 = { 0 0.94 0.100 0.97 } # Dark Brown + 15 = { 0.114 0 0.114 0 } # Gray 15 = { 0.659 0.95 0.753 0.97 } # Dark Blue 25 = { 0.902 0.95 0.953 1 } # Dark Violet/Black - 1 = { 0 0.055 0 0.067 } # White + 5 = { 0 0.055 0 0.067 } # White } skin_color = { 50 = { 0 0.44 0.02 0.47 } # Light Red 35 = { 0.047 0.44 0.067 0.5 } # Light Orange - 15 = { 0.722 0.353 0.847 0.365 } # Uncorrupted Lavender + 10 = { 0.722 0.353 0.847 0.365 } # Uncorrupted Lavender 5 = { 0.722 0.298 0.914 0.420 } # Uncorrupted Skin } gene_skin_value = { diff --git a/common/ethnicities/wc_ethnicities_dragon.txt b/common/ethnicities/wc_ethnicities_dragon.txt index 8eb0b5a154..542506af92 100644 --- a/common/ethnicities/wc_ethnicities_dragon.txt +++ b/common/ethnicities/wc_ethnicities_dragon.txt @@ -55,15 +55,15 @@ bronze_dragon_high_elven = { gene_race = { 1 = { name = creature_bronze_dragon range = { 0 1 } } } hair_color = { - 1 = { 0.11 1 0.11 01 } #Black - 4 = { 0.192 0.247 0.224 0.349 } #Blonde - 5 = { 0.71 0.078 0.71 0.239 } #White/Silver - 5 = { 0.055 0.878 0.078 0.953 } #Brown + 15 = { 0.11 1 0.11 01 } #Black + 15 = { 0.192 0.247 0.224 0.349 } #Blonde + 35 = { 0.71 0.078 0.71 0.239 } #White/Silver + 35 = { 0.055 0.878 0.078 0.953 } #Brown } eye_color = { - 1 = { 0.824 0.384 0.878 0.392 } # Purple - 10 = { 0.639 0.6 0.667 0.686 } # Blue - 10 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 20 = { 0.824 0.384 0.878 0.392 } # Purple + 40 = { 0.639 0.6 0.667 0.686 } # Blue + 40 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -85,15 +85,15 @@ bronze_dragon_human = { gene_race = { 1 = { name = creature_bronze_dragon range = { 0 1 } } } hair_color = { - 1 = { 0.11 1 0.11 01 } #Black - 4 = { 0.192 0.247 0.224 0.349 } #Blonde - 5 = { 0.71 0.078 0.71 0.239 } #White/Silver - 5 = { 0.055 0.878 0.078 0.953 } #Brown + 15 = { 0.11 1 0.11 01 } #Black + 25 = { 0.192 0.247 0.224 0.349 } #Blonde + 30 = { 0.71 0.078 0.71 0.239 } #White/Silver + 30 = { 0.055 0.878 0.078 0.953 } #Brown } eye_color = { - 1 = { 0.824 0.384 0.878 0.392 } # Purple - 10 = { 0.639 0.6 0.667 0.686 } # Blue - 10 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 20 = { 0.824 0.384 0.878 0.392 } # Purple + 40 = { 0.639 0.6 0.667 0.686 } # Blue + 40 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -126,15 +126,15 @@ bronze_dragon_gnome = { gene_race = { 1 = { name = creature_bronze_dragon range = { 0 1 } } } hair_color = { - 1 = { 0.11 1 0.11 1 } #Black - 4 = { 0.192 0.247 0.224 0.349 } #Blonde - 5 = { 0.71 0.078 0.71 0.239 } #White/Silver - 5 = { 0.055 0.878 0.078 0.953 } #Brown + 10 = { 0.11 1 0.11 1 } #Black + 20 = { 0.192 0.247 0.224 0.349 } #Blonde + 35 = { 0.71 0.078 0.71 0.239 } #White/Silver + 35 = { 0.055 0.878 0.078 0.953 } #Brown } eye_color = { - 1 = { 0.824 0.384 0.878 0.392 } # Purple - 10 = { 0.639 0.6 0.667 0.686 } # Blue - 10 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 20 = { 0.824 0.384 0.878 0.392 } # Purple + 40 = { 0.639 0.6 0.667 0.686 } # Blue + 40 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -163,11 +163,11 @@ black_dragon_human = { gene_race = { 1 = { name = creature_black_dragon range = { 0 1 } } } hair_color = { - 10 = { 0.11 1 0.11 1 } #Black + 100 = { 0.11 1 0.11 1 } #Black } eye_color = { - 5 = { 0.043 0.463 0.086 0.569 } # Orange/Yellow - 1 = { 0 0.62 0 0.776 } # Red + 80 = { 0.043 0.463 0.086 0.569 } # Orange/Yellow + 20 = { 0 0.62 0 0.776 } # Red } gene_skin_value = { 1 = { name = skin_value_neg range = { 0.25 0.5 } } @@ -203,11 +203,11 @@ black_dragon_high_elven = { gene_race = { 1 = { name = creature_black_dragon range = { 0 1 } } } hair_color = { - 10 = { 0.11 1 0.11 01 } #Black + 100 = { 0.11 1 0.11 01 } #Black } eye_color = { - 5 = { 0.043 0.463 0.086 0.569 } # Orange/Yellow - 1 = { 0 0.62 0 0.776 } # Red + 80 = { 0.043 0.463 0.086 0.569 } # Orange/Yellow + 20 = { 0 0.62 0 0.776 } # Red } gene_skin_value = { 1 = { name = skin_value_neg range = { 0.25 0.5 } } @@ -234,16 +234,16 @@ red_dragon_human = { gene_race = { 1 = { name = creature_red_dragon range = { 0 1 } } } hair_color = { - 5 = { 0 0.757 0.047 0.820 } # Red & Ginger - 6 = { 1 0.741 1 0.820 } # Pinkish Red - 2 = { 0.192 0.247 0.224 0.349 } #Blonde - 1 = { 0.71 0.078 0.71 0.239 } #White/Silver + 30 = { 0 0.757 0.047 0.820 } # Red & Ginger + 30 = { 1 0.741 1 0.820 } # Pinkish Red + 20 = { 0.192 0.247 0.224 0.349 } #Blonde + 20 = { 0.71 0.078 0.71 0.239 } #White/Silver } eye_color = { - 2 = { 0.204 0.737 0.255 0.776 } # Yellow - #5 = { 0.314 0.737 0.341 0.776 } # Green - 5 = { 0.639 0.6 0.667 0.686 } # Blue - 5 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 15 = { 0.204 0.737 0.255 0.776 } # Yellow + 5 = { 0.314 0.737 0.341 0.776 } # Green + 40 = { 0.639 0.6 0.667 0.686 } # Blue + 40 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -277,15 +277,15 @@ red_dragon_high_elven = { hair_color = { 5 = { 0 0.757 0.047 0.820 } # Red & Ginger - 6 = { 1 0.741 1 0.820 } # Pinkish Red - 2 = { 0.192 0.247 0.224 0.349 } #Blonde - 1 = { 0.71 0.078 0.71 0.239 } #White/Silver + 70 = { 1 0.741 1 0.820 } # Pinkish Red + 22 = { 0.192 0.247 0.224 0.349 } #Blonde + 3 = { 0.71 0.078 0.71 0.239 } #White/Silver } eye_color = { - 2 = { 0.204 0.737 0.255 0.776 } # Yellow - #5 = { 0.314 0.737 0.341 0.776 } # Green - 5 = { 0.639 0.6 0.667 0.686 } # Blue - 5 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 15 = { 0.204 0.737 0.255 0.776 } # Yellow + 5 = { 0.314 0.737 0.341 0.776 } # Green + 40 = { 0.639 0.6 0.667 0.686 } # Blue + 40 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -309,14 +309,14 @@ blue_dragon_high_elven = { gene_race = { 1 = { name = creature_blue_dragon range = { 0 1 } } } hair_color = { - 7 = { 0.11 1 0.11 1 } #Black - 15 = { 0.741 0.722 0.776 0.867 } #Blue - 3 = { 0.192 0.247 0.224 0.349 } #Blonde + 10 = { 0.11 1 0.11 1 } #Black + 80 = { 0.741 0.722 0.776 0.867 } #Blue + 5 = { 0.192 0.247 0.224 0.349 } #Blonde 5 = { 0.71 0.078 0.71 0.239 } #White/Silver } eye_color = { - 5 = { 0.639 0.6 0.667 0.686 } # Blue - 5 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 50 = { 0.639 0.6 0.667 0.686 } # Blue + 50 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -338,14 +338,14 @@ blue_dragon_human = { gene_race = { 1 = { name = creature_blue_dragon range = { 0 1 } } } hair_color = { - 7 = { 0.11 1 0.11 1 } #Black - 15 = { 0.741 0.722 0.776 0.867 } #Blue - 3 = { 0.192 0.247 0.224 0.349 } #Blonde + 10 = { 0.11 1 0.11 1 } #Black + 80 = { 0.741 0.722 0.776 0.867 } #Blue + 5 = { 0.192 0.247 0.224 0.349 } #Blonde 5 = { 0.71 0.078 0.71 0.239 } #White/Silver } eye_color = { - 5 = { 0.639 0.6 0.667 0.686 } # Blue - 5 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 50 = { 0.639 0.6 0.667 0.686 } # Blue + 50 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -378,14 +378,14 @@ blue_dragon_gnome = { gene_race = { 1 = { name = creature_blue_dragon range = { 0 1 } } } hair_color = { - 7 = { 0.11 1 0.11 1 } #Black - 15 = { 0.741 0.722 0.776 0.867 } #Blue - 3 = { 0.192 0.247 0.224 0.349 } #Blonde + 10 = { 0.11 1 0.11 1 } #Black + 80 = { 0.741 0.722 0.776 0.867 } #Blue + 5 = { 0.192 0.247 0.224 0.349 } #Blonde 5 = { 0.71 0.078 0.71 0.239 } #White/Silver } eye_color = { - 5 = { 0.639 0.6 0.667 0.686 } # Blue - 5 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 50 = { 0.639 0.6 0.667 0.686 } # Blue + 50 = { 0.733 0.384 0.753 0.431 } # Icy Blue } #Eyes @@ -414,14 +414,14 @@ green_dragon_high_elven = { gene_race = { 1 = { name = creature_green_dragon range = { 0 1 } } } hair_color = { - 2 = { 0.192 0.247 0.224 0.349 } #Blonde - 5 = { 0.439 0.620 0.475 0.863 } #Green + 20 = { 0.192 0.247 0.224 0.349 } #Blonde + 80 = { 0.439 0.620 0.475 0.863 } #Green } eye_color = { - 4 = { 0.639 0.6 0.667 0.686 } # Blue - 4 = { 0.733 0.384 0.753 0.431 } # Icy Blue - 2 = { 0.204 0.737 0.255 0.776 } # Yellow - #2 = { 0.314 0.737 0.341 0.776 } # Green + 40 = { 0.639 0.6 0.667 0.686 } # Blue + 40 = { 0.733 0.384 0.753 0.431 } # Icy Blue + 10 = { 0.204 0.737 0.255 0.776 } # Yellow + 5 = { 0.314 0.737 0.341 0.776 } # Green 5 = { 0.639 0.15 0.667 0.247 } # Silver } @@ -444,10 +444,10 @@ green_dragon_night_elven = { gene_race = { 1 = { name = creature_green_dragon range = { 0 1 } } } hair_color = { - 5 = { 0.439 0.620 0.475 0.863 } #Green + 100 = { 0.439 0.620 0.475 0.863 } #Green } eye_color = { - 5 = { 0.639 0.15 0.667 0.247 } # Silver + 100 = { 0.639 0.15 0.667 0.247 } # Silver } #Eyes diff --git a/common/ethnicities/wc_ethnicities_drogbar.txt b/common/ethnicities/wc_ethnicities_drogbar.txt index c1134781f3..d5ac07d4c8 100644 --- a/common/ethnicities/wc_ethnicities_drogbar.txt +++ b/common/ethnicities/wc_ethnicities_drogbar.txt @@ -5,19 +5,19 @@ gene_race = { 1 = { name = creature_drogbar range = { 0 1 } } } skin_color = { - 1 = { 0.15 0.7 0.2 0.85 } # Brown - 1 = { 0.714 0.231 0.75 0.275 } # Gray - 1 = { 0.224 0.129 0.298 0.239 } # Pale Yellow - 1 = { 0.714 0.459 0.714 0.459 } # Blue - 1 = { 0.737 0.314 0.769 0.353 } # Pale Blue - 1 = { 0.831 0.373 0.831 0.396 } # Dark Purple - 1 = { 0.008 0.024 0.008 0.024 } # Dark Gray - 1 = { 0.008 0.012 0.008 0.012 } # Gray/Brown - 1 = { 0.373 0.196 0.494 0.239 } # Sickly Green + 15 = { 0.15 0.7 0.2 0.85 } # Brown + 15 = { 0.714 0.231 0.75 0.275 } # Gray + 10 = { 0.224 0.129 0.298 0.239 } # Pale Yellow + 10 = { 0.714 0.459 0.714 0.459 } # Blue + 10 = { 0.737 0.314 0.769 0.353 } # Pale Blue + 10 = { 0.831 0.373 0.831 0.396 } # Dark Purple + 10 = { 0.008 0.024 0.008 0.024 } # Dark Gray + 10 = { 0.008 0.012 0.008 0.012 } # Gray/Brown + 10 = { 0.373 0.196 0.494 0.239 } # Sickly Green } eye_color = { - 1 = { 0 0.529 1 0.675 } + 100 = { 0 0.529 1 0.675 } } hair_color = { diff --git a/common/ethnicities/wc_ethnicities_dwarven.txt b/common/ethnicities/wc_ethnicities_dwarven.txt index 46544ce22c..546d06e93c 100644 --- a/common/ethnicities/wc_ethnicities_dwarven.txt +++ b/common/ethnicities/wc_ethnicities_dwarven.txt @@ -50,14 +50,14 @@ dwarven_ethnicity = { gene_race = { 1 = { name = creature_dwarf range = { 0 1 } } } skin_color = { - 1 = { 0.047 0.082 0.122 0.263 } + 100 = { 0.047 0.082 0.122 0.263 } } hair_color = { - 1 = { 1 0.667 1 0.843 } #Dark Pink - 1 = { 0.004 0.655 0.153 1 } #Red, Orange, Yellow, Brown, Black - 1 = { 0.059 0.220 0.153 0.412 } #Blonde - 1 = { 0.220 0.910 0.329 0.957 } #Moss Green, Dark Green - 1 = { 0.773 0.859 0.773 0.933 } #Dark Blue + 20 = { 1 0.667 1 0.843 } #Dark Pink + 20 = { 0.004 0.655 0.153 1 } #Red, Orange, Yellow, Brown, Black + 20 = { 0.059 0.220 0.153 0.412 } #Blonde + 20 = { 0.220 0.910 0.329 0.957 } #Moss Green, Dark Green + 20 = { 0.773 0.859 0.773 0.933 } #Dark Blue } diff --git a/common/ethnicities/wc_ethnicities_elven.txt b/common/ethnicities/wc_ethnicities_elven.txt index 8ffc8ec097..943abe3221 100644 --- a/common/ethnicities/wc_ethnicities_elven.txt +++ b/common/ethnicities/wc_ethnicities_elven.txt @@ -64,10 +64,10 @@ high_elven = { 40 = { 0.118 0.388 0.176 0.447 } #Blonde/Yellow 30 = { 0.71 0.078 0.71 0.239 } #White/Silver 20 = { 0.004 0.443 0.067 0.541 } #Red/Orange - 5 = { 0.055 0.820 0.078 1 } #Brown/Black + 10 = { 0.055 0.820 0.078 1 } #Brown/Black } skin_color = { - 10 = { 0.055 0.192 0.078 0.250 } + 100 = { 0.055 0.192 0.078 0.250 } } eye_color = { ## Blue @@ -473,14 +473,14 @@ night_elven = { hair_color = { ### From Green to Red - 10 = { 0.35 @white_color_y_min @elven_red_color_x_max 1 } + 100 = { 0.35 @white_color_y_min @elven_red_color_x_max 1 } } skin_color = { - 10 = { 0.85 0.24 0.95 0.34 } + 100 = { 0.85 0.24 0.95 0.34 } } eye_color = { # Silver to Bright Blue - 75 = { 0.639 0.15 0.667 0.35 } + 100 = { 0.639 0.15 0.667 0.35 } } #skin_color = { @@ -957,21 +957,21 @@ nightborne_ethnicity = { hair_color = { # White - 1 = { @blue_color_x_min @white_color_y_min @blue_color_x_max @white_color_y_max } + 60 = { @blue_color_x_min @white_color_y_min @blue_color_x_max @white_color_y_max } # Light Tones - 1 = { 0.678 0.118 0.741 0.314 } + 30 = { 0.678 0.118 0.741 0.314 } # Dark Tones - 1 = { 0.741 0.769 0.784 0.937 } + 10 = { 0.741 0.769 0.784 0.937 } } skin_color = { # Light Purple/Gray - 1 = { 0.729 0.322 0.735 0.355 } + 70 = { 0.729 0.322 0.735 0.355 } # Dark Green --> Purple - 15 = { 0.710 0.40 0.788 0.486 } + 30 = { 0.710 0.40 0.788 0.486 } } eye_color = { # White - 1 = { 0.702 0.114 0.702 0.3 } + 100 = { 0.702 0.114 0.702 0.3 } } #Height @@ -1377,7 +1377,7 @@ faldorei_ethnicity = { hair_color = { # White - 1 = { 0.129 0.043 0.137 0.110 } # Platinum Blonde & White + 100 = { 0.129 0.043 0.137 0.110 } # Platinum Blonde & White } skin_color = { 70 = { 0.73 0.93 0.73 0.99 } # Black @@ -1385,7 +1385,7 @@ faldorei_ethnicity = { } eye_color = { # White - 1 = { 0.702 0.114 0.702 0.3 } + 100 = { 0.702 0.114 0.702 0.3 } } #Height diff --git a/common/ethnicities/wc_ethnicities_giant.txt b/common/ethnicities/wc_ethnicities_giant.txt index e364b250b4..7c2386792d 100644 --- a/common/ethnicities/wc_ethnicities_giant.txt +++ b/common/ethnicities/wc_ethnicities_giant.txt @@ -32,18 +32,18 @@ frost_giant_ethnicity = { gene_race = { 1 = { name = creature_giant range = { 0 1 } } } skin_color = { - 30 = { 0.714 0.75 0.75 0.75 } # Gray - 30 = { 0.631 0.239 0.718 0.294 } # Idk what colour this is yet + 50 = { 0.714 0.75 0.75 0.75 } # Gray + 50 = { 0.631 0.239 0.718 0.294 } # Idk what colour this is yet } hair_color = { - 1 = { 0.686 0.310 0.686 0.350 } # Blue - 1 = { 0.68 0.512 0.746 0.62 } #blue + 50 = { 0.686 0.310 0.686 0.350 } # Blue + 50 = { 0.68 0.512 0.746 0.62 } #blue } eye_color = { - 1 = { 0.447 0.455 0.475 0.5 } # Blue-green - 1 = { 0.65 0.055 0.71 0.239 } #White/Silver + 50 = { 0.447 0.455 0.475 0.5 } # Blue-green + 50 = { 0.65 0.055 0.71 0.239 } #White/Silver } #Height @@ -436,19 +436,19 @@ storm_giant_ethnicity = { 1 = { name = normal_height range = { 0.95 1 } } } skin_color = { - 1 = { 0.086 0.263 0.122 0.322 } # Slightly tan + 100 = { 0.086 0.263 0.122 0.322 } # Slightly tan } eye_color = { - 1 = { 0.447 0.455 0.475 0.5 } # Blue-green - 1 = { 0.65 0.055 0.71 0.239 } #White/Silver - 1 = { 0.686 0.310 0.686 0.350 } # Blue - 1 = { 0.176 0.482 0.176 0.741 } # Yellow - 1 = { 0.110 0.396 0.110 0.714 } # Orange/Brown + 20 = { 0.447 0.455 0.475 0.5 } # Blue-green + 20 = { 0.65 0.055 0.71 0.239 } #White/Silver + 20 = { 0.686 0.310 0.686 0.350 } # Blue + 20 = { 0.176 0.482 0.176 0.741 } # Yellow + 20 = { 0.110 0.396 0.110 0.714 } # Orange/Brown } hair_color = { - 1 = { 0.686 0.310 0.686 0.350 } # Blue - 1 = { 0.68 0.512 0.746 0.62 } #blue - 1 = { @brown_color_x_min @brown_color_y_min @brown_color_x_max @brown_color_y_max } #brown - 1 = { @brown_color_x_min @black_color_y_min @brown_color_x_max @black_color_y_max } # black + 25 = { 0.686 0.310 0.686 0.350 } # Blue + 25 = { 0.68 0.512 0.746 0.62 } #blue + 25 = { @brown_color_x_min @brown_color_y_min @brown_color_x_max @brown_color_y_max } #brown + 25 = { @brown_color_x_min @black_color_y_min @brown_color_x_max @black_color_y_max } # black } } diff --git a/common/ethnicities/wc_ethnicities_gnome.txt b/common/ethnicities/wc_ethnicities_gnome.txt index cd27fbaf7d..a4219433c6 100644 --- a/common/ethnicities/wc_ethnicities_gnome.txt +++ b/common/ethnicities/wc_ethnicities_gnome.txt @@ -5,22 +5,22 @@ gene_race = { 1 = { name = creature_gnome range = { 0 1 } } } skin_color = { - 10 = { 0.05 0.173 0.118 0.196 } + 100 = { 0.05 0.173 0.118 0.196 } } eye_color = { - 10 = { 0 0.384 1 0.800 } + 100 = { 0 0.384 1 0.800 } } hair_color = { - 1 = { 0.737 0.894 0.753 0.929 } # Dark Blue/Black - 1 = { 0.043 0.878 0.102 0.898 } # Brown - 1 = { 0.133 0.137 0.224 0.384 } # Blonde - 1 = { 0 0.600 0.055 0.855 } # Red/Orange - 1 = { 0.698 0.318 0.698 0.384 } # Light Blue - 1 = { 0.376 0.647 0.431 0.765 } # Green - 1 = { 0.878 0.408 1 0.596 } # Pink/Purple - 1 = { 0.278 0.941 0.278 0.953 } # Moss Green - 1 = { 0.510 0.588 0.569 0.737 } # Cyan/Sea Green - 1 = { 0.776 0.498 0.788 0.733 } # Purple-Blue-Something (DK hair?) + 10 = { 0.737 0.894 0.753 0.929 } # Dark Blue/Black + 10 = { 0.043 0.878 0.102 0.898 } # Brown + 10 = { 0.133 0.137 0.224 0.384 } # Blonde + 10 = { 0 0.600 0.055 0.855 } # Red/Orange + 10 = { 0.698 0.318 0.698 0.384 } # Light Blue + 10 = { 0.376 0.647 0.431 0.765 } # Green + 10 = { 0.878 0.408 1 0.596 } # Pink/Purple + 10 = { 0.278 0.941 0.278 0.953 } # Moss Green + 10 = { 0.510 0.588 0.569 0.737 } # Cyan/Sea Green + 10 = { 0.776 0.498 0.788 0.733 } # Purple-Blue-Something (DK hair?) } #Height diff --git a/common/ethnicities/wc_ethnicities_goblin.txt b/common/ethnicities/wc_ethnicities_goblin.txt index c9bff39d70..7760be8bea 100644 --- a/common/ethnicities/wc_ethnicities_goblin.txt +++ b/common/ethnicities/wc_ethnicities_goblin.txt @@ -12,7 +12,7 @@ #15 = { 0.267 0.627 0.267 0.700 } # 4. Light Brown #20 = { 0.341 0.659 0.341 0.659} # 5. Light Green #1 = { 0.498 0.400 0.498 0.450 } # 6. Blue (Rare?) - 1 = { 0.227 0.463 0.341 0.678 } + 100 = { 0.227 0.463 0.341 0.678 } } eye_color = { #10 = { 0.992 0.424 0.992 0.682 } # 1. Pink @@ -22,7 +22,7 @@ #10 = { 0.322 0.439 0.427 0.750 } # 5. Green/Cyan #10 = { 0.059 0.475 0.059 0.475 } # 6. Brown #10 = { 0.553 0.482 0.553 0.702 } # 7. Blue - 1 = { 0 0.4 1 0.8 } + 100 = { 0 0.4 1 0.8 } } hair_color = { #10 = { 0.063 0.867 0.063 0.920 } # 1. Brown @@ -41,9 +41,9 @@ #10 = { 0.796 0.714 0.796 0.769 } # 14. Dark Blue 2 (Death Knight?) #10 = { 0.878 0.494 0.878 0.682 } # 15. Purple #10 = { 0.753 0.573 0.753 0.573 } # 16. Even Lighter Blue - 1 = { 0 0.624 0.11 0.842 } # Red, Orange, Brown - 1 = { 0.153 0.239 0.176 0.439 } # Platinum Blonde, Blonde - 1 = { 0.353 0.659 1 0.900 } # Blue, Green, Purple, Pink + 33 = { 0 0.624 0.11 0.842 } # Red, Orange, Brown + 33 = { 0.153 0.239 0.176 0.439 } # Platinum Blonde, Blonde + 34 = { 0.353 0.659 1 0.900 } # Blue, Green, Purple, Pink } #Height @@ -431,16 +431,16 @@ gilblin_ethnicity = { # All of the colors were taken directly from WoW's models, which is why some of the ranges are a bit small. Feel free to change things around though. skin_color = { - 1 = { 0.569 0.439 0.741 0.478 } # 1. Blue - 1 = { 1 0.255 1 0.282 } # 2. Pink + 80 = { 0.569 0.439 0.741 0.478 } # 1. Blue + 20 = { 1 0.255 1 0.282 } # 2. Pink } eye_color = { - 5 = { 0.067 0.522 0.102 0.522 } # 1. Red/Orange - 2 = { 0.569 0.455 0.643 0.522 } # 2. Blue - 2 = { 0.267 0.659 0.329 0.843 } # 2. Green/Yellow + 70 = { 0.067 0.522 0.102 0.522 } # 1. Red/Orange + 15 = { 0.569 0.455 0.643 0.522 } # 2. Blue + 15 = { 0.267 0.659 0.329 0.843 } # 2. Green/Yellow } hair_color = { - 1 = { 0.784 0.824 0.992 0.824 } # 1. Dark Blue, Purple, Pink-ish + 100 = { 0.784 0.824 0.992 0.824 } # 1. Dark Blue, Purple, Pink-ish } ###Ear diff --git a/common/ethnicities/wc_ethnicities_harpy.txt b/common/ethnicities/wc_ethnicities_harpy.txt index 232fd2b820..db0c620a50 100644 --- a/common/ethnicities/wc_ethnicities_harpy.txt +++ b/common/ethnicities/wc_ethnicities_harpy.txt @@ -65,19 +65,19 @@ harpy_ethnicity = { } skin_color = { #light green - 10 = { 0.312 0.145 0.352 0.195 } + 25 = { 0.312 0.145 0.352 0.195 } #light yellow - 10 = { 0.207 0.117 0.266 0.293 } + 25 = { 0.207 0.117 0.266 0.293 } #blue - 10 = { 0.676 0.402 0.690 0.474 } + 25 = { 0.676 0.402 0.690 0.474 } #night elven - 10 = { 0.85 0.20 0.95 0.30 } + 25 = { 0.85 0.20 0.95 0.30 } } eye_color = { # Grey - 10 = { 0.5 0.025 0.578 0.038 } + 50 = { 0.5 0.025 0.578 0.038 } # Light Blue - 10 = { 0.650 0.18 0.750 0.32 } + 50 = { 0.650 0.18 0.750 0.32 } } #Height @@ -505,13 +505,13 @@ yellow_harpy_ethnicity = { 10 = { 0.01 0.45 0.037 0.740 } #Orange 10 = { 0.055 0.820 0.078 1 } #Brown 10 = { 0.68 0.512 0.746 0.62 } #blue - 40 = { 0.757 0.99 0.823 1 } #black + 20 = { 0.757 0.99 0.823 1 } #black 10 = { 0.4 0.38 0.453 0.539 } #green 10 = { 0.748 0.902 0.813 0.926 } #dark blue } skin_color = { #light yellow - 10 = { 0.207 0.117 0.266 0.293 } + 100 = { 0.207 0.117 0.266 0.293 } } } blue_harpy_ethnicity = { @@ -519,18 +519,18 @@ blue_harpy_ethnicity = { hair_color = { #10 = { 0.84 0.414 0.992 0.672 } #purple/pink - 10 = { 0.65 0.055 0.71 0.239 } #White/Silver - 10 = { 0.001 0.49 0.01 0.666 } #Red - 10 = { 0.01 0.45 0.037 0.740 } #Orange - 10 = { 0.055 0.820 0.078 1 } #Brown + 5 = { 0.65 0.055 0.71 0.239 } #White/Silver + 5 = { 0.001 0.49 0.01 0.666 } #Red + 5 = { 0.01 0.45 0.037 0.740 } #Orange + 5 = { 0.055 0.820 0.078 1 } #Brown 30 = { 0.68 0.512 0.746 0.62 } #blue 30 = { 0.757 0.99 0.823 1 } #black #10 = { 0.4 0.38 0.453 0.539 } #green - 30 = { 0.748 0.902 0.813 0.926 } #dark blue + 20 = { 0.748 0.902 0.813 0.926 } #dark blue } skin_color = { #blue - 10 = { 0.676 0.402 0.690 0.474 } + 100 = { 0.676 0.402 0.690 0.474 } } } elven_harpy_ethnicity = { diff --git a/common/ethnicities/wc_ethnicities_mogu.txt b/common/ethnicities/wc_ethnicities_mogu.txt index b08ef8ae05..1cd84e743b 100644 --- a/common/ethnicities/wc_ethnicities_mogu.txt +++ b/common/ethnicities/wc_ethnicities_mogu.txt @@ -33,10 +33,10 @@ mogu_ethnicity = { gene_race = { 1 = { name = creature_mogu range = { 0 1 } } } skin_color = { - 1 = { 0.3 0.5 0.6 0.7 } ##Green to Green/Blue - 1 = { 0.004 0.443 0.1 1 } #Red/Orange - 1 = { 0.055 0.820 0.078 1 } #Brown/Black - 1 = { 0.714 0.75 0.75 0.75 } # Gray + 25 = { 0.3 0.5 0.6 0.7 } ##Green to Green/Blue + 25 = { 0.004 0.443 0.1 1 } #Red/Orange + 25 = { 0.055 0.820 0.078 1 } #Brown/Black + 25 = { 0.714 0.75 0.75 0.75 } # Gray } hair_color = { # Brown @@ -48,9 +48,9 @@ mogu_ethnicity = { eye_color = { # White - 1 = { 0.702 0.114 0.702 0.3 } #White - 1 = { 0.118 0.388 0.176 0.447 } #Blonde/Yellow - 1 = { 0.71 0.078 0.71 0.239 } #White/Silver + 33 = { 0.702 0.114 0.702 0.3 } #White + 34 = { 0.118 0.388 0.176 0.447 } #Blonde/Yellow + 33 = { 0.71 0.078 0.71 0.239 } #White/Silver } #Height diff --git a/common/ethnicities/wc_ethnicities_moknathal.txt b/common/ethnicities/wc_ethnicities_moknathal.txt index f8520729af..374837caeb 100644 --- a/common/ethnicities/wc_ethnicities_moknathal.txt +++ b/common/ethnicities/wc_ethnicities_moknathal.txt @@ -42,13 +42,13 @@ moknathal_ethnicity = { } eye_color = { # Brown - 20 = { 0.05 0.5 0.33 0.8 } + 40 = { 0.05 0.5 0.33 0.8 } # Green - 10 = { 0.33 0.5 0.67 0.8 } + 20 = { 0.33 0.5 0.67 0.8 } # Blue - 5 = { 0.67 0.5 1.0 0.8 } + 10 = { 0.67 0.5 1.0 0.8 } # Yellow/Orange (Rexxar) - 15 = { 0.110 0.329 0.188 0.533 } + 30 = { 0.110 0.329 0.188 0.533 } } #Height gene_height = { diff --git a/common/ethnicities/wc_ethnicities_ogre.txt b/common/ethnicities/wc_ethnicities_ogre.txt index 5895e7d3d8..da619325b3 100644 --- a/common/ethnicities/wc_ethnicities_ogre.txt +++ b/common/ethnicities/wc_ethnicities_ogre.txt @@ -33,9 +33,9 @@ ogre_ethnicity = { gene_race = { 1 = { name = creature_ogre range = { 0 1 } } } skin_color = { - 10 = { 0.067 0.176 0.231 0.412 } # Red, Yellow, etc. - 4 = { 0.686 0.255 0.686 0.396 } # Gray, Blue - 1 = { 0.008 0.024 0.008 0.024 } # Dark Gray + 60 = { 0.067 0.176 0.231 0.412 } # Red, Yellow, etc. + 30 = { 0.686 0.255 0.686 0.396 } # Gray, Blue + 10 = { 0.008 0.024 0.008 0.024 } # Dark Gray } hair_color = { # Brown diff --git a/common/ethnicities/wc_ethnicities_orcish.txt b/common/ethnicities/wc_ethnicities_orcish.txt index 069caacf05..477c18182a 100644 --- a/common/ethnicities/wc_ethnicities_orcish.txt +++ b/common/ethnicities/wc_ethnicities_orcish.txt @@ -33,7 +33,7 @@ green_orcish = { gene_race = { 1 = { name = creature_orc range = { 0 1 } } } skin_color = { - 10 = { 0.3 0.5 0.35 0.7 } + 100 = { 0.3 0.5 0.35 0.7 } } hair_color = { # Brown @@ -438,10 +438,10 @@ gray_orcish = { using = "blackrock" skin_color = { - 25 = { @ash_color_x_min @ash_color_y_min @ash_color_x_max @ash_color_y_max } - 25 = { 0.631 0.239 0.718 0.294 } # Default - 5 = { 0.008 0.012 0.008 0.012 } # Dark Gray/Brown - 1 = { 0.373 0.196 0.494 0.239 } # Sickly Green + 40 = { @ash_color_x_min @ash_color_y_min @ash_color_x_max @ash_color_y_max } + 40 = { 0.631 0.239 0.718 0.294 } # Default + 15 = { 0.008 0.012 0.008 0.012 } # Dark Gray/Brown + 5 = { 0.373 0.196 0.494 0.239 } # Sickly Green } } diff --git a/common/ethnicities/wc_ethnicities_pygmy.txt b/common/ethnicities/wc_ethnicities_pygmy.txt index ef356465e3..83dd7105a8 100644 --- a/common/ethnicities/wc_ethnicities_pygmy.txt +++ b/common/ethnicities/wc_ethnicities_pygmy.txt @@ -13,16 +13,8 @@ 10 = { 0.027 0.659 0.027 0.659 } # WIP } hair_color = { - 10 = { 0.059 0.976 0.110 1 } # Black & Brown - 5 = { 0.039 0.769 0.075 0.902 } # Red & Brown - # 1 = { 0.133 0.137 0.224 0.384 } # Blonde - # 1 = { 0 0.600 0.055 0.855 } # Red/Orange - # 1 = { 0.698 0.318 0.698 0.384 } # Light Blue - # 1 = { 0.376 0.647 0.431 0.765 } # Green - # 1 = { 0.878 0.408 1 0.596 } # Pink/Purple - # 1 = { 0.278 0.941 0.278 0.953 } # Moss Green - # 1 = { 0.510 0.588 0.569 0.737 } # Cyan/Sea Green - # 1 = { 0.776 0.498 0.788 0.733 } # Purple-Blue-Something (DK hair?) + 80 = { 0.059 0.976 0.110 1 } # Black & Brown + 20 = { 0.039 0.769 0.075 0.902 } # Red & Brown } #Height diff --git a/common/ethnicities/wc_ethnicities_satyr.txt b/common/ethnicities/wc_ethnicities_satyr.txt index 9a5fbe257e..7edc6da88a 100644 --- a/common/ethnicities/wc_ethnicities_satyr.txt +++ b/common/ethnicities/wc_ethnicities_satyr.txt @@ -46,25 +46,25 @@ satyr_ethnicity = { 15 = { 0.71 0.078 0.71 0.239 } #White/Silver } skin_color = { - 1 = { 0.718 0.318 0.718 0.318 } # Gray/Blue - 1 = { 0.337 0.082 0.337 0.082 } # Light - 1 = { 0.655 0.298 0.675 0.318 } # Greenish Gray - 1 = { 0.710 0.314 0.788 0.314 } # Blue to Purple - 1 = { 0.773 0.196 0.784 0.231 } # Light Pink - 1 = { 0.624 0.239 0.714 0.310 } # Blue/Green-ish - 1 = { 0.002 0.298 0.059 0.4 } # PH (Red) + 30 = { 0.718 0.318 0.718 0.318 } # Gray/Blue + 30 = { 0.337 0.082 0.337 0.082 } # Light + 10 = { 0.655 0.298 0.675 0.318 } # Greenish Gray + 10 = { 0.710 0.314 0.788 0.314 } # Blue to Purple + 5 = { 0.773 0.196 0.784 0.231 } # Light Pink + 5 = { 0.624 0.239 0.714 0.310 } # Blue/Green-ish + 10 = { 0.002 0.298 0.059 0.4 } # PH (Red) } eye_color = { - 1 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple - 1 = { 0.447 0.455 0.475 0.5 } # Blue-green - 1 = { 0.318 0.455 0.318 0.5 } # Fel Green - 1 = { 0 0.6 0 0.7 } # Red - 1 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow - 1 = { 0 0.600 0.055 0.855 } # Red/Orange + 20 = { 0.910 0.455 0.941 0.5 } # Magenta/Pink/Purple + 20 = { 0.447 0.455 0.475 0.5 } # Blue-green + 20 = { 0.318 0.455 0.318 0.5 } # Fel Green + 10 = { 0 0.6 0 0.7 } # Red + 10 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow + 20 = { 0 0.600 0.055 0.855 } # Red/Orange } #Height gene_height = { - 1 = { name = normal_height range = { 0.8 1 } } + 1 = { name = normal_height range = { 0.495 0.823 } } } #Neck @@ -475,14 +475,14 @@ satyr_ethnicity = { 1 = { name = nathrezim_claws range = { 0 1 } } } gene_facial_markings = { - 3 = { name = no_markings range = { 0 1 } } - 1 = { name = nathrezim_female_01 range = { 0.55 0.55 } } - 1 = { name = nathrezim_female_02 range = { 0.55 0.55 } } - 1 = { name = nathrezim_female_03 range = { 0.55 0.55 } } - 1 = { name = nathrezim_male_01 range = { 0.55 0.55 } } - 1 = { name = nathrezim_male_02 range = { 0.55 0.55 } } - 1 = { name = nathrezim_male_03 range = { 0.55 0.55 } } - 1 = { name = nathrezim_male_04 range = { 0.55 0.55 } } + 50 = { name = no_markings range = { 0 1 } } + 5 = { name = nathrezim_female_01 range = { 0.55 0.55 } } + 5 = { name = nathrezim_female_02 range = { 0.55 0.55 } } + 5 = { name = nathrezim_female_03 range = { 0.55 0.55 } } + 5 = { name = nathrezim_male_01 range = { 0.55 0.55 } } + 10 = { name = nathrezim_male_02 range = { 0.55 0.55 } } + 10 = { name = nathrezim_male_03 range = { 0.55 0.55 } } + 10 = { name = nathrezim_male_04 range = { 0.55 0.55 } } } gene_facial_markings_2 = { 1 = { name = no_markings range = { 0 1 } } diff --git a/common/ethnicities/wc_ethnicities_trogg.txt b/common/ethnicities/wc_ethnicities_trogg.txt index 3f0727ab6a..d024f50d0d 100644 --- a/common/ethnicities/wc_ethnicities_trogg.txt +++ b/common/ethnicities/wc_ethnicities_trogg.txt @@ -14,8 +14,8 @@ trogg_ethnicity = { 1 = { name = skin_value_neg range = { 0.2 0.6 } } } hair_color = { - 10 = { 0.059 0.976 0.110 1 } # Black & Brown - 5 = { 0.039 0.769 0.075 0.902 } # Red & Brown + 85 = { 0.059 0.976 0.110 1 } # Black & Brown + 15 = { 0.039 0.769 0.075 0.902 } # Red & Brown } #Height gene_height = { diff --git a/common/ethnicities/wc_ethnicities_troll.txt b/common/ethnicities/wc_ethnicities_troll.txt index b46fc72006..e16b7c03f3 100644 --- a/common/ethnicities/wc_ethnicities_troll.txt +++ b/common/ethnicities/wc_ethnicities_troll.txt @@ -5,15 +5,15 @@ gene_race = { 1 = { name = creature_troll range = { 0 1 } } } skin_color = { - 1 = { 0.627 0.376 0.792 0.408 } - 1 = { 0.639 0.439 0.710 0.475 } - 1 = { 0.784 0.353 0.812 0.384 } + 40 = { 0.627 0.376 0.792 0.408 } + 30 = { 0.639 0.439 0.710 0.475 } + 30 = { 0.784 0.353 0.812 0.384 } } eye_color = { - 1 = { 0 0.529 1 0.675 } + 100 = { 0 0.529 1 0.675 } } hair_color = { - 1 = { 0 0.549 1 0.682 } + 100 = { 0 0.549 1 0.682 } } #Height @@ -401,26 +401,26 @@ blood_troll_ethnicity = { skin_color = { # Light Blood Trolls - 6 = { 0.675 0.176 0.675 0.176 } # Pale Yellow/White - 1 = { 0.667 0.318 0.667 0.318 } # Pale Blue + 60 = { 0.675 0.176 0.675 0.176 } # Pale Yellow/White + 10 = { 0.667 0.318 0.667 0.318 } # Pale Blue # Dark Blood Trolls - 4 = { 0.714 0.231 0.75 0.275 } # Gray + 20 = { 0.714 0.231 0.75 0.275 } # Gray # Green Blood Trolls - 2 = { 0.420 0.184 0.420 0.243 } # Green + 10 = { 0.420 0.184 0.420 0.243 } # Green } eye_color = { # Light Blood Trolls - 5 = { 0 1 0 1 } # Black + 80 = { 0 1 0 1 } # Black # Dark Blood Trolls - 3 = { 0 0.514 0 0.65 } # Red + 15 = { 0 0.514 0 0.65 } # Red # Green Blood Trolls - 1 = { 0.694 0.341 0.741 0.431 } # Blue + 5 = { 0.694 0.341 0.741 0.431 } # Blue } hair_color = { - 1 = { 1 0 1 0 } # Black/Gray - 5 = { 0.129 0.043 0.137 0.110 } # Platinum Blonde & White - 1 = { 0.102 0.886 0.102 0.886 } # Dark Brown - 1 = { 0.153 0.875 0.153 0.875 } # Lighter Brown + 10 = { 1 0 1 0 } # Black/Gray + 70 = { 0.129 0.043 0.137 0.110 } # Platinum Blonde & White + 10 = { 0.102 0.886 0.102 0.886 } # Dark Brown + 10 = { 0.153 0.875 0.153 0.875 } # Lighter Brown } #Eyes @@ -451,8 +451,8 @@ blood_troll_light = { visible = no skin_color = { - 20 = { 0.675 0.176 0.675 0.176 } # Pale Yellow/White - 1 = { 0.667 0.318 0.667 0.318 } # Pale Blue + 90 = { 0.675 0.176 0.675 0.176 } # Pale Yellow/White + 10 = { 0.667 0.318 0.667 0.318 } # Pale Blue } gene_skin_value = { 1 = { name = skin_value_neg range = { 0 0 } } @@ -467,7 +467,7 @@ blood_troll_dark = { visible = no skin_color = { - 1 = { 0.714 0.231 0.75 0.275 } # Gray + 100 = { 0.714 0.231 0.75 0.275 } # Gray } gene_skin_value = { 1 = { name = skin_value_neg range = { 0.373 0.569 } } @@ -482,7 +482,7 @@ blood_troll_green = { visible = no skin_color = { - 1 = { 0.420 0.184 0.420 0.243 } # Green + 100 = { 0.420 0.184 0.420 0.243 } # Green } gene_skin_value = { 1 = { name = skin_value_neg range = { 0.200 0.35 } } @@ -497,17 +497,17 @@ sand_troll_ethnicity = { using = "farraki" skin_color = { - 1 = { 0.224 0.129 0.298 0.239 } # Pale Yellow + 100 = { 0.224 0.129 0.298 0.239 } # Pale Yellow } eye_color = { - 1 = { 0.686 0.310 0.686 0.350 } # Blue - 1 = { 0.176 0.482 0.176 0.741 } # Yellow - 1 = { 0.110 0.396 0.110 0.714 } # Orange/Brown + 40 = { 0.686 0.310 0.686 0.350 } # Blue + 30 = { 0.176 0.482 0.176 0.741 } # Yellow + 30 = { 0.110 0.396 0.110 0.714 } # Orange/Brown } hair_color = { - 1 = { 0.129 0.722 0.129 0.867 } # Brown - 1 = { 0.153 0.537 0.153 0.682 } # Yellow - 1 = { 0 0.643 0.043 0.800 } # Orange/Red + 40 = { 0.129 0.722 0.129 0.867 } # Brown + 30 = { 0.153 0.537 0.153 0.682 } # Yellow + 30 = { 0 0.643 0.043 0.800 } # Orange/Red } } @@ -516,23 +516,23 @@ ice_troll_ethnicity = { using = "drakkari" skin_color = { - 1 = { 0.741 0.494 0.741 0.529 } # Blue - 1 = { 0.659 0.396 0.659 0.427 } # Icy Blue - 1 = { 0.714 0.459 0.714 0.459 } # Pale Blue + 40 = { 0.741 0.494 0.741 0.529 } # Blue + 30 = { 0.659 0.396 0.659 0.427 } # Icy Blue + 30 = { 0.714 0.459 0.714 0.459 } # Pale Blue } eye_color = { - 35 = { 0 0.45 0.1 0.65 } # Red/Orange - 15 = { 0.565 0.353 0.733 0.5 } # Cyan/Blue - 5 = { 0.898 0.357 1 0.5 } # Purple/Pink + 70 = { 0 0.45 0.1 0.65 } # Red/Orange + 20 = { 0.565 0.353 0.733 0.5 } # Cyan/Blue + 10 = { 0.898 0.357 1 0.5 } # Purple/Pink } hair_color = { - 5 = { 0.737 0.094 0.737 0.094 } # White - 5 = { 0.749 0.510 0.749 0.686 } # Dark Blue - 5 = { 0.741 0.310 0.741 0.765 } # Gray Blue to Dark Blue - 1 = { 0.914 0.596 0.914 0.639 } # Purple - 1 = { 0.584 0.510 0.584 0.620 } # Sea-Green - 1 = { 0.867 0.322 0.867 0.376 } # Light Pink - 1 = { 0.902 0.420 0.902 0.498 } # Pink + 30 = { 0.737 0.094 0.737 0.094 } # White + 25 = { 0.749 0.510 0.749 0.686 } # Dark Blue + 25 = { 0.741 0.310 0.741 0.765 } # Gray Blue to Dark Blue + 5 = { 0.914 0.596 0.914 0.639 } # Purple + 5 = { 0.584 0.510 0.584 0.620 } # Sea-Green + 5 = { 0.867 0.322 0.867 0.376 } # Light Pink + 5 = { 0.902 0.420 0.902 0.498 } # Pink } #Eyes @@ -546,11 +546,11 @@ dark_troll_ethnicity = { using = "dark_troll" skin_color = { - 1 = { 0.737 0.314 0.769 0.353 } # Pale Blue - 1 = { 0.831 0.373 0.831 0.396 } # Dark Purple + 50 = { 0.737 0.314 0.769 0.353 } # Pale Blue + 50 = { 0.831 0.373 0.831 0.396 } # Dark Purple } hair_color = { - 1 = { 0.733 0.863 0.733 0.992 } # Dark Blue to Black + 100 = { 0.733 0.863 0.733 0.992 } # Dark Blue to Black } } @@ -559,15 +559,15 @@ forest_troll_ethnicity = { using = "amani" skin_color = { - 1 = { 0.349 0.729 0.349 0.776 } # Dark Green - 5 = { 0.341 0.329 0.412 0.396 } # Pale Green + 20 = { 0.349 0.729 0.349 0.776 } # Dark Green + 80 = { 0.341 0.329 0.412 0.396 } # Pale Green } hair_color = { - 15 = { 0.004 0.627 0.004 0.784 } # Red - 10 = { 0.369 0.682 0.388 0.820 } # Green - 5 = { 0.094 0.624 0.165 0.667 } # Orange/Yellow - 5 = { 0.502 0.808 0.502 0.867 } # Cyan - 1 = { 0 0.043 0 0.043 } # White + 45 = { 0.004 0.627 0.004 0.784 } # Red + 30 = { 0.369 0.682 0.388 0.820 } # Green + 10 = { 0.094 0.624 0.165 0.667 } # Orange/Yellow + 10 = { 0.502 0.808 0.502 0.867 } # Cyan + 5 = { 0 0.043 0 0.043 } # White } #Height @@ -602,20 +602,20 @@ zandalari_troll_ethnicity = { using = "zandalari" skin_color = { - 5 = { 0.588 0.376 0.733 0.439 } # Pale Blue - 1 = { 0.502 0.278 0.604 0.376 } # Pale Green + 80 = { 0.588 0.376 0.733 0.439 } # Pale Blue + 20 = { 0.502 0.278 0.604 0.376 } # Pale Green } eye_color = { - 50 = { 0.459 0.447 0.686 0.455 } # Green to Blue - 25 = { 0.169 0.3 0.196 0.4 } # Golden - 5 = { 0.639 0.314 0.639 0.314 } # White + 70 = { 0.459 0.447 0.686 0.455 } # Green to Blue + 20 = { 0.169 0.3 0.196 0.4 } # Golden + 10 = { 0.639 0.314 0.639 0.314 } # White } hair_color = { - 5 = { 0.694 0.620 0.769 0.933 } # Dark Blue - 1 = { 0.341 0.769 0.341 0.867 } # Green - 1 = { 0.043 0.843 0.043 0.886 } # Dark Brown/Red - 1 = { 0.631 0.165 0.631 0.255 } # White-Blue - 1 = { 1 0.647 1 0.722 } # Pink/Red + 50 = { 0.694 0.620 0.769 0.933 } # Dark Blue + 20 = { 0.341 0.769 0.341 0.867 } # Green + 10 = { 0.043 0.843 0.043 0.886 } # Dark Brown/Red + 10 = { 0.631 0.165 0.631 0.255 } # White-Blue + 10 = { 1 0.647 1 0.722 } # Pink/Red } #Height diff --git a/common/ethnicities/wc_ethnicities_vrykul.txt b/common/ethnicities/wc_ethnicities_vrykul.txt index b2195c9f36..a7f22cae00 100644 --- a/common/ethnicities/wc_ethnicities_vrykul.txt +++ b/common/ethnicities/wc_ethnicities_vrykul.txt @@ -5,18 +5,18 @@ gene_race = { 1 = { name = creature_vrykul range = { 0 1 } } } skin_color = { - 1 = { 0.067 0.259 0.122 0.300 } + 100 = { 0.067 0.259 0.122 0.300 } } eye_color = { - 1 = { 0.714 0.098 0.714 0.631 } # Gray to Blue - 1 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow - 1 = { 0.314 0.788 0.314 0.820 } # Hazel + 40 = { 0.714 0.098 0.714 0.631 } # Gray to Blue + 30 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow + 30 = { 0.314 0.788 0.314 0.820 } # Hazel } hair_color = { - 1 = { 0.094 0.918 0.094 0.918 } # Brown - 1 = { 0.063 0.773 0.063 0.839 } # Orange/Ginger - 1 = { 0.122 0.741 0.122 0.855 } # Yellow/Light Brown - 1 = { 0.157 0.239 0.157 0.239 } # Blonde + 25 = { 0.094 0.918 0.094 0.918 } # Brown + 25 = { 0.063 0.773 0.063 0.839 } # Orange/Ginger + 25 = { 0.122 0.741 0.122 0.855 } # Yellow/Light Brown + 25 = { 0.157 0.239 0.157 0.239 } # Blonde } #Height @@ -380,14 +380,14 @@ frost_vrykul_ethnicity = { using = "frost_vrykul" skin_color = { - 1 = { 0.700 0.349 0.722 0.467 } # Blue + 100 = { 0.700 0.349 0.722 0.467 } # Blue } eye_color = { - 1 = { 0.639 0.3 0.700 0.45 } # Blue + 100 = { 0.639 0.3 0.700 0.45 } # Blue } hair_color = { - 1 = { 0.675 0.102 0.675 0.239 } # White/Light Blue - 1 = { 0.686 0.443 0.722 0.675 } # Blue + 50 = { 0.675 0.102 0.675 0.239 } # White/Light Blue + 50 = { 0.686 0.443 0.722 0.675 } # Blue } ###Glowy Eyes @@ -403,14 +403,14 @@ kvaldir_ethnicity = { gene_race = { 1 = { name = creature_kvaldir range = { 0 1 } } } skin_color = { - 1 = { 0.349 0.333 0.522 0.431 } # Yellow-Green to Green + 100 = { 0.349 0.333 0.522 0.431 } # Yellow-Green to Green } eye_color = { - 1 = { 0.557 0.176 0.557 0.424 } # White to Blue + 100 = { 0.557 0.176 0.557 0.424 } # White to Blue } hair_color = { - 1 = { 0.314 0.820 0.365 0.949 } # Dark Green - 1 = { 0.004 0.910 0.231 0.937 } # Red & Brown + 50 = { 0.314 0.820 0.365 0.949 } # Dark Green + 50 = { 0.004 0.910 0.231 0.937 } # Red & Brown } ###Glowy Eyes @@ -424,14 +424,14 @@ drust_ethnicity = { using = "drust" skin_color = { - 2 = { 0.737 0.294 0.737 0.337 } # Gray/Purple - 1 = { 0.153 0.008 0.153 0.008 } # Dark + 80 = { 0.737 0.294 0.737 0.337 } # Gray/Purple + 20 = { 0.153 0.008 0.153 0.008 } # Dark } eye_color = { - 1 = { 0.603 0.3 0.647 0.5 } # Cyan/Blue + 100 = { 0.603 0.3 0.647 0.5 } # Cyan/Blue } hair_color = { - 1 = { 0.812 0.024 0.812 0.055 } # Gray/White + 100 = { 0.812 0.024 0.812 0.055 } # Gray/White } ###Glowy Eyes diff --git a/common/ethnicities/wc_ethnicities_watcher.txt b/common/ethnicities/wc_ethnicities_watcher.txt index 2f2dce3579..4e22680bc7 100644 --- a/common/ethnicities/wc_ethnicities_watcher.txt +++ b/common/ethnicities/wc_ethnicities_watcher.txt @@ -5,18 +5,18 @@ gene_race = { 1 = { name = creature_watcher range = { 0 1 } } } skin_color = { - 1 = { 0.067 0.259 0.122 0.300 } + 100 = { 0.067 0.259 0.122 0.300 } } eye_color = { - 1 = { 0.714 0.098 0.714 0.631 } # Gray to Blue - 1 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow - 1 = { 0.314 0.788 0.314 0.820 } # Hazel + 40 = { 0.714 0.098 0.714 0.631 } # Gray to Blue + 30 = { 0.078 0.424 0.078 0.729 } # Brown/Yellow + 30 = { 0.314 0.788 0.314 0.820 } # Hazel } hair_color = { - 1 = { 0.094 0.918 0.094 0.918 } # Brown - 1 = { 0.063 0.773 0.063 0.839 } # Orange/Ginger - 1 = { 0.122 0.741 0.122 0.855 } # Yellow/Light Brown - 1 = { 0.157 0.239 0.157 0.239 } # Blonde + 25 = { 0.094 0.918 0.094 0.918 } # Brown + 25 = { 0.063 0.773 0.063 0.839 } # Orange/Ginger + 25 = { 0.122 0.741 0.122 0.855 } # Yellow/Light Brown + 25 = { 0.157 0.239 0.157 0.239 } # Blonde } #Height diff --git a/common/game_concepts/wc_council_tasks_game_concepts.txt b/common/game_concepts/wc_council_tasks_game_concepts.txt new file mode 100644 index 0000000000..9b5317f844 --- /dev/null +++ b/common/game_concepts/wc_council_tasks_game_concepts.txt @@ -0,0 +1,7 @@ + + +purge_population = { + alias = { genocide } + parent = councillor_task + texture = "gfx/interface/icons/council_task_types/task_purge_population.dds" +} \ No newline at end of file diff --git a/common/genes/08_genes_special_visual_traits.txt b/common/genes/08_genes_special_visual_traits.txt index 2b987f79f8..2b4c4921fb 100644 --- a/common/genes/08_genes_special_visual_traits.txt +++ b/common/genes/08_genes_special_visual_traits.txt @@ -753,6 +753,42 @@ special_genes = { } + # warcraft + gene_metaljaw = { + + metaljaw = { + index = 0 + male = { + decal = { + body_part = head + textures = { + diffuse = "gfx/models/portraits/decals/visual_traits/decal_metaljaw_diffuse.dds" + normal = "gfx/models/portraits/decals/visual_traits/decal_metaljaw_normal.dds" + # properties = "gfx/models/portraits/decals/visual_traits/decal_metaljaw_properties.dds" + } + blend_modes = { #overlay/replace/hard_light/multiply + diffuse = overlay + normal = overlay + properties = overlay + } + # age = { + # mode = multiply + # curve = { + # { 0.0 0.0 } + # { 0.38 0.0 } + # { 0.7 0.8 } + # } + # } + priority = 30 + } + } + female = male + boy = male + girl = male + } + + } + gene_smallpox = { smallpox_01 = { @@ -1434,5 +1470,24 @@ special_genes = { girl = female } } + + # Warcraft + special_metaljaw = { + metaljaw = { + index = 0 + male = { + 1 = male_headgear_special_metaljaw + 1 = male_headgear_special_leatherjaw + 1 = empty + } + female = { + 1 = female_headgear_special_metaljaw + 1 = female_headgear_special_leatherjaw + 1 = empty + } + boy = male + girl = female + } + } } } diff --git a/common/genes/09_genes_special_misc.txt b/common/genes/09_genes_special_misc.txt index a348765e98..d5a29bc37e 100644 --- a/common/genes/09_genes_special_misc.txt +++ b/common/genes/09_genes_special_misc.txt @@ -197,6 +197,32 @@ special_genes = { girl = female } } + + # Warcraft + gene_bs_no_jaw = { + no_jaw = { + index = 5 + male = { + decal = { + required_tags = "no_jaw" + body_part = head + textures = { + diffuse = "gfx/models/portraits/decals/visual_traits/decal_metaljaw_diffuse.dds" + normal = "gfx/models/portraits/decals/visual_traits/decal_metaljaw_normal.dds" + } + blend_modes = { #overlay/replace/hard_light/multiply + diffuse = overlay + normal = overlay + } + priority = 10 + } + setting = { required_tags = "no_jaw" attribute = "bs_no_jaw" value = { min = 0.0 max = 1.0 } } + } + female = male + boy = male + girl = female + } + } } } diff --git a/common/landed_titles/01_landed_titles.txt b/common/landed_titles/01_landed_titles.txt index 53605707e5..a2c199c969 100644 --- a/common/landed_titles/01_landed_titles.txt +++ b/common/landed_titles/01_landed_titles.txt @@ -3232,7 +3232,7 @@ e_azeroth = { color = { 151 68 108 } b_dark_portal = { - province = 73 + province = 2486 color = { 151 68 108 } } b_ehde = { @@ -3240,7 +3240,7 @@ e_azeroth = { color = { 151 68 108 } } b_nahohji = { - province = 2486 + province = 73 color = { 151 68 108 } } b_itar = { diff --git a/common/modifiers/wc_genocide_modifiers.txt b/common/modifiers/wc_genocide_modifiers.txt new file mode 100644 index 0000000000..830bc0b752 --- /dev/null +++ b/common/modifiers/wc_genocide_modifiers.txt @@ -0,0 +1,259 @@ +ongoing_corruption_modifier = { + icon = martial_negative + + levy_size = -10 + garrison_size = -10 + tax_mult = -10 + levy_reinforcement_rate = -10 + development_growth_factor = -10 +} + +ongoing_cleansing_modifier = { + icon = martial_negative + + levy_size = -10 + garrison_size = -10 + tax_mult = -10 + levy_reinforcement_rate = -10 + development_growth_factor = -10 +} + +ongoing_genocide_modifier = { + icon = martial_negative + + levy_size = -10 + garrison_size = -10 + tax_mult = -10 + levy_reinforcement_rate = -10 + development_growth_factor = -10 +} + +county_corruption_light_modifier = { + icon = magic_mixed + + county_opinion_add = 10 + supply_limit_mult = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_void_modifier = { + icon = magic_mixed + + monthly_county_control_growth_add = 0.1 + build_speed = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_arcane_modifier = { + icon = magic_mixed + + county_opinion_add = 10 + development_growth_factor = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_fel_modifier = { + icon = magic_mixed + + monthly_county_control_growth_add = 0.1 + tax_mult = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_life_modifier = { + icon = magic_mixed + + county_opinion_add = 10 + levy_reinforcement_rate = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_death_modifier = { + icon = magic_mixed + + monthly_county_control_growth_add = 0.1 + levy_size = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_purged_modifier_1 = { + icon = flame_negative + + county_opinion_add = -20 + levy_size = -0.2 + garrison_size = -0.2 + tax_mult = -0.2 + levy_reinforcement_rate = -0.2 + supply_limit_mult = -0.2 + epidemic_resistance = 5 + development_growth_factor = -0.2 +} + +county_purged_modifier_2 = { + icon = flame_negative + + county_opinion_add = -40 + levy_size = -0.4 + garrison_size = -0.4 + tax_mult = -0.4 + levy_reinforcement_rate = -0.4 + supply_limit_mult = -0.4 + epidemic_resistance = 15 + development_growth_factor = -0.4 +} + +county_purged_modifier_3 = { + icon = flame_negative + + county_opinion_add = -60 + levy_size = -0.6 + garrison_size = -0.6 + tax_mult = -0.6 + levy_reinforcement_rate = -0.6 + supply_limit_mult = -0.6 + epidemic_resistance = 25 + development_growth_factor = -0.6 +} + +harmonize_with_force_modifier = { + icon = prowess_positive + + prowess = 2 +} + +corruption_disease_modifier = { + icon = martial_negative + + development_growth_factor = -0.5 + build_speed = 0.25 + tax_mult = -0.25 +} + +genocidal_unrest_modifier = { + icon = martial_negative + + development_growth_factor = -0.5 + build_speed = 0.25 + tax_mult = -0.25 +} + +genocide_emigration_modifier = { + icon = stewardship_negative + + development_growth_factor = -0.10 + build_speed = 0.05 + tax_mult = -0.05 + levy_size = -0.05 + county_opinion_add = -5 +} + +genocide_immigration_modifier = { + icon = stewardship_mixed + + development_growth_factor = 0.25 + build_speed = -0.1 + tax_mult = 0.1 + levy_size = 0.1 + county_opinion_add = -10 +} + +genocide_channelled_energy_modifier = { + icon = magic_positive + + development_growth_factor = 0.50 + build_speed = -0.25 + tax_mult = 0.25 + levy_size = 0.25 +} + +genocide_dispersed_energy_modifier = { + icon = magic_positive + + development_growth_factor = 0.25 + build_speed = -0.1 + tax_mult = 0.1 + levy_size = 0.1 +} + +sacrificed_cleansing_targets_modifier = { + icon = martial_positive + + dread_gain_mult = 0.2 + # Speeds up genocide +} + +genocide_focused_resources_modifier = { + icon = stewardship_positive + + development_growth_factor = 0.50 + build_speed = -0.25 + tax_mult = 0.25 + levy_size = 0.25 +} + +genocide_dispersed_resources_modifier = { + icon = stewardship_positive + + development_growth_factor = 0.25 + build_speed = -0.1 + tax_mult = 0.1 + levy_size = 0.1 +} + +genocide_wild_energy_modifier = { + icon = magic_negative + + development_growth_factor = -0.125 + build_speed = 0.05 + tax_mult = -0.05 + levy_size = -0.05 +} + +genocide_controlled_energy_modifier = { + icon = magic_negative + + development_growth_factor = -0.25 + build_speed = 0.1 + tax_mult = -0.1 + levy_size = -0.1 +} + +genocide_marauding_forces_modifier = { + icon = martial_negative + + county_opinion_add = -5 + travel_danger = 5 +} + +genocide_purged_marauders_modifier = { + icon = martial_negative + + county_opinion_add = -10 + development_growth = -0.5 +} + +genocide_local_champion_modifier = { + icon = martial_positive + + same_culture_opinion = 10 + same_faith_opinion = 10 + # Speeds up genocide +} \ No newline at end of file diff --git a/common/nicknames/wc_nicknames.txt b/common/nicknames/wc_nicknames.txt index 2645478129..d3055c33de 100644 --- a/common/nicknames/wc_nicknames.txt +++ b/common/nicknames/wc_nicknames.txt @@ -207,6 +207,9 @@ nick_the_timeless = {} nick_the_spellweaver = {} nick_the_earth_warder = {} +### Easter Egg Names +nick_the_soydrinker = {} + ### WoW Titles # Quests diff --git a/common/on_action/culture_on_actions.txt b/common/on_action/culture_on_actions.txt index b2f3e185f8..6afbfde375 100644 --- a/common/on_action/culture_on_actions.txt +++ b/common/on_action/culture_on_actions.txt @@ -75,6 +75,9 @@ on_character_culture_change = { trigger_event = bp2_yearly.8050 } } + + # Warcraft + refresh_corruption_modifiers_all_counties = yes } } diff --git a/common/on_action/game_start.txt b/common/on_action/game_start.txt index 4004b62ed3..b91779042b 100644 --- a/common/on_action/game_start.txt +++ b/common/on_action/game_start.txt @@ -320,6 +320,16 @@ on_game_start = { } } } + + # Warcraft + every_county = { + save_scope_as = county + holder = { + save_scope_as = councillor_liege + } + + corrupt_county_effect = { ON_START = yes } + } } # Warcraft - FP3 Struggle stuff removed } diff --git a/common/on_action/religion_on_actions.txt b/common/on_action/religion_on_actions.txt index 242be6e105..b893ff0323 100644 --- a/common/on_action/religion_on_actions.txt +++ b/common/on_action/religion_on_actions.txt @@ -196,6 +196,9 @@ on_character_faith_change = { trigger_event = bp2_yearly.8050 } } + + # Warcraft + refresh_corruption_modifiers_all_counties = yes } events = { # Warcraft diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index c842bcccc5..58aa09a8ec 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -283,6 +283,23 @@ on_title_gain = { } } # Warcraft + scope:title = { + if = { + limit = { + scope:title.tier = tier_county + scope:title.holder = { + NOR = { + is_liege_or_above_of = scope:previous_holder + is_vassal_or_below_of = scope:previous_holder + } + } + } + + remove_genocide_modifiers = yes + remove_genocide_variables = { REMOVE = no } + refresh_corruption_modifiers = yes + } + } } events = { # Warcraft diff --git a/common/on_action/wc_genocide_on_actions.txt b/common/on_action/wc_genocide_on_actions.txt new file mode 100644 index 0000000000..ac1491f153 --- /dev/null +++ b/common/on_action/wc_genocide_on_actions.txt @@ -0,0 +1,83 @@ +on_reduce_purge_modifier_on_action = { + effect = { + scope:county = { + if = { + limit = { + has_county_modifier = county_purged_modifier_1 + } + + remove_county_modifier = county_purged_modifier_1 + remove_genocide_variables = { REMOVE = yes } + } + else_if = { + limit = { + has_county_modifier = county_purged_modifier_2 + } + + remove_county_modifier = county_purged_modifier_2 + add_county_modifier = { + modifier = county_purged_modifier_1 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + } + else_if = { + limit = { + has_county_modifier = county_purged_modifier_3 + } + + remove_county_modifier = county_purged_modifier_3 + add_county_modifier = { + modifier = county_purged_modifier_2 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + } + } + } +} + +task_purge_population_side_effects = { + trigger = { + NOT = { has_variable = had_genocide_task_side_effect } + exists = cp:councillor_marshal + } + + random_events = { + chance_to_happen = 25 + 250 = 0 + # Bad side effects + ## Corrupt + 100 = genocide_task.0001 # Gives neighboring counties genocidal_unrest_modifier + 100 = genocide_task.0002 # Gain dread and lose dev or lose dread + + ## Cleanse + 100 = genocide_task.0101 # Champion challenges you to fight + 100 = genocide_task.0102 # Gives maluses, opposite of genocide_task.0302 + + ## Purge + 100 = genocide_task.0201 # Copy of genocide_task.0001 + 100 = genocide_task.0202 # Gives counties of same culture/faith genocide_emigration_modifier and a random neighboring realm county genocide_immigration_modifier + + # Good side effects + ## Corrupt + 100 = genocide_task.0301 # Gives dread, piety, or bonus to prowess + 100 = genocide_task.0302 # Give already corrupted counties small boost + + ## Cleanse + 100 = genocide_task.0401 # Spawn army or speed up cleansing + 100 = genocide_task.0402 # Gives dread, prestige, or bonus to cleanse speed + + ## Purge + 100 = genocide_task.0501 # Spawn a friendly champion or speed up purge + 100 = genocide_task.0502 # Gives counties of your culture/faith modifier + } +} \ No newline at end of file diff --git a/common/opinion_modifiers/wc_doctrinal_crime_opinions.txt b/common/opinion_modifiers/wc_doctrinal_crime_opinions.txt index 691f60e964..664801b0f8 100644 --- a/common/opinion_modifiers/wc_doctrinal_crime_opinions.txt +++ b/common/opinion_modifiers/wc_doctrinal_crime_opinions.txt @@ -9,7 +9,7 @@ being_undead_intolerant = { } being_demon_crime = { - opinion = -200 + opinion = -100 imprisonment_reason = yes revoke_title_reason = yes } @@ -19,7 +19,7 @@ being_demon_intolerant = { } being_void_crime = { - opinion = -200 + opinion = -100 imprisonment_reason = yes revoke_title_reason = yes } @@ -29,7 +29,7 @@ being_void_intolerant = { } being_life_crime = { - opinion = -200 + opinion = -100 imprisonment_reason = yes revoke_title_reason = yes } @@ -39,7 +39,7 @@ being_life_intolerant = { } being_order_crime = { - opinion = -200 + opinion = -100 imprisonment_reason = yes revoke_title_reason = yes } @@ -49,7 +49,7 @@ being_order_intolerant = { } being_light_crime = { - opinion = -200 + opinion = -100 imprisonment_reason = yes revoke_title_reason = yes } diff --git a/common/opinion_modifiers/wc_genocide_opinions.txt b/common/opinion_modifiers/wc_genocide_opinions.txt new file mode 100644 index 0000000000..a86d9e5e64 --- /dev/null +++ b/common/opinion_modifiers/wc_genocide_opinions.txt @@ -0,0 +1,34 @@ +minority_disapproves_of_genocide_population_opinion = { + opinion = -50 + years = 10 + decaying = yes + stacking = yes +} + +genocided_my_culture_opinion = { + opinion = -25 + years = 10 + decaying = yes + stacking = yes +} + +genocided_my_faith_opinion = { + opinion = -50 + years = 10 + decaying = yes + stacking = yes +} + +ruler_disapproves_of_genocide_population_opinion = { + opinion = -100 + years = 50 + decaying = yes + stacking = yes +} + +vassal_approves_of_defending_genocide_opinion = { + opinion = 25 + years = 10 + decaying = yes + stacking = yes +} \ No newline at end of file diff --git a/common/province_terrain/01_province_properties.txt b/common/province_terrain/01_province_properties.txt index 58bfb93b21..b3f0f8a336 100644 --- a/common/province_terrain/01_province_properties.txt +++ b/common/province_terrain/01_province_properties.txt @@ -757,7 +757,7 @@ ## c_dark_portal # b_dark_portal -73 = { +2486 = { winter_severity_bias = 0.45 } # b_ehde @@ -765,7 +765,7 @@ winter_severity_bias = 0.45 } # b_nahohji -2486 = { +73 = { winter_severity_bias = 0.45 } # b_itar diff --git a/common/script_values/wc_genocide_values.txt b/common/script_values/wc_genocide_values.txt new file mode 100644 index 0000000000..73624262a1 --- /dev/null +++ b/common/script_values/wc_genocide_values.txt @@ -0,0 +1,484 @@ +marshal_purge_population_threshold = 18 +council_same_culture_impact_percentage = 50 +council_same_faith_impact_percentage = 50 +council_already_corrupted_impact_percentage = 50 +council_sacrifice_impact_percentage = 20 +council_champion_impact_percentage = 20 + +genocide_task_side_effect_cooldown = 91 + +marshal_purge_population_current_progress = { + value = 0 + if = { + limit = { + scope:county ?= { + has_variable = purge_population_current_progress + } + } + add = scope:county.var:purge_population_current_progress + } +} + +marshal_purge_population_base = { + value = 1 +} + +marshal_purge_population_base_total = { + value = marshal_purge_population_base + + if = { + limit = { + OR = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + allow_cleanse_this_province_trigger = yes + } + } + } + add = 1 + } +} + +marshal_purge_population_skill_bonus = { + value = scope:councillor.martial + subtract = 10 + divide = 10 +} + +marshal_purge_population_monthly_increase_friend_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_friend = scope:councillor + NOT = { has_relation_best_friend = scope:councillor } + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_friend_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_best_friend_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_best_friend = scope:councillor + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_best_friend_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_rival_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_rival = scope:councillor + NOT = { has_relation_nemesis = scope:councillor } + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_rival_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_nemesis_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_nemesis = scope:councillor + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_nemesis_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_same_culture_bonus = { + if = { + limit = { + scope:county = { + culture = scope:councillor_liege.culture + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_same_culture_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_same_faith_bonus = { + if = { + limit = { + scope:county = { + faith = scope:councillor_liege.faith + + NOT = { + has_variable = false_convert + } + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_same_faith_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_already_corrupted_bonus = { + if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_already_corrupted_impact_percentage + divide = 100 + } + } + } +} + +marshal_purge_population_monthly_increase_unraised_army_bonus = { + # bonus for army strength when armies are unraised + if = { + limit = { + scope:councillor_liege = { has_raised_armies = no } + } + + add = { + value = marshal_purge_population_base + multiply = { + value = scope:councillor_liege.current_military_strength + divide = 10000 + } + max = 2 + } + } +} + +marshal_purge_population_monthly_increase_sacrifice_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = sacrificed_cleansing_targets_modifier + } + } + + add = { + value = marshal_purge_population_base + multiply = { + value = council_sacrifice_impact_percentage + divide = 100 + } + } + } +} + +marshal_purge_population_monthly_increase_champion_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = genocide_local_champion_modifier + } + } + + add = { + value = marshal_purge_population_base + multiply = { + value = council_champion_impact_percentage + divide = 100 + } + } + } +} + +marshal_purge_population_monthly_increase_fervor_penalty = { + if = { + limit = { + scope:county = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = { + value = marshal_purge_population_base + multiply = { + add = { + add = scope:councillor_liege.faith.fervor + } + subtract = { + add = scope:county.faith.fervor + } + divide = 100 + } + } + } +} + +# Development penalty +marshal_purge_population_monthly_increase_development_penalty = { + value = 0 + if = { + limit = { exists = scope:county } + add = { + value = scope:councillor.marshal_purge_population_base + multiply = { + subtract = scope:county.development_level + divide = 50 + } + } + } +} + +marshal_purge_population_faith_game_rule_mult = { + value = 1 + # Conversion speed game rules + if = { + limit = { + has_game_rule = slower_faith_conversion_speed + } + multiply = slower_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_slower_faith_conversion_speed + } + multiply = significantly_slower_game_rule_value + } + if = { + limit = { + has_game_rule = faster_faith_conversion_speed + } + multiply = faster_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_faster_faith_conversion_speed + } + multiply = significantly_faster_game_rule_value + } +} + +marshal_purge_population_culture_game_rule_mult = { + value = 1 + # Conversion speed game rules + if = { + limit = { + has_game_rule = slower_culture_conversion_speed + } + multiply = slower_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_slower_culture_conversion_speed + } + multiply = significantly_slower_game_rule_value + } + if = { + limit = { + has_game_rule = faster_culture_conversion_speed + } + multiply = faster_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_faster_culture_conversion_speed + } + multiply = significantly_faster_game_rule_value + } +} + +marshal_purge_population_game_rule_mult = { + value = 0 + if = { + limit = { + limit = { exists = scope:county } + scope:county = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = marshal_purge_population_culture_game_rule_mult + } + if = { + limit = { + scope:county ?= { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = marshal_purge_population_faith_game_rule_mult + } + + if = { + limit = { + scope:county ?= { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + } + divide = 2 + } + + if = { + limit = { + scope:county ?= { + NOR = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + } + } + add = 1 + } +} + +marshal_purge_population_total = { + value = marshal_purge_population_base_total + add = marshal_purge_population_skill_bonus + add = marshal_purge_population_monthly_increase_friend_bonus + add = marshal_purge_population_monthly_increase_best_friend_bonus + add = marshal_purge_population_monthly_increase_rival_bonus + add = marshal_purge_population_monthly_increase_nemesis_bonus + add = marshal_purge_population_monthly_increase_same_culture_bonus + add = marshal_purge_population_monthly_increase_same_faith_bonus + add = marshal_purge_population_monthly_increase_already_corrupted_bonus + add = marshal_purge_population_monthly_increase_unraised_army_bonus + add = marshal_purge_population_monthly_increase_sacrifice_bonus + add = marshal_purge_population_monthly_increase_champion_bonus + add = marshal_purge_population_monthly_increase_fervor_penalty + add = marshal_purge_population_monthly_increase_development_penalty + multiply = marshal_purge_population_game_rule_mult +} + +genocide_cb_prestige_cost = { + value = 0 + scope:defender = { + every_realm_county = { + limit = { + OR = { + AND = { + has_variable = culture_genocided + var:culture_genocided = scope:attacker.culture + } + } + } + + add = 100 + } + } +} + +genocide_cb_piety_cost = { + value = 0 + scope:defender = { + every_realm_county = { + limit = { + OR = { + AND = { + has_variable = faith_genocided + var:faith_genocided = scope:attacker.faith + } + } + } + + add = 100 + } + } +} + +genocide_cb_participation_prestige = { + value = 0 + add = scope:base_prestige + multiply = 0.5 + multiply = { + value = 0 + if = { + limit = { + scope:attacker_culture_reward_mult > scope:defender_culture_reward_mult + } + add = scope:attacker_culture_reward_mult + } + else = { + add = scope:defender_culture_reward_mult + } + } +} + +genocide_cb_participation_piety = { + value = 0 + add = scope:base_piety + multiply = 0.5 + multiply = { + value = 0 + if = { + limit = { + scope:attacker_faith_reward_mult > scope:defender_faith_reward_mult + } + add = scope:attacker_faith_reward_mult + } + else = { + add = scope:defender_faith_reward_mult + } + } +} + +corruption_modifier_scale_value = { + value = 0 + if = { + limit = { + corruption_scale_extreme_pos_trigger = yes + } + + add = 2 + } + else_if = { + limit = { + corruption_scale_mild_pos_trigger = yes + } + + add = 1 + } + else_if = { + limit = { + corruption_scale_mild_neg_trigger = yes + } + + add = -1 + } + else_if = { + limit = { + corruption_scale_extreme_neg_trigger = yes + } + + add = -2 + } +} \ No newline at end of file diff --git a/common/scripted_effects/wc_being_effects.txt b/common/scripted_effects/wc_being_effects.txt index 3009d11273..fe43a914b3 100644 --- a/common/scripted_effects/wc_being_effects.txt +++ b/common/scripted_effects/wc_being_effects.txt @@ -13,6 +13,8 @@ become_undead_no_notification_effect = { check_pregnancy_effect = yes check_available_government_event_effect = yes # Memory leak 4 GB of OM + + refresh_corruption_modifiers_all_counties = yes } become_undead_no_notification_event_effect = { trigger_event = WCBEI.2 @@ -126,6 +128,8 @@ become_demon_effect = { } check_pregnancy_effect = yes check_available_government_event_effect = yes # May be memory leak + + refresh_corruption_modifiers_all_counties = yes } become_being_void_effect = { add_trait = being_void @@ -136,6 +140,8 @@ become_being_void_effect = { } check_pregnancy_effect = yes check_available_government_event_effect = yes # May be memory leak + + refresh_corruption_modifiers_all_counties = yes } become_being_life_effect = { add_trait = being_life @@ -145,6 +151,8 @@ become_being_life_effect = { recover_from_all_diseases_event_effect = yes } check_pregnancy_effect = yes + + refresh_corruption_modifiers_all_counties = yes } become_being_order_effect = { add_trait = being_order @@ -154,6 +162,8 @@ become_being_order_effect = { recover_from_all_diseases_event_effect = yes } check_pregnancy_effect = yes + + refresh_corruption_modifiers_all_counties = yes } become_being_light_effect = { add_trait = being_light @@ -163,6 +173,8 @@ become_being_light_effect = { recover_from_all_diseases_event_effect = yes } check_pregnancy_effect = yes + + refresh_corruption_modifiers_all_counties = yes } send_being_notifications_effect = { diff --git a/common/scripted_effects/wc_genocide_effects.txt b/common/scripted_effects/wc_genocide_effects.txt new file mode 100644 index 0000000000..44a066298e --- /dev/null +++ b/common/scripted_effects/wc_genocide_effects.txt @@ -0,0 +1,847 @@ +# TODO: Give nickname + +reset_genocide_progress_effect = { + if = { + limit = { + has_variable = purge_population_current_progress + } + set_variable = { name = purge_population_current_progress value = 0 } + } +} + +# Remove ongoing modifiers when title changes hands: on_title_gain, on_county_occupied +remove_genocide_modifiers = { + reset_genocide_progress_effect = yes + if = { + limit = { + has_county_modifier = ongoing_corruption_modifier + } + + remove_county_modifier = ongoing_corruption_modifier + } + if = { + limit = { + has_county_modifier = ongoing_cleansing_modifier + } + + remove_county_modifier = ongoing_cleansing_modifier + } + if = { + limit = { + has_county_modifier = ongoing_genocide_modifier + } + + remove_county_modifier = ongoing_genocide_modifier + } +} + +add_corruption_modifier = { + remove_corruption_modifiers = yes + set_variable = { + name = corruption_type + value = flag:$MOD$ + } + add_county_modifier = $MOD$ + remove_variable = corruption_type +} + +remove_corruption_modifiers = { + if = { + limit = { + has_county_modifier = county_corruption_light_modifier + } + + remove_county_modifier = county_corruption_light_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_void_modifier + } + + remove_county_modifier = county_corruption_void_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_arcane_modifier + } + + remove_county_modifier = county_corruption_arcane_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_fel_modifier + } + + remove_county_modifier = county_corruption_fel_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_life_modifier + } + + remove_county_modifier = county_corruption_life_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_death_modifier + } + + remove_county_modifier = county_corruption_death_modifier + } +} + +refresh_corruption_modifiers = { # Modifier scale only works when modifier is added, so we use this to remove modifier and re-add it + if = { + limit = { + has_county_modifier = county_corruption_light_modifier + } + + add_corruption_modifier = { MOD = county_corruption_light_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_void_modifier + } + + add_corruption_modifier = { MOD = county_corruption_void_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_arcane_modifier + } + + add_corruption_modifier = { MOD = county_corruption_arcane_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_fel_modifier + } + + add_corruption_modifier = { MOD = county_corruption_fel_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_life_modifier + } + + add_corruption_modifier = { MOD = county_corruption_life_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_death_modifier + } + + add_corruption_modifier = { MOD = county_corruption_death_modifier } + } +} + +refresh_corruption_modifiers_all_counties = { + every_held_title = { + limit = { + tier = tier_county + } + + refresh_corruption_modifiers = yes + } +} + +remove_genocide_variables = { + if = { + limit = { + has_variable = culture_genocided + OR = { + NOT = { + culture = holder.culture + } + always = $REMOVE$ + } + } + + remove_variable = culture_genocided + } + + if = { + limit = { + has_variable = faith_genocided + OR = { + NOT = { + faith = holder.faith + } + always = $REMOVE$ + } + } + + remove_variable = faith_genocided + } +} + +corrupt_county_effect = { + scope:county ?= { + if = { + limit = { + OR = { + $ON_START$ = yes + AND = { + has_variable = purge_population_current_progress + var:purge_population_current_progress >= marshal_purge_population_threshold + } + has_variable = finished_genocide + } + } + + remove_genocide_modifiers = yes + + save_temporary_scope_value_as = { + name = take_county + value = yes + } + + if = { + limit = { + $ON_START$ = yes + } + + save_temporary_scope_value_as = { + name = take_county + value = no + } + } + + if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_light MAGIC = light } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_light_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_light MAGIC = light } + } + } + + add_corruption_modifier = { MOD = county_corruption_light_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_void MAGIC = shadow } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_void_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_void MAGIC = shadow } + } + } + + add_corruption_modifier = { MOD = county_corruption_void_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_order MAGIC = order } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_arcane_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_order MAGIC = order } + } + } + + add_corruption_modifier = { MOD = county_corruption_arcane_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_fel_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_demon MAGIC = disorder } + } + } + + add_corruption_modifier = { MOD = county_corruption_fel_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_life MAGIC = life } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_life_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_life MAGIC = life } + } + } + + add_corruption_modifier = { MOD = county_corruption_life_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_death_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_undead MAGIC = death } + } + } + + add_corruption_modifier = { MOD = county_corruption_death_modifier } + + save_temporary_scope_value_as = { + name = take_county + value = no + } + + if = { + limit = { + $ON_START$ = no + NOT = { + holder = scope:councillor_liege + } + } + holder = { + raise_undead_by_basic_effect = { MASTER = scope:councillor_liege FROSTMOURNE = no } + } + } + } + + if = { + limit = { + $ON_START$ = no + } + + genocide_common_effect = { + OPINION = yes + MULT = 3 + MOD = minority_disapproves_of_genocide_population_opinion + TAKE_TITLE = scope:take_county + } + + set_county_culture = scope:councillor_liege.culture + set_county_faith = scope:councillor_liege.faith + } + + if = { + limit = { + has_variable = finished_genocide + } + remove_variable = finished_genocide + } + + scope:councillor_liege = { + add_character_flag = { + flag = no_ai_genocide + years = 1 + } + } + } + } +} + +cleanse_county_effect = { + scope:county ?= { + if = { + limit = { + OR = { + AND = { + has_variable = purge_population_current_progress + var:purge_population_current_progress >= marshal_purge_population_threshold + } + has_variable = finished_genocide + } + } + + remove_genocide_modifiers = yes + + genocide_culture_effect = { MULT = 2 MOD = genocided_my_culture_opinion } + genocide_faith_effect = { MULT = 2 MOD = genocided_my_faith_opinion } + genocide_common_effect = { + OPINION = no + MULT = 3 + MOD = minority_disapproves_of_genocide_population_opinion + TAKE_TITLE = yes + } + remove_corruption_modifiers = yes + + add_county_modifier = { + modifier = county_purged_modifier_3 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + + # TODO: Should destroy random building, not sure if possible in CK3 + + if = { + limit = { + has_variable = finished_genocide + } + remove_variable = finished_genocide + } + + scope:councillor_liege = { + add_character_flag = { + flag = no_ai_genocide + years = 1 + } + } + } + } +} + +purge_population_effect = { + scope:county ?= { + if = { + limit = { + OR = { + AND = { + has_variable = purge_population_current_progress + var:purge_population_current_progress >= marshal_purge_population_threshold + } + has_variable = finished_genocide + } + } + + remove_genocide_modifiers = yes + + genocide_culture_effect = { MULT = 2 MOD = genocided_my_culture_opinion } + genocide_faith_effect = { MULT = 2 MOD = genocided_my_faith_opinion } + genocide_common_effect = { + OPINION = yes + MULT = 2 + MOD = minority_disapproves_of_genocide_population_opinion + TAKE_TITLE = no + } + + add_county_modifier = { + modifier = county_purged_modifier_3 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + + # TODO: Should destroy random building, not sure if possible in CK3 + + if = { + limit = { + has_variable = finished_genocide + } + remove_variable = finished_genocide + } + + scope:councillor_liege = { + add_character_flag = { + flag = no_ai_genocide + years = 20 + } + } + } + } +} + +genocide_culture_effect = { + if = { + limit = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + + culture = { + save_scope_as = old_culture + change_cultural_acceptance = { + target = scope:councillor_liege.culture + value = { + value = -30 + multiply = $MULT$ + } + desc = cultural_acceptance_loss_purge_pupulation + } + custom_tooltip = { + text = $MOD$_desc + every_ruler = { + limit = { + NOT = { + target_is_liege_or_above = scope:councillor_liege + } + culture = scope:old_culture + NOT = { + this = scope:county.holder + } + } + add_opinion = { + target = scope:councillor_liege + modifier = $MOD$ + } + } + } + } + + set_variable = { + name = culture_genocided + value = scope:old_culture + } + + + set_county_culture = scope:councillor_liege.culture + } +} + +genocide_faith_effect = { + if = { + limit = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + + faith = { + save_scope_as = old_faith + + change_fervor = { + value = { + value = 5 + multiply = $MULT$ + } + desc = genoided_faith_fervor + } + + custom_tooltip = { + text = $MOD$_desc + every_faith_ruler = { + limit = { + NOT = { + target_is_liege_or_above = scope:councillor_liege + } + NOT = { + this = scope:county.holder + } + } + add_opinion = { + target = scope:councillor_liege + modifier = $MOD$ + } + } + } + } + + set_variable = { + name = faith_genocided + value = scope:old_faith + } + + if = { # Remove false conversion + limit = { + has_county_modifier = false_convert_modifier + } + + remove_county_modifier = false_convert_modifier + } + + if = { # Remove false conversion + limit = { + has_variable = false_convert + } + + remove_variable = false_convert + } + + set_county_faith = scope:councillor_liege.faith + } +} + +genocide_common_effect = { + scope:councillor_liege = { + if = { + limit = { + $OPINION$ = yes + any_vassal = { + has_vassal_stance = minority + } + } + custom_tooltip = $MOD$_desc + hidden_effect = { + every_vassal = { + limit = { + has_vassal_stance = minority + NOT = { + this = scope:county.holder + } + } + add_opinion = { + target = scope:councillor_liege + modifier = $MOD$ + } + } + } + } + + if = { + limit = { government_has_flag = government_dark_frenzy_from_conversions } + change_dark_frenzy_effect = { VALUE = dark_frenzy_from_convert_county } + } + } + + change_county_control = { + value = -30 + multiply = $MULT$ + } + change_development_level = { + value = -10 + multiply = $MULT$ + } + + holder = { + save_temporary_scope_as = old_holder + + if = { + limit = { + NOT = { + this = scope:councillor_liege + } + } + + add_opinion = { + target = scope:councillor_liege + modifier = ruler_disapproves_of_genocide_population_opinion + } + } + } + + if = { # Take the title you just genocided + limit = { + $TAKE_TITLE$ = yes + NOT = { + holder = scope:councillor_liege + } + NAND = { + holder.culture = scope:councillor_liege.culture + holder.faith = scope:councillor_liege.faith + } + } + + create_title_and_vassal_change = { + type = usurped + add_claim_on_loss = yes + save_scope_as = change + } + + change_title_holder = { + holder = scope:councillor_liege + change = scope:change + take_baronies = yes + } + + resolve_title_and_vassal_change = scope:change + + scope:old_holder = { # If this was their only title they're included in the genocide + if = { + limit = { + is_ruler = no + } + + override_death_killer_effect = { + death_reason = death_execution + killer = scope:councillor_liege + } + } + } + } +} + +genocide_spawn_champion_effect = { + create_character = { + location = scope:county.title_province + culture = $CULTURE$ + faith = $FAITH$ + dynasty = none + random_traits = no + random_traits_list = { + count = 1 + education_martial_prowess_2 = {} + education_martial_prowess_3 = {} + education_martial_prowess_4 = {} + } + gender_female_chance = { + if = { + limit = { $FAITH$ = { has_doctrine = doctrine_gender_male_dominated } } + add = 0 + } + else_if = { + limit = { $FAITH$ = { has_doctrine = doctrine_gender_female_dominated } } + add = 100 + } + else = { + add = 50 + } + } + martial = { 8 12 } + prowess = { + min_template_high_skill + max_template_high_skill + } + save_scope_as = champion + after_creation = { + if = { + limit = { + $GOOD$ = yes + } + random_list = { + 1 = { + add_trait = brave + } + 1 = { + add_trait = just + } + 1 = { + add_trait = gallant + } + } + random_list = { + 1 = { + add_trait = lustful + } + 1 = { + add_trait = chaste + } + 1 = { + add_trait = wrathful + } + 1 = { + add_trait = arrogant + } + 1 = { + add_trait = impatient + } + 1 = { + add_trait = deceitful + } + 1 = { + add_trait = ambitious + } + 1 = { + add_trait = stubborn + } + 1 = { + add_trait = fickle + } + 1 = { + add_trait = beauty_good_1 + } + } + } + else = { + + random_list = { + 1 = { + add_trait = wrathful + } + 1 = { + add_trait = arbitrary + } + 1 = { + add_trait = arrogant + } + } + random_list = { + 1 = { + add_trait = lustful + } + 1 = { + add_trait = impatient + } + 1 = { + add_trait = paranoid + } + 1 = { + add_trait = arrogant + } + 1 = { + add_trait = impatient + } + 1 = { + add_trait = deceitful + } + 1 = { + add_trait = sadistic + } + 1 = { + add_trait = stubborn + } + 1 = { + add_trait = fickle + } + 1 = { + add_trait = beauty_bad_1 + } + } + } + # Warcraft + trigger_race_giving_no_gene_effect = yes + } + } +} + +genocide_add_champion_being_trait_effect = { + save_temporary_scope_as = champion + scope:county = { + switch = { + trigger = has_county_modifier + } + + county_corruption_light_modifier = { scope:champion = { add_trait = being_light } } + county_corruption_void_modifier = { scope:champion = { add_trait = being_void } } + county_corruption_arcane_modifier = { scope:champion = { add_trait = being_order } } + county_corruption_fel_modifier = { scope:champion = { add_trait = being_demon } } + county_corruption_life_modifier = { scope:champion = { add_trait = being_life } } + county_corruption_death_modifier = { scope:champion = { add_trait = being_undead } } + } +} \ No newline at end of file diff --git a/common/scripted_effects/wc_war_effects.txt b/common/scripted_effects/wc_war_effects.txt index ec26f33d1d..3aa15e33d7 100644 --- a/common/scripted_effects/wc_war_effects.txt +++ b/common/scripted_effects/wc_war_effects.txt @@ -623,4 +623,320 @@ join_every_war_effect = { } } } +} + +add_genocide_cb_rewards = { + save_scope_value_as = { name = attacker_culture_reward_mult value = 0 } + save_scope_value_as = { name = attacker_faith_reward_mult value = 0 } + save_scope_value_as = { name = defender_culture_reward_mult value = 0 } + save_scope_value_as = { name = defender_faith_reward_mult value = 0 } + save_scope_value_as = { name = base_prestige value = $PRESTIGE_BASE_VALUE$ } + save_scope_value_as = { name = base_piety value = $PIETY_BASE_VALUE$ } + scope:defender = { + every_realm_county = { + limit = { + OR = { + AND = { + has_variable = culture_genocided + var:culture_genocided = scope:attacker.culture + } + + AND = { + has_variable = faith_genocided + var:faith_genocided = scope:attacker.faith + } + } + } + + if = { + limit = { + has_variable = culture_genocided + } + + save_scope_value_as = { + name = attacker_culture_reward_mult + value = { + value = scope:attacker_culture_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = 1 + } + if = { + limit = { + $OUTCOME$ = flag:white_peace + } + add = 0.5 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = -1 + } + } + } + save_scope_value_as = { + name = defender_culture_reward_mult + value = { + value = scope:defender_culture_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = -1 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = 1 + } + } + } + } + if = { + limit = { + has_variable = faith_genocided + } + + save_scope_value_as = { + name = attacker_faith_reward_mult + value = { + value = scope:attacker_faith_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = 1 + } + if = { + limit = { + $OUTCOME$ = flag:white_peace + } + add = 0.5 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = -1 + } + } + } + save_scope_value_as = { + name = defender_faith_reward_mult + value = { + value = scope:defender_faith_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = -1 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = 1 + } + } + } + } + + if = { + limit = { + $OUTCOME$ = flag:win + } + + change_title_holder = { + holder = scope:attacker + change = scope:change + take_baronies = yes + } + } + } + } + + scope:attacker = { + add_prestige = { + value = scope:base_prestige + multiply = scope:attacker_culture_reward_mult + } + + add_piety = { + value = scope:base_piety + multiply = scope:attacker_faith_reward_mult + } + } + + scope:defender = { + if = { + limit = { + NOT = { + scope:defender_culture_reward_mult = 0 + } + } + add_prestige = { + value = scope:base_prestige + multiply = scope:defender_culture_reward_mult + } + } + + if = { + limit = { + NOT = { + scope:defender_faith_reward_mult = 0 + } + } + add_piety = { + value = scope:base_piety + multiply = scope:defender_faith_reward_mult + } + } + } + + if = { + limit = { + $OUTCOME$ = flag:loss + } + + # Allies on both sides get full prestige value for helping in the war, based on their war participation. + modify_allies_of_participants_fame_values_genocide = { + WINNER = scope:defender + FAME_BASE = genocide_cb_participation_prestige + PIETY_BASE = genocide_cb_participation_piety + GIVE_FAITH_REWARDS = genocide_cb_can_avenge_faith + GIVE_CULTURE_REWARDS = genocide_cb_can_avenge_culture + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + } + else = { + # Allies on both sides get full prestige value for helping in the war, based on their war participation. + modify_allies_of_participants_fame_values_genocide = { + WINNER = scope:attacker + FAME_BASE = genocide_cb_participation_prestige + PIETY_BASE = genocide_cb_participation_piety + GIVE_FAITH_REWARDS = genocide_cb_can_avenge_faith + GIVE_CULTURE_REWARDS = genocide_cb_can_avenge_culture + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + } +} + +modify_allies_of_participants_fame_values_genocide = { + # Give the allies of both primary participants the appropriate type & amount of 'fame'. + + if = { + # Religious wars award Piety to participants. + limit = { + OR = { + $GIVE_FAITH_REWARDS$ = yes + #always = yes + } + } + if = { + # Award Piety to the victorious attacker's allies. + limit = { + $WINNER$ = scope:attacker + } + add_from_contribution_attackers = { + piety = { + value = $PIETY_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Piety to the defeated defender's allies. + add_from_contribution_defenders = { + piety = { + value = $PIETY_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + else = { + # Award Piety to the victorious defender's allies. + add_from_contribution_defenders = { + piety = { + value = $PIETY_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Piety to the defeated attacker's allies. + add_from_contribution_attackers = { + piety = { + value = $PIETY_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + } + if = { + limit = { + $GIVE_CULTURE_REWARDS$ = yes + } + # All other war types award Prestige to participants. + if = { + # Award Prestige to the victorious attacker's allies. + limit = { + $WINNER$ = scope:attacker + } + add_from_contribution_attackers = { + prestige = { + value = $FAME_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Prestige to the defeated defender's allies. + add_from_contribution_defenders = { + prestige = { + value = $FAME_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + else = { + # Award Prestige to the victorious defender's allies. + add_from_contribution_defenders = { + prestige = { + value = $FAME_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Prestige to the defeated attacker's allies. + add_from_contribution_attackers = { + prestige = { + value = $FAME_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + } } \ No newline at end of file diff --git a/common/scripted_triggers/wc_being_triggers.txt b/common/scripted_triggers/wc_being_triggers.txt index ebe1367687..3493553369 100644 --- a/common/scripted_triggers/wc_being_triggers.txt +++ b/common/scripted_triggers/wc_being_triggers.txt @@ -8,6 +8,18 @@ has_trait = being_light } } +has_culture_being_trait_gfx_trigger = { + culture = { + OR = { + has_clothing_gfx = being_light_gfx + has_clothing_gfx = being_void_gfx + has_clothing_gfx = being_order_gfx + has_clothing_gfx = being_demon_gfx + has_clothing_gfx = being_life_gfx + has_clothing_gfx = being_undead_gfx + } + } +} valid_being_notification_target_trigger = { NOR = { this = scope:lost_character diff --git a/common/scripted_triggers/wc_casus_belli_triggers.txt b/common/scripted_triggers/wc_casus_belli_triggers.txt new file mode 100644 index 0000000000..5317722ff9 --- /dev/null +++ b/common/scripted_triggers/wc_casus_belli_triggers.txt @@ -0,0 +1,30 @@ +genocide_cb_can_avenge_culture = { + scope:defender = { + any_realm_county = { + trigger_if = { + limit = { + has_variable = culture_genocided + } + var:culture_genocided = scope:attacker.culture + } + trigger_else = { + always = no + } + } + } +} +genocide_cb_can_avenge_faith = { + scope:defender = { + any_realm_county = { + trigger_if = { + limit = { + has_variable = faith_genocided + } + var:faith_genocided = scope:attacker.faith + } + trigger_else = { + always = no + } + } + } +} \ No newline at end of file diff --git a/common/scripted_triggers/wc_genocide_triggers.txt b/common/scripted_triggers/wc_genocide_triggers.txt new file mode 100644 index 0000000000..ad60f89c23 --- /dev/null +++ b/common/scripted_triggers/wc_genocide_triggers.txt @@ -0,0 +1,602 @@ +# TODO: Infusion 2024, replace a lot of the corruption checks with infusion checks + +################################# +# Corruption # +################################# + +####################### +# Is corrupted # +####################### + +has_corruption_modifier_trigger = { + OR = { + has_county_modifier = county_corruption_light_modifier + has_county_modifier = county_corruption_void_modifier + has_county_modifier = county_corruption_arcane_modifier + has_county_modifier = county_corruption_fel_modifier + has_county_modifier = county_corruption_life_modifier + has_county_modifier = county_corruption_death_modifier + } +} + +# Check if province is corrupted with the modifier beneficial to the liege, with specific magic type +has_beneficial_corruption_this_province_specific_trigger = { + has_county_modifier = $MOD$ + + scope:councillor_liege = { + OR = { + can_corrupt_specific_trigger = { BEING = $BEING$ MAGIC = $MAGIC$ } + faith = { + OR = { + has_doctrine = doctrine_$MAGIC$_magic_approved + has_doctrine = doctrine_$MAGIC$_magic_accepted + } + } + } + NOT = { + has_trait = $BEING_OPPOSITE$ + } + } + trigger_if = { + limit = { scope:councillor_liege = { is_independent_ruler = no } } + scope:councillor_liege.top_liege = { + OR = { + can_corrupt_specific_trigger = { BEING = $BEING$ MAGIC = $MAGIC$ } + faith = { + OR = { + has_doctrine = doctrine_$MAGIC$_magic_approved + has_doctrine = doctrine_$MAGIC$_magic_accepted + } + } + } + NOT = { + has_trait = $BEING_OPPOSITE$ + } + } + } +} + +# Check if province is corrupted with the modifier beneficial to the liege, with any magic type +has_beneficial_corruption_this_province_trigger = { + OR = { + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_light BEING_OPPOSITE = being_void MAGIC = light MOD = county_corruption_light_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_void BEING_OPPOSITE = being_light MAGIC = shadow MOD = county_corruption_void_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_order BEING_OPPOSITE = being_demon MAGIC = order MOD = county_corruption_arcane_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_demon BEING_OPPOSITE = being_order MAGIC = disorder MOD = county_corruption_fel_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_life BEING_OPPOSITE = being_undead MAGIC = life MOD = county_corruption_life_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_undead BEING_OPPOSITE = being_life MAGIC = death MOD = county_corruption_death_modifier } + } +} + +has_same_corruption_trigger = { + trigger_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_light_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_light_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_void_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_void_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_arcane_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_arcane_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_fel_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_fel_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_life_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_life_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_death_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_death_modifier + } + } + trigger_else = { + always = no + } +} + +####################### +# Can be corrupted # +####################### + +# Check if the character is allowed the Corrupt action instead of Purge +can_corrupt_trigger = { + OR = { + has_being_trait_trigger = yes + has_culture_being_trait_gfx_trigger = yes + AND = { + evil_public_religion_trigger = yes + faith = { + OR = { + has_doctrine = doctrine_light_magic_approved + has_doctrine = doctrine_shadow_magic_approved + has_doctrine = doctrine_order_magic_approved + has_doctrine = doctrine_disorder_magic_approved + has_doctrine = doctrine_life_magic_approved + has_doctrine = doctrine_death_magic_approved + } + } + } + } +} + +# Check if character can corrupt a specific magic type +can_corrupt_specific_trigger = { + OR = { + has_trait = $BEING$ + culture = { + has_clothing_gfx = $BEING$_gfx + } + AND = { + evil_public_religion_trigger = yes + faith = { + has_doctrine = doctrine_$MAGIC$_magic_approved + } + } + } +} + +can_corrupt_at_game_start_specific_trigger = { + OR = { + culture = { + has_clothing_gfx = $BEING$_gfx + } + AND = { + evil_public_religion_trigger = yes + faith = { + has_doctrine = doctrine_$MAGIC$_magic_approved + } + } + } +} + +# This is very clunky, but also the only way to get the tooltip to work properly +can_corrupt_this_province_valid_trigger = { + trigger_if = { + limit = { + OR = { + NOT = { has_county_modifier = $MOD$ } + NOT = { culture = scope:councillor_liege.culture } + NOT = { faith = scope:councillor_liege.faith } + } + } + always = yes + } + trigger_else = { + custom_tooltip = { + text = COUNTY_IS_YOUR_CULTURE + always = no + } + custom_tooltip = { + text = COUNTY_IS_YOUR_FAITH + always = no + } + custom_tooltip = { + text = COUNTY_ALREADY_CORRUPTED + always = no + } + } +} + +# Check if the liege will approve corruption, with a specific magic type +can_corrupt_this_province_liege_trigger = { + trigger_if = { + limit = { scope:councillor_liege = { is_independent_ruler = no } } + custom_tooltip = { + text = genocide_liege_disapproves + scope:councillor_liege.top_liege = { + can_corrupt_specific_trigger = { BEING = $BEING$ MAGIC = $MAGIC$ } + } + } + } +} + +# Check if the Corrupt task can be used on a county, with a any magic type +allow_corrupt_this_province_trigger = { + trigger_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_light_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_light MAGIC = light } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_void_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_void MAGIC = shadow } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_arcane_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_order MAGIC = order } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_fel_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_demon MAGIC = disorder } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_life_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_life MAGIC = life } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_death_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_undead MAGIC = death } + } + trigger_else = { + always = no + } +} + +################################# +# Corruption modifier scale # +################################# + +corruption_scale_specific_trigger = { + var:corruption_type ?= flag:$MOD$ + holder = { + trigger_if = { + limit = { + $IS_EXTREME$ = yes + } + NOT = { + has_trait = $BEING_OPPOSITE$ + } + } + OR = { + trigger_if = { + limit = { + $IS_EXTREME$ = yes + } + OR = { + has_trait = $BEING$ + culture = { + has_clothing_gfx = $BEING$_gfx + } + } + } + faith = { + has_doctrine = doctrine_$MAGIC$_magic_$MAGIC_LEVEL$ + } + } + } +} + +corruption_scale_extreme_pos_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_light BEING_OPPOSITE = being_void MAGIC = light MAGIC_LEVEL = approved MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_void BEING_OPPOSITE = being_light MAGIC = shadow MAGIC_LEVEL = approved MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_order BEING_OPPOSITE = being_demon MAGIC = order MAGIC_LEVEL = approved MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_demon BEING_OPPOSITE = being_order MAGIC = disorder MAGIC_LEVEL = approved MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_life BEING_OPPOSITE = being_undead MAGIC = life MAGIC_LEVEL = approved MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_undead BEING_OPPOSITE = being_life MAGIC = death MAGIC_LEVEL = approved MOD = county_corruption_death_modifier } + } +} + +corruption_scale_mild_pos_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_light BEING_OPPOSITE = being_void MAGIC = light MAGIC_LEVEL = accepted MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_void BEING_OPPOSITE = being_light MAGIC = shadow MAGIC_LEVEL = accepted MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_order BEING_OPPOSITE = being_demon MAGIC = order MAGIC_LEVEL = accepted MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_demon BEING_OPPOSITE = being_order MAGIC = disorder MAGIC_LEVEL = accepted MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_life BEING_OPPOSITE = being_undead MAGIC = life MAGIC_LEVEL = accepted MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_undead BEING_OPPOSITE = being_life MAGIC = death MAGIC_LEVEL = accepted MOD = county_corruption_death_modifier } + } +} + +corruption_scale_extreme_neg_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_void BEING_OPPOSITE = being_light MAGIC = light MAGIC_LEVEL = crime MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_light BEING_OPPOSITE = being_void MAGIC = shadow MAGIC_LEVEL = crime MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_demon BEING_OPPOSITE = being_order MAGIC = order MAGIC_LEVEL = crime MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_order BEING_OPPOSITE = being_demon MAGIC = disorder MAGIC_LEVEL = crime MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_undead BEING_OPPOSITE = being_life MAGIC = life MAGIC_LEVEL = crime MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_life BEING_OPPOSITE = being_undead MAGIC = death MAGIC_LEVEL = crime MOD = county_corruption_death_modifier } + } +} + +corruption_scale_mild_neg_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_void BEING_OPPOSITE = being_light MAGIC = light MAGIC_LEVEL = shunned MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_light BEING_OPPOSITE = being_void MAGIC = shadow MAGIC_LEVEL = shunned MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_demon BEING_OPPOSITE = being_order MAGIC = order MAGIC_LEVEL = shunned MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_order BEING_OPPOSITE = being_demon MAGIC = disorder MAGIC_LEVEL = shunned MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_undead BEING_OPPOSITE = being_life MAGIC = life MAGIC_LEVEL = shunned MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_life BEING_OPPOSITE = being_undead MAGIC = death MAGIC_LEVEL = shunned MOD = county_corruption_death_modifier } + } +} + +################################# +# Cleanse # +################################# + +allow_cleanse_this_province_trigger = { + has_corruption_modifier_trigger = yes + NOT = { + has_beneficial_corruption_this_province_trigger = yes + } +} + +################################# +# Purge # +################################# + +# Monster cultures can genocide own heritage +monster_culture_trigger = { + OR = { + culture = culture:scourge + culture = culture:naga + culture = culture:satyr + culture = culture:faldorei + } +} + +# Can this character genocide their own heritage +can_genocide_own_culture_group_trigger = { + OR = { + monster_culture_trigger = yes + culture = { + has_cultural_pillar = heritage_mogu + } + $LIEGE$ = { + OR = { + monster_culture_trigger = yes + culture = { + has_cultural_pillar = heritage_mogu + } + } + } + } +} + +# Can this character genocide their own religion +can_genocide_own_religion_trigger = { + always = no + OR = { + $LIEGE$ = { + + } + } +} + +# Check if genocide should be allowed because they are evil +can_genocide_evil_trigger = { + OR = { + is_aggressive_trigger = yes + $LIEGE$ = { is_aggressive_trigger = yes } + evil_public_religion_trigger = yes + $LIEGE$ = { evil_public_religion_trigger = yes } + } +} + +has_faith_hostility_trigger = { + faith = { + faith_hostility_level = { + target = $LIEGE$.faith + value >= faith_$LEVEL$_level + } + } +} + +allow_character_genocide_this_province_culture_trigger = { + # These cultures can be genocided by their own group + OR = { + trigger_if = { + limit = { + can_genocide_own_culture_group_trigger = { LIEGE = $CHARACTER$ } + } + NOT = { culture = $CHARACTER$.culture } + } + trigger_else = { + NOT = { culture = { has_same_culture_heritage = $CHARACTER$.culture } } + } + + AND = { + NOT = { culture = $CHARACTER$.culture } + can_genocide_evil_trigger = { LIEGE = $CHARACTER$ } + } + } +} + +allow_genocide_this_province_parent_culture_trigger = { + trigger_if = { # AI shouldn't genocide parent/child cultures + limit = { + scope:councillor_liege = { + is_ai = yes + } + OR = { + scope:councillor_liege.culture = { + OR = { + is_hybrid_culture = yes + is_divergent_culture = yes + } + } + culture = { + OR = { + is_hybrid_culture = yes + is_divergent_culture = yes + } + } + } + } + culture = { + save_temporary_scope_as = culture_check + NOR = { + scope:councillor_liege.culture = { + any_parent_culture = { + this = scope:culture_check + } + } + any_parent_culture = { + this = scope:councillor_liege.culture + } + } + } + } +} + +allow_genocide_this_province_culture_trigger = { + allow_character_genocide_this_province_culture_trigger = { CHARACTER = $CHARACTER$ } + trigger_if = { # If the character is not independent, make sure their liege would approve + limit = { scope:councillor_liege = { is_independent_ruler = no } } + allow_character_genocide_this_province_culture_trigger = { CHARACTER = $CHARACTER$.top_liege } + } +} + +allow_character_genocide_this_province_religion_trigger = { + OR = { + # These religions can be genocided by their own group + trigger_if = { + limit = { + can_genocide_own_religion_trigger = { LIEGE = $CHARACTER$ } + } + NOT = { faith = $CHARACTER$.faith } + has_faith_hostility_trigger = { LIEGE = $CHARACTER$ LEVEL = astray } + } + trigger_else = { + NOT = { religion = $CHARACTER$.religion } + has_faith_hostility_trigger = { LIEGE = $CHARACTER$ LEVEL = hostile } + } + + AND = { + NOT = { faith = $CHARACTER$.faith } + can_genocide_evil_trigger = { LIEGE = $CHARACTER$ } + } + } +} + +allow_genocide_this_province_religion_trigger = { + allow_character_genocide_this_province_religion_trigger = { CHARACTER = $CHARACTER$ } + trigger_if = { # If the character is not independent, make sure their liege would approve + limit = { scope:councillor_liege = { is_independent_ruler = no } } + allow_character_genocide_this_province_religion_trigger = { CHARACTER = $CHARACTER$.top_liege } + } +} + +# This is the dumbest shit I've ever created +# Can't use OR = {} because the tooltip will only display triggers one level deep, so I came up with this shit instead +# Don't crucify me please +allow_genocide_this_province_trigger = { + trigger_if = { + limit = { + scope:councillor_liege = { + is_ai = yes + } + } + + NOT = { + scope:councillor_liege = { # AI should never genocide if they can cleanse first + any_sub_realm_county = { + allow_cleanse_this_province_trigger = yes + } + } + } + } + trigger_if = { + limit = { + OR = { + AND = { + allow_character_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + NOT = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + NOT = { + allow_character_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege.top_liege } + } + } + AND = { + NOT = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + allow_character_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + NOT = { + allow_character_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege.top_liege } + } + } + } + } + + custom_tooltip = { + text = genocide_liege_disapproves + always = no + } + } + trigger_else_if = { + limit = { + NAND = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + custom_tooltip = { + text = genocide_invalid_culture_faith + always = no + } + } + trigger_else = { + always = yes + } +} \ No newline at end of file diff --git a/common/scripted_triggers/wc_his_character_triggers.txt b/common/scripted_triggers/wc_his_character_triggers.txt index ed7b11142b..875c3dfbc6 100644 --- a/common/scripted_triggers/wc_his_character_triggers.txt +++ b/common/scripted_triggers/wc_his_character_triggers.txt @@ -541,6 +541,16 @@ is_nerzhul_trigger = { } } } +is_mankrik_trigger = { + exists = this + exists = character:mankrik + this = character:mankrik +} +is_nazgrim_trigger = { + exists = this + exists = character:nazgrim + this = character:nazgrim +} # Dwarves is_magni_trigger = { @@ -718,6 +728,21 @@ is_easteregg10_trigger = { exists = character:easteregg10 # Maud'Dib Usul (Easter Egg) this = character:easteregg10 # Maud'Dib Usul (Easter Egg) } +is_easteregg11_trigger = { + exists = this + exists = character:easteregg11 # Tcha'Du (Easter Egg) + this = character:easteregg11 # Tcha'Du (Easter Egg) +} +is_easteregg12_trigger = { + exists = this + exists = character:easteregg12 # Kuk'Ald (Easter Egg) + this = character:easteregg12 # Kuk'Ald (Easter Egg) +} +is_easteregg13_trigger = { + exists = this + exists = character:easteregg13 # Shrok (Easter Egg) + this = character:easteregg13 # Shrok (Easter Egg) +} #Patreons @@ -1031,6 +1056,8 @@ is_any_historical_character_trigger = { is_draka_trigger = yes is_nazgrel_trigger = yes is_rexxar_trigger = yes + is_mankrik_trigger = yes + is_nazgrim_trigger = yes # Dwarves is_magni_trigger = yes @@ -1076,6 +1103,9 @@ is_any_historical_character_trigger = { is_easteregg8_trigger = yes is_easteregg9_trigger = yes is_easteregg10_trigger = yes + is_easteregg11_trigger = yes + is_easteregg12_trigger = yes + is_easteregg13_trigger = yes #Patreons diff --git a/common/scripted_triggers/wc_religious_triggers.txt b/common/scripted_triggers/wc_religious_triggers.txt index 81ebbfef40..8dcbdce58c 100644 --- a/common/scripted_triggers/wc_religious_triggers.txt +++ b/common/scripted_triggers/wc_religious_triggers.txt @@ -392,7 +392,9 @@ evil_public_religion_trigger = { } scope:faith = { - has_doctrine = doctrine_pluralism_dark + OR = { + has_doctrine = doctrine_pluralism_dark + } } } diff --git a/events/councillor_task_events/wc_genocide_task_events.txt b/events/councillor_task_events/wc_genocide_task_events.txt new file mode 100644 index 0000000000..7a2d369cbf --- /dev/null +++ b/events/councillor_task_events/wc_genocide_task_events.txt @@ -0,0 +1,1909 @@ +namespace = genocide_task + +genocide_task.0001 = { + type = character_event + title = genocide_task.0001.t + desc = genocide_task.0001.desc + theme = death + left_portrait = { + character = scope:councillor_liege + animation = personality_callous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + scope:county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + scope:county = { + every_neighboring_county = { + limit = { + this.holder.top_liege = scope:county.holder.top_liege + } + + add_county_modifier = { + modifier = corruption_disease_modifier + days = 100 + } + } + } + } + + option = { + name = genocide_task.0001.a + + stress_impact = { + zealous = major_dread_loss + sadistic = major_dread_loss + arbitrary = major_dread_loss + callous = major_dread_loss + + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0002 = { + type = character_event + title = genocide_task.0002.t + desc = genocide_task.0002.desc + theme = martial + override_background = { reference = burning_building } + left_portrait = { + character = scope:councillor + animation = worry + } + + right_portrait = { + character = scope:councillor_liege + animation = personality_rational + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial <= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + stress_impact = { + paranoid = minor_stress_impact_gain + } + + scope:county = { + add_county_modifier = { + modifier = genocide_marauding_forces_modifier + days = 100 + } + + every_neighboring_county = { + add_county_modifier = { + modifier = genocide_marauding_forces_modifier + days = 100 + } + } + + culture = { + change_cultural_acceptance = { + target = scope:councillor_liege.culture + value = -5 + desc = genocide_task.0002.accpetance + } + } + } + } + + option = { + name = genocide_task.0002.a + + add_dread = 25 + add_gold = 25 + + stress_impact = { + forgiving = 25 + just = 25 + generous = 25 + compassionate = 25 + sadistic = -25 + arbitrary = -25 + callous = -25 + wrathful = -25 + vengeful = -25 + } + + scope:county = { + + remove_county_modifier = genocide_marauding_forces_modifier + add_county_modifier = { + modifier = genocide_purged_marauders_modifier + days = 100 + } + + every_neighboring_county = { + remove_county_modifier = genocide_marauding_forces_modifier + add_county_modifier = { + modifier = genocide_purged_marauders_modifier + days = 100 + } + } + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = -1.0 + } + } + } + + option = { + name = genocide_task.0002.b + + add_dread = -25 + + stress_impact = { + paranoid = minor_stress_impact_gain + ambitious = minor_stress_impact_gain + wrathful = minor_stress_impact_gain + vengeful = minor_stress_impact_gain + } + + ai_chance = { + base = 25 + + ai_value_modifier = { + ai_compassion = 1.0 + } + } + } +} + +genocide_task.0101 = { + type = character_event + title = genocide_task.0101.t + desc = genocide_task.0101.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = anger + } + + lower_left_portrait = { + character = scope:councillor + } + + right_portrait = { + character = scope:champion + animation = aggressive_spear + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + if = { + limit = { + scope:county = { + OR = { + has_county_modifier = county_corruption_light_modifier + has_county_modifier = county_corruption_arcane_modifier + has_county_modifier = county_corruption_life_modifier + } + } + } + genocide_spawn_champion_effect = { CULTURE = scope:county.culture FAITH = scope:county.faith GOOD = yes } + } + else = { + genocide_spawn_champion_effect = { CULTURE = scope:county.culture FAITH = scope:county.faith GOOD = no } + } + + scope:champion = { + if = { + limit = { + has_being_trait_trigger = no + } + + genocide_add_champion_being_trait_effect = yes + } + } + } + + option = { + name = genocide_task.0101.a + duel = { + skill = prowess + target = scope:champion + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + send_interface_toast = { + add_prestige = minor_prestige_gain + scope:champion = { + override_death_killer_effect = { death_reason = death_duel killer = scope:councillor_liege } + } + title = travel_events.2200.b.success + left_icon = scope:champion + } + } + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + add_prestige = medium_prestige_loss + random_list = { + 80 = { + root= { + send_interface_toast = { + current_travel_plan = { + every_entourage_character = { + custom = every_entourage_tt + add_opinion = { + target = root + modifier = respect_opinion + opinion = -20 + } + } + } + + + title = travel_events.2200.b.failure + left_icon = scope:champion + } + } + } + 20 = { + root = { + send_interface_toast = { + title = travel_events.2200.b.failure + left_icon = scope:champion + increase_wounds_no_death_effect = { REASON = fight } + } + } + } + } + } + } + + stress_impact = { + brave = minor_stress_impact_loss + wrathful = medium_stress_impact_loss + craven = medium_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_boldness = 1.0 + } + } + } + + option = { + name = genocide_task.0101.b + scope:councillor = { + duel = { + skill = prowess + target = scope:champion + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + send_interface_toast = { + add_prestige = minor_prestige_gain + scope:champion = { + override_death_killer_effect = { death_reason = death_duel killer = scope:councillor } + } + title = travel_events.2200.b.success + left_icon = scope:champion + } + } + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + add_prestige = medium_prestige_loss + random_list = { + 80 = { + root= { + send_interface_toast = { + current_travel_plan = { + every_entourage_character = { + custom = every_entourage_tt + add_opinion = { + target = root + modifier = respect_opinion + opinion = -20 + } + } + } + + + title = travel_events.2200.b.failure + left_icon = scope:champion + } + } + } + 20 = { + root = { + send_interface_toast = { + title = travel_events.2200.b.failure + left_icon = scope:champion + increase_wounds_no_death_effect = { REASON = fight } + } + } + } + } + } + } + } + + stress_impact = { + brave = minor_stress_impact_gain + wrathful = medium_stress_impact_gain + craven = medium_stress_impact_loss + } + + ai_chance = { + base = 20 + + ai_value_modifier = { + ai_boldness = -1.0 + } + } + } +} + +genocide_task.0102 = { + type = character_event + title = genocide_task.0102.t + desc = genocide_task.0102.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = personality_zealous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + OR = { + AND = { + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + scope:county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0302.a + + trigger = { + exists = capital_county + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + scope:county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + + add_piety = -100 + + scope:county = { + add_county_modifier = genocide_controlled_energy_modifier + every_neighboring_county = { + limit = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + + add_county_modifier = genocide_controlled_energy_modifier + } + } + + ai_chance = { + base = 99 + } + + stress_impact = { + compassionate = minor_stress_impact_loss + arrogant = minor_stress_impact_gain + sadistic = medium_stress_impact_gain + } + } + + option = { + name = genocide_task.0302.b + + trigger = { + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + } + + add_prestige = -100 + + scope:county = { + every_neighboring_county = { + save_temporary_scope_as = temp_county + if = { + limit = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + + add_to_list = counties + } + every_neighboring_county = { + limit = { + NOT = { + this = scope:county + } + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + + add_to_list = counties + } + } + } + + every_in_list = { + list = counties + + add_county_modifier = { + modifier = genocide_wild_energy_modifier + days = 100 + } + } + + stress_impact = { + compassionate = minor_stress_impact_gain + arrogant = minor_stress_impact_loss + sadistic = medium_stress_impact_loss + } + + ai_chance = { + base = 1 + } + } +} + +genocide_task.0201 = { # Re-flavored version of genocide_task.0001 for purge instead of corrupt + type = character_event + title = genocide_task.0201.t + desc = genocide_task.0201.desc + theme = death + left_portrait = { + character = scope:councillor_liege + animation = personality_callous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + scope:county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + scope:county = { + every_neighboring_county = { + limit = { + this.holder.top_liege = scope:county.holder.top_liege + } + + add_county_modifier = { + modifier = genocidal_unrest_modifier + days = 100 + } + } + } + } + + option = { + name = genocide_task.0201.a + + stress_impact = { + zealous = major_stress_impact_loss + sadistic = major_stress_impact_loss + arbitrary = major_stress_impact_loss + callous = major_stress_impact_loss + + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0202 = { + type = character_event + title = genocide_task.0202.t + desc = genocide_task.0202.desc + theme = death + left_portrait = { + character = scope:councillor_liege + animation = anger + } + + right_portrait = { + character = scope:councillor + animation = shame + } + + lower_left_portrait = scope:target_ruler + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + any_neighboring_and_across_water_top_liege_realm_owner = { + any_realm_border_county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + title_province = { + squared_distance = { + target = scope:county + value < squared_distance_medium + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + random_neighboring_and_across_water_top_liege_realm_owner = { + limit = { + any_realm_border_county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + title_province = { + squared_distance = { + target = scope:county + value < squared_distance_medium + } + } + } + } + random_realm_border_county = { + limit = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + title_province = { + squared_distance = { + target = scope:county + value < squared_distance_medium + } + } + } + + save_scope_as = target_county + } + } + + every_realm_county = { + limit = { + trigger_if = { + limit = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + + culture = scope:county.culture + } + + trigger_if = { + limit = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + + faith = scope:county.faith + } + } + + add_county_modifier = { + modifier = genocide_emigration_modifier + days = 100 + } + } + + scope:target_county = { + add_county_modifier = { + modifier = genocide_immigration_modifier + days = 100 + } + + holder.top_liege = { + save_scope_as = target_ruler + } + } + + add_unpressed_claim = scope:target_county + + if = { + limit = { + can_set_relation_potential_rival_trigger = { + CHARACTER = scope:target_ruler + } + } + set_relation_potential_rival = scope:target_ruler + } + + stress_impact = { + paranoid = major_stress_impact_gain + arrogant = minor_stress_impact_gain + trusting = minor_stress_impact_loss + humble = minor_stress_impact_loss + } + } + + option = { + name = genocide_task.0202.a + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0301 = { + type = character_event + title = genocide_task.0301.t + desc = genocide_task.0301.desc + theme = martial + override_background = { reference = burning_building } + left_portrait = { + character = cp:councillor_court_chaplain + animation = personality_zealous + } + + right_portrait = { + character = scope:councillor_liege + animation = throne_room_kneel_1 + } + + lower_center_portrait = { + character = scope:councillor + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + cp:councillor_court_chaplain ?= { + learning > mediocre_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.15 + offset = inverted_high_skill_rating + } + compare_modifier = { + target = cp:councillor_court_chaplain + value = learning + multiplier = 0.05 + offset = inverted_mediocre_skill_rating + } + } + + immediate = { + cp:councillor_court_chaplain = { + save_scope_as = cp_court_chaplain + } + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0301.a + + add_dread = major_dread_gain + + stress_impact = { + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = -1.0 + } + } + } + + option = { + name = genocide_task.0301.b + + add_piety = 100 + + stress_impact = { + zealous = minor_stress_impact_gain + sadistic = minor_stress_impact_gain + callous = minor_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_zeal = 1.0 + } + } + } + + option = { + name = genocide_task.0301.c + + trigger = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + + add_dread = medium_dread_gain + add_piety = minor_piety_value + add_character_modifier = { + modifier = harmonize_with_force_modifier + days = 100 + } # TODO: Infusion 2024, add infusion + + ai_chance = { + base = 250 + } + } +} + +genocide_task.0302 = { + type = character_event + title = genocide_task.0302.t + desc = genocide_task.0302.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = personality_zealous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0302.a + + trigger = { + exists = capital_county + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + } + + add_piety = 100 + + capital_county = { + add_county_modifier = genocide_channelled_energy_modifier + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } + + option = { + name = genocide_task.0302.b + + trigger = { + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + } + } + + add_prestige = 100 + + scope:county = { + every_neighboring_county = { + save_temporary_scope_as = temp_county + if = { + limit = { + has_beneficial_corruption_this_province_trigger = yes + } + + add_to_list = counties + } + every_neighboring_county = { + limit = { + NOT = { + this = scope:county + } + has_beneficial_corruption_this_province_trigger = yes + } + + add_to_list = counties + } + } + } + + every_in_list = { + list = counties + + add_county_modifier = { + modifier = genocide_dispersed_energy_modifier + days = 100 + } + } + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0402 = { + type = character_event + title = genocide_task.0402.t + desc = genocide_task.0402.desc + theme = martial + override_background = { reference = burning_building } + + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + + right_portrait = { + character = scope:councillor + animation = marshal + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0402.a + + add_dread = major_dread_gain + + stress_impact = { + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = -1.0 + } + } + } + + option = { + name = genocide_task.0402.b + + add_prestige = 100 + + stress_impact = { + zealous = minor_stress_impact_gain + sadistic = minor_stress_impact_gain + callous = minor_stress_impact_gain + just = minor_stress_impact_loss + generous = minor_stress_impact_loss + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = 1.0 + } + } + } + + option = { + name = genocide_task.0402.c + skill = learning + + trigger = { + learning >= 20 + } + + stress_impact = { + zealous = minor_stress_impact_loss + sadistic = minor_stress_impact_loss + forgiving = medium_stress_impact_gain + just = minor_stress_impact_gain + generous = medium_stress_impact_gain + compassionate = major_stress_impact_gain + } + + add_dread = medium_dread_gain + add_piety = minor_prestige_value + add_character_modifier = { + modifier = sacrificed_cleansing_targets_modifier + days = 100 + } + + ai_chance = { + base = 250 + } + } +} + +genocide_task.0401 = { + type = character_event + title = genocide_task.0401.t + desc = genocide_task.0401.desc + theme = martial + override_background = { reference = burning_building } + left_portrait = { + character = scope:councillor_liege + animation = ecstasy + } + + right_portrait = { + character = scope:councillor + animation = marshal + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0401.a + + scope:county = { + custom_tooltip = genocide_task.0401.a.progress + change_variable = { + name = purge_population_current_progress + add = 4 + } + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_zeal = 1.0 + } + } + } + + option = { + name = genocide_task.0401.b + + spawn_army = { + name = genocide_task.0401.army_name + levies = { + scope:county = { + add = { + value = total_county_levies + divide = 10 + } + } + if = { + limit = { + highest_held_title_tier = tier_county + } + add = 50 + } + else_if = { + limit = { + highest_held_title_tier = tier_duchy + } + + add = 100 + } + else_if = { + limit = { + highest_held_title_tier = tier_kingdom + } + + add = 250 + } + else_if = { + limit = { + highest_held_title_tier = tier_empire + } + + add = 500 + } + } + location = scope:county.title_province + inheritable = no + uses_supply = yes + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } +} + +genocide_task.0501 = { + type = character_event + title = genocide_task.0501.t + desc = genocide_task.0501.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + + lower_left_portrait = { + character = scope:councillor + } + + right_portrait = { + character = scope:champion + animation = admiration + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + genocide_spawn_champion_effect = { CULTURE = scope:councillor_liege.culture FAITH = scope:councillor_liege.faith GOOD = yes } + } + + option = { + name = genocide_task.0501.a + + add_prestige = 100 + add_courtier = scope:champion + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } + + option = { + name = genocide_task.0501.b + + add_piety = 50 + add_character_modifier = { + modifier = genocide_local_champion_modifier + days = 100 + } + scope:champion = { + silent_disappearance_effect = yes + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_zeal = 1.0 + } + } + } +} + +genocide_task.0502 = { + type = character_event + title = genocide_task.0502.t + desc = genocide_task.0502.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = personality_zealous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + OR = { + has_trait = administrator + scope:councillor = { + has_trait = administrator + } + } + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0502.a + + trigger = { + exists = capital_county + OR = { + has_trait = administrator + scope:councillor = { + has_trait = administrator + } + } + } + + add_gold = 50 + + capital_county = { + add_county_modifier = genocide_focused_resources_modifier + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } + + option = { + name = genocide_task.0502.b + + trigger = { + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + } + } + + add_prestige = 100 + + scope:county = { + every_neighboring_county = { + save_temporary_scope_as = temp_county + if = { + limit = { + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + + add_to_list = counties + } + every_neighboring_county = { + limit = { + NOT = { + this = scope:county + } + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + + add_to_list = counties + } + } + } + + every_in_list = { + list = counties + + add_county_modifier = { + modifier = genocide_dispersed_resources_modifier + days = 100 + } + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = 1.0 + } + } + } +} + +genocide_task.2001 = { + type = character_event + title = genocide_task.2001.t + desc = { + first_valid = { + triggered_desc = { + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + desc = genocide_task.2001.desc.dark + } + triggered_desc = { + trigger = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + desc = genocide_task.2001.desc.light + } + triggered_desc = { + trigger = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + desc = genocide_task.2001.desc.nature + } + triggered_desc = { + trigger = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + desc = genocide_task.2001.desc.arcane + } + } + } + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + right_portrait = { + character = scope:holder + trigger = { + exists = scope:holder + } + animation = grief + } + + immediate = { + if = { + limit = { + scope:county = { + NOT = { + holder = scope:councillor_liege + } + } + } + + scope:county.holder = { + save_scope_as = holder + } + } + + scope:county = { + corrupt_county_effect = { ON_START = no } + } + } + + option = { + name = genocide_task.2001.a + } +} + +genocide_task.2101 = { + type = character_event + title = genocide_task.2101.t + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:county = { + OR = { + has_county_modifier = county_corruption_void_modifier + has_county_modifier = county_corruption_fel_modifier + has_county_modifier = county_corruption_death_modifier + } + } + } + desc = genocide_task.2101.desc.dark + } + triggered_desc = { + trigger = { + has_county_modifier = county_corruption_light_modifier + } + desc = genocide_task.2101.desc.light + } + triggered_desc = { + trigger = { + has_county_modifier = county_corruption_life_modifier + } + desc = genocide_task.2101.desc.nature + } + triggered_desc = { + trigger = { + has_county_modifier = county_corruption_arcane_modifier + } + desc = genocide_task.2101.desc.arcane + } + } + } + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + right_portrait = { + character = scope:holder + trigger = { + exists = scope:holder + } + animation = grief + } + + immediate = { + if = { + limit = { + scope:county = { + NOT = { + holder = scope:councillor_liege + } + } + } + + scope:county.holder = { + save_scope_as = holder + } + } + + scope:county = { + cleanse_county_effect = yes + } + } + + option = { + name = genocide_task.2101.a + } +} + +genocide_task.2201 = { + type = character_event + title = genocide_task.2201.t + desc = { + desc = genocide_task.2201.desc + triggered_desc = { + trigger = { + scope:holder = { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + desc = genocide_task.2201.desc.holder + } + } + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + right_portrait = { + character = scope:holder + trigger = { + exists = scope:holder + } + animation = grief + } + + immediate = { + if = { + limit = { + scope:county = { + NOT = { + holder = scope:councillor_liege + } + } + } + + scope:county.holder = { + save_scope_as = holder + } + } + + scope:county = { + purge_population_effect = yes + } + } + + option = { + name = genocide_task.2201.a + + trigger = { + NOT = { + exists = scope:holder + } + } + } + + option = { + name = genocide_task.2201.a.holder + + trigger = { + scope:holder ?= { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + } + + option = { + name = genocide_task.2201.b + + trigger = { + scope:holder ?= { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + + scope:county = { + create_title_and_vassal_change = { + type = usurped + add_claim_on_loss = yes + save_scope_as = change + } + + change_title_holder = { + holder = scope:councillor_liege + change = scope:change + take_baronies = yes + } + + resolve_title_and_vassal_change = scope:change + } + } + + option = { + name = genocide_task.2201.c + + trigger = { + scope:holder ?= { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + any_held_title = { + tier = tier_county + count = 1 + } + } + } + + scope:county = { + create_title_and_vassal_change = { + type = usurped + add_claim_on_loss = yes + save_scope_as = change + } + + change_title_holder = { + holder = scope:councillor_liege + change = scope:change + take_baronies = yes + } + + resolve_title_and_vassal_change = scope:change + } + + scope:holder = { + override_death_killer_effect = { + death_reason = death_execution + killer = scope:councillor_liege + } + } + } +} \ No newline at end of file diff --git a/gfx/interface/icons/council_task_types/task_purge_population.dds b/gfx/interface/icons/council_task_types/task_purge_population.dds new file mode 100644 index 0000000000..869bac63b1 Binary files /dev/null and b/gfx/interface/icons/council_task_types/task_purge_population.dds differ diff --git a/gfx/interface/icons/council_task_types/task_relocate_population.dds b/gfx/interface/icons/council_task_types/task_relocate_population.dds new file mode 100644 index 0000000000..36a49466c6 Binary files /dev/null and b/gfx/interface/icons/council_task_types/task_relocate_population.dds differ diff --git a/gfx/map/map_object_data/building_locators.txt b/gfx/map/map_object_data/building_locators.txt index 58034555ea..9d296a3c8f 100644 --- a/gfx/map/map_object_data/building_locators.txt +++ b/gfx/map/map_object_data/building_locators.txt @@ -433,7 +433,7 @@ game_object_locator={ } { id=73 - position={ 4042.000000 0.000000 1467.000000 } + position={ 4043.000000 0.000000 1467.000000 } rotation={ -0.000000 -0.000000 -0.000000 1.000000 } scale={ 1.000000 1.000000 1.000000 } } @@ -11143,7 +11143,7 @@ game_object_locator={ } { id=2486 - position={ 4052.000000 0.000000 1446.000000 } + position={ 4047.064941 0.000000 1452.655273 } rotation={ -0.000000 -0.000000 -0.000000 1.000000 } 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 a26c5586d2..b032169eba 100644 --- a/gfx/map/map_object_data/combat_locators.txt +++ b/gfx/map/map_object_data/combat_locators.txt @@ -439,8 +439,8 @@ game_object_locator={ } { id=73 - position={ 4038.000000 0.000000 1461.000000 } - rotation={ -0.000000 -0.000000 -0.000000 1.000000 } + position={ 4040.933350 0.000000 1440.110840 } + rotation={ -0.000000 -0.313299 -0.000000 0.949655 } scale={ 1.000000 1.000000 1.000000 } } { @@ -14779,7 +14779,7 @@ game_object_locator={ } { id=2486 - position={ 4049.000000 0.000000 1448.000000 } + position={ 4039.000000 0.000000 1468.000000 } rotation={ -0.000000 -0.000000 -0.000000 1.000000 } scale={ 1.000000 1.000000 1.000000 } } diff --git a/gfx/map/map_object_data/player_stack_locators.txt b/gfx/map/map_object_data/player_stack_locators.txt index a19a1f3013..8c7b1c2dae 100644 --- a/gfx/map/map_object_data/player_stack_locators.txt +++ b/gfx/map/map_object_data/player_stack_locators.txt @@ -439,7 +439,7 @@ game_object_locator={ } { id=73 - position={ 4051.000000 0.000000 1467.000000 } + position={ 4053.160400 0.000000 1448.437744 } rotation={ -0.000000 -0.000000 -0.000000 1.000000 } scale={ 1.000000 1.000000 1.000000 } } @@ -14779,7 +14779,7 @@ game_object_locator={ } { id=2486 - position={ 4054.000000 0.000000 1443.000000 } + position={ 4046.000000 0.000000 1460.000000 } rotation={ -0.000000 -0.000000 -0.000000 1.000000 } 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 1ab8c29b18..003e305b24 100644 --- a/gfx/map/map_object_data/siege_locators.txt +++ b/gfx/map/map_object_data/siege_locators.txt @@ -433,8 +433,8 @@ game_object_locator={ } { id=73 - position={ 4036.000000 0.000000 1461.000000 } - rotation={ 0.000000 0.923880 0.000000 0.382683 } + position={ 4037.827393 0.000000 1449.619629 } + rotation={ -0.000000 0.815682 -0.000000 0.578500 } scale={ 1.000000 1.000000 1.000000 } } { @@ -11143,8 +11143,8 @@ game_object_locator={ } { id=2486 - position={ 4047.000000 0.000000 1439.000000 } - rotation={ 0.000000 0.952296 0.000000 0.305177 } + position={ 4041.000000 0.000000 1459.000000 } + rotation={ 0.000000 0.992508 0.000000 0.122183 } scale={ 1.000000 1.000000 1.000000 } } { diff --git a/gfx/map/map_object_data/special_building_locators.txt b/gfx/map/map_object_data/special_building_locators.txt index 3a9e6cb921..ad0a291f54 100644 --- a/gfx/map/map_object_data/special_building_locators.txt +++ b/gfx/map/map_object_data/special_building_locators.txt @@ -11143,8 +11143,8 @@ game_object_locator={ } { id=2486 - position={ 4044.000000 0.000000 1443.000000 } - rotation={ -0.000000 -0.916286 -0.000000 -0.400524 } + position={ 4046.081055 0.000000 1444.269653 } + rotation={ -0.000000 0.753195 -0.000000 0.657798 } scale={ 1.000000 1.000000 1.000000 } } { diff --git a/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal.asset b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal.asset new file mode 100644 index 0000000000..e83c7fc1a8 --- /dev/null +++ b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal.asset @@ -0,0 +1,39 @@ +pdxmesh = { + name = "building_special_dark_portal_mesh" + file = "wc_building_special_dark_portal.mesh" + + meshsettings = { + name = "building_special_dark_portalShape" + index = 0 + texture_diffuse = "wc_building_special_dark_portal_diffuse.dds" + texture_normal = "wc_building_special_dark_portal_normal.dds" + texture_specular = "wc_building_special_dark_portal_properties.dds" + shader = "standard_winter" + shader_file = "gfx/FX/pdxmesh.shader" + } +} + +entity = { + name = "building_special_dark_portal_entity" + pdxmesh = "building_special_dark_portal2_mesh" +} + +pdxmesh = { + name = "building_special_dark_portal2_mesh" + file = "wc_building_special_dark_portal2.mesh" + + meshsettings = { + name = "building_special_dark_portal2Shape" + index = 0 + texture_diffuse = "wc_building_special_dark_portal_diffuse.dds" + texture_normal = "wc_building_special_dark_portal_normal.dds" + texture_specular = "wc_building_special_dark_portal_properties.dds" + shader = "standard_winter" + shader_file = "gfx/FX/pdxmesh.shader" + } +} + +entity = { + name = "building_special_dark_portal2_entity" + pdxmesh = "building_special_dark_portal2_mesh" +} \ No newline at end of file diff --git a/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal.mesh b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal.mesh new file mode 100644 index 0000000000..797bf02c0a Binary files /dev/null and b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal.mesh differ diff --git a/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal2.mesh b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal2.mesh new file mode 100644 index 0000000000..1043dc09d5 Binary files /dev/null and b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal2.mesh differ diff --git a/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_diffuse.dds b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_diffuse.dds new file mode 100644 index 0000000000..d76fdfb5c2 Binary files /dev/null and b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_diffuse.dds differ diff --git a/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_normal.dds b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_normal.dds new file mode 100644 index 0000000000..aec3dd3d5e Binary files /dev/null and b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_normal.dds differ diff --git a/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_properties.dds b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_properties.dds new file mode 100644 index 0000000000..2723436435 Binary files /dev/null and b/gfx/models/buildings/special/wc_building_special_dark_portal/wc_building_special_dark_portal_properties.dds differ diff --git a/gfx/models/portraits/attachments/female_headgears/special/metal jaw/wc_female_headgear_special_metaljaw.asset b/gfx/models/portraits/attachments/female_headgears/special/metal jaw/wc_female_headgear_special_metaljaw.asset new file mode 100644 index 0000000000..5211714525 --- /dev/null +++ b/gfx/models/portraits/attachments/female_headgears/special/metal jaw/wc_female_headgear_special_metaljaw.asset @@ -0,0 +1,41 @@ +pdxmesh = { + name = "female_headgear_special_metaljaw_mesh" + file = "wc_female_headgear_special_metaljaw.mesh" + + meshsettings = { + name = "wc_female_headgear_special_metaljawShape" + index = 0 + texture_diffuse = "wc_male_headgear_special_metaljaw_diffuse.dds" + texture_normal = "wc_male_headgear_special_metaljaw_normal.dds" + texture_specular = "wc_male_headgear_special_metaljaw_properties.dds" + shader = "portrait_attachment" + shader_file = "gfx/FX/jomini/portrait.shader" + } +} + +entity = { + name = "female_headgear_special_metaljaw_entity" + pdxmesh = "female_headgear_special_metaljaw_mesh" + +} + +pdxmesh = { + name = "female_headgear_special_leatherjaw_mesh" + file = "wc_female_headgear_special_metaljaw.mesh" + + meshsettings = { + name = "wc_female_headgear_special_metaljawShape" + index = 0 + texture_diffuse = "wc_male_headgear_special_leatherjaw_diffuse.dds" + texture_normal = "wc_male_headgear_special_leatherjaw_normal.dds" + texture_specular = "wc_male_headgear_special_leatherjaw_properties.dds" + shader = "portrait_attachment" + shader_file = "gfx/FX/jomini/portrait.shader" + } +} + +entity = { + name = "female_headgear_special_leatherjaw_entity" + pdxmesh = "female_headgear_special_leatherjaw_mesh" + +} \ No newline at end of file diff --git a/gfx/models/portraits/attachments/female_headgears/special/metal jaw/wc_female_headgear_special_metaljaw.mesh b/gfx/models/portraits/attachments/female_headgears/special/metal jaw/wc_female_headgear_special_metaljaw.mesh new file mode 100644 index 0000000000..d0dd4fe211 Binary files /dev/null and b/gfx/models/portraits/attachments/female_headgears/special/metal jaw/wc_female_headgear_special_metaljaw.mesh differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_diffuse.dds b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_diffuse.dds new file mode 100644 index 0000000000..5f14350db8 Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_diffuse.dds differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_normal.dds b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_normal.dds new file mode 100644 index 0000000000..e3c9ae9479 Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_normal.dds differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_properties.dds b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_properties.dds new file mode 100644 index 0000000000..5fc9445cb0 Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_leatherjaw_properties.dds differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw.asset b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw.asset new file mode 100644 index 0000000000..ea05e4cb59 --- /dev/null +++ b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw.asset @@ -0,0 +1,41 @@ +pdxmesh = { + name = "male_headgear_special_metaljaw_mesh" + file = "wc_male_headgear_special_metaljaw.mesh" + + meshsettings = { + name = "wc_male_headgear_special_metaljawShape" + index = 0 + texture_diffuse = "wc_male_headgear_special_metaljaw_diffuse.dds" + texture_normal = "wc_male_headgear_special_metaljaw_normal.dds" + texture_specular = "wc_male_headgear_special_metaljaw_properties.dds" + shader = "portrait_attachment" + shader_file = "gfx/FX/jomini/portrait.shader" + } +} + +entity = { + name = "male_headgear_special_metaljaw_entity" + pdxmesh = "male_headgear_special_metaljaw_mesh" + +} + +pdxmesh = { + name = "male_headgear_special_leatherjaw_mesh" + file = "wc_male_headgear_special_metaljaw.mesh" + + meshsettings = { + name = "wc_male_headgear_special_metaljawShape" + index = 0 + texture_diffuse = "wc_male_headgear_special_leatherjaw_diffuse.dds" + texture_normal = "wc_male_headgear_special_leatherjaw_normal.dds" + texture_specular = "wc_male_headgear_special_leatherjaw_properties.dds" + shader = "portrait_attachment" + shader_file = "gfx/FX/jomini/portrait.shader" + } +} + +entity = { + name = "male_headgear_special_leatherjaw_entity" + pdxmesh = "male_headgear_special_leatherjaw_mesh" + +} \ No newline at end of file diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw.mesh b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw.mesh new file mode 100644 index 0000000000..33765987a2 Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw.mesh differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_diffuse.dds b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_diffuse.dds new file mode 100644 index 0000000000..2bfa827136 Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_diffuse.dds differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_normal.dds b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_normal.dds new file mode 100644 index 0000000000..cffa4be2e0 Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_normal.dds differ diff --git a/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_properties.dds b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_properties.dds new file mode 100644 index 0000000000..148fbd1f5c Binary files /dev/null and b/gfx/models/portraits/attachments/male_headgears/special/metal jaw/wc_male_headgear_special_metaljaw_properties.dds differ diff --git a/gfx/models/portraits/decals/visual_traits/decal_metaljaw_diffuse.dds b/gfx/models/portraits/decals/visual_traits/decal_metaljaw_diffuse.dds new file mode 100644 index 0000000000..3cb533a1d7 Binary files /dev/null and b/gfx/models/portraits/decals/visual_traits/decal_metaljaw_diffuse.dds differ diff --git a/gfx/models/portraits/decals/visual_traits/decal_metaljaw_normal.dds b/gfx/models/portraits/decals/visual_traits/decal_metaljaw_normal.dds new file mode 100644 index 0000000000..83158fe6ce Binary files /dev/null and b/gfx/models/portraits/decals/visual_traits/decal_metaljaw_normal.dds differ diff --git a/gfx/models/portraits/decals/visual_traits/decal_metaljaw_properties.dds b/gfx/models/portraits/decals/visual_traits/decal_metaljaw_properties.dds new file mode 100644 index 0000000000..a643f708ca Binary files /dev/null and b/gfx/models/portraits/decals/visual_traits/decal_metaljaw_properties.dds differ diff --git a/gfx/models/portraits/female_head/blendshapes/female_bs_no_jaw.mesh b/gfx/models/portraits/female_head/blendshapes/female_bs_no_jaw.mesh new file mode 100644 index 0000000000..e6356f1a98 Binary files /dev/null and b/gfx/models/portraits/female_head/blendshapes/female_bs_no_jaw.mesh differ diff --git a/gfx/models/portraits/female_head/female_head.asset b/gfx/models/portraits/female_head/female_head.asset index 846111688d..e3cfe2a470 100644 --- a/gfx/models/portraits/female_head/female_head.asset +++ b/gfx/models/portraits/female_head/female_head.asset @@ -148,6 +148,7 @@ pdxmesh = { # Warcraft blend_shape = { id = "female_bs_mouth_fangs" type = "blendshapes/female_bs_mouth_fangs.mesh" } + blend_shape = { id = "female_bs_no_jaw" type = "blendshapes/female_bs_no_jaw.mesh" } blend_shape = { id = "female_bs_nose_forward_min" type = "blendshapes/female_bs_nose_forward_min.mesh" } blend_shape = { id = "female_bs_nose_forward_max" type = "blendshapes/female_bs_nose_forward_max.mesh" } @@ -424,8 +425,10 @@ entity = { attribute = { name = "bs_mouth_upper_lip_profile_max" blend_shape = "female_bs_mouth_upper_lip_profile_max" } attribute = { name = "bs_mouth_upper_lip_width_min" blend_shape = "female_bs_mouth_upper_lip_width_min" } attribute = { name = "bs_mouth_upper_lip_width_max" blend_shape = "female_bs_mouth_upper_lip_width_max" } + # Warcraft attribute = { name = "bs_mouth_fangs" blend_shape = "female_bs_mouth_fangs" } + attribute = { name = "bs_no_jaw" blend_shape = "female_bs_no_jaw" } attribute = { name = "bs_nose_forward_min" blend_shape = "female_bs_nose_forward_min" } attribute = { name = "bs_nose_forward_max" blend_shape = "female_bs_nose_forward_max" } diff --git a/gfx/models/portraits/male_head/blendshapes/male_bs_no_jaw.mesh b/gfx/models/portraits/male_head/blendshapes/male_bs_no_jaw.mesh new file mode 100644 index 0000000000..ba20c13f55 Binary files /dev/null and b/gfx/models/portraits/male_head/blendshapes/male_bs_no_jaw.mesh differ diff --git a/gfx/models/portraits/male_head/male_head.asset b/gfx/models/portraits/male_head/male_head.asset index 46e75e5f69..cff5941c69 100644 --- a/gfx/models/portraits/male_head/male_head.asset +++ b/gfx/models/portraits/male_head/male_head.asset @@ -628,6 +628,7 @@ pdxmesh = { # Warcraft blend_shape = { id = "male_bs_mouth_fangs" type = "blendshapes/male_bs_mouth_fangs.mesh" } blend_shape = { id = "male_bs_mouth_tusks" type = "blendshapes/male_bs_mouth_tusks.mesh" } + blend_shape = { id = "male_bs_no_jaw" type = "blendshapes/male_bs_no_jaw.mesh" } blend_shape = { id = "male_bs_nose_forward_min" type = "blendshapes/male_bs_nose_forward_min.mesh" } blend_shape = { id = "male_bs_nose_forward_max" type = "blendshapes/male_bs_nose_forward_max.mesh" } @@ -898,6 +899,7 @@ entity = { # Warcraft attribute = { name = "bs_mouth_fangs" blend_shape = "male_bs_mouth_fangs" } attribute = { name = "bs_mouth_tusks" blend_shape = "male_bs_mouth_tusks" } + attribute = { name = "bs_no_jaw" blend_shape = "male_bs_no_jaw" } attribute = { name = "bs_nose_forward_min" blend_shape = "male_bs_nose_forward_min" } attribute = { name = "bs_nose_forward_max" blend_shape = "male_bs_nose_forward_max" } diff --git a/gfx/portraits/accessories/wc_clothes.txt b/gfx/portraits/accessories/wc_clothes.txt index 8e82dba75f..b95b8ebf9c 100644 --- a/gfx/portraits/accessories/wc_clothes.txt +++ b/gfx/portraits/accessories/wc_clothes.txt @@ -421,9 +421,11 @@ female_clothes_secular_scourge_war_nobility_01_low = { ### High Elven male_clothes_secular_high_elven_heritage = { + set_tags = "shrink_arms,shrink_chest,shrink_belly" entity = { required_tags = "" shared_pose_entity = torso entity = male_clothes_secular_high_elven_heritage_entity } } female_clothes_secular_high_elven_heritage = { + set_tags = "shrink_arms,shrink_chest,shrink_belly" entity = { required_tags = "" shared_pose_entity = torso entity = female_clothes_secular_high_elven_heritage_entity } } diff --git a/gfx/portraits/accessories/wc_headgear.txt b/gfx/portraits/accessories/wc_headgear.txt index 8aeea567c2..b226e6a2d4 100644 --- a/gfx/portraits/accessories/wc_headgear.txt +++ b/gfx/portraits/accessories/wc_headgear.txt @@ -56,6 +56,28 @@ female_headgears_secular_scourge_skull_hood_01 = { entity = { required_tags = "" shared_pose_entity = head entity = female_headgears_secular_scourge_skull_hood_01_entity } } +male_headgear_special_metaljaw = { + set_tags = "no_beard,no_jaw" + + entity = { required_tags = "no_jaw" shared_pose_entity = head entity = male_headgear_special_metaljaw_entity } +} +female_headgear_special_metaljaw = { + set_tags = "no_beard,no_jaw" + + entity = { required_tags = "no_jaw" shared_pose_entity = head entity = female_headgear_special_metaljaw_entity } +} + +male_headgear_special_leatherjaw = { + set_tags = "no_beard,no_jaw" + + entity = { required_tags = "no_jaw" shared_pose_entity = head entity = male_headgear_special_leatherjaw_entity } +} +female_headgear_special_leatherjaw = { + set_tags = "no_beard,no_jaw" + + entity = { required_tags = "no_jaw" shared_pose_entity = head entity = female_headgear_special_leatherjaw_entity } +} + #Lich King male_headgears_secular_helm_of_dom = { set_tags = "cap" @@ -578,4 +600,4 @@ female_headgear_secular_orc_war_nobility = { entity = { required_tags = "no_headgear" shared_pose_entity = head } entity = { required_tags = "" shared_pose_entity = head entity = female_headgear_secular_orc_war_nobility_entity } -} \ No newline at end of file +} diff --git a/gfx/portraits/portrait_modifiers/00_custom_special.txt b/gfx/portraits/portrait_modifiers/00_custom_special.txt index dda1fdd70a..37d1bdaaeb 100644 --- a/gfx/portraits/portrait_modifiers/00_custom_special.txt +++ b/gfx/portraits/portrait_modifiers/00_custom_special.txt @@ -141,4 +141,15 @@ has_no_portrait_trigger = no } } + + # Warcraft + add_accessory_modifiers = { + gene = special_metaljaw + template = metaljaw + + is_valid_custom = { + # Warcraft + has_no_portrait_trigger = no + } + } } diff --git a/gfx/portraits/portrait_modifiers/05_headgear_situational.txt b/gfx/portraits/portrait_modifiers/05_headgear_situational.txt index e37bd81d77..c62f010ec1 100644 --- a/gfx/portraits/portrait_modifiers/05_headgear_situational.txt +++ b/gfx/portraits/portrait_modifiers/05_headgear_situational.txt @@ -231,4 +231,41 @@ } } } + + # Warcraft + special_metaljaw = { + dna_modifiers = { + accessory = { + mode = add + gene = special_metaljaw + template = metaljaw + range = { 0 1 } + value = 0.6 + } + } + outfit_tags = { metal_jaw } + weight = { + base = 0 + modifier = { + add = 5 + has_trait = being_undead + } + modifier = { + factor = 0 + culture ?= { has_cultural_pillar = heritage_highborne } + is_uther_trigger = yes + is_arthas_trigger = yes + is_calia_trigger = yes + is_kelthuzad_trigger = yes + is_godfrey_trigger = yes + is_jandice_trigger = yes + is_alexi_trigger = yes + is_sally_whitemane_trigger = yes + } + } + + is_valid_custom = { + has_no_portrait_trigger = no + } + } } diff --git a/gfx/portraits/portrait_modifiers/50_beards_scripted_characters.txt b/gfx/portraits/portrait_modifiers/50_beards_scripted_characters.txt index 9635e080b3..43cad36cca 100644 --- a/gfx/portraits/portrait_modifiers/50_beards_scripted_characters.txt +++ b/gfx/portraits/portrait_modifiers/50_beards_scripted_characters.txt @@ -41,9 +41,12 @@ beards_scripted_characters = { is_easteregg8_trigger = yes is_turalyon_trigger = yes is_kaelthas_trigger = yes - is_alexi_trigger = yes - is_zediwan_trigger = yes + is_alexi_trigger = yes + is_zediwan_trigger = yes is_easteregg10_trigger = yes + is_easteregg11_trigger = yes + is_easteregg12_trigger = yes + is_easteregg13_trigger = yes } } } @@ -502,10 +505,17 @@ beards_scripted_characters = { template = scripted_character_beards_01 value = 0.48 # For the randomness to work correctly } - } + } weight = { base = 0 - # leave this modifier last + modifier = { + add = 200 + OR = { + is_mankrik_trigger = yes + is_nazgrim_trigger = yes + } + } + # leave this modifier last modifier = { factor = 0 has_no_portrait_trigger = yes diff --git a/gfx/portraits/portrait_modifiers/50_hairstyles_scripted_characters.txt b/gfx/portraits/portrait_modifiers/50_hairstyles_scripted_characters.txt index 49e1bf5f36..3b217cc6a8 100644 --- a/gfx/portraits/portrait_modifiers/50_hairstyles_scripted_characters.txt +++ b/gfx/portraits/portrait_modifiers/50_hairstyles_scripted_characters.txt @@ -32,6 +32,9 @@ hairstyles_scripted_characters = { is_gelbin_trigger = yes is_spasmus_trigger = yes is_attha_trigger = yes + is_easteregg13_trigger = yes + is_mankrik_trigger = yes #Actually has a chonmage hairstyle but it's not added yet + is_nazgrim_trigger = yes #Actually has a chonmage hairstyle but it's not added yet } } } @@ -666,32 +669,20 @@ hairstyles_scripted_characters = { template = scripted_character_hairstyles_01 value = 0.54 # For the randomness to work correctly } - } + } weight = { base = 0 modifier = { add = 200 - is_robert_garithos_trigger = yes - } - modifier = { - add = 200 - is_danath_trigger = yes - } - modifier = { - add = 200 - is_khadgar_trigger = yes - } - modifier = { - add = 200 - is_dagran_trigger = yes - } - modifier = { - add = 200 - is_easteregg2_trigger = yes # Garith Greenwood - } - modifier = { - add = 200 - is_easteregg9_trigger = yes # Ion of Hasic + OR = { + is_robert_garithos_trigger = yes + is_danath_trigger = yes + is_khadgar_trigger = yes + is_dagran_trigger = yes + is_easteregg2_trigger = yes # Garith Greenwood + is_easteregg9_trigger = yes # Ion of Hasic + is_easteregg12_trigger = yes # Kuk'Ald + } } # leave this modifier last modifier = { diff --git a/gfx/portraits/portrait_modifiers/99_special.txt b/gfx/portraits/portrait_modifiers/99_special.txt index 9036b0ef02..1b0dd0cfae 100644 --- a/gfx/portraits/portrait_modifiers/99_special.txt +++ b/gfx/portraits/portrait_modifiers/99_special.txt @@ -261,6 +261,26 @@ long_beard = { } } +# Warcraft +no_jaw = { + + usage = game + no_jaw = { + dna_modifiers = { + morph = { + mode = add + gene = gene_bs_no_jaw + template = no_jaw + value = 1 + } + } + weight = { + base = 500 + } + } +} + + # Warcraft no_portrait = { usage = game diff --git a/history/characters/10000_orc.txt b/history/characters/10000_orc.txt index 9584adfe4c..4d69963231 100644 --- a/history/characters/10000_orc.txt +++ b/history/characters/10000_orc.txt @@ -3541,6 +3541,121 @@ rokaro={ 658.2.19={ death=yes } } +mankrik={ + name=Mankrik + dna=mankrik_dna + culture=burning_blade religion=orcish_shamanism + sexuality = heterosexual + trait=education_martial_2 trait=education_martial_prowess_2 trait=vengeful trait=diligent trait=brave + trait=lifestyle_blademaster trait=rowdy + disallow_random_traits = yes + 574.1.1={ birth=yes trait=creature_orc } + 582.1.1={ + effect = { + set_relation_friend = character:olgra + } + } + 586.1.1={ + effect = { + set_variable = { name = wc_strength_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_physical_trait_value } + set_variable = { name = wc_endurance_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_physical_trait_value } + set_relation_soulmate = character:olgra + add_trait_xp = { + trait = lifestyle_blademaster + value = 50 + } + } + add_spouse = olgra + } + 603.1.1={ + culture = durotaric + } + 603.8.29={ + employer = 10655 + } + 616.1.8={ + trait = one_eyed + } + 638.2.19={ death=yes } +} +olgra={ #Mankrik's Wife + name=Olgra + female=yes + culture=frostwolf religion=orcish_shamanism + sexuality = heterosexual + trait=education_martial_2 trait=education_martial_prowess_2 trait=wrathful trait=vengeful trait=brave + trait=rowdy + disallow_random_traits = yes + 574.1.1={ birth=yes trait=creature_orc } + 586.1.1={ + effect = { + set_variable = { name = wc_strength_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_physical_trait_value } + set_variable = { name = wc_endurance_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_physical_trait_value } + } + } + 603.1.1={ + culture = durotaric + } + 603.8.29={ + employer = 10655 + } + 608.1.1={ + death = { + death_reason = death_battle #killed by quilboars + } + } +} + +nazgrim={ + name=Nazgrim + dna=nazgrim_dna + culture=warsong religion=orcish_shamanism + martial=7 diplomacy=4 stewardship=6 intrigue=5 learning=4 + trait=education_martial_4 trait=education_martial_prowess_2 trait=loyal + trait=honest trait=diligent trait=stubborn trait=brave + disallow_random_traits = yes + 568.1.12={ + birth=yes trait=creature_orc + } + 580.1.12={ + effect={ + set_variable = { name = wc_endurance_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_3_physical_trait_value } + set_variable = { name = wc_strength_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_3_physical_trait_value } + } + # trait=physical_lifestyle_endurance_3 + # trait=physical_lifestyle_strength_3 + } + 588.2.1={ + employer = 10200 + effect={ + add_opinion = { modifier = loyal_servant target = character:10200 } + } + } + 611.1.12={ + employer=garrosh + effect={ + add_opinion = { modifier = loyal_servant target = character:garrosh } + } + } + 613.12.10 = { + effect = { + if = { + limit = { + game_start_date <= 615.2.1 + } + death = { + death_reason = death_battle # kiled by adventurers in the Siege of Orgrimmar + } + } + } + } + 615.2.1 = { + trait = being_undead # brought back as a death knight during Legion + set_variable = { name = wc_death_magic_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_magic_trait_value } + } + 738.2.19={ death=yes } +} + #dynasty = warsong1 warsong1 = { #Generated name = Mugturfur diff --git a/history/characters/gilblin.txt b/history/characters/gilblin.txt index cf766a8427..1e3d2ca127 100644 --- a/history/characters/gilblin.txt +++ b/history/characters/gilblin.txt @@ -6,4 +6,22 @@ gilblin001 = { #Generated religion = water_deities culture = gilblin 557.9.15 = { birth = yes trait = creature_gilblin } +} +gilblin002 = { #Argurgle + name = Argurgle + dynasty=28901 #Mistyreed + culture = gilblin + religion = water_deities + martial=7 diplomacy=4 stewardship=7 intrigue=5 learning=8 + trait=education_stewardship_4 trait = ambitious trait = just trait = gluttonous trait = patient + 554.9.6={ birth = yes trait = creature_gilblin } +} +gilblin003 = { #Vez + name = Vez + dynasty=28906 #Brackfin + culture = gilblin + religion = water_deities + martial=6 diplomacy=3 stewardship=3 intrigue=8 learning=4 + trait=education_stewardship_4 trait = greedy trait = callous trait = stubborn trait = arrogant + 559.2.1={ birth = yes trait = creature_gilblin } } \ No newline at end of file diff --git a/history/characters/wc_easteregg_characters.txt b/history/characters/wc_easteregg_characters.txt index 70d0ba7349..c498eb921c 100644 --- a/history/characters/wc_easteregg_characters.txt +++ b/history/characters/wc_easteregg_characters.txt @@ -328,6 +328,7 @@ easteregg9 = { employer = 64506 # Soxqizil of Trade Coalition } } + easteregg10 = { name = "Muad'Dib" dna = muaddib_dna @@ -356,3 +357,104 @@ easteregg10 = { trait = creature_human } } + +easteregg11={ #The orc from the WC2 manual + name="Tcha'Du" + dna=1995_orc_dna #based on https://warcraft.wiki.gg/images/6/69/Head.jpg + culture=bonechewer religion=orcish_fel + sexuality = heterosexual + trait = education_martial_2 trait = education_martial_prowess_2 + trait = brave trait = sadistic trait = arbitrary + trait = rowdy trait = fecund trait = viking trait = reaver + 567.1.1={ + birth=yes trait=creature_orc + } + 583.1.1={ + culture = twilights_hammer + learn_language = language_ogre + effect={ + set_variable = { name = wc_endurance_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_physical_trait_value } + set_variable = { name = wc_strength_physical_lifestyle_additional_perks_variable value = wc_perks_needed_for_level_2_physical_trait_value } + } + } + 588.1.1={ #Thrives during the Second War + add_prestige = 100 + add_gold = 50 + remove_trait=education_martial_2 + add_trait=education_martial_3 + remove_trait=education_martial_prowess_2 + add_trait=education_martial_prowess_3 + } + 666.1.1={ death=yes } +} +easteregg12={ #Stormwind's Visitor, a.k.a. the Warcraft 1995 - Warcraft 2023 guy (technically 2021 but whatever) + name="Kuk'Ald" + dna=2023_orc_dna #based on https://www.reddit.com/media?url=https%3A%2F%2Fi.redd.it%2F9aq64mc9y6181.jpg + culture=twilights_hammer religion=orcish_shamanism + father = easteregg11 + trait = education_diplomacy_1 + trait = forgiving trait = compassionate trait = trusting + trait = curious trait = lifestyle_traveler #Tourist + disallow_random_traits = yes + 588.1.1={ #Born during the Second War + birth=yes trait=creature_orc + } + 603.1.1={ + culture = durotaric + learn_language = language_common + give_nickname = nick_the_soydrinker + } + 606.1.1={ #Stormwind visit + religion = holy_light + culture = azerothian #Became an Alliance weeb + trait = infertile #Got a vasectomy + effect = { + add_trait_xp = { + trait = lifestyle_traveler + track = travel + value = 50 + } + add_trait_xp = { + trait = lifestyle_traveler + track = danger + value = 50 + } + } + } + 616.1.1={ #28 years have passed since he was born just like between 1995-2023 + remove_trait=education_diplomacy_1 + add_trait=education_diplomacy_2 + effect = { + add_trait_xp = { + trait = lifestyle_traveler + track = travel + value = 50 + } + add_trait_xp = { + trait = lifestyle_traveler + track = danger + value = 50 + } + } + } + 688.1.1={ death=yes } +} + +easteregg13={ #Shrek reference + name=Shrok + dna=shrok_dna + culture=bonechewer religion=orcish_shamanism + sexuality = heterosexual + trait = education_stewardship_1 + trait = content trait = cynical trait = brave + trait = pensive trait = rough_terrain_expert trait = reclusive + give_nickname = nick_the_ogre + disallow_random_traits = yes + 588.1.1={ + birth=yes trait=creature_orc #trait=blood_ogre + effect = { + learn_language = language_ogre + } + } + 688.1.1={ death=yes } +} \ No newline at end of file diff --git a/history/provinces/00_k_black_morass.txt b/history/provinces/00_k_black_morass.txt index ed6c33c1f9..c47b444526 100644 --- a/history/provinces/00_k_black_morass.txt +++ b/history/provinces/00_k_black_morass.txt @@ -158,7 +158,7 @@ ###c_dark_portal -73 = { # Dark Portal +2486 = { # Dark Portal culture = gurubashi religion = cult_of_hakkar holding = tribal_holding @@ -180,7 +180,7 @@ holding = none } -2486 = { # Nahoh'ji +73 = { # Nahoh'ji holding = none } diff --git a/history/provinces/00_k_dead_morass.txt b/history/provinces/00_k_dead_morass.txt index 2eb5f4504c..124bc3c1f6 100644 --- a/history/provinces/00_k_dead_morass.txt +++ b/history/provinces/00_k_dead_morass.txt @@ -221,7 +221,7 @@ religion = water_deities holding = tribal_holding - 600.1.1 = { + 573.1.1 = { culture = gilblin } } diff --git a/history/provinces/00_k_zandalar.txt b/history/provinces/00_k_zandalar.txt index ca168d1ee0..7463bf55cc 100644 --- a/history/provinces/00_k_zandalar.txt +++ b/history/provinces/00_k_zandalar.txt @@ -122,7 +122,7 @@ ##d_zuldazar ################################### ###c_covescale 2240 = { # Dreadpearl - culture = murloc + culture = gilblin religion = water_deities holding = tribal_holding } diff --git a/history/titles/00_k_dead_morass.txt b/history/titles/00_k_dead_morass.txt index 4721291281..118f7bffc9 100644 --- a/history/titles/00_k_dead_morass.txt +++ b/history/titles/00_k_dead_morass.txt @@ -191,6 +191,6 @@ c_atalhakkar = { } c_rotten_beach = { 573.1.1={ - holder=34013 + holder = gilblin002 #Argurgle } } diff --git a/history/titles/00_k_zandalar.txt b/history/titles/00_k_zandalar.txt index a27af1aa74..9a2ec7b14c 100644 --- a/history/titles/00_k_zandalar.txt +++ b/history/titles/00_k_zandalar.txt @@ -139,12 +139,7 @@ c_covescale = { 454.12.08={holder=35778} #Ghrmh[6030] 507.08.07={holder=35784} #Gmmrhg[6030] 512.12.04={holder=35786} #Hmghh[6030] - 562.05.07={holder=35790} #Gmmlg[6030] - 581.02.16={holder=35794} #Mrgmmrgm[6030] - 607.05.20={holder=35796} #Llgmmr[6030] - 616.08.04={holder=35801} #Lghhg[6030] - 654.09.22={holder=35806} #Gmghg[6030] - 673.04.15={holder=35811} #Rmmrh[6030] + 559.2.1 = { holder=gilblin003 } # Vez[28906] } c_tusk_isle = { 1.1.1={ diff --git a/localization/english/dynasties/wc_dynasty_names_l_english.yml b/localization/english/dynasties/wc_dynasty_names_l_english.yml index 9c9baab96a..58a5f7f2b2 100644 --- a/localization/english/dynasties/wc_dynasty_names_l_english.yml +++ b/localization/english/dynasties/wc_dynasty_names_l_english.yml @@ -1784,8 +1784,6 @@ ### Quel'dorei ### Sin'dorei ### Goblin ### - ### Gilblin ### - dynn_Peddlefin:0 "Peddlefin" ### Blackwater ### Goblin ### Dragons ### @@ -9272,4 +9270,17 @@ Maclure:0 "Maclure" Pestle:0 "Pestle" Riverpaw:0 "Riverpaw" - Spothide:0 "Spothide" \ No newline at end of file + Spothide:0 "Spothide" + + ### Gilblin ### + dynn_Peddlefin:0 "Peddlefin" + dynn_Mistyreed:0 "Mistyreed" + dynn_Sharpfin:0 "Sharpfin" + dynn_Gurbfin:0 "Gurbfin" + dynn_Seashell:0 "Seashell" + dynn_Bitterbrine:0 "Bitterbrine" + dynn_Blackfin:0 "Blackfin" + dynn_Brackfin:0 "Brackfin" + dynn_Deepfin:0 "Deepfin" + dynn_Muckskin:0 "Muckskin" + dynn_Murkmouth:0 "Murkmouth" \ No newline at end of file diff --git a/localization/english/event_localization/wc_genocide_task_events_l_english.yml b/localization/english/event_localization/wc_genocide_task_events_l_english.yml new file mode 100644 index 0000000000..dc2fad5527 --- /dev/null +++ b/localization/english/event_localization/wc_genocide_task_events_l_english.yml @@ -0,0 +1,111 @@ +l_english: + + GenocideEventRelevantMagic_Light:0 "$LIGHT_NAME$" + GenocideEventRelevantMagic_Void:0 "$SHADOW_NAME$" + GenocideEventRelevantMagic_Arcane:0 "Arcane" + GenocideEventRelevantMagic_Fel:0 "Demonic" + GenocideEventRelevantMagic_Life:0 "Nature" + GenocideEventRelevantMagic_Death:0 "Necrotic" + + GenocideEventRelevantGod_FaithGod:0 "[ROOT.Char.GetFaith.HighGodName]" + GenocideEventRelevantGod_Light:0 "$LIGHT_NAME$" + GenocideEventRelevantGod_Void:0 "$VOID_NAME$" + GenocideEventRelevantGod_Arcane:0 "$MAGIC_NAME$" + GenocideEventRelevantGod_Fel:0 "$SARGERAS_NAME$" + GenocideEventRelevantGod_Life:0 "$LIFE_NAME$" + GenocideEventRelevantGod_Death:0 "$DEATH_NAME$" + + GenocideEventRelevantPower_Holy:0 "Holy" + GenocideEventRelevantPower_Dark:0 "Dark" + GenocideEventRelevantPower_Arcane:0 "Arcane" + + GenocideEventRelevantName_Hallowed:0 "Hallowed" + GenocideEventRelevantName_Unholy:0 "Unholy" + + GenocideEventGenocidedPopulationsOr_Both:0 "$GenocideEventGenocidedPopulations_Culture$ or $GenocideEventGenocidedPopulations_Faith$" + + GenocideEventGenocidedPopulationsAnd_Both:0 "$GenocideEventGenocidedPopulations_Culture$ and $GenocideEventGenocidedPopulations_Faith$" + GenocideEventGenocidedPopulations_Culture:0 "[second.GetProvince.GetCounty.GetCulture.GetCollectiveNoun]" + GenocideEventGenocidedPopulations_Faith:0 "[second.GetProvince.GetCounty.GetFaith.GetAdjective]" + + genocide_task.0001.t:0 "Cursed Lands Spreading" + genocide_task.0001.desc:0 "The surfeit of evil deeds in [county.GetName] has resulted in the spread of magical corruption and plagues of all kinds.\n\nThose who do are not cowering in their homes death or stricken with illness instead languish in an inexplicable apathy. Our forces range back and forth across the land; killing anything that moves, stealing anything of value, and burning anything that can be put to the flame.\n\nWhile this wanton violence surely pleases [councillor_liege.Custom('GenocideEventRelevantGod')], this land is dying and its productivity suffers." + genocide_task.0001.a:0 "We shall reap the powers of [councillor_liege.GetFaith.PantheonTerm]!" + + genocide_task.0002.t:0 "Marauding Forces Cause Unrest" + genocide_task.0002.desc:0 "The efforts of our forces have done much to please [councillor_liege.Custom('GenocideEventRelevantGod')], but the mortals of this land are boundless in their impudence. Reports have begun to filter in from our collaborators, scouts, and spies in [county.GetName] that resistance is growing amongst the populace.\n\nOur forces must act quickly to destroy this growing threat or we shall risk looking weak in front of those among us who wish to usurp power." + genocide_task.0002.a:0 "Kill anything that moves! Make an example of them!" + genocide_task.0002.b:0 "Do not bother me with these trifling rumors!" + + genocide_task.0101.t:0 "A Champion's Challenge" + genocide_task.0101.desc:0 "Our purification of the lands of [county.GetName] continues to move forward unhindered. The [champion.Custom('GenocideEventRelevantPower')] magic that taints this land continues to resist and struggle against our might, sending incursions and challenges to hinder the progress of our warriors.\n\nThis time, the abominable magic has risen up a befouled champion that has challenged us to single combat. I could fight them myself and benefit from the gains of glory that I will bring to our cause but it does pose some significant risks..." + genocide_task.0101.a:0 "I will cleanse this champion myself." + genocide_task.0101.b:0 "Perhaps my marshal is up to the challenge." + + genocide_task.0102.t:0 "Uncontrolled Magic" + genocide_task.0102.desc:0 "Our purification of the lands of [county.GetName] has run into some unforeseen consequences. The magic that corrupts this land resists and struggles against our will and as a consequence it is now out of our control. If we don't make a decision immediately, this corruption will uncontrollably spread through the surrounding region." + genocide_task.0102.a:0 "Contain this outbreak." + genocide_task.0102.b:0 "Perhaps we should leave this land to its fate.." + + genocide_task.0201.t:0 "Deep Unrest Spreading" + genocide_task.0201.desc:0 "The surfeit of... regrettable deeds in [county.GetName] has resulted in the spread of unrest of all kinds.\n\nThose who are not struck down by our soldiers are cowering in their homes in fear or starving. Our forces range back and forth across the land; killing any [councillor_liege.Custom2_Title('GenocideEventGenocidedPopulationsOr', SCOPE.sTitle('county'))] that move, stealing anything of value, and burning anything that can be put to the flame.\n\nWhile this wanton violence will surely accomplish our goals, our people are suffering, and their productivity with them." + genocide_task.0201.a:0 "Let us hope we are soon finished." + + genocide_task.0202.t:0 "[councillor_liege.Custom2_Title('GenocideEventGenocidedPopulationsAnd', SCOPE.sTitle('county'))] Emigration" + genocide_task.0202.desc:0 "The recent actions in [county.GetName] has caused a large emigration from our realm, the [councillor_liege.Custom2_Title('GenocideEventGenocidedPopulationsAnd', SCOPE.sTitle('county'))] fleeing in droves.\n\nThe [target_ruler.Custom('InsultAdjective')] [target_ruler.GetName] has \"generously\" decided to take them in, luring them with promises of safety and security, settling them in [target_county.GetName].\n\nWhile our soldiers have attempted to stop the migration, they have not been very successful so far." + genocide_task.0202.a:0 "Damn that villain!" + + genocide_task.0301.t:0 "Brutal Demonstration of Devotion" + genocide_task.0301.desc:0 "Pillars of smoke rise into the night sky. Blotting out the moon, they are lit only by the fires of burning buildings, fields, and bodies. The screams and chaos of the massacre inflicted on this village in [county.GetName] have left an eerie calm and silence in their wake, broken only by the crackling inferno and the occasional crash of a falling timber. Silhouetted against the flame, your [court_chaplain|E] [cp_court_chaplain.GetShortUINameNoTooltip] stands in exultant prayer. Just a few paces behind, you kneels in supplication. The ritual, begun just after the slaughter itself, finally nears its completion.\n\n'Oh [councillor_liege.Custom('GenocideEventRelevantGod')]!" He implores, "Accept the Souls of these wretches that they may demonstrate our supplication to your infinite power. Accept the Blood upon our blades as proof of our fealty to you and your servant [councillor_liege.GetNameNoTooltip|V]. Accept the Fires that surround us as a solemn proof of your will enforced in [councillor_liege.GetPrimaryTitle.GetName]. Let this destruction and suffering please You; may these Souls, Blood, and Fire provide payment for another infinitesimal fraction of your [councillor_liege.Custom('GenocideEventRelevantPower')] Power! In thy [councillor_liege.Custom('GenocideEventRelevantName')] name we pray...'\n\nYou remains silent and motionless even as the first shivers and tingles of [councillor_liege.Custom('GenocideEventRelevantMagic')] Energy begin to course through your veins. With all the clarity your mind can muster, you wish..." + genocide_task.0301.a:0 "...to be feared by your subjects." + genocide_task.0301.b:0 "...only to have your dedication known." + genocide_task.0301.c:0 "...to harmonize your power with [councillor_liege.GetFaith.PantheonTerm]." + + genocide_task.0302.t:0 "Fuel for [councillor_liege.GetFaith.PantheonTerm]" + genocide_task.0302.desc:0 "I feel a twisted pleasure coil within me with every death that follows our forces. Their weak souls clinging to life like insects - buzzing and writhing in their futile struggle. Their energy - their souls, are nothing more than fodder for the power I command.\n\nTheir power flows through me as a torrent of life which has been twisted into the [councillor_liege.Custom('GenocideEventRelevantPower')] power that I now command. I can guide it, shape it, force it into whatever I will. All that remains is the decision of where to invest this magic..." + genocide_task.0302.a:0 "This power belongs to [councillor_liege.GetCapitalLocation.GetName]." + genocide_task.0302.b:0 "Disperse it to the local region." + + genocide_task.0401.t:0 "Fervor of Purification" + genocide_task.0401.desc:0 "The fervor of our fight against the [county.GetProvince.GetCounty.GetCulture.GetCollectiveNoun] is spreading throughout the surrounding areas, kindling a desire for purification among the inhabitants. Inspired by our determination, locals have risen up, ready to take up arms to restore the power of $GenocideEventRelevantGod_FaithGod$ within our lands.\n\nTheir fervor is admirable, but without proper direction, their zeal could become misdirected and destructive. Already, rumors are circulating about isolated acts of violence against individuals perceived as [county.Custom('GenocideEventRelevantNameCounty')]. What should we do with this newfound force?" + genocide_task.0401.a:0 "Let them make themselves useful!" + genocide_task.0401.a.progress:0 "The progress of the Cleansing in [county.GetName] is increased" + genocide_task.0401.b:0 "They will fight by our side." + + genocide_task.0402.t:0 "Fortress of the [county.GetProvince.GetCounty.GetCulture.GetCollectiveNounNoTooltip]" + genocide_task.0402.desc:0 "The fortress of the [county.GetProvince.GetCounty.GetCulture.GetCollectiveNoun] in [county.GetName] is falling beneath a brutal assault led by our forces. Flames consume the walls and smoke blackens the sky, our troops begin to loot the fortress and gather the exhausted and broken defenders under tight guard.\n\nThe chaos of battle has started to subside, the air still thick with the scent of blood, when [councillor.GetFirstName] approaches me, hand on the hilt of [councillor.GetHerHis] weapon.\n\n"[ROOT.Char.GetTitleAsNameNoTooltip|U], we have taken prisoners during the attack. They are at your mercy. We await your orders."" + genocide_task.0402.a:0 "They shall pray for mercy before we are done with them." + genocide_task.0402.b:0 "Put them out of their misery." + genocide_task.0402.c:0 "They shall make a worthy sacrifice for [councillor_liege.GetFaith.PantheonTerm]!" + + genocide_task.0501.t:0 "A Purging Hand" + genocide_task.0501.desc:0 "Our purge of these lands is progressing well.\n\nOne day, an unknown individual has approached my court. They appear to be a champion of [councillor_liege.Custom('GenocideEventRelevantGod')] who has resided in [county.GetName] and believe in our righteous cause. They wish to pledge fealty to me, and in exchange, I allow them to help in the purge of these lands. Naturally, it is up to me to best decide where they should fit." + genocide_task.0501.a:0 "They would better serve in my court." + genocide_task.0501.b:0 "Purging it is." + + genocide_task.0502.t:0 "Supplies Of The Weak" + genocide_task.0502.desc:0 "Death follows our forces as we march uninhibited through these lands; cleansing and purifying them in our image. The inhabitants scatter like insects who scamper and flee on our approach. During the purge of their lands it has become evident that several caches of their supplies have been abandoned. All that remains is the decision of where to invest these resources..." + genocide_task.0502.a:0 "Send these to [councillor_liege.GetCapitalLocation.GetName]." + genocide_task.0502.b:0 "Disperse it to the local region." + + genocide_task.2001.t:0 "The Corruption of [county.GetName]" + genocide_task.2001.desc.dark:0 "Dark energies ripple through the land as your ritual reaches its peak, twisting the very essence of the county.\n\nOnce vibrant and thriving, it now pulses with malevolent power, its inhabitants succumbing to the creeping corruption. The air grows heavy, the skies darken, and the once-fertile fields wither beneath your influence. You feel the dark magic coursing through the earth, binding the county to your will, transforming it into a bastion of your newfound power.\n\nThe deed is done; the land is yours, reshaped in your image, but at what cost?" + genocide_task.2001.desc.light:0 "Radiant energies surge through the land as your ritual reaches its zenith, infusing the county with divine might.\n\nOnce ordinary and unremarkable, it now glows with celestial brilliance, its inhabitants uplifted by the overwhelming holiness. The air sparkles with sanctity, the skies clear with divine light, and the once-barren fields flourish under your touch. You sense the sacred power coursing through the earth, binding the county to your will, transforming it into a shining testament to your grace.\n\nThe deed is done; the land is yours, reshaped in your image, but at what cost?" + genocide_task.2001.desc.nature:0 "Nature’s energies flow through the land as your ritual reaches its zenith, breathing new life into the county.\n\nOnce barren and neglected, it now teems with verdant vitality, its inhabitants rejuvenated by the wild magic. The air hums with the vibrant pulse of nature, the skies clear with a lush glow, and the once-dry fields bloom under your influence. You feel the natural magic weaving through the earth, binding the county to your will, transforming it into a lush sanctuary of your creation.\n\nThe deed is done; the land is yours, flourishing under your command, but at what cost?" + genocide_task.2001.desc.arcane:0 "Arcane energies ripple through the land as your ritual reaches its climax, infusing the county with otherworldly brilliance.\n\nOnce ordinary and mundane, it now shimmers with mystical power, its inhabitants entranced by the swirling magic. The air crackles with arcane sparks, the skies swirl with ethereal hues, and the once-drained fields now glisten with magical vitality. You feel the arcane force weaving through the earth, binding the county to your will, transforming it into a beacon of your arcane mastery.\n\nThe deed is done; the land is yours, redefined by your touch, but at what cost?" + genocide_task.2001.a:0 "The deed is done." + + genocide_task.2101.t:0 "The Cleansing of [county.GetName]" + genocide_task.2101.desc.dark:0 "The dark energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county.\n\nOnce tainted and withering, it now flourishes with renewed vitality, its inhabitants freed from the clutches of corruption. The air grows lighter, the skies clear, and the once-barren fields begin to bloom again under your influence. You feel the pure magic coursing through the earth, releasing the county from its blight, returning it to its former glory.\n\nThe deed is done; the land is healed, restored to its natural state, and peace reigns once more." + genocide_task.2101.desc.light:0 "The holy energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county.\n\nOnce overwhelmed by celestial brilliance, it now returns to its natural state, its inhabitants freed from the grip of divine influence. The air grows calmer, the skies lose their blinding light, and the once-flourishing fields return to their humble form under your touch. You feel the pure magic coursing through the earth, releasing the county from its sacred bindings, returning it to its former, unremarkable glory.\n\nThe deed is done; the land is cleansed, restored to its natural state, and balance reigns once more." + genocide_task.2101.desc.nature:0 "The natural energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county. Once teeming with vibrant life, it now returns to its original state, its inhabitants freed from the overwhelming presence of nature’s magic. The air grows still, the skies lose their lush hues, and the once-flourishing fields settle back into their modest form under your touch. You feel the pure magic withdrawing from the earth, releasing the county from its natural bindings, returning it to its former, unremarkable state.\n\nThe deed is done; the land is cleansed, restored to its natural condition, and balance reigns once more." + genocide_task.2101.desc.arcane:0 "The arcane energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county. Once infused with vibrant magic, it now returns to its original state, its inhabitants freed from the overwhelming presence of arcane power. The air grows still, the skies lose their shimmering aura, and the once-enchanted fields settle back into their modest form under your touch. You feel the pure magic withdrawing from the earth, releasing the county from its arcane bindings, returning it to its former, unremarkable state.\n\nThe deed is done; the land is cleansed, restored to its natural condition, and balance reigns once more." + genocide_task.2101.a:0 "The foul corruption has been defeated." + + genocide_task.2201.t:0 "The Purge of [county.GetName]" + genocide_task.2201.desc:0 "An oppressive silence settles over [county.GetNameNoTooltip] as your purge reaches its zenith. The undesirable elements are driven out, their presence vanishing like shadows at dawn. The land breathes freely again, its once-chaotic energy now subdued. You stand amidst the calm, knowing your work has restored order and peace." + genocide_task.2201.desc.holder:0 "\n\nThe question remains of what to do with [holder.GetShortUIName]." + genocide_task.2201.a:0 "A job well done." + genocide_task.2201.a.holder:0 "Leave them be." + genocide_task.2201.b:0 "This land does not belong to them!" + genocide_task.2201.c:0 "They shall go the way of their subjects!" \ No newline at end of file diff --git a/localization/english/modifiers/wc_modifiers_l_english.yml b/localization/english/modifiers/wc_modifiers_l_english.yml index 4ed0f106ba..428e6efce0 100644 --- a/localization/english/modifiers/wc_modifiers_l_english.yml +++ b/localization/english/modifiers/wc_modifiers_l_english.yml @@ -285,4 +285,43 @@ wc_troll_mogu_pact_thunder_king_modifier_desc:0 "The [thunder_king|E] has been resurrected a Zandalari [ruler|E].\n\nThey may call them into a defensive [war|E] once for each remaining stack of this [modifier|E] via a [character_interaction|E]." union_block_modifier:0 "Union Block" - union_block_modifier_desc:0 "This character has recently left their union and is left with the consequences of standing alone." \ No newline at end of file + union_block_modifier_desc:0 "This character has recently left their union and is left with the consequences of standing alone." + + ongoing_corruption_modifier:0 "Ongoing Corruption" + ongoing_cleansing_modifier:0 "Ongoing Cleansing" + ongoing_genocide_modifier:0 "Ongoing Purge" + + county_corruption_light_modifier:0 "Light Corruption" + county_corruption_light_modifier_desc:0 "This county has been corrupted by Light.\n\nEffects scale based on Light Magic [doctrines|E] and [traits|E]." + county_corruption_void_modifier:0 "Shadow Corruption" + county_corruption_void_modifier_desc:0 "This county has been corrupted by Shadow.\n\nEffects scale based on Shadow Magic [doctrines|E] and [traits|E]." + county_corruption_arcane_modifier:0 "Arcane Corruption" + county_corruption_arcane_modifier_desc:0 "This county has been corrupted by the Arcane.\n\nEffects scale based on Arcane Magic [doctrines|E] and [traits|E]." + county_corruption_fel_modifier:0 "Fel Corruption" + county_corruption_fel_modifier_desc:0 "This county has been corrupted by Fel.\n\nEffects scale based on Fel Magic [doctrines|E] and [traits|E]." + county_corruption_life_modifier:0 "Nature Corruption" + county_corruption_life_modifier_desc:0 "This county has been corrupted by Nature.\n\nEffects scale based on Nature Magic [doctrines|E] and [traits|E]." + county_corruption_death_modifier:0 "Death Corruption" + county_corruption_death_modifier_desc:0 "This county has been corrupted by Death.\n\nEffects scale based on Death Magic [doctrines|E] and [traits|E]." + + county_purged_modifier_1:0 "Small Depopulation" + county_purged_modifier_2:0 "Large Depopulation" + county_purged_modifier_3:0 "Severe Depopulation" + + harmonize_with_force_modifier:0 "Harmonized With Power" + corruption_disease_modifier:0 "Corrupted Plague" + corruption_disease_modifier_desc:0 "The corruption of a neighboring county has caused a great outbreak of disease." + genocidal_unrest_modifier:0 "Genocidal Unrest" + genocidal_unrest_modifier_desc:0 "The purge of a neighboring county has caused a great deal of unrest here." + genocide_emigration_modifier:0 "Recent Emigration" + genocide_immigration_modifier:0 "Recent Immigration" + genocide_channelled_energy_modifier:0 "Harnessed Energy" + genocide_dispersed_energy_modifier:0 "Dispersed Energy" + sacrificed_cleansing_targets_modifier:0 "Cleansed Sacrifice" + genocide_focused_resources_modifier:0 "Focused Resources" + genocide_dispersed_resources_modifier:0 "Dispersed Resources" + genocide_wild_energy_modifier:0 "Rampaging Energy" + genocide_controlled_energy_modifier:0 "Corralled Energy" + genocide_marauding_forces_modifier:0 "Rampaging Marauders" + genocide_purged_marauders_modifier:0 "Purged Marauders" + genocide_local_champion_modifier:0 "Local Champion" \ No newline at end of file diff --git a/localization/english/names/wc_character_names_l_english.yml b/localization/english/names/wc_character_names_l_english.yml index 2419817dc6..5c43340477 100644 --- a/localization/english/names/wc_character_names_l_english.yml +++ b/localization/english/names/wc_character_names_l_english.yml @@ -18320,4 +18320,10 @@ Brooke:0 "Brooke" Teo:0 "Teo" Jango:0 "Jango" - Drukan:0 "Drukan" \ No newline at end of file + Drukan:0 "Drukan" + Mankrik:0 "Mankrik" + Olgra:0 "Olgra" + Nazgrim:0 "Nazgrim" + Kuk'Ald:0 "Kuk'Ald" + Tcha'Du:0 "Tcha'Du" + Shrok:0 "Shrok" \ No newline at end of file diff --git a/localization/english/opinions/wc_genocide_opinions_l_english.yml b/localization/english/opinions/wc_genocide_opinions_l_english.yml new file mode 100644 index 0000000000..2c39f698f8 --- /dev/null +++ b/localization/english/opinions/wc_genocide_opinions_l_english.yml @@ -0,0 +1,7 @@ +l_english: + disapproves_of_genocide:0 "Disapproves of Purge" + minority_disapproves_of_genocide_population_opinion:0 "[GetVassalStance( 'minority' ).GetTextIcon][GetVassalStance( 'minority' ).GetName] $disapproves_of_genocide$" + genocided_my_culture_opinion:0 "Purged My Culture" + genocided_my_faith_opinion:0 "Purged My Faith" + ruler_disapproves_of_genocide_population_opinion:0 "Purged My People" + vassal_approves_of_defending_genocide_opinion:0 "Avenged Purge" diff --git a/localization/english/wc_council_tasks_l_english.yml b/localization/english/wc_council_tasks_l_english.yml index ba790384c5..56833643ab 100644 --- a/localization/english/wc_council_tasks_l_english.yml +++ b/localization/english/wc_council_tasks_l_english.yml @@ -5,4 +5,40 @@ COURT_CHAPLAIN_FABRICATE_CLAIM_INNOVATION_BONUS_EXPANSIONISM:1 "[councillor_liege.GetCulture.GetName] — $innovation_expansionism$" - task_dark_frenzy_gain:0 "\n$TAB$Grants [dark_frenzy|E]" \ No newline at end of file + task_dark_frenzy_gain:0 "\n$TAB$Grants [dark_frenzy|E]" + + task_purge_population:0 "[GetPlayer.Custom('TaskPurgePopulationTitle')]" + TaskPurgePopulationTitle_Corrupt:0 "Corrupt County" + TaskPurgePopulationTitle_Purge:0 "Purge Population" + task_purge_population_VALUE_NAME:0 "" + task_purge_population_effect_desc:0 "#S At #V 100%#!#!:\n$TAB$The [county|E] will change [faith|E] to [councillor_liege.GetFaith.GetName]\n$TAB$The [county|E] will change culture to [councillor_liege.GetCulture.GetName]" + task_purge_population_effect_corrupt_desc:0 "\n$TAB$The [county|E] will become corrupted" + minority_disapproves_genocide_tooltip:0 "\n$TAB$Every $minority_vassal$ ([councillor_liege.MakeScope.ScriptValue('number_of_minority_vassals')|V0]) loses #N 25#! or #N 50#! [opinion|E] of [councillor_liege.GetShortUIName] for #V 10 years#! #weak (Disapproves Purge)#!" + COUNTY_IS_YOUR_CULTURE:0 "[county.GetName] is already [councillor_liege.GetCulture.GetName]" + COUNTY_IS_YOUR_FAITH:0 "[county.GetName] is already [councillor_liege.GetFaith.GetName]" + COUNTY_ALREADY_CORRUPTED:0 "[county.GetName] is already corrupted" + GENOCIDE_ARMY_STRENGTH_BONUS:0 "From unraised armies" + MARSHAL_GENOCIDE_FERVOR_IMPACT:0 "From [fervor|E]" + FROM_CONVERSION_SPEED_GAME_RULE:0 "From [culture|E] and [faith|E] conversion speed game rules" + genocide_liege_disapproves:0 "Liege does not approve of this purge" + genocide_invalid_culture_faith:0 "[county.GetProvince.GetCounty.GetCulture.GetName] and [county.GetProvince.GetCounty.GetFaith.GetName] are not valid targets" + cultural_acceptance_loss_purge_pupulation:0 "[old_culture.GetName] purged in [county.GetName]" + + genocided_my_culture_opinion_desc:0 "Every [old_culture.GetName] ruler lost #N 25#! [opinion|E] of #V you#! for #V 10 years#! #weak ($genocided_my_culture_opinion$)#!" + genocided_my_faith_opinion_desc:0 "Every [old_faith.GetName] ruler lost #N 50#! [opinion|E] of #V you#! for #V 10 years#! #weak ($genocided_my_faith_opinion$)#!" + minority_disapproves_of_genocide_population_opinion_desc:0 "Every $minority_vassal$ ([councillor_liege.MakeScope.ScriptValue('number_of_minority_vassals')|V0]) lost #N 25#! [opinion|E] of [councillor_liege.GetShortUIName] for #V 10 years#! #weak ($disapproves_of_genocide$)#!" + + council_task_cursed_lands:0 "\n$EFFECT_LIST_BULLET$#N Cursed Lands Spreading#!" + council_task_marauders:0 "\n$EFFECT_LIST_BULLET$#N Marauders Run Wild#!" + council_task_devotion_demonstration:0 "\n$EFFECT_LIST_BULLET$#P A Ritual To [councillor_liege.Custom('GenocideEventRelevantGod')]#!" + council_task_harness_energy:0 "\n$EFFECT_LIST_BULLET$#P Harness [councillor_liege.Custom('GenocideEventRelevantMagic')] Energy#!" + + council_task_champion_challenge:0 "\n$EFFECT_LIST_BULLET$#N An Unexpected Challenge#!" + council_task_wild_energy:0 "\n$EFFECT_LIST_BULLET$#N [county.Custom('GenocideEventRelevantCountyMagic')] Energy Runs Wild#!" + council_task_army_spawn:0 "\n$EFFECT_LIST_BULLET$#P Unexpected Aid Arrives#!" + council_task_large_raid:0 "\n$EFFECT_LIST_BULLET$#P A Large Raid#!" + + council_task_neighboring_unrest:0 "\n$EFFECT_LIST_BULLET$#N Neighboring Unrest#!" + council_task_emigration:0 "\n$EFFECT_LIST_BULLET$#N Large Emigration#!" + council_task_friendly_champion:0 "\n$EFFECT_LIST_BULLET$#P An Offer Of Assistance#!" + council_task_found_supplies:0 "\n$EFFECT_LIST_BULLET$#P A Windfall Of Supplies#!" \ No newline at end of file diff --git a/localization/english/wc_game_concepts_l_english.yml b/localization/english/wc_game_concepts_l_english.yml index aef1f69728..4c2190fc0b 100644 --- a/localization/english/wc_game_concepts_l_english.yml +++ b/localization/english/wc_game_concepts_l_english.yml @@ -120,4 +120,8 @@ game_concept_lei_shen:0 "Lei Shen" game_concept_thunder_king:0 "Thunder King" game_concept_the_thunder_king:0 "The Thunder King" - game_concept_the_thunder_king_desc:0 "One of the lesser [crises|E] on Azeroth. The [GetTrait('thunder_king').GetName( GetNullCharacter )] Lei Shen was the first Emperor of the Mogu Empire. He absorbed the powers of the titan watcher Ra-den to become one of the most powerful beings on Azeroth and conquered all of Pandaria, founding a tyrannical regime that would last for thousands of years. He was eventually killed alongside his Zandalari allies while attempting to claim the Forge of Origination in Uldum.\n\nThe Zandalari trolls are rumored to possess the secret ritual of his resurrection. If the legends are true, the resurrected Thunder King would waste no time rallying the [GetTrait('creature_mogu').GetName( GetNullCharacter )] Clans to reestablish his ancient [empire|E]'s dominion over Pandaria.\n\nAs an [ongoing_crisis|E], the Thunder King will have access to the [great_invasion|E] [casus_belli|E], but will generally not expand beyond Pandaria." \ No newline at end of file + game_concept_the_thunder_king_desc:0 "One of the lesser [crises|E] on Azeroth. The [GetTrait('thunder_king').GetName( GetNullCharacter )] Lei Shen was the first Emperor of the Mogu Empire. He absorbed the powers of the titan watcher Ra-den to become one of the most powerful beings on Azeroth and conquered all of Pandaria, founding a tyrannical regime that would last for thousands of years. He was eventually killed alongside his Zandalari allies while attempting to claim the Forge of Origination in Uldum.\n\nThe Zandalari trolls are rumored to possess the secret ritual of his resurrection. If the legends are true, the resurrected Thunder King would waste no time rallying the [GetTrait('creature_mogu').GetName( GetNullCharacter )] Clans to reestablish his ancient [empire|E]'s dominion over Pandaria.\n\nAs an [ongoing_crisis|E], the Thunder King will have access to the [great_invasion|E] [casus_belli|E], but will generally not expand beyond Pandaria." + + game_concept_purge_population:0 "Purge Population" + game_concept_genocide:0 "$game_concept_purge_population$" + game_concept_purge_population_desc:0 "A [councillor_task|E] performed by the [marshal|E] which targets a [county|E] of a different [culture|E] or [faith|E] than the [liege|E]\nProgress increases each month, and at 100%, the Target County has changed from their previous Culture and Faith to the Liege's.\n\nConversion speed is affected by many factors, including the [councillor|E]'s [martial_skill|E], the strength of the Liege's unraised [army|E], the County's [development|E], and the [fervor|E] of the two Faiths." \ No newline at end of file diff --git a/localization/english/wc_nicknames_l_english.yml b/localization/english/wc_nicknames_l_english.yml index 4b4d18a800..06bb44a506 100644 --- a/localization/english/wc_nicknames_l_english.yml +++ b/localization/english/wc_nicknames_l_english.yml @@ -209,6 +209,10 @@ nick_high_priestess:0 "High Priestess" nick_exarch:0 "Exarch" + ### Easter Eggs + nick_the_soydrinker:0 "the Soydrinker" + nick_the_soydrinker_desc:1 "[CHARACTER.GetShortUINameNoTooltipNoFormat|U] [CharHaveHas(CHARACTER)] taken a habit to drinking excessive amounts of soy." + ### WoW Titles # Quests diff --git a/localization/english/wc_portraits_l_english.yml b/localization/english/wc_portraits_l_english.yml index 24369efaf2..bc772c124d 100644 --- a/localization/english/wc_portraits_l_english.yml +++ b/localization/english/wc_portraits_l_english.yml @@ -627,3 +627,8 @@ PORTRAIT_MODIFIER_custom_clothes_female_clothes_secular_orc_war_nobility:0 "Orc Armor" PORTRAIT_MODIFIER_custom_headgear_male_headgear_secular_orc_war_nobility:0 "Orc Helmet" PORTRAIT_MODIFIER_custom_headgear_female_headgear_secular_orc_war_nobility:0 "Orc Helmet" + + PORTRAIT_MODIFIER_custom_special_male_headgear_special_metaljaw:0 "Metal Jaw" + PORTRAIT_MODIFIER_custom_special_female_headgear_special_metaljaw:0 "Metal Jaw" + PORTRAIT_MODIFIER_custom_special_male_headgear_special_leatherjaw:0 "Leather Jaw" + PORTRAIT_MODIFIER_custom_special_female_headgear_special_leatherjaw:0 "Leather Jaw" diff --git a/localization/english/wc_wars_l_english.yml b/localization/english/wc_wars_l_english.yml index 33d1bbb018..7a762c331d 100644 --- a/localization/english/wc_wars_l_english.yml +++ b/localization/english/wc_wars_l_english.yml @@ -27,4 +27,14 @@ MIGRATION_WAR_DUCHY_NAME:0 "[holy_war|E] for [duchy|E]" migration_theramore_war:0 "Migration War" - scourge_quelthalas_cb.undead_conversion:0 "All those you [Concept('vassal', 'Vassalize')|E] and their vassals become [GetTrait('being_undead').GetName( GetNullCharacter )]" \ No newline at end of file + scourge_quelthalas_cb.undead_conversion:0 "All those you [Concept('vassal', 'Vassalize')|E] and their vassals become [GetTrait('being_undead').GetName( GetNullCharacter )]" + + GENOCIDE_WAR_NAME:0 "#E Avenge Purge#! in [DEFENDER.GetPrimaryTitle.GetName]" + GENOCIDE_WAR_CB_NAME: "Avenge Purge" + msg_committed_genocide_invalid_message:0 "The [war.GetName] has ended: [attacker.GetTitledFirstName] can no longer avenge the purge" + committed_genocide_cb_victory_desc_attacker:0 "You gain all purged counties of your [culture|E] or [faith|E]" + committed_genocide_cb_victory_desc:0 "[attacker.GetShortUIName|U] gains all purged counties of their [culture|E] or [faith|E]" + committed_genocide_cb_white_peace_desc_defender:0 "You keep the purged counties" + committed_genocide_cb_white_peace_desc:0 "[defender.GetShortUIName|U] keeps the purged counties" + committed_genocide_cb_defeat_desc_defender:0 "$committed_genocide_cb_white_peace_desc_defender$" + committed_genocide_cb_defeat_desc:0 "$committed_genocide_cb_white_peace_desc$" \ No newline at end of file diff --git a/localization/replace/english/wc_calendar_l_english.yml b/localization/replace/english/wc_calendar_l_english.yml new file mode 100644 index 0000000000..3af376276b --- /dev/null +++ b/localization/replace/english/wc_calendar_l_english.yml @@ -0,0 +1,9 @@ +l_english: + + # King's Calendar stuff + GAME_DATE_STRING_LONG:2 "$DAY|O$ of $MONTH$, $YEAR$ KC" + game_concept_end_date_desc:0 "1000 KC is the End Date, and upon reaching it the game will end." + HOUSE_LIST_FOUNDATION:0 "Founded in [DynastyHouse.GetFoundYear] KC" + HOUSE_VIEW_FOUNDED:0 "Founded in [DynastyHouse.GetFoundYear] KC by [DynastyHouse.GetFounder.GetName]" + INNOVATION_ERA_NOT_IN_YEAR:0 "#N This Era is not available until $YEAR$ KC#!" + RULER_DESIGNER_BIRTH_YEAR:0 "Born: [RulerDesignerWindow.GetBirthYear] KC" \ No newline at end of file diff --git a/localization/replace/english/wc_game_rules_l_english.yml b/localization/replace/english/wc_game_rules_l_english.yml index b7f7ca5a54..6221088074 100644 --- a/localization/replace/english/wc_game_rules_l_english.yml +++ b/localization/replace/english/wc_game_rules_l_english.yml @@ -20,3 +20,10 @@ setting_random_ruler_placement_on_desc:0 "#warning (This game rule should already be set on a bookmark page to work)#! Rulers are randomly placed on the map. Each county gets a new faith and culture from it's new holder." setting_random_ruler_placement_on_conversion:1 "#high On (Conversion)#!" setting_random_ruler_placement_on_conversion_desc:1 "Rulers are randomly placed on the map. They convert to the historical holder's Faith." + + conversion_desc_genocide:0 "#clickable #Bold Warcraft#!#!: Also applies to Purges" + setting_default_culture_conversion_speed_desc:0 "Conversion speed is unchanged.\n$conversion_desc_genocide$" + setting_faster_culture_conversion_speed_desc:0 "The speed is increased, making conversion take roughly half of the time.\n$conversion_desc_genocide$" + setting_significantly_faster_culture_conversion_speed_desc:0 "The speed is significantly increased, making conversion take roughly a quarter of the time.\n$conversion_desc_genocide$" + setting_significantly_slower_culture_conversion_speed_desc:0 "The speed is significantly reduced, making conversion take roughly four times longer.\n$conversion_desc_genocide$" + setting_slower_culture_conversion_speed_desc:0 "The speed is reduced, making conversion take roughly twice the time.\n$conversion_desc_genocide$"