Posts: 268
Thanks: 1111 in 17 Posts
9 Achievements
Hello Pudding, I worked with traits before for a "adult" script mod that I made for the sims 3 sometime in December. I would recommend looking at this tutotrial if you haven't already as it has helped me a ton when it came to making custom traits.
Arsi'ls Custom Trait Tutorial The tutorial is within the description.
Also have you downloaded Arsils custom trait manager? I noticed that in your XML file, you did not include <CustomTraitsManager> </CustomTraitsManager>. Which has made me ask the question if you had downloaded it. Additionally, for my adult mod that I created with traits I did not include these lines of code which you had included in your Instantiator class.
Code:
public const ulong kFamiliarAnimalTrait = 0xCE63FA104F2423BC;
static Instantiator()
{
mXdb = XmlDbData.ReadData("PuddingFace_EnhancedWitches_Traits");
UIManager.NewHotInstallStoreTraitsData += AddTraits;
}
public static void AddTraits(ResourceKey[] resourceKeys)
{
TraitManager.ParseTraitData(mXdb, true);
}
This was my main portion of my Instantiator class for my mod that included custom traits. Which did not include a method to load in the custom traits. I believe Arsils custom trait manager loads them for you as long as you write the XML file correctly.
Code:
public static class Instantiator
{
[Tunable]
internal static bool kInstantiator = false;
private static EventListener sSimInstantiatedListener;
private static EventListener sSimAgedUpListener;
static Instantiator()
{
sSimAgedUpListener = null;
sSimInstantiatedListener = null;
World.OnWorldLoadFinishedEventHandler += new EventHandler(OnWorldLoadFinished);
LoadSaveManager.ObjectGroupsPreLoad += OnPreLoad;
}
public static void OnPreLoad()
{
new BuffBooter().LoadBuffData();
}
I will share how my custom traits XML file looks like. I'll shorten it by just including one of the custom traits.
Code:
<?xml version="1.0"?>
<CustomTraitsManager>
<!-- ############### TRAITS DEFINITIONS ############## -->
<!-- This is not here just for reference, it's needed for a successful parsing -->
<TraitList> <!-- row #0 -->
<Name></Name>
<Description></Description>
<Hex></Hex>
<CodeVersion></CodeVersion>
<AgeSpeciesVisible></AgeSpeciesVisible>
<SetNumbers></SetNumbers>
<Points>0</Points>
<RandomWeight>0</RandomWeight>
<Category></Category>
<CommodityName></CommodityName>
<FacialIdle></FacialIdle>
<AutonomousDesiredCommodity></AutonomousDesiredCommodity>
<AutonomousAvoidedCommodity></AutonomousAvoidedCommodity>
<IncreasedEffectiveness></IncreasedEffectiveness>
<ReducedEffectiveness></ReducedEffectiveness>
<xMin></xMin>
<DesireMin></DesireMin>
<xMax></xMax>
<DesireMax></DesireMax>
<Decay></Decay>
<Predicate></Predicate>
<CanBeLearnedRandomly>TRUE</CanBeLearnedRandomly>
<IntimacyLevel>10</IntimacyLevel>
<ActiveTopic></ActiveTopic>
<PreferredBookGenre></PreferredBookGenre>
<ThumbFilename></ThumbFilename>
<ThumbPieMenu></ThumbPieMenu>
<ThumbDislikePieMenu></ThumbDislikePieMenu>
<ThumbPose></ThumbPose>
<AddListenerFunction></AddListenerFunction>
<TraitTipDescription></TraitTipDescription>
<TraitTipIndex></TraitTipIndex>
<TraitToolTipText0></TraitToolTipText0>
<TraitToolTipText1></TraitToolTipText1>
<TraitToolTipText2></TraitToolTipText2>
<TraitToolTipText3></TraitToolTipText3>
<CanBeLearnedThroughConversation>True</CanBeLearnedThroughConversation>
<LifetimeRewardCategory>Other</LifetimeRewardCategory>
<ReinforcableAxis></ReinforcableAxis>
<ReinforcableThreshold></ReinforcableThreshold>
<ReinforcableOppositeTrait></ReinforcableOppositeTrait>
<OccultsTypesValidForTrait>All</OccultsTypesValidForTrait>
<Version>1.0</Version>
</TraitList>
<!-- From here on, we can define our custom trait or traits (it's fine to define more than one) -->
<TraitList> <!-- row #1 -->
<Hex>MonocoDoll_BigDickTrait=0x2AFE2A3E0757D9FB</Hex>
<CodeVersion>BaseGame</CodeVersion>
<Category>RewardMisc</Category>
<Name>MonocoDoll_BigDickTrait</Name>
<Description>MonocoDoll_BigDickTrait_desc</Description>
<Predicate>MonocoDoll_BigDickTrait_pre</Predicate>
<TraitToolTipText0>MonocoDoll_BigDickTrait_ttt0</TraitToolTipText0>
<TraitToolTipText1>MonocoDoll_BigDickTrait_ttt1</TraitToolTipText1>
<TraitToolTipText2></TraitToolTipText2>
<TraitToolTipText3></TraitToolTipText3>
<ThumbFilename>MonocoDoll_BigDick</ThumbFilename>
<ThumbPieMenu>MonocoDoll_BigDick_pie</ThumbPieMenu>
<ThumbDislikePieMenu>MonocoDoll_BigDick_dislike</ThumbDislikePieMenu>
</TraitList>
<!-- ############### FILTERS DEFINITIONS ############## -->
<!-- This is not here just for reference, it's needed for a successful parsing -->
<RequiredTrait> <!-- row #0 -->
<Name></Name>
<InteractionName></InteractionName>
<ObjectName></ObjectName>
</RequiredTrait>
<!-- From here on, we can define RequiredTrait filters -->
<!-- This is not here just for reference, it's needed for a successful parsing -->
<ExcludingTrait> <!-- row #0 -->
<Name></Name>
<InteractionName></InteractionName>
<ObjectName></ObjectName>
</ExcludingTrait>
<!-- From here on, we can define RequiredTrait filters -->
</CustomTraitsManager>
I hope this points you in the right direction. If you have any questions let me know, and I will do my best to help you out. If you wish to look at my mod with custom traits as a reference, you can find it at LoversLab.