Quick Reply
Search this Thread
Test Subject
Original Poster
#1 Old 2nd Jan 2026 at 8:47 AM Last edited by e.arth : 2nd Jan 2026 at 5:37 PM.
Default Custom adventures in tombs in The Sims 3 in a custom world
I’m trying to create custom adventures in tombs in The Sims 3 in a custom world.

After some testing, I think I’ve finally managed to identify part of the internal flow the game uses to link a tomb room to an opportunity.

From what I’ve been able to investigate, the game seems to store a string called AdventureKey inside a specific TombRoomMarker of the tomb (in such a way that, if that TombRoomMarker is deleted from the lot, the game stops identifying the location as the one linked to the opportunity). This string, in turn, is persisted in the UNKN 0x04F7BDA7 resource, located inside the .world file. This resource apparently stores the state of the tomb rooms when the world is exported.

The interesting point is that there is no interaction on the TombRoomMarker that allows defining or editing the AdventureKey directly. This key seems to be introduced indirectly through the TombRoomInfo.SetName() method. From what I’ve been able to understand, the TombRoomMarker instantiates a TombRoomInfo to register the room’s information, and it is during this process that the AdventureKey is created and stored. It apparently consists of a data pair made up of TombRoomInfo.Name and an ObjectId, possibly the ObjectId of the TombRoomMarker itself that holds the tomb’s Name.

The AdventureComponent.LoadAdventureKeys method is responsible for saving this data. It also resets the tomb’s Name to null at the end of the process. This method is called by AdventureComponent.LoadAllWorldbuilderDataAndAdvendureKeys(), but I still haven’t been able to identify when this call actually occurs. When using Analyze on it in ILSpy, nothing appears under Used By, which makes it difficult to trace the exact point at which the game executes this routine.


However, I haven’t found any interaction or tool in the game that allows passing parameters to SetName() or directly manipulating AdventureKey.

My goal is to be able to read and modify the AdventureKey of a TombRoomMarker during gameplay so that it works in EIG, and to allow the creation of fully custom adventures in custom worlds before exporting. My initial idea would be to inject an interaction into the TombRoomMarker that could:

  • call SetName() with a custom AdventureKey; or
  • directly introduce the AdventureKey from the AdventureComponent class.

Could someone help me understand where to begin to inject this interaction?
Reaper
staff: moderator
#2 Old 3rd Jan 2026 at 3:07 AM
Sims3.Gameplay.ObjectComponents.AdventureComponent::LoadAllWorldbuilderDataAndAdvendureKeys is called from Sims3.Gameplay.InWorldState::Startup via an instance of Sims3.Gameplay.Utilities.Initializers, instantiated with an XML file called PostWorldInitializers from GameplayData.package.

I suppose you should first have a basic understanding of how a custom interaction creation works. Here is a text-based tutorial, and here is a video tutorial.

This is a signature.
Back to top