コード例 #1
0
            // more fields can be added (see in visualGGPK)

            public ModRecord(Memory m, StatsDat sDat, TagsDat tagsDat, long addr)
            {
                Address  = addr;
                Key      = m.ReadStringU(m.ReadLong(addr + 0));
                Unknown8 = m.ReadLong(addr + 0x8);
                MinLevel = m.ReadInt(addr + 0x1C);

                StatNames = new[]
                {
                    m.ReadLong(addr + 0x28) == 0
                        ? null
                        : sDat.records[m.ReadStringU(m.ReadLong(m.ReadLong(addr + 0x28)))],
                    m.ReadLong(addr + 0x38) == 0
                        ? null
                        : sDat.records[m.ReadStringU(m.ReadLong(m.ReadLong(addr + 0x38)))],
                    m.ReadLong(addr + 0x48) == 0
                        ? null
                        : sDat.records[m.ReadStringU(m.ReadLong(m.ReadLong(addr + 0x48)))],
                    m.ReadLong(addr + 0x58) == 0
                        ? null
                        : sDat.records[m.ReadStringU(m.ReadLong(m.ReadLong(addr + 0x58)))]
                };

                Domain = (ModDomain)m.ReadInt(addr + 0x60);

                UserFriendlyName = m.ReadStringU(m.ReadLong(addr + 0x64));

                AffixType = (ModType)m.ReadInt(addr + 0x6C);
                Group     = m.ReadStringU(m.ReadLong(addr + 0x70));

                StatRange = new[]
                {
                    new IntRange(m.ReadInt(addr + 0x78), m.ReadInt(addr + 0x7C)),
                    new IntRange(m.ReadInt(addr + 0x80), m.ReadInt(addr + 0x84)),
                    new IntRange(m.ReadInt(addr + 0x88), m.ReadInt(addr + 0x8C)),
                    new IntRange(m.ReadInt(addr + 0x90), m.ReadInt(addr + 0x94))
                };

                Tags = new TagsDat.TagRecord[m.ReadLong(addr + 0x98)];
                long ta = m.ReadLong(addr + 0xA0);

                for (int i = 0; i < Tags.Length; i++)
                {
                    long ii = ta + 0x8 + 0x10 * i;
                    Tags[i] = tagsDat.records[m.ReadStringU(m.ReadLong(ii, 0), 255)];
                }

                TagChances = new Dictionary <string, int>(m.ReadInt(addr + 0xA8));
                long tc = m.ReadLong(addr + 0xB0);

                for (int i = 0; i < Tags.Length; i++)
                {
                    TagChances[Tags[i].Key] = m.ReadInt(tc + 4 * i);
                }
                IsEssence = m.ReadByte(addr + 0x1AC) == 0x01;
                Tier      = m.ReadStringU(m.ReadLong(addr + 0x1C5));
            }
コード例 #2
0
 public ModifierDefinition(
     string id, ModDomain domain, ModGenerationType generationType,
     IReadOnlyList <ModifierSpawnWeight> spawnWeights, IReadOnlyList <CraftableStat> stats)
 {
     Id             = id;
     Domain         = domain;
     GenerationType = generationType;
     SpawnWeights   = spawnWeights;
     Stats          = stats;
 }