[
  {
    "path": ".gitignore",
    "content": "﻿################################################################################\n# This .gitignore file was automatically created by Microsoft(R) Visual Studio.\n################################################################################\n\n/.vs/ProjectSettings.json\n/.vs/slnx.sqlite\n"
  },
  {
    "path": "DTI_Prop_CT_Generator.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"\nCreated on Sat Jun 19 03:14:10 2021\n\n@author: AsteriskAmpersand\n\"\"\"\nimport re\n\ndef createCT(name,entryList):\n    entryPattern = \"\"\"\n            <CheatEntry>\n              <ID>1</ID>\n              <Description>\"%s\"</Description>\n              <VariableType>%s</VariableType>\n              <Address>+%s</Address>\n            </CheatEntry>\"\"\"\n    entries = ''.join((entryPattern%entry for entry in entryList))\n    return \"\"\"\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<CheatTable CheatEngineTableVersion=\"31\">\n  <CheatEntries>\n    <CheatEntry>\n      <ID>30</ID>\n      <Description>\"%s\"</Description>\n      <Options moHideChildren=\"1\"/>\n      <LastState Value=\"\" RealAddress=\"862E0AA0\"/>\n      <GroupHeader>1</GroupHeader>\n      <Address>862E0AA0</Address>\n      <CheatEntries>\n        <CheatEntry>\n          <ID>0</ID>\n          <Description>\"Class\"</Description>\n          <ShowAsHex>1</ShowAsHex>\n          <VariableType>Array of byte</VariableType>\n          <ByteLength>8</ByteLength>\n          <Address>+0</Address>\n        </CheatEntry>          \n%s\n      </CheatEntries>\n    </CheatEntry>\n  </CheatEntries>\n  <UserdefinedSymbols/>\n</CheatTable>\n    \n    \n    \"\"\"%(name,entries)\n\ncommentPattern = re.compile(r\"// [a-zA-Z0-9:]* vftable:([0-9A-Fx]*)\")\nclassPattern = re.compile(r\".*class\\s+([a-zA-Z0-9:]*)\")\nentryPattern = re.compile(r\"\\s*([a-zA-Z0-9]*)\\s*'(.*)'.*Offset:([0-9A-Fx]*)\" )\nendPattern = re.compile(r\" };\")\n\ntypings = {\"f64\" : \"Double\",\n           \"f32\" : \"Float\",\n           \"u64\" : \"8 Bytes\",\n           \"s64\" : \"8 Bytes\",\n           \"u32\" : \"4 Bytes\",\n           \"s32\" : \"4 Bytes\",\n           \"u16\" : \"2 Bytes\",\n           \"s16\" : \"2 Bytes\",\n           \"u8\" : \"Byte\",\n           \"s8\" : \"Byte\",\n           \"matrix44\" : \"Float\",\n           \"vector3\" : \"Float\",\n           \"bool\" : \"Byte\",\n           \"string\" : \"String\"\n           }\n\ndef parseTyping(typing):\n    if typing not in typings:\n        return \"4 Bytes\"\n    else:\n        return typings[typing]\n\ndef parseEntries(dataDumpClass):\n    started = False\n    entries = []\n    comment = \"\"\n    for line in dataDumpClass:\n        if not started:\n            commentMatch = commentPattern.match(line)\n            if commentMatch:\n                comment = \" [\"+commentMatch[1]+\"]\"\n            classMatch = classPattern.match(line)\n            if classMatch:\n                name = classMatch[1]+comment\n                started = True\n        if started: \n            entryMatch = entryPattern.match(line)\n            if entryMatch:\n                description = entryMatch[2]\n                typing = parseTyping(entryMatch[1])\n                offset = entryMatch[3]\n                if offset == \"0x7FFFFFFFFFFFFFFF\":\n                    offset = \"0x0\"\n                    description += \" [INVALID ENTRY]\"\n                if entryMatch[1] == \"matrix44\":\n                    for i in range(4):\n                        for j in range(4):\n                            entries.append((description+\"%d%d\"%(i,j),typing,hex(int(offset,16)+4*(j+4*i))[2:]))\n                elif entryMatch[1] == \"vector3\":\n                    for i in range(3):\n                        entries.append((description+\"%d\"%i,typing,hex(int(offset,16)+4*i)[2:]))\n                else:\n                    entries.append((description,typing,offset[2:]))\n            endMatch = endPattern.match(line)\n            if endMatch:\n                break\n    return name, entries        \n"
  },
  {
    "path": "EFX-PL-Editing/__init__.txt",
    "content": "\n"
  },
  {
    "path": "README.md",
    "content": "[![](https://cdn.discordapp.com/attachments/521438182311460879/646445510877642782/Modding_Wiki.fw.png)](https://github.com/Ezekial711/MonsterHunterWorldModding/wiki)\n[![](https://cdn.discordapp.com/attachments/521438182311460879/646437032205484042/Modding_Discord.fw.png)](https://discord.gg/gJwMdhK)\n"
  },
  {
    "path": "TestEAN",
    "content": "TestFile for commit\n"
  }
]