This thread should have been created awhile ago to along with the guide I made. This thread is for discussing Trait/Ancillary related stuff specifically as it relates to the content of the Guide: The Complete Traits/Ancillaries Guide.
I was looking at EB's trait/ancillary file while testing changes to ATVTW, and some of the things they were doing gave me two ideas for ancillaries, one a better way to figure out which ancillaries a character has, and two a way to get around the ExcludedAncillaries hardcoded limit of 3. I find both of these exceptionally annoying and bent my mind to try and abolish them, only to realize that if I'd examined the EB files a little more closely I'd have noticed they were doing exactly the same thing I'd just thought up . . . yea for re-inventing the wheel!!
1) How to tell which Ancillaries a character has - For the sake of simplicity I'm going to refer to the priest_of_zeus ancillary as it is in vanilla, but this should be able to be applied to any ancillary in any mod. To be able to accurately determine if a character has the actor ancillary:
a) create two traits which corresponds to the ancillary:Trait priest_of_zeusAncillary
Characters family
Hidden
NoGoingBackLevel 2
AntiTraits priest_of_zeusAcquired
Level does_not_matter
Description does_not_matter
EffectsDescription does_not_matter
Threshold 1
;---------------------------------------
Trait priest_of_zeusAcquired
Characters family
Hidden
NoGoingBackLevel 1
AntiTraits priest_of_zeusAncillary
Level does_not_matter
Description does_not_matter
EffectsDescription does_not_matter
Threshold 1
b) take the trigger which assigns the actor ancillary, and change it as follows:Trigger trigger_priest_of_zeus
WhenToTest CharacterTurnEnd
Condition EndedInSettlement
and RemainingMPPercentage = 100
and SettlementBuildingExists >= odeon
and IsGeneral
AcquireAncillary priest_of_zeus chance 15
Affects priest_of_zeusAncillary 1 chance 15
c) add two new trigger as follows:Trigger trigger_priest_of_zeus2
WhenToTest CharacterTurnEnd
Condition Trait priest_of_zeusAncillary = 1
AcquireAncillary priest_of_zeus chance 100
;--------------------------------
Trigger trigger_priest_of_zeus3
WhenToTest CharacterTurnEnd
Condition Trait priest_of_zeusAncillary = 1
Affects priest_of_zeusAncillaryAcquired 2 Chance 100
Notes:- This is slightly different from how EB does it, as EB has the triggers which assign the priest_of_zeusAncillary and priest_of_zeusAncillaryAcquired traits in EDCT.
- The second trait priest_of_zeusAncillaryAcquired is required to prevent players from repeatedly spawning the same ancillary over and over again by moving an ancillary from one character to another.
2) How to bypass the ExcludedAncillaries hardcoded limit of 3 ancillaries - This actually requires that you use the above method of tracking ancillaries. For demonstrating how this would work I'm going to limit each character to 1 priest ancillary (of course players can pass ancillaries around to bypass this . . .)
a) Create a new trait which will be used to exclude whichever ancillaries you desire
Trait priestAncillary
Characters family
Hidden
Level does_not_matter
Description does_not_matter
EffectsDescription does_not_matter
Threshold 1
b) Change the trigger for each trait that tracks if a particular priest ancillary can be acquired as follows:
Trigger trigger_priest_of_zeus
WhenToTest CharacterTurnEnd
Condition EndedInSettlement
and RemainingMPPercentage = 100
and SettlementBuildingExists >= odeon
and IsGeneral
and Trait priestAncillary = 0
Affects priest_of_zeusAncillary 1 chance 6
c) Add an effects line for acquiring the new trait to the thrid trigger created above as follows:
Trigger trigger_priest_of_zeus3
WhenToTest CharacterTurnEnd
Condition Trait priest_of_zeusAncillary = 1
Affects priest_of_zeusAncillaryAcquired 2 Chance 100
Affects priestAncillary 1 Chance 100
Notes:
- Using the priestAncillary example, as soon as any priest ancillary is acquired, all other priestAncillaries are blocked from being acquired
- A similar method can be used to bypass the AntiTraits hardcoded limit of 20 antitraits, though I don't think that limit is reached nearly as often
This method of keeping track of ancillaries has the one major drawback that if a players swaps ancillaries around, it will no longer be accurate, since as far as I know there is no way to know if an ancillary has been swapped from character to character. If you are worried about that eventuality then Makanyane method using the NavalCommand attribute is another method for tracking a particular ancillary (see the guide for details).
Any comments on the validity, or suggestions on how this method can be improved would be appreciated, at which point I'll add it to the actual guide.
Bookmarks