Results 1 to 11 of 11

Thread: Specializing family members

  1. #1

    Default Specializing family members

    As a firm believer in higher education, I send all the children in my extended family for tutoring. Some of them come of age with the potential for further specialization, such as in agriculture, industry, or even philosophy. How do I maximize the chances for realizing that potential? How does that realization of potential manifest itself in the game?

    I really like the variety of traits the young come with. One more interesting factor to distract me.

  2. #2
    Jake Armitage's Avatar Artifex
    Patrician

    Join Date
    Apr 2011
    Location
    apartment 6
    Posts
    4,694

    Default Re: Specializing family members

    the only thing tutoring gives is a +2 to a single feature (randomly to authority, zeal, cunning), nothing else

    you're talking about skills which are randomly given when he comes of age

  3. #3

    Default Re: Specializing family members

    Quote Originally Posted by Jake Armitage View Post
    the only thing tutoring gives is a +2 to a single feature (randomly to authority, zeal, cunning), nothing else

    you're talking about skills which are randomly given when he comes of age
    Actually I am talking about traits, but my question remains the same. How does a character improve on those traits? Supposedly being born with some particular traits unlocks development potential to improve on those traits. But how?

    I don't see any way to turn that guy into the industrial magnate that he is said to have the potential to become. Is it just a question of making him a governor of a province that has a gold mine? Does he need to be governor when the mine is built? Or build other industrial buildings? How does the agriculturist become a rural scholar, by farming? How does someone realize his potential to become a renowned philosopher?

    I see some skills when leveling up can increase intellectual potential, but they are not specific to the traits. Do those skills, mainly in management, play a role in improving a trait? When do we see it happening?

    Thanks for your attention.

  4. #4
    Jake Armitage's Avatar Artifex
    Patrician

    Join Date
    Apr 2011
    Location
    apartment 6
    Posts
    4,694

    Default Re: Specializing family members

    It's quite complex and I don't have the knowledge to describe it to you, best thing would be to check DeI > lua_scripts > export_triggers.
    It's a script but it's intuitive to understand, you'll find there are a lot of options about your question.

  5. #5

    Default Re: Specializing family members

    I don't know thing one about code. Have mercy on an old man.

    Can you get your supervisor on the phone?

    So that is it? Wow, so helpful Jake.
    Last edited by ♔Greek Strategos♔; April 25, 2019 at 08:10 AM. Reason: Merged posts.

  6. #6
    Jake Armitage's Avatar Artifex
    Patrician

    Join Date
    Apr 2011
    Location
    apartment 6
    Posts
    4,694

    Default Re: Specializing family members

    Calm down man, I'm not a nanny.
    That's not easy to explain (mostly because I don't know how it works), so I would have to go to the script, search for every entry regarding this and then explain it to you.
    Read descriptions in game, everything regarding the growth of those traits should be described.

    Code is a text and it's easy to understand if you pay some attention.

  7. #7

    Default Re: Specializing family members

    Quote Originally Posted by Jake Armitage View Post
    Read descriptions in game, everything regarding the growth of those traits should be described.
    I agree. One would expect that the methods to develop special potentials would be described in game, but they are not. At least not that I have seen.

    I did not mistake you for a nanny. I was not expecting you in particular to respond, since i do not know you. I was hoping to get a reply from someone who had an answer to the question. I am not even looking for a cookbook recipe of how each talent is improved, just general guidance.

    Thanks anyways. Perhaps if you know of someone who is more knowledgeable on the question you could ask her or him to reply. I am sure I am not the only player who would like the information.

  8. #8
    Jake Armitage's Avatar Artifex
    Patrician

    Join Date
    Apr 2011
    Location
    apartment 6
    Posts
    4,694

    Default Re: Specializing family members

    There are some descriptions here and there (into traits, ancs...)

    anyway this is the part of the code reagrding Brawler, Commander and Scholar (they are the only ones to improve on a lot of different situations).
    All other traits may just change regarding age (not sure 100% but should be so)

    As you can see there are a lot of situations

    Code:
    --------------------------------------------------------------------------------------
    ---------------------------------------------------------------------------------------
    -----------DeI Changing Traits - Brawler, Commander, Scholar Sept 2018
    ----------------------------------------------------------------------
    
    ----Starting Traits
    
    -- Brawler
    --Character created normal trigger, level 2 starting
    function dei_changing_trait_brawler_impl (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and not (context:character():has_trait("r2_sp_trait_non_roman_background_fighter_civ") or context:character():has_trait("r2_sp_trait_non_roman_background_fighter_barb"))
    end 
    
    events.CharacterCreated[#events.CharacterCreated+1] =
    function (context)
        if dei_changing_trait_brawler_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 2, 100, context)
            return true
        end
        return false
    end
    
    
    
    --Chararacter turn start for starting characters
    function dei_changing_trait_brawler_impl2 (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and not (context:character():has_trait("r2_sp_trait_non_roman_background_fighter_civ") or context:character():has_trait("r2_sp_trait_non_roman_background_fighter_barb"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_brawler_impl2(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 2, 100, context)
            return true
        end
        return false
    end
    
    --Character created trigger if character has brute background trait, level 3 starting
    function dei_changing_trait_brawler_impla (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():has_trait("r2_sp_trait_non_roman_background_fighter_civ") or context:character():has_trait("r2_sp_trait_non_roman_background_fighter_barb"))
    end 
    
    events.CharacterCreated[#events.CharacterCreated+1] =
    function (context)
        if dei_changing_trait_brawler_impla(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 3, 100, context)
            return true
        end
        return false
    end
    
    
    
    --Chararacter turn start for starting characters with brute background trait
    function dei_changing_trait_brawler_impl2a (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():has_trait("r2_sp_trait_non_roman_background_fighter_civ") or context:character():has_trait("r2_sp_trait_non_roman_background_fighter_barb"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_brawler_impl2a(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 3, 100, context)
            return true
        end
        return false
    end
    
    -----------------------------------------------------
    -- Commander
    --Character created normal trigger, level 2 starting
    function dei_changing_trait_commander_impl (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and not (context:character():has_trait("r2_sp_trait_all_tactician_barb") or context:character():has_trait("r2_sp_trait_all_strategist_barb") or context:character():has_trait("r2_sp_trait_all_background_command_barb") or context:character():has_trait("r2_sp_trait_all_tactician_civ") or context:character():has_trait("r2_sp_trait_all_strategist_civ") or context:character():has_trait("r2_sp_trait_all_background_command_civ"))
    end 
    
    events.CharacterCreated[#events.CharacterCreated+1] =
    function (context)
        if dei_changing_trait_commander_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 2, 100, context)
            return true
        end
        return false
    end
    
    
    
    --Chararacter turn start for starting characters
    function dei_changing_trait_commander_impl2 (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and not (context:character():has_trait("r2_sp_trait_all_tactician_barb") or context:character():has_trait("r2_sp_trait_all_strategist_barb") or context:character():has_trait("r2_sp_trait_all_background_command_barb") or context:character():has_trait("r2_sp_trait_all_tactician_civ") or context:character():has_trait("r2_sp_trait_all_strategist_civ") or context:character():has_trait("r2_sp_trait_all_background_command_civ"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_commander_impl2(context) then
            effect.trait("dei_changing_trait_commander", "agent", 2, 100, context)
            return true
        end
        return false
    end
    
    --Character created trigger if character has background trait, level 3 starting
    function dei_changing_trait_commander_impla (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():has_trait("r2_sp_trait_all_tactician_barb") or context:character():has_trait("r2_sp_trait_all_strategist_barb") or context:character():has_trait("r2_sp_trait_all_background_command_barb") or context:character():has_trait("r2_sp_trait_all_tactician_civ") or context:character():has_trait("r2_sp_trait_all_strategist_civ") or context:character():has_trait("r2_sp_trait_all_background_command_civ"))
    end 
    
    events.CharacterCreated[#events.CharacterCreated+1] =
    function (context)
        if dei_changing_trait_commander_impla(context) then
            effect.trait("dei_changing_trait_commander", "agent", 3, 100, context)
            return true
        end
        return false
    end
    
    
    
    --Chararacter turn start for starting characters with background trait
    function dei_changing_trait_commander_impl2a (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():has_trait("r2_sp_trait_all_tactician_barb") or context:character():has_trait("r2_sp_trait_all_strategist_barb") or context:character():has_trait("r2_sp_trait_all_background_command_barb") or context:character():has_trait("r2_sp_trait_all_tactician_civ") or context:character():has_trait("r2_sp_trait_all_strategist_civ") or context:character():has_trait("r2_sp_trait_all_background_command_civ"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_commander_impl2a(context) then
            effect.trait("dei_changing_trait_commander", "agent", 3, 100, context)
            return true
        end
        return false
    end
    
    
    ----------------------------------------------------
    -- Scholar
    --Character created normal trigger, level 2 starting
    function dei_changing_trait_scholar_impl (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and not (context:character():has_trait("r2_sp_trait_all_leader_architect_barb") or context:character():has_trait("r2_sp_trait_all_background_philosopher_barb") or context:character():has_trait("r2_sp_trait_all_background_scientist_barb") or context:character():has_trait("r2_sp_trait_all_leader_architect_civ") or context:character():has_trait("r2_sp_trait_all_background_philosopher_civ") or context:character():has_trait("r2_sp_trait_all_background_scientist_civ"))
    end 
    
    events.CharacterCreated[#events.CharacterCreated+1] =
    function (context)
        if dei_changing_trait_scholar_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 2, 100, context)
            return true
        end
        return false
    end
    
    
    
    --Chararacter turn start for starting characters
    function dei_changing_trait_scholar_impl2 (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and not (context:character():has_trait("r2_sp_trait_all_leader_architect_barb") or context:character():has_trait("r2_sp_trait_all_background_philosopher_barb") or context:character():has_trait("r2_sp_trait_all_background_scientist_barb") or context:character():has_trait("r2_sp_trait_all_leader_architect_civ") or context:character():has_trait("r2_sp_trait_all_background_philosopher_civ") or context:character():has_trait("r2_sp_trait_all_background_scientist_civ"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_impl2(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 2, 100, context)
            return true
        end
        return false
    end
    
    --Character created trigger if character has background trait, level 3 starting
    function dei_changing_trait_scholar_impla (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():has_trait("r2_sp_trait_all_leader_architect_barb") or context:character():has_trait("r2_sp_trait_all_background_philosopher_barb") or context:character():has_trait("r2_sp_trait_all_background_scientist_barb") or context:character():has_trait("r2_sp_trait_all_leader_architect_civ") or context:character():has_trait("r2_sp_trait_all_background_philosopher_civ") or context:character():has_trait("r2_sp_trait_all_background_scientist_civ"))
    end 
    
    events.CharacterCreated[#events.CharacterCreated+1] =
    function (context)
        if dei_changing_trait_scholar_impla(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 3, 100, context)
            return true
        end
        return false
    end
    
    
    
    --Chararacter turn start for starting characters with background trait
    function dei_changing_trait_scholar_impl2a (context)
            return char_is_general(context:character()) and not context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():has_trait("r2_sp_trait_all_leader_architect_barb") or context:character():has_trait("r2_sp_trait_all_background_philosopher_barb") or context:character():has_trait("r2_sp_trait_all_background_scientist_barb") or context:character():has_trait("r2_sp_trait_all_leader_architect_civ") or context:character():has_trait("r2_sp_trait_all_background_philosopher_civ") or context:character():has_trait("r2_sp_trait_all_background_scientist_civ"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_impl2a(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 3, 100, context)
            return true
        end
        return false
    end
    
    -----Changing traits up and down
    ---Brawler
    
    
    -- 5 to 6
    
    function dei_changing_trait_brawler_level1d_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 5) and (context:character():age() >= 35) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.3) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.6)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.3) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.6))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  12) and ((context:character() == context:pending_battle():attacker() and context:pending_battle():attacker_battle_result() == "heroic_victory") or (context:character() == context:pending_battle():defender() and context:pending_battle():defender_battle_result() == "heroic_victory")) and (context:character():faction():culture() == "rom_Roman")
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1d_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 1, 20, context)
            return true
        end
        return false
    end
    
    -- 5 to 7
    
    function dei_changing_trait_brawler_level1e_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 5) and (context:character():age() >= 35) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.3) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.6)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.3) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.6))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  12) and ((context:character() == context:pending_battle():attacker() and context:pending_battle():attacker_battle_result() == "heroic_victory") or (context:character() == context:pending_battle():defender() and context:pending_battle():defender_battle_result() == "heroic_victory")) and ((context:character():faction():subculture() == "sc_rom_african_arabian") or (context:character():faction():subculture() == "sc_rom_barb_east") or (context:character():faction():subculture() == "sc_rom_parthian"))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1e_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 2, 20, context)
            return true
        end
        return false
    end
    
    -- 5 to 8
    
    function dei_changing_trait_brawler_level1f_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 5) and (context:character():age() >= 35) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.3) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.6)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.3) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.6))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  12) and ((context:character() == context:pending_battle():attacker() and context:pending_battle():attacker_battle_result() == "heroic_victory") or (context:character() == context:pending_battle():defender() and context:pending_battle():defender_battle_result() == "heroic_victory")) and ((context:character():faction():culture() == "rom_Eastern") or (context:character():faction():culture() == "rom_Barbarian") or (context:character():faction():culture() == "rom_Hellenistic")) and not ((context:character():faction():subculture() == "sc_rom_african_arabian") or (context:character():faction():subculture() == "sc_rom_barb_east") or (context:character():faction():subculture() == "sc_rom_parthian"))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1f_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 3, 20, context)
            return true
        end
        return false
    end
    
    
    -- 4 to 5
    
    function dei_changing_trait_brawler_level1c_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 4) and (context:character():age() >= 32) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.4)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.4))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  9)
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1c_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 1, 20, context)
            return true
        end
        return false
    end
    
    --3 to 4
    
    function dei_changing_trait_brawler_level1b_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 3) and (context:character():age() >= 28) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.4)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.4))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  6)
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1b_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 1, 20, context)
            return true
        end
        return false
    end
    
    --2 to 3
    function dei_changing_trait_brawler_level1a_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 2) and (context:character():age() >= 24) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.4)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.4))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  4)
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1a_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 1, 20, context)
            return true
        end
        return false
    end
    
    --1 to 2
    function dei_changing_trait_brawler_level1aa_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 1) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():attacker():body_guard_casulties() <= 0.4)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.1) and (context:character():model():pending_battle():defender():body_guard_casulties() <= 0.4))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle())))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1aa_impl(context) then
            effect.trait("dei_changing_trait_brawler", "agent", 1, 20, context)
            return true
        end
        return false
    end
    
    -- 2 to 1 
    
    function dei_changing_trait_brawler_level1i_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 2) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.5)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.5)))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1i_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_brawler", "agent", -1, 20, context)
            --scripting.game_interface:show_message_event("custom_event_600", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    -- 3 to 2
    
    function dei_changing_trait_brawler_level1h_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 3) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.5)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.5)))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1h_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_brawler", "agent", -1, 20, context)
            --scripting.game_interface:show_message_event("custom_event_600", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    -- 4 to 3 
    
    function dei_changing_trait_brawler_level1g_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_brawler") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_brawler") == 4) and ((char_is_attacker(context:character()) and (context:character():model():pending_battle():attacker():body_guard_casulties() >= 0.5)) or (char_is_defender(context:character()) and (context:character():model():pending_battle():defender():body_guard_casulties() >= 0.5)))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_brawler_level1g_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_brawler", "agent", -1, 20, context)
            --scripting.game_interface:show_message_event("custom_event_600", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    
    ---Commander
    
    -- 5 to 6
    
    function dei_changing_trait_commander_level1d_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 5) and (context:character():age() >= 35) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  12) and ((context:character() == context:pending_battle():attacker() and context:pending_battle():attacker_battle_result() == "heroic_victory") or (context:character() == context:pending_battle():defender() and context:pending_battle():defender_battle_result() == "heroic_victory")) and (((context:character():offensive_ambush_battles_won() >= 3) and (context:character():offensive_ambush_battles_fought() >= 3)) or ((context:character():defensive_ambush_battles_won() >= 3) and (context:character():defensive_ambush_battles_fought() >= 3)))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1d_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 1, 50, context)
            return true
        end
        return false
    end
    
    -- 5 to 7
    
    function dei_changing_trait_commander_level1e_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 5) and (context:character():age() >= 35) and (char_is_defender(context:character()) and defender_victory(context:character():model():pending_battle())) and (context:character():battles_won() >=  12) and (context:character() == context:pending_battle():defender() and context:pending_battle():defender_battle_result() == "heroic_victory") and ((context:character():defensive_battles_won() >= 5) and (context:character():defensive_battles_fought() >= 5))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1e_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 2, 40, context)
            return true
        end
        return false
    end
    
    -- 5 to 9
    
    function dei_changing_trait_commander_level1fa_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 5) and (context:character():age() >= 35) and (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle())) and (context:character():battles_won() >=  12) and (context:character() == context:pending_battle():attacker() and context:pending_battle():attacker_battle_result() == "heroic_victory") and ((context:character():offensive_sieges_won() >= 5) and (context:character():offensive_sieges_fought() >= 5))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1fa_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 4, 30, context)
            return true
        end
        return false
    end
    
    -- 5 to 8
    
    function dei_changing_trait_commander_level1f_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 5) and (context:character():age() >= 35) and (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle())) and (context:character():battles_won() >=  12) and (context:character() == context:pending_battle():attacker() and context:pending_battle():attacker_battle_result() == "heroic_victory") and ((context:character():offensive_battles_won() >= 5) and (context:character():offensive_battles_fought() >= 5))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1f_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 3, 30, context)
            return true
        end
        return false
    end
    
    -- 4 to 5
    
    function dei_changing_trait_commander_level1c_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 4) and (context:character():age() >= 32) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  9) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "decisive_victory" or context:pending_battle():attacker_battle_result() == "heroic_victory")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "heroic_victory" or context:pending_battle():defender_battle_result() == "decisive_victory")))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1c_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 1, 30, context)
            return true
        end
        return false
    end
    
    --3 to 4
    
    function dei_changing_trait_commander_level1b_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 3) and (context:character():age() >= 28) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "decisive_victory" or context:pending_battle():attacker_battle_result() == "heroic_victory")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "heroic_victory" or context:pending_battle():defender_battle_result() == "decisive_victory"))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  7)
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1b_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 1, 30, context)
            return true
        end
        return false
    end
    
    --2 to 3
    function dei_changing_trait_commander_level1a_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 2) and (context:character():age() >= 24) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "decisive_victory" or context:pending_battle():attacker_battle_result() == "heroic_victory")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "heroic_victory" or context:pending_battle():defender_battle_result() == "decisive_victory"))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle()))) and (context:character():battles_won() >=  5)
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1a_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 1, 40, context)
            return true
        end
        return false
    end
    
    --1 to 2
    function dei_changing_trait_commander_level1aa_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 1) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "decisive_victory" or context:pending_battle():attacker_battle_result() == "heroic_victory")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "heroic_victory" or context:pending_battle():defender_battle_result() == "decisive_victory"))) and ((char_is_defender(context:character())) and defender_victory(context:character():model():pending_battle()) or (char_is_attacker(context:character()) and attacker_victory(context:character():model():pending_battle())))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1aa_impl(context) then
            effect.trait("dei_changing_trait_commander", "agent", 1, 40, context)
            return true
        end
        return false
    end
    
    
    -- 2 to 1 
    
    function dei_changing_trait_commander_level1i_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 2) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "pyrrhic_victory" or context:pending_battle():attacker_battle_result() == "close_victory" or context:pending_battle():attacker_battle_result() == "decisive_defeat" or context:pending_battle():attacker_battle_result() == "crushing_defeat")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "pyrrhic_victory" or context:pending_battle():defender_battle_result() == "close_victory" or context:pending_battle():defender_battle_result() == "crushing_defeat" or context:pending_battle():defender_battle_result() == "decisive_defeat")))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1i_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_commander", "agent", -1, 20, context)
            --scripting.game_interface:show_message_event("custom_event_601", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    -- 3 to 2
    
    function dei_changing_trait_commander_level1h_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 3) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "pyrrhic_victory" or context:pending_battle():attacker_battle_result() == "close_victory" or context:pending_battle():attacker_battle_result() == "decisive_defeat" or context:pending_battle():attacker_battle_result() == "crushing_defeat")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "pyrrhic_victory" or context:pending_battle():defender_battle_result() == "close_victory" or context:pending_battle():defender_battle_result() == "crushing_defeat" or context:pending_battle():defender_battle_result() == "decisive_defeat")))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1h_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_commander", "agent", -1, 20, context)
            --scripting.game_interface:show_message_event("custom_event_601", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    -- 4 to 3 
    
    function dei_changing_trait_commander_level1g_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_commander") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_commander") == 4) and ((context:character() == context:pending_battle():attacker() and (context:pending_battle():attacker_battle_result() == "pyrrhic_victory" or context:pending_battle():attacker_battle_result() == "close_victory" or context:pending_battle():attacker_battle_result() == "decisive_defeat" or context:pending_battle():attacker_battle_result() == "crushing_defeat")) or (context:character() == context:pending_battle():defender() and (context:pending_battle():defender_battle_result() == "pyrrhic_victory" or context:pending_battle():defender_battle_result() == "close_victory" or context:pending_battle():defender_battle_result() == "crushing_defeat" or context:pending_battle():defender_battle_result() == "decisive_defeat")))
    end 
    
    events.CharacterCompletedBattle[#events.CharacterCompletedBattle+1] =
    function (context)
        if dei_changing_trait_commander_level1g_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_commander", "agent", -1, 20, context)
            --scripting.game_interface:show_message_event("custom_event_601", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    
    
    ---Scholar
    
    -- 5 to 6
    
    function dei_changing_trait_scholar_level1d_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 5) and (context:character():age() >= 35) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 90  and ((context:character():has_skill("general_capable_bureaucrat_2_adept_tradesman") or context:character():has_skill("general_capable_bureaucrat_2_agriculturist") or context:character():has_skill("general_capable_bureaucrat_2_city_governor") or context:character():has_skill("general_capable_bureaucrat_2_political_reformer")) and (context:character():has_skill("general_rightful_sovereign_2_master_of_statecraft") or context:character():has_skill("general_rightful_sovereign_2_political_animal") or context:character():has_skill("general_rightful_sovereign_2_unwavering_patriot")))and (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon")) and (context:character():has_trait("r2_sp_trait_greco_roman_humors_philosophic") or context:character():has_trait("r2_sp_trait_greco_roman_humors_philosophic_tier_2_general") or context:character():has_trait("r2_sp_trait_greco_roman_humors_philosophic_tier_3_general") or context:character():has_trait("r2_sp_trait_greco_roman_humors_philosophic_tier_4_general"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1d_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 1, 5, context)
            return true
        end
        return false
    end
    
    -- 5 to 7
    
    function dei_changing_trait_scholar_level1e_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 5) and (context:character():age() >= 35) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 90  and ((context:character():has_skill("general_capable_bureaucrat_2_adept_tradesman") or context:character():has_skill("general_capable_bureaucrat_2_agriculturist") or context:character():has_skill("general_capable_bureaucrat_2_city_governor") or context:character():has_skill("general_capable_bureaucrat_2_political_reformer")) and (context:character():has_skill("general_rightful_sovereign_2_master_of_statecraft") or context:character():has_skill("general_rightful_sovereign_2_political_animal") or context:character():has_skill("general_rightful_sovereign_2_unwavering_patriot"))) and (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon")) and (context:character():has_trait("r2_sp_trait_all_leader_farmer_civ") or context:character():has_trait("r2_sp_trait_all_leader_farmer_barb"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1e_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 2, 5, context)
            return true
        end
        return false
    end
    
    -- 5 to 9
    
    function dei_changing_trait_scholar_level1fa_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 5) and (context:character():age() >= 35) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 90  and ((context:character():has_skill("general_capable_bureaucrat_2_adept_tradesman") or context:character():has_skill("general_capable_bureaucrat_2_agriculturist") or context:character():has_skill("general_capable_bureaucrat_2_city_governor") or context:character():has_skill("general_capable_bureaucrat_2_political_reformer")) and (context:character():has_skill("general_rightful_sovereign_2_master_of_statecraft") or context:character():has_skill("general_rightful_sovereign_2_political_animal") or context:character():has_skill("general_rightful_sovereign_2_unwavering_patriot"))) and (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon")) and (context:character():has_trait("r2_sp_trait_all_leader_trader_barb") or context:character():has_trait("r2_sp_trait_all_leader_trader_civ"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1fa_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 4, 5, context)
            return true
        end
        return false
    end
    
    -- 5 to 8
    
    function dei_changing_trait_scholar_level1f_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 5) and (context:character():age() >= 35) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 90  and ((context:character():has_skill("general_capable_bureaucrat_2_adept_tradesman") or context:character():has_skill("general_capable_bureaucrat_2_agriculturist") or context:character():has_skill("general_capable_bureaucrat_2_city_governor") or context:character():has_skill("general_capable_bureaucrat_2_political_reformer")) and (context:character():has_skill("general_rightful_sovereign_2_master_of_statecraft") or context:character():has_skill("general_rightful_sovereign_2_political_animal") or context:character():has_skill("general_rightful_sovereign_2_unwavering_patriot"))) and (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon")) and (context:character():has_trait("r2_sp_trait_all_leader_miner_civ") or context:character():has_trait("r2_sp_trait_all_leader_miner_barb"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1f_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 3, 10, context)
            return true
        end
        return false
    end
    
    -- 4 to 5
    
    function dei_changing_trait_scholar_level1c_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 4) and (context:character():age() >= 32) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 80  and ((context:character():has_skill("general_capable_bureaucrat_2_adept_tradesman") or context:character():has_skill("general_capable_bureaucrat_2_agriculturist") or context:character():has_skill("general_capable_bureaucrat_2_city_governor") or context:character():has_skill("general_capable_bureaucrat_2_political_reformer")) and (context:character():has_skill("general_rightful_sovereign_2_master_of_statecraft") or context:character():has_skill("general_rightful_sovereign_2_political_animal") or context:character():has_skill("general_rightful_sovereign_2_unwavering_patriot")))and (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1c_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 1, 5, context)
            return true
        end
        return false
    end
    
    
    --3 to 4
    
    function dei_changing_trait_scholar_level1b_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 3) and (context:character():age() >= 28) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 70  and (((context:character():has_skill("general_capable_bureaucrat_2_adept_tradesman") or context:character():has_skill("general_capable_bureaucrat_2_agriculturist") or context:character():has_skill("general_capable_bureaucrat_2_city_governor") or context:character():has_skill("general_capable_bureaucrat_2_political_reformer")) and (context:character():has_skill("general_rightful_sovereign_2_master_of_statecraft") or context:character():has_skill("general_rightful_sovereign_2_political_animal") or context:character():has_skill("general_rightful_sovereign_2_unwavering_patriot"))) or (context:character():has_ancillary("r2_sp_anc_all_house_tutor_latin") or context:character():has_ancillary("r2_sp_anc_all_house_tutor") or context:character():has_ancillary("r2_sp_anc_all_house_wise_man"))) and (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_2") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_2") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_2") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_2") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1b_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 1, 5, context)
            return true
        end
        return false
    end
    
    --2 to 3
    function dei_changing_trait_scholar_level1a_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 2) and (context:character():age() >= 24) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 60 and ((context:character():has_skill("general_rightful_sovereign_1") and context:character():has_skill("general_capable_bureaucrat_1")) or (context:character():has_ancillary("r2_sp_anc_all_house_tutor_latin") or context:character():has_ancillary("r2_sp_anc_all_house_tutor") or context:character():has_ancillary("r2_sp_anc_all_house_wise_man")))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1a_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 1, 5, context)
            return true
        end
        return false
    end
    
    
    --1 to 2
    function dei_changing_trait_scholar_level1aa_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 1) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() >= 50 and ((context:character():has_skill("general_rightful_sovereign_1") or context:character():has_skill("general_capable_bureaucrat_1")) or (context:character():has_ancillary("r2_sp_anc_all_house_tutor_latin") or context:character():has_ancillary("r2_sp_anc_all_house_tutor") or context:character():has_ancillary("r2_sp_anc_all_house_wise_man")))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1aa_impl(context) then
            effect.trait("dei_changing_trait_scholar", "agent", 1, 10, context)
            return true
        end
        return false
    end
    
    
    -- 2 to 1 
    
    function dei_changing_trait_scholar_level1i_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 2) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() <= -60 and not (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1i_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_scholar", "agent", -1, 10, context)
            --scripting.game_interface:show_message_event("custom_event_602", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    -- 3 to 2
    
    function dei_changing_trait_scholar_level1h_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 3) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() <= -40 and not (garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_EASTERN_city_slot_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_3") or  garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_HELLENIC_agora_research_5") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_3") or garrison_has_building(context:character():garrison_residence(), "rom_ROMAN_forum_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_4") or garrison_has_building(context:character():garrison_residence(), "rom_BARBARIAN_enclosure_research_3") or garrison_has_building_superchain(context:character():garrison_residence(), "rom_MilitaryBuffMajor") or garrison_has_building(context:character():garrison_residence(), "greek_city_centre_library_5_pergamon"))
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1h_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_scholar", "agent", -1, 10, context)
            --scripting.game_interface:show_message_event("custom_event_602", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    
    -- 4 to 3 
    
    function dei_changing_trait_scholar_level1g_impl (context)
            return char_is_general(context:character()) and context:character():has_trait("dei_changing_trait_scholar") and context:character():is_male() and (context:character():trait_level("dei_changing_trait_scholar") == 4) and context:character():has_garrison_residence() and context:character():garrison_residence():region():public_order() <= -30 
    end 
    
    events.CharacterTurnStart[#events.CharacterTurnStart+1] =
    function (context)
        if dei_changing_trait_scholar_level1g_impl(context) and context:character():faction():is_human() == true then
            effect.trait("dei_changing_trait_scholar", "agent", -1, 5, context)
            --scripting.game_interface:show_message_event("custom_event_602", context:character():display_position_x(), context:character():display_position_y())
            return true
        end
        return false
    end
    you may check this thread and ask Dresden for a summarization
    http://www.twcenter.net/forums/showt...ghlight=traits

  9. #9

    Default Re: Specializing family members

    Thank you for the copy and paste. I confess the code is Greek to me, but I do appreciate the effort. The link to Dresden's thread was more helpful.

    I see now that what I am asking about are higher tier intellectual traits that can be unlocked. I am still not clear on exactly how it happens, but I will continue to tinker with the characters I use as governors to see what works. The problem is most of them end up being conscripted to head armies before I can see results.

    Thanks again.
    Last edited by Zom; April 14, 2019 at 03:38 PM.

  10. #10
    valerius karamanus's Avatar Civis
    Join Date
    Dec 2018
    Location
    Constantinopolis
    Posts
    126

    Default Re: Specializing family members

    I presume it takes a long time to acquire these mastery traits. Your character needs related skills and he needs to be in satisfied settlements with advanced libraries. Old age is required too. Battle related traits demand high numbers of victories.

    I'm actually working on a submod which overhauls this matter. It seperates characters as "military/administrative minded" like M2TW and adds lots of improvable specializations like infantry commander, farmer, sailor etc. I hope I can finish it someday before I die lol.

  11. #11
    Jake Armitage's Avatar Artifex
    Patrician

    Join Date
    Apr 2011
    Location
    apartment 6
    Posts
    4,694

    Default Re: Specializing family members

    seems good!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •