SOBJ Editing - Ezekial711/MonsterHunterWorldModding GitHub Wiki

General

Spawning Gimmick Objects, Monsters, Endemic Creatures and NPCs is controlled in .sobj (rSetObject) files.

A single .sobj file can contain multiple objects to spawn and is not exclusive to one spawn type (see below). *.sobj files can be referenced in *.sobjl (rSetObjectList).

Unfortunately, you can't create a new sobjl as the game only references existing sobjl(s).

File format analysis

rSetObjectList

typedef struct {
    int32  FileType;
    uint32 ObjectCount;
} Header;

typedef struct {
    uint32 StartOfHeader; //Always 01 00 00 00
    int32  Index;
    string Command; /Always rSetObject
    string Path; //Relative Path is nativePC
} rSetObject;

rSetObject

typedef struct {
    long    fType<name="File Type">;
    if (fType == 6451059) {      //This is for SOBJs
        long    Version;
        long    sType;
        long    SOHCnt;
        char    SOH[SOHCnt];    //Only for Otomos
    }
    uint32  ObjectCount;
} Header;

typedef struct {
    byte    StartOfHeader;
    string  CommandType;
    long    EndOfTrail;
    Spawn   spawn;             //XYZ Struct
    string  ObjectName;
    oStruct ostruct;           //Unknown Struct
    string  pointA;
    string  pointB;
    short   NULL;
    uint32  ParameterCount;
    Parameters parameters[ParameterCount]; 
    byte    CD[64];
    byte    gm;
    if(gm != 0){GM  gm<name="GM Unknown">;}
    ...
    ...
    SOBJ Data Structs
} SOBJ;

You can download the full template from https://github.com/DaveuRrr/MHWResearch

Spawn types

There are many more spawn types, hence only those explored will be listed below.

Descriptor Use
cAssetBasicSetObject Gimmick Object
EMDesireSetter Enemy Monster Routing
EMGroupSetter Enemy Monster Small Spawn (Zako)
EMRepopSetter Enemy Monster Respawn
EmSetter Enemy Monster Spawn (Boss)
cFishingFloatSetter Unknown
cKimenTraceLogSetter Unknown
cNpcTraceLogSetter Unkown
cPlJumpPos Player Spawn
cOtGroupSetter Grimalkyne Spawn
cOtOtasukeSetter Grimalkyne Helper Spawn
cOtPosSetter Palico Sit Command
cOtRandomSetter Random Palico Helper GuildCard
cTerrainPoint Unknown
cTraceLogSetter Unknown
cSetAnimalArea Endemic Creature
cSetFishArea Endemic Creature
cQuestNpcSetter NPC
cVillageNpcSetter NPC
cWildCatTraceLogSetter Unknown

Example

Depending on the extent of your modification, it is advised to create a new .sobj and reference it in the correct .sobjl. *Please be considerate of other peoples mods that may conflict with existing sobjls.

Credit to Vuze, Dave uRrr, Material, DeathCream, Fandirus