Scriptable Asset

From COD Engine Research
Revision as of 00:27, 13 November 2014 by Aerosoul94 (talk | contribs) (Aerosoul94 moved page ScriptTable Asset to Scriptable Asset without leaving a redirect)

The scripttable asset was added in Ghosts and despite its name, does not contain a table of scriptfile assets. Instead it appears to be a format used to hold some scripting information for models and the collision map. Since it is so new, there is virtually nothing known about it. Note that it is misspelled in the executable ("scriptable").

struct unknownScriptTableStruct1Internal1Internal1UnionStruct6
{
  char * unknownString;
  char unknown[0x14];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct5
{
  char unknown1[0x10];
  char * unknownString;
  char unknown2[4];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct4
{
  XModel * unknownModel;
  char unknown[8];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct3
{
  char * unknownString;
  char unknown[0x10];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct2
{
  snd_alias_list_name unknownSound;
  char unknown[4];
};

struct unknownScriptTableStruct1Internal1Internal1UnionStruct1
{
  FxEffectDef * unknownFx;
  ScriptString unknownString;
  char unknown[6];
};

union unknownScriptTableStruct1Internal1Internal1Union
{
  char (*unknown1)[6];  //If parent->type == 0xA
  XModel * unknownModel;//else if == 0
  unknownScriptTableStruct1Internal1Internal1UnionStruct1 * unknownStruct1; //else if == 1
  unknownScriptTableStruct1Internal1Internal1UnionStruct2 * unknownStruct2; //else if == 2
  unknownScriptTableStruct1Internal1Internal1UnionStruct3 * unknownStruct3; //else if == 3
  char (*unknown2)[0xC];  //else if == 4
  char (*unknown3)[8];  //else if == 5
  unknownScriptTableStruct1Internal1Internal1UnionStruct4 * unknownStruct4; //else if == 6
  unknownScriptTableStruct1Internal1Internal1UnionStruct5 * unknownStruct5; //else if == 7
  char (*unknown4)[0x16]; //else if == 8
  unknownScriptTableStruct1Internal1Internal1UnionStruct6 * unknownStruct6; //else if == 9

};

struct unknownScriptTableStruct1Internal1Internal1
{
  int type;
  unknownScriptTableStruct1Internal1Internal1Union unknownUnion;
};

struct unknownScriptTableStruct1Internal1
{
  ScriptString unknownScriptString1;
  ScriptString unknownScriptString2;
  unknownScriptTableStruct1Internal1Internal1 * unknownStructArray; //Count = unknownCount1;
  byte unknownCount1;
  char unknown[7];
};

struct unknownScriptTableStruct1
{
  unknownScriptTableStruct1Internal1 * unkownStructArray; //Count = unknownCount
  ScriptString unknownScriptString;
  unsigned short unknownCount;
  int unknown;
};

struct unknownScriptTableStruct2Internal1
{
  FxEffectDef * unknownFx;
  ScriptString unknownScriptString;
};

struct unknownScriptTableStruct2
{
  ScriptString unknownScriptString;
  int type;
  union {
       snd_alias_list_name unknownSound; //if type == 0
       unknownScriptTableSTruct2Internal1 unknownStruct; //else if == 1
  };
};

struct ScriptTable
{
  const char * name;
  XModel * unknownModel1;
  char * unknownString1;
  char * unknownString2;
  unknownScriptTableStruct1 * unknownStructArray1; //count = unknownCount1
  unknownScriptTableStruct2 * unknownStructArray2; //count = unknownCount2
  char unknown2[5];
  byte unknownCount1;
  char unknown1[2];
  byte unknownCount2;
};