more work on ItemMagEdit
This commit is contained in:
+1
-1
@@ -98,7 +98,7 @@ set(SOURCES
|
||||
src/LevelTable.cc
|
||||
src/Lobby.cc
|
||||
src/Loggers.cc
|
||||
src/MagEvolutionTable.cc
|
||||
src/MagMetadataTable.cc
|
||||
src/Main.cc
|
||||
src/Map.cc
|
||||
src/Menu.cc
|
||||
|
||||
@@ -87,7 +87,7 @@ Some of the more likely useful files are:
|
||||
* **src/ItemCreator.hh/cc**: Reverse-engineered item generator from Episodes 1&2 (used for all versions)
|
||||
* **src/ItemParameterTable.cc**: Format of many structures in ItemPMT.prs (see BinaryItemParameterTableT)
|
||||
* **src/Map.hh/cc**: Map file (.dat/.evt) structure, listing of object/enemy types and parameters, and reverse-engineered Challenge Mode random enemy generation algorithm
|
||||
* **src/MagEvolutionTable.cc**: Format of ItemMagEdit.prs
|
||||
* **src/MagMetadataTable.cc**: Format of ItemMagEdit.prs
|
||||
* **src/QuestScript.cc**: Complete listing of all quest opcodes on all versions, along with their arguments and behavior
|
||||
* **src/RareItemSet.hh/cc**: Format of ItemRT files (rare item drop tables)
|
||||
* **src/SaveFileFormats.hh**: Definitions of save file structures for all versions
|
||||
|
||||
@@ -1130,3 +1130,7 @@ Rappy size modifier
|
||||
|
||||
Disable HP reduction warning sound in Challenge mode
|
||||
3OE1 => 04076A28 4E800020
|
||||
|
||||
Mag invincibility effect sparkliness modifier
|
||||
(Default 003C; smaller values are more sparkly)
|
||||
3OE1 => 801131C4 3860XXXX
|
||||
|
||||
@@ -142,6 +142,26 @@ public:
|
||||
uint16_t feed_table = 0;
|
||||
uint8_t photon_blast = 0;
|
||||
uint8_t activation = 0;
|
||||
// Internally, when a mag effect is about to activate, the game computes a byte with the following flags:
|
||||
// 01 = HP low (causes effect in mag's on_low_hp if eligible, priority 2)
|
||||
// 02 = died (causes effect in mag's on_death if eligible, priority 3)
|
||||
// 04 = synchro < 30 (causes effect 5, priority 7)
|
||||
// 08 = synchro > 100 (causes effect 4, priority 8)
|
||||
// 10 = TODO (3OE1:80112B24) (causes effect 3, priority 6)
|
||||
// 20 = player leveled up (causes effect 2, priority 5)
|
||||
// 40 = PB meter filled (causes effect in mag's on_pb_full if eligible, priority 1)
|
||||
// 80 = entered boss arena (causes effect in mag's on_boss if eligible, priority 4)
|
||||
// Values for on_* trigger fields:
|
||||
// 0 = no effect
|
||||
// 1 = TODO (used internally; not synced via 6x61; possibly just cancel previous effect?)
|
||||
// 2 = TODO (used internally; seems to be effect 1, but delayed by 45 frames?)
|
||||
// 3 = TODO (used internally; seems to be effect 1, but delayed by 90 frames?)
|
||||
// 4 = Shifta + Deband (level = (IQ / 40) + 1; delayed by 90 frames)
|
||||
// 5 = TODO (used internally; seems to be effect 1, but delayed by 90 frames?)
|
||||
// 6 = Resta (not synced via 6x61; level = (IQ / 40) + 1; delayed by 90 frames)
|
||||
// 7 = Reverser (not synced via 6x61; delayed by 90 frames)
|
||||
// 8 = invincibility (duration = (((IQ + synchro) / 3) + 40) * 30 frames, but this is capped at 30 seconds, so in
|
||||
// practice it's always just 30 seconds regardless of IQ and synchro)
|
||||
uint8_t on_pb_full = 0;
|
||||
uint8_t on_low_hp = 0;
|
||||
uint8_t on_death = 0;
|
||||
|
||||
+4
-4
@@ -131,7 +131,7 @@ void player_use_item(std::shared_ptr<Client> c, size_t item_index, std::shared_p
|
||||
|
||||
} else if ((primary_identifier & 0xFFFF0000) == 0x030C0000) { // Non-combo mag cells
|
||||
auto& mag = player->inventory.items[player->inventory.find_equipped_item(EquipSlot::MAG)];
|
||||
uint8_t evolution_number = s->mag_evolution_table(c->version())->get_evolution_number(mag.data.data1[1]);
|
||||
uint8_t evolution_number = s->mag_metadata_table(c->version())->get_evolution_number(mag.data.data1[1]);
|
||||
if (evolution_number < 4) {
|
||||
switch (item.data.data1[2]) {
|
||||
case 0x00: // Cell of MAG 502
|
||||
@@ -268,7 +268,7 @@ void apply_mag_feed_result(
|
||||
ItemData& mag_item,
|
||||
const ItemData& fed_item,
|
||||
std::shared_ptr<const ItemParameterTable> item_parameter_table,
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table,
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table,
|
||||
uint8_t char_class,
|
||||
uint8_t section_id,
|
||||
bool version_has_rare_mags) {
|
||||
@@ -314,7 +314,7 @@ void apply_mag_feed_result(
|
||||
|
||||
uint8_t mag_level = mag_item.compute_mag_level();
|
||||
mag_item.data1[2] = mag_level;
|
||||
uint8_t evolution_number = mag_evolution_table->get_evolution_number(mag_item.data1[1]);
|
||||
uint8_t evolution_number = mag_metadata_table->get_evolution_number(mag_item.data1[1]);
|
||||
uint8_t mag_number = mag_item.data1[1];
|
||||
|
||||
// Note: Sega really did just hardcode all these rules into the client. There is no data file describing these
|
||||
@@ -489,7 +489,7 @@ void player_feed_mag(std::shared_ptr<Client> c, size_t mag_item_index, size_t fe
|
||||
player->inventory.items[mag_item_index].data,
|
||||
player->inventory.items[fed_item_index].data,
|
||||
s->item_parameter_table(c->version()),
|
||||
s->mag_evolution_table(c->version()),
|
||||
s->mag_metadata_table(c->version()),
|
||||
player->disp.visual.sh.char_class,
|
||||
player->disp.visual.sh.section_id,
|
||||
!is_v1_or_v2(c->version()));
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ void apply_mag_feed_result(
|
||||
ItemData& mag_item,
|
||||
const ItemData& fed_item,
|
||||
std::shared_ptr<const ItemParameterTable> item_parameter_table,
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table,
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table,
|
||||
uint8_t char_class,
|
||||
uint8_t section_id,
|
||||
bool version_has_rare_mags);
|
||||
|
||||
@@ -1,306 +0,0 @@
|
||||
#include "MagEvolutionTable.hh"
|
||||
|
||||
#include "CommonFileFormats.hh"
|
||||
|
||||
template <bool BE>
|
||||
struct MotionReferenceTables {
|
||||
// It seems that there are two definition tables, but only the first is used on any version of PSO. On v3 and later,
|
||||
// the two offsets point to the same table, but on v2 they don't and the second table contains different data.
|
||||
// TODO: Figure out what the deal is with the different v2 tables.
|
||||
U32T<BE> ref_table;
|
||||
U32T<BE> unused_ref_table;
|
||||
} __packed_ws_be__(MotionReferenceTables, 0x08);
|
||||
|
||||
template <bool BE>
|
||||
struct ColorEntry {
|
||||
// Colors are specified as 4 floats, each in the range [0, 1], for each color channel. The default colors are:
|
||||
// alpha red green blue color (see StaticGameData.cc)
|
||||
// 00 => 1.0 1.0 0.2 0.1 red
|
||||
// 01 => 1.0 0.2 0.2 1.0 blue
|
||||
// 02 => 1.0 1.0 0.9 0.1 yellow
|
||||
// 03 => 1.0 0.1 1.0 0.1 green
|
||||
// 04 => 1.0 0.8 0.1 1.0 purple
|
||||
// 05 => 1.0 0.1 0.1 0.2 black
|
||||
// 06 => 1.0 0.9 1.0 1.0 white
|
||||
// 07 => 1.0 0.1 0.9 1.0 cyan
|
||||
// 08 => 1.0 0.5 0.3 0.2 brown
|
||||
// 09 => 1.0 1.0 0.4 0.0 orange (v3+)
|
||||
// 0A => 1.0 0.502 0.545 0.977 light-blue (v3+)
|
||||
// 0B => 1.0 0.502 0.502 0.0 olive (v3+)
|
||||
// 0C => 1.0 0.0 0.941 0.714 turquoise (v3+)
|
||||
// 0D => 1.0 0.8 0.098 0.392 fuchsia (v3+)
|
||||
// 0E => 1.0 0.498 0.498 0.498 grey (v3+)
|
||||
// 0F => 1.0 0.996 0.996 0.832 cream (v3+)
|
||||
// 10 => 1.0 0.996 0.498 0.784 pink (v3+)
|
||||
// 11 => 1.0 0.0 0.498 0.322 dark-green (v3+)
|
||||
// If a mag's color index is invalid (>= 0x12), it is reassigned at equip time using the following logic:
|
||||
// - Set base_index to player->visual.skin if player is an android, or player->visual.costume otherwise
|
||||
// - If (base_index % 9) < 7 (that is, if their costume or body color is one of the colored slots on the character
|
||||
// creation screen), then set the mag color to either (base_index % 9) or (base_index % 9) + 9, with equal
|
||||
// probability.
|
||||
// - If (base_index % 9) >= 7 (that is, if their costume or body color is one of the last two blank-colored slots
|
||||
// on the character creation screen), then set the mag color to any of the available colors, chosen at random.
|
||||
F32T<BE> alpha;
|
||||
F32T<BE> red;
|
||||
F32T<BE> green;
|
||||
F32T<BE> blue;
|
||||
ColorEntry(const VectorXYZTF& c) : alpha(c.t), red(c.x), green(c.y), blue(c.z) {}
|
||||
operator VectorXYZTF() const {
|
||||
return VectorXYZTF{this->red.load(), this->green.load(), this->blue.load(), this->alpha.load()};
|
||||
}
|
||||
} __packed_ws_be__(ColorEntry, 0x10);
|
||||
|
||||
template <bool BE>
|
||||
struct UnknownA3EntryT {
|
||||
uint8_t flags;
|
||||
uint8_t unknown_a2;
|
||||
U16T<BE> unknown_a3;
|
||||
U16T<BE> unknown_a4;
|
||||
U16T<BE> unknown_a5;
|
||||
UnknownA3EntryT(const MagEvolutionTable::UnknownA3Entry& e)
|
||||
: flags(e.flags),
|
||||
unknown_a2(e.unknown_a2),
|
||||
unknown_a3(e.unknown_a3),
|
||||
unknown_a4(e.unknown_a4),
|
||||
unknown_a5(e.unknown_a5) {}
|
||||
operator MagEvolutionTable::UnknownA3Entry() const {
|
||||
return MagEvolutionTable::UnknownA3Entry{
|
||||
this->flags, this->unknown_a2, this->unknown_a3, this->unknown_a4, this->unknown_a5};
|
||||
}
|
||||
} __packed_ws_be__(UnknownA3EntryT, 0x08);
|
||||
|
||||
struct HeaderV1 {
|
||||
parray<uint8_t, 4> unknown_a1 = {0x0F, 0xF0, 0x00, 0x00};
|
||||
le_uint32_t unknown_a2 = 0x00000003;
|
||||
le_uint16_t unknown_a3 = 0x00C8;
|
||||
le_uint16_t unknown_a4 = 0x0078;
|
||||
// unknown_a5 added in V2
|
||||
le_float unknown_a6 = 0.25;
|
||||
le_float unknown_a7 = 0.1;
|
||||
le_uint32_t unknown_a8 = 0x00000C00;
|
||||
} __packed_ws__(HeaderV1, 0x18);
|
||||
|
||||
template <bool BE>
|
||||
struct HeaderV2V3V4 {
|
||||
parray<uint8_t, 4> unknown_a1 = {0x0F, 0xF0, 0x00, 0x00};
|
||||
U32T<BE> unknown_a2 = 0x00000003;
|
||||
U16T<BE> unknown_a3 = 0x00C8;
|
||||
U16T<BE> unknown_a4 = 0x0078;
|
||||
parray<uint8_t, 4> unknown_a5 = {0xC8, 0x00, 0x00, 0x00};
|
||||
F32T<BE> unknown_a6 = 0.25;
|
||||
F32T<BE> unknown_a7 = 0.1;
|
||||
U32T<BE> unknown_a8 = 0x00000C00;
|
||||
} __packed_ws_be__(HeaderV2V3V4, 0x1C);
|
||||
|
||||
// Fields:
|
||||
// 112K / V1 / V2 / V3 / BB R
|
||||
// 0018 / 0018 / 001C / 001C / 001C motion_tables.ref_table // -> MotionReference[NumMags]
|
||||
// 0228 / 0228 / 02D4 / 001C / 001C motion_tables.unused_ref_table // -> MotionReference[NumMags]
|
||||
// 0438 / 0438 / 05BC / 0340 / 0400 * motion_tables; // -> MotionReferenceTables
|
||||
// 0440 / 0440 / 0594 / 0348 / 0408 * unknown_a2; // -> (uint8_t[2])[NumMags] (references into unknown_a3)
|
||||
// 0498 / 0498 / 0608 / 03CE / 04AE * unknown_a3; // -> UnknownA3Entry[max(unknown_a2) + 1]
|
||||
// 0510 / 0520 / 06B0 / 0476 / 0556 * unknown_a4; // -> uint8_t[NumMags]
|
||||
// 053C / 054C / 06EC / 04BC / 05AC * color_table; // -> ColorEntry[NumColors]
|
||||
// ---- / ---- / 077C / 05DC / 06CC * evolution_number_table; // -> uint8_t[NumMags]
|
||||
|
||||
template <bool BE>
|
||||
struct RootV1 {
|
||||
U32T<BE> motion_tables;
|
||||
U32T<BE> unknown_a2;
|
||||
U32T<BE> unknown_a3;
|
||||
U32T<BE> unknown_a4;
|
||||
U32T<BE> color_table;
|
||||
} __packed_ws_be__(RootV1, 0x14);
|
||||
|
||||
template <bool BE>
|
||||
struct RootV2V3V4 : RootV1<BE> {
|
||||
U32T<BE> evolution_number_table;
|
||||
} __packed_ws_be__(RootV2V3V4, 0x18);
|
||||
|
||||
static uint8_t get_v1_mag_evolution_number(uint8_t data1_1) {
|
||||
static const std::array<uint8_t, 0x2C> v1_evolution_number_table{
|
||||
/* 00 */ 0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2,
|
||||
/* 10 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 3, 4, 3, 3,
|
||||
/* 20 */ 3, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 4};
|
||||
if (data1_1 >= v1_evolution_number_table.size()) {
|
||||
throw std::runtime_error("invalid mag number");
|
||||
}
|
||||
return v1_evolution_number_table[data1_1];
|
||||
}
|
||||
|
||||
template <typename HeaderT, typename RootT, size_t NumMags, size_t NumColors, bool BE>
|
||||
class BinaryMagEvolutionTableT : public MagEvolutionTable {
|
||||
public:
|
||||
explicit BinaryMagEvolutionTableT(std::shared_ptr<const std::string> data)
|
||||
: data(data), r(*data), root(&r.pget<RootT>(this->r.pget_u32l(this->data->size() - 0x10))) {}
|
||||
virtual ~BinaryMagEvolutionTableT() = default;
|
||||
|
||||
template <typename RawT, typename ParsedT>
|
||||
const ParsedT& add_to_vector_cache(std::vector<ParsedT>& cache, size_t base_offset, size_t index) const {
|
||||
while (cache.size() <= index) {
|
||||
cache.emplace_back(this->r.pget<RawT>(base_offset + sizeof(RawT) * cache.size()));
|
||||
}
|
||||
return cache[index];
|
||||
}
|
||||
|
||||
virtual size_t num_mags() const {
|
||||
return NumMags;
|
||||
}
|
||||
|
||||
virtual size_t num_motion_entries(bool use_second_table) const {
|
||||
const auto& tables = this->r.pget<MotionReferenceTables<BE>>(this->root->motion_tables);
|
||||
return get_rel_array_count<MotionReference>(
|
||||
this->all_start_offsets(), use_second_table ? tables.unused_ref_table : tables.ref_table);
|
||||
}
|
||||
|
||||
virtual const MotionReference& get_motion_reference(bool use_second_table, size_t index) const {
|
||||
if (index >= this->num_motion_entries(use_second_table)) {
|
||||
throw std::logic_error("Invalid motion reference index");
|
||||
}
|
||||
const auto& tables = this->r.pget<MotionReferenceTables<BE>>(this->root->motion_tables);
|
||||
uint32_t array_offset = use_second_table ? tables.unused_ref_table : tables.ref_table;
|
||||
return this->r.pget<MotionReference>(array_offset + sizeof(MotionReference) * index);
|
||||
}
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t index) const {
|
||||
if (index >= this->num_mags()) {
|
||||
throw std::logic_error("Invalid unknown_a2 index");
|
||||
}
|
||||
uint32_t base_offset = this->root->unknown_a2 + (index * 2);
|
||||
return std::make_pair(this->r.pget_u8(base_offset), this->r.pget_u8(base_offset + 1));
|
||||
}
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const {
|
||||
return get_rel_array_count<UnknownA3EntryT<BE>>(this->all_start_offsets(), this->root->unknown_a3);
|
||||
}
|
||||
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t index) const {
|
||||
if (index >= this->num_unknown_a3_entries()) {
|
||||
throw std::logic_error("Invalid unknown_a2 index");
|
||||
}
|
||||
return this->add_to_vector_cache<UnknownA3EntryT<BE>>(this->unknown_a3_entries, this->root->unknown_a3, index);
|
||||
}
|
||||
|
||||
virtual uint8_t get_unknown_a4(size_t index) const {
|
||||
if (index >= this->num_mags()) {
|
||||
throw std::logic_error("Invalid unknown_a4 index");
|
||||
}
|
||||
return this->r.pget_u8(this->root->unknown_a2 + index);
|
||||
}
|
||||
|
||||
virtual size_t num_colors() const {
|
||||
return NumColors;
|
||||
}
|
||||
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t index) const {
|
||||
if (index >= NumColors) {
|
||||
throw std::runtime_error("invalid mag color index");
|
||||
}
|
||||
return this->add_to_vector_cache<ColorEntry<BE>>(this->colors, this->root->color_table, index);
|
||||
}
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const {
|
||||
if (data1_1 >= this->num_mags()) {
|
||||
throw std::logic_error("Invalid unknown_a4 index");
|
||||
}
|
||||
if constexpr (requires { this->root->evolution_number_table; }) {
|
||||
return this->r.pget_u8(this->root->evolution_number_table + data1_1);
|
||||
} else {
|
||||
return get_v1_mag_evolution_number(data1_1);
|
||||
}
|
||||
}
|
||||
|
||||
const std::set<uint32_t>& all_start_offsets() const {
|
||||
if (this->start_offsets.empty()) {
|
||||
this->start_offsets = all_relocation_offsets_for_rel_file<BE>(r.pgetv(0, r.size()), r.size());
|
||||
}
|
||||
return this->start_offsets;
|
||||
}
|
||||
|
||||
protected:
|
||||
std::shared_ptr<const std::string> data;
|
||||
phosg::StringReader r;
|
||||
const RootT* root;
|
||||
mutable std::set<uint32_t> start_offsets;
|
||||
mutable std::vector<UnknownA3Entry> unknown_a3_entries;
|
||||
mutable std::vector<VectorXYZTF> colors;
|
||||
};
|
||||
|
||||
class MagEvolutionTableDCNTE : public MagEvolutionTable {
|
||||
public:
|
||||
MagEvolutionTableDCNTE() = default;
|
||||
virtual ~MagEvolutionTableDCNTE() = default;
|
||||
|
||||
virtual size_t num_mags() const {
|
||||
return 0x2C;
|
||||
}
|
||||
|
||||
virtual size_t num_motion_entries(bool) const {
|
||||
return 0;
|
||||
}
|
||||
virtual const MotionReference& get_motion_reference(bool, size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const {
|
||||
return 0;
|
||||
}
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual uint8_t get_unknown_a4(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual size_t num_colors() const {
|
||||
return 0;
|
||||
}
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const {
|
||||
return get_v1_mag_evolution_number(data1_1);
|
||||
}
|
||||
};
|
||||
|
||||
using MagEvolutionTableDC112000 = BinaryMagEvolutionTableT<HeaderV1, RootV1<false>, 0x28, 0x09, false>;
|
||||
using MagEvolutionTableV1 = BinaryMagEvolutionTableT<HeaderV1, RootV1<false>, 0x28, 0x09, false>;
|
||||
using MagEvolutionTableV2 = BinaryMagEvolutionTableT<HeaderV2V3V4<false>, RootV2V3V4<false>, 0x3A, 0x09, false>;
|
||||
using MagEvolutionTableGCNTE = BinaryMagEvolutionTableT<HeaderV2V3V4<true>, RootV2V3V4<true>, 0x3A, 0x09, true>;
|
||||
using MagEvolutionTableGC = BinaryMagEvolutionTableT<HeaderV2V3V4<true>, RootV2V3V4<true>, 0x43, 0x12, true>;
|
||||
using MagEvolutionTableXB = BinaryMagEvolutionTableT<HeaderV2V3V4<false>, RootV2V3V4<false>, 0x43, 0x12, false>;
|
||||
using MagEvolutionTableV4 = BinaryMagEvolutionTableT<HeaderV2V3V4<false>, RootV2V3V4<false>, 0x53, 0x12, false>;
|
||||
|
||||
std::shared_ptr<MagEvolutionTable> MagEvolutionTable::create(
|
||||
std::shared_ptr<const std::string> data, Version version) {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
return std::make_shared<MagEvolutionTableDCNTE>();
|
||||
case Version::DC_11_2000:
|
||||
return std::make_shared<MagEvolutionTableDC112000>(data);
|
||||
case Version::DC_V1:
|
||||
return std::make_shared<MagEvolutionTableV1>(data);
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
case Version::PC_V2:
|
||||
return std::make_shared<MagEvolutionTableV2>(data);
|
||||
case Version::GC_NTE:
|
||||
return std::make_shared<MagEvolutionTableGCNTE>(data);
|
||||
case Version::GC_V3:
|
||||
case Version::GC_EP3:
|
||||
case Version::GC_EP3_NTE:
|
||||
return std::make_shared<MagEvolutionTableGC>(data);
|
||||
case Version::XB_V3:
|
||||
return std::make_shared<MagEvolutionTableXB>(data);
|
||||
case Version::BB_V4:
|
||||
return std::make_shared<MagEvolutionTableV4>(data);
|
||||
default:
|
||||
throw std::logic_error("Cannot create mag evolution table for this version");
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "WindowsPlatform.hh"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "CommonFileFormats.hh"
|
||||
#include "Text.hh"
|
||||
#include "Types.hh"
|
||||
#include "Version.hh"
|
||||
|
||||
class MagEvolutionTable {
|
||||
public:
|
||||
struct MotionReference {
|
||||
struct Side {
|
||||
// This specifies which entry in ItemMagMotion.dat is used. The file is just a list of 0x64-byte structures.
|
||||
// 0xFF = no TItemMagSub is created
|
||||
uint8_t motion_table_entry = 0xFF;
|
||||
parray<uint8_t, 5> unknown_a1 = 0;
|
||||
} __packed_ws__(Side, 0x06);
|
||||
parray<Side, 2> sides; // [0] = right side, [1] = left side
|
||||
} __packed_ws__(MotionReference, 0x0C);
|
||||
|
||||
struct UnknownA3Entry {
|
||||
uint8_t flags;
|
||||
uint8_t unknown_a2;
|
||||
uint16_t unknown_a3;
|
||||
uint16_t unknown_a4;
|
||||
uint16_t unknown_a5;
|
||||
};
|
||||
|
||||
virtual ~MagEvolutionTable() = default;
|
||||
|
||||
static std::shared_ptr<MagEvolutionTable> create(std::shared_ptr<const std::string> data, Version version);
|
||||
|
||||
virtual size_t num_mags() const = 0;
|
||||
|
||||
virtual size_t num_motion_entries(bool use_second_table) const = 0;
|
||||
virtual const MotionReference& get_motion_reference(bool use_second_table, size_t index) const = 0;
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t index) const = 0;
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const = 0;
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t index) const = 0;
|
||||
|
||||
virtual uint8_t get_unknown_a4(size_t index) const = 0;
|
||||
|
||||
virtual size_t num_colors() const = 0;
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t index) const = 0;
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const = 0;
|
||||
|
||||
protected:
|
||||
MagEvolutionTable() = default;
|
||||
};
|
||||
@@ -0,0 +1,580 @@
|
||||
#include "MagMetadataTable.hh"
|
||||
|
||||
#include "CommonFileFormats.hh"
|
||||
|
||||
MagMetadataTable::MotionReferences MagMetadataTable::MotionReferences::from_json(const phosg::JSON& json) {
|
||||
auto parse_side = [](Side& side, const phosg::JSON& side_json) -> void {
|
||||
side.eff_1 = side_json.at("Eff1").as_int();
|
||||
side.eff_2 = side_json.at("Eff2").as_int();
|
||||
side.eff_3 = side_json.at("Eff3").as_int();
|
||||
side.eff_4_8 = side_json.at("Eff48").as_int();
|
||||
side.eff_5 = side_json.at("Eff5").as_int();
|
||||
side.eff_6_7 = side_json.at("Eff67").as_int();
|
||||
};
|
||||
MagMetadataTable::MotionReferences ret;
|
||||
parse_side(ret.sides[0], json.at("Left"));
|
||||
parse_side(ret.sides[1], json.at("Right"));
|
||||
return ret;
|
||||
}
|
||||
|
||||
phosg::JSON MagMetadataTable::MotionReferences::json() const {
|
||||
auto serialize_side = [](const Side& side) -> phosg::JSON {
|
||||
return phosg::JSON::dict({
|
||||
{"Eff1", side.eff_1},
|
||||
{"Eff2", side.eff_2},
|
||||
{"Eff3", side.eff_3},
|
||||
{"Eff48", side.eff_4_8},
|
||||
{"Eff5", side.eff_5},
|
||||
{"Eff67", side.eff_6_7},
|
||||
});
|
||||
};
|
||||
return phosg::JSON::dict({{"Left", serialize_side(this->sides[0])}, {"Right", serialize_side(this->sides[1])}});
|
||||
}
|
||||
|
||||
MagMetadataTable::UnknownA3Entry MagMetadataTable::UnknownA3Entry::from_json(const phosg::JSON& json) {
|
||||
return UnknownA3Entry{
|
||||
.flags = static_cast<uint8_t>(json.get_int("Flags")),
|
||||
.unknown_a2 = static_cast<uint8_t>(json.get_int("UnknownA2")),
|
||||
.unknown_a3 = static_cast<int16_t>(json.get_int("UnknownA3")),
|
||||
.unknown_a4 = static_cast<int16_t>(json.get_int("UnknownA4")),
|
||||
.unknown_a5 = static_cast<int16_t>(json.get_int("UnknownA5")),
|
||||
};
|
||||
}
|
||||
|
||||
phosg::JSON MagMetadataTable::UnknownA3Entry::json() const {
|
||||
return phosg::JSON::dict({
|
||||
{"Flags", this->flags},
|
||||
{"UnknownA2", this->unknown_a2},
|
||||
{"UnknownA3", this->unknown_a3},
|
||||
{"UnknownA4", this->unknown_a4},
|
||||
{"UnknownA5", this->unknown_a5},
|
||||
});
|
||||
}
|
||||
|
||||
static VectorXYZTF color_for_json(const phosg::JSON& json) {
|
||||
return VectorXYZTF{
|
||||
.x = json.get_float(0),
|
||||
.y = json.get_float(1),
|
||||
.z = json.get_float(2),
|
||||
.t = json.get_float(3),
|
||||
};
|
||||
}
|
||||
|
||||
static phosg::JSON json_for_color(const VectorXYZTF& color) {
|
||||
return phosg::JSON::list({color.x.load(), color.y.load(), color.z.load(), color.t.load()});
|
||||
}
|
||||
|
||||
template <bool BE>
|
||||
struct MotionReferenceTables {
|
||||
// It seems that there are two definition tables, but only the first is used on any version of PSO. On v3 and later,
|
||||
// the two offsets point to the same table, but on v2 they don't and the second table contains different data.
|
||||
// TODO: Figure out what the deal is with the different v2 tables.
|
||||
U32T<BE> first_ref_table;
|
||||
U32T<BE> second_ref_table;
|
||||
} __packed_ws_be__(MotionReferenceTables, 0x08);
|
||||
|
||||
template <bool BE>
|
||||
struct ColorEntry {
|
||||
// Colors are specified as 4 floats, each in the range [0, 1], for each color channel. The default colors are:
|
||||
// alpha red green blue color (see StaticGameData.cc)
|
||||
// 00 => 1.0 1.0 0.2 0.1 red
|
||||
// 01 => 1.0 0.2 0.2 1.0 blue
|
||||
// 02 => 1.0 1.0 0.9 0.1 yellow
|
||||
// 03 => 1.0 0.1 1.0 0.1 green
|
||||
// 04 => 1.0 0.8 0.1 1.0 purple
|
||||
// 05 => 1.0 0.1 0.1 0.2 black
|
||||
// 06 => 1.0 0.9 1.0 1.0 white
|
||||
// 07 => 1.0 0.1 0.9 1.0 cyan
|
||||
// 08 => 1.0 0.5 0.3 0.2 brown
|
||||
// 09 => 1.0 1.0 0.4 0.0 orange (v3+)
|
||||
// 0A => 1.0 0.502 0.545 0.977 light-blue (v3+)
|
||||
// 0B => 1.0 0.502 0.502 0.0 olive (v3+)
|
||||
// 0C => 1.0 0.0 0.941 0.714 turquoise (v3+)
|
||||
// 0D => 1.0 0.8 0.098 0.392 fuchsia (v3+)
|
||||
// 0E => 1.0 0.498 0.498 0.498 grey (v3+)
|
||||
// 0F => 1.0 0.996 0.996 0.832 cream (v3+)
|
||||
// 10 => 1.0 0.996 0.498 0.784 pink (v3+)
|
||||
// 11 => 1.0 0.0 0.498 0.322 dark-green (v3+)
|
||||
// If a mag's color index is invalid (>= 0x12), it is reassigned at equip time using the following logic:
|
||||
// - Set base_index to player->visual.sh.skin if player is an android, or player->visual.costume otherwise
|
||||
// - If (base_index % 9) < 7 (that is, if their costume or body color is one of the colored slots on the character
|
||||
// creation screen), then set the mag color to either (base_index % 9) or (base_index % 9) + 9, with equal
|
||||
// probability.
|
||||
// - If (base_index % 9) >= 7 (that is, if their costume or body color is one of the last two blank-colored slots
|
||||
// on the character creation screen), then set the mag color to any of the available colors, chosen at random.
|
||||
F32T<BE> alpha;
|
||||
F32T<BE> red;
|
||||
F32T<BE> green;
|
||||
F32T<BE> blue;
|
||||
ColorEntry(const VectorXYZTF& c) : alpha(c.t), red(c.x), green(c.y), blue(c.z) {}
|
||||
operator VectorXYZTF() const {
|
||||
return VectorXYZTF{this->red.load(), this->green.load(), this->blue.load(), this->alpha.load()};
|
||||
}
|
||||
} __packed_ws_be__(ColorEntry, 0x10);
|
||||
|
||||
template <bool BE>
|
||||
struct UnknownA3EntryT {
|
||||
uint8_t flags;
|
||||
uint8_t unknown_a2;
|
||||
S16T<BE> unknown_a3;
|
||||
S16T<BE> unknown_a4;
|
||||
S16T<BE> unknown_a5;
|
||||
UnknownA3EntryT(const MagMetadataTable::UnknownA3Entry& e)
|
||||
: flags(e.flags),
|
||||
unknown_a2(e.unknown_a2),
|
||||
unknown_a3(e.unknown_a3),
|
||||
unknown_a4(e.unknown_a4),
|
||||
unknown_a5(e.unknown_a5) {}
|
||||
operator MagMetadataTable::UnknownA3Entry() const {
|
||||
return MagMetadataTable::UnknownA3Entry{
|
||||
this->flags, this->unknown_a2, this->unknown_a3, this->unknown_a4, this->unknown_a5};
|
||||
}
|
||||
} __packed_ws_be__(UnknownA3EntryT, 0x08);
|
||||
|
||||
class JSONMagMetadataTable : public MagMetadataTable {
|
||||
public:
|
||||
explicit JSONMagMetadataTable(const phosg::JSON& json) {
|
||||
for (const auto& mag_json : json.at("Mags").as_list()) {
|
||||
const auto& unknown_a2_json = mag_json->at("UnknownA2").as_list();
|
||||
auto& mag = this->mags.emplace_back();
|
||||
mag.first_motion_refs = MotionReferences::from_json(mag_json->at("MotionRefs1"));
|
||||
mag.second_motion_refs = MotionReferences::from_json(mag_json->at("MotionRefs2"));
|
||||
mag.unknown_a2 = std::make_pair(unknown_a2_json.at(0)->as_int(), unknown_a2_json.at(1)->as_int());
|
||||
mag.render_flags = mag_json->at("RenderFlags").as_int();
|
||||
mag.evolution_number = mag_json->at("EvolutionNumber").as_int();
|
||||
}
|
||||
for (const auto& a3_json : json.at("UnknownA3").as_list()) {
|
||||
this->unknown_a3.emplace_back(UnknownA3Entry::from_json(*a3_json));
|
||||
}
|
||||
for (const auto& color_json : json.at("Colors").as_list()) {
|
||||
this->colors.emplace_back(color_for_json(*color_json));
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~JSONMagMetadataTable() = default;
|
||||
|
||||
virtual size_t num_mags() const {
|
||||
return this->mags.size();
|
||||
}
|
||||
|
||||
virtual size_t num_motion_entries(bool) const {
|
||||
return this->mags.size();
|
||||
}
|
||||
virtual const MotionReferences& get_motion_references(bool use_second_table, size_t data1_1) const {
|
||||
const auto& mag = this->mags.at(data1_1);
|
||||
return use_second_table ? mag.second_motion_refs : mag.first_motion_refs;
|
||||
}
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t data1_1) const {
|
||||
return this->mags.at(data1_1).unknown_a2;
|
||||
}
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const {
|
||||
return this->unknown_a3.size();
|
||||
}
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t index) const {
|
||||
return this->unknown_a3.at(index);
|
||||
}
|
||||
|
||||
virtual uint8_t get_render_flags(size_t data1_1) const {
|
||||
return this->mags.at(data1_1).render_flags;
|
||||
}
|
||||
|
||||
virtual size_t num_colors() const {
|
||||
return this->colors.size();
|
||||
}
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t index) const {
|
||||
return this->colors.at(index);
|
||||
}
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const {
|
||||
return this->mags.at(data1_1).evolution_number;
|
||||
}
|
||||
|
||||
protected:
|
||||
struct Mag {
|
||||
MotionReferences first_motion_refs;
|
||||
MotionReferences second_motion_refs;
|
||||
std::pair<uint8_t, uint8_t> unknown_a2 = std::make_pair(0, 0);
|
||||
uint8_t render_flags = 0;
|
||||
uint8_t evolution_number = 0;
|
||||
};
|
||||
std::vector<Mag> mags;
|
||||
std::vector<UnknownA3Entry> unknown_a3;
|
||||
std::vector<VectorXYZTF> colors;
|
||||
};
|
||||
|
||||
struct HeaderV1 {
|
||||
parray<uint8_t, 4> unknown_a1 = {0x0F, 0xF0, 0x00, 0x00};
|
||||
le_uint32_t unknown_a2 = 0x00000003;
|
||||
le_uint16_t unknown_a3 = 0x00C8;
|
||||
le_uint16_t unknown_a4 = 0x0078;
|
||||
// unknown_a5 added in V2
|
||||
le_float unknown_a6 = 0.25; // 3E800000
|
||||
le_float unknown_a7 = 0.099999994; // 3DCCCCCC
|
||||
le_uint32_t unknown_a8 = 0x00000C00;
|
||||
} __packed_ws__(HeaderV1, 0x18);
|
||||
|
||||
template <bool BE>
|
||||
struct HeaderV2V3V4 {
|
||||
parray<uint8_t, 4> unknown_a1 = {0x0F, 0xF0, 0x00, 0x00};
|
||||
U32T<BE> unknown_a2 = 0x00000003;
|
||||
U16T<BE> unknown_a3 = 0x00C8;
|
||||
U16T<BE> unknown_a4 = 0x0078;
|
||||
parray<uint8_t, 4> unknown_a5 = {0xC8, 0x00, 0x00, 0x00};
|
||||
F32T<BE> unknown_a6 = 0.25; // 3E800000
|
||||
F32T<BE> unknown_a7 = 0.099999994; // 3DCCCCCC
|
||||
U32T<BE> unknown_a8 = 0x00000C00;
|
||||
} __packed_ws_be__(HeaderV2V3V4, 0x1C);
|
||||
|
||||
// Fields:
|
||||
// 112K / V1 / V2 / V3 / BB R
|
||||
// 0018 / 0018 / 001C / 001C / 001C motion_tables.first_ref_table // -> MotionReferences[NumMags]
|
||||
// 0228 / 0228 / 02D4 / 001C / 001C motion_tables.second_ref_table // -> MotionReferences[NumMags]
|
||||
// 0438 / 0438 / 05BC / 0340 / 0400 * motion_tables; // -> MotionReferenceTables
|
||||
// 0440 / 0440 / 0594 / 0348 / 0408 * unknown_a2; // -> (uint8_t[2])[NumMags] (references into unknown_a3)
|
||||
// 0498 / 0498 / 0608 / 03CE / 04AE * unknown_a3; // -> UnknownA3Entry[max(unknown_a2) + 1]
|
||||
// 0510 / 0520 / 06B0 / 0476 / 0556 * render_flags; // -> uint8_t[NumMags]
|
||||
// 053C / 054C / 06EC / 04BC / 05AC * color_table; // -> ColorEntry[NumColors]
|
||||
// ---- / ---- / 077C / 05DC / 06CC * evolution_number_table; // -> uint8_t[NumMags]
|
||||
|
||||
template <bool BE>
|
||||
struct RootV1 {
|
||||
U32T<BE> motion_tables;
|
||||
U32T<BE> unknown_a2;
|
||||
U32T<BE> unknown_a3;
|
||||
U32T<BE> render_flags;
|
||||
U32T<BE> color_table;
|
||||
} __packed_ws_be__(RootV1, 0x14);
|
||||
|
||||
template <bool BE>
|
||||
struct RootV2V3V4 : RootV1<BE> {
|
||||
U32T<BE> evolution_number_table;
|
||||
} __packed_ws_be__(RootV2V3V4, 0x18);
|
||||
|
||||
static uint8_t get_v1_mag_evolution_number(uint8_t data1_1) {
|
||||
static const std::array<uint8_t, 0x2C> v1_evolution_number_table{
|
||||
/* 00 */ 0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2,
|
||||
/* 10 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 3, 4, 3, 3,
|
||||
/* 20 */ 3, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 4};
|
||||
if (data1_1 >= v1_evolution_number_table.size()) {
|
||||
throw std::runtime_error("invalid mag number");
|
||||
}
|
||||
return v1_evolution_number_table[data1_1];
|
||||
}
|
||||
|
||||
template <typename HeaderT, typename RootT, size_t NumMags, size_t NumColors, bool BE>
|
||||
class BinaryMagMetadataTableT : public MagMetadataTable {
|
||||
public:
|
||||
explicit BinaryMagMetadataTableT(std::shared_ptr<const std::string> data)
|
||||
: data(data), r(*data), root(&r.pget<RootT>(this->r.pget<U32T<BE>>(this->data->size() - 0x10))) {}
|
||||
virtual ~BinaryMagMetadataTableT() = default;
|
||||
|
||||
template <typename RawT, typename ParsedT>
|
||||
const ParsedT& add_to_vector_cache(std::vector<ParsedT>& cache, size_t base_offset, size_t index) const {
|
||||
while (cache.size() <= index) {
|
||||
cache.emplace_back(this->r.pget<RawT>(base_offset + sizeof(RawT) * cache.size()));
|
||||
}
|
||||
return cache[index];
|
||||
}
|
||||
|
||||
virtual size_t num_mags() const {
|
||||
return NumMags;
|
||||
}
|
||||
|
||||
virtual size_t num_motion_entries(bool use_second_table) const {
|
||||
const auto& tables = this->r.pget<MotionReferenceTables<BE>>(this->root->motion_tables);
|
||||
return get_rel_array_count<MotionReferences>(
|
||||
this->all_start_offsets(), use_second_table ? tables.second_ref_table : tables.first_ref_table);
|
||||
}
|
||||
|
||||
virtual const MotionReferences& get_motion_references(bool use_second_table, size_t index) const {
|
||||
if (index >= this->num_motion_entries(use_second_table)) {
|
||||
throw std::logic_error("Invalid motion reference index");
|
||||
}
|
||||
const auto& tables = this->r.pget<MotionReferenceTables<BE>>(this->root->motion_tables);
|
||||
uint32_t array_offset = use_second_table ? tables.second_ref_table : tables.first_ref_table;
|
||||
return this->r.pget<MotionReferences>(array_offset + sizeof(MotionReferences) * index);
|
||||
}
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t index) const {
|
||||
if (index >= this->num_mags()) {
|
||||
throw std::logic_error("Invalid unknown_a2 index");
|
||||
}
|
||||
uint32_t base_offset = this->root->unknown_a2 + (index * 2);
|
||||
return std::make_pair(this->r.pget_u8(base_offset), this->r.pget_u8(base_offset + 1));
|
||||
}
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const {
|
||||
return get_rel_array_count<UnknownA3EntryT<BE>>(this->all_start_offsets(), this->root->unknown_a3);
|
||||
}
|
||||
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t index) const {
|
||||
if (index >= this->num_unknown_a3_entries()) {
|
||||
throw std::logic_error("Invalid unknown_a2 index");
|
||||
}
|
||||
return this->add_to_vector_cache<UnknownA3EntryT<BE>>(this->unknown_a3_entries, this->root->unknown_a3, index);
|
||||
}
|
||||
|
||||
virtual uint8_t get_render_flags(size_t index) const {
|
||||
if (index >= this->num_mags()) {
|
||||
throw std::logic_error("Invalid render_flags index");
|
||||
}
|
||||
return this->r.pget_u8(this->root->render_flags + index);
|
||||
}
|
||||
|
||||
virtual size_t num_colors() const {
|
||||
return NumColors;
|
||||
}
|
||||
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t index) const {
|
||||
if (index >= NumColors) {
|
||||
throw std::runtime_error("invalid mag color index");
|
||||
}
|
||||
return this->add_to_vector_cache<ColorEntry<BE>>(this->colors, this->root->color_table, index);
|
||||
}
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const {
|
||||
if (data1_1 >= this->num_mags()) {
|
||||
throw std::logic_error("Invalid evolution_number index");
|
||||
}
|
||||
if constexpr (requires { this->root->evolution_number_table; }) {
|
||||
return this->r.pget_u8(this->root->evolution_number_table + data1_1);
|
||||
} else {
|
||||
return get_v1_mag_evolution_number(data1_1);
|
||||
}
|
||||
}
|
||||
|
||||
const std::set<uint32_t>& all_start_offsets() const {
|
||||
if (this->start_offsets.empty()) {
|
||||
this->start_offsets = all_relocation_offsets_for_rel_file<BE>(r.pgetv(0, r.size()), r.size());
|
||||
}
|
||||
return this->start_offsets;
|
||||
}
|
||||
|
||||
static std::string serialize(const MagMetadataTable& table) {
|
||||
RELFileWriter<BE> rel;
|
||||
RootT root;
|
||||
|
||||
rel.template put<HeaderT>(HeaderT());
|
||||
|
||||
MotionReferenceTables<BE> motion_ref_tables;
|
||||
motion_ref_tables.first_ref_table = rel.w.size();
|
||||
bool alias_motion_ref_tables = true;
|
||||
for (size_t z = 0; z < table.num_motion_entries(false); z++) {
|
||||
const auto& refs = table.get_motion_references(false, z);
|
||||
rel.template put<MotionReferences>(refs);
|
||||
if (refs != table.get_motion_references(true, z)) {
|
||||
alias_motion_ref_tables = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (alias_motion_ref_tables) {
|
||||
motion_ref_tables.second_ref_table = motion_ref_tables.first_ref_table;
|
||||
} else {
|
||||
motion_ref_tables.second_ref_table = rel.w.size();
|
||||
for (size_t z = 0; z < table.num_motion_entries(true); z++) {
|
||||
rel.template put<MotionReferences>(table.get_motion_references(true, z));
|
||||
}
|
||||
}
|
||||
|
||||
root.motion_tables = rel.w.size();
|
||||
rel.template put<MotionReferenceTables<BE>>(motion_ref_tables);
|
||||
rel.relocations.emplace(root.motion_tables);
|
||||
rel.relocations.emplace(root.motion_tables + 4);
|
||||
|
||||
root.unknown_a2 = rel.w.size();
|
||||
for (size_t z = 0; z < table.num_mags(); z++) {
|
||||
auto [left, right] = table.get_unknown_a2(z);
|
||||
rel.template put<uint8_t>(left);
|
||||
rel.template put<uint8_t>(right);
|
||||
}
|
||||
|
||||
root.unknown_a3 = rel.w.size();
|
||||
for (size_t z = 0; z < table.num_unknown_a3_entries(); z++) {
|
||||
rel.template put<UnknownA3EntryT<BE>>(table.get_unknown_a3(z));
|
||||
}
|
||||
|
||||
root.render_flags = rel.w.size();
|
||||
for (size_t z = 0; z < table.num_mags(); z++) {
|
||||
rel.template put<uint8_t>(table.get_render_flags(z));
|
||||
}
|
||||
|
||||
rel.align(4);
|
||||
root.color_table = rel.w.size();
|
||||
for (size_t z = 0; z < table.num_colors(); z++) {
|
||||
rel.template put<ColorEntry<BE>>(table.get_color_rgba(z));
|
||||
}
|
||||
|
||||
if constexpr (requires { root.evolution_number_table; }) {
|
||||
root.evolution_number_table = rel.w.size();
|
||||
for (size_t z = 0; z < table.num_mags(); z++) {
|
||||
rel.template put<uint8_t>(table.get_evolution_number(z));
|
||||
}
|
||||
}
|
||||
|
||||
rel.align(4);
|
||||
uint32_t root_offset = rel.template put<RootT>(root);
|
||||
for (size_t z = 1; z <= sizeof(RootT) / 4; z++) {
|
||||
rel.relocations.emplace(rel.w.size() - (z * 4));
|
||||
}
|
||||
|
||||
return rel.finalize(root_offset);
|
||||
}
|
||||
|
||||
protected:
|
||||
std::shared_ptr<const std::string> data;
|
||||
phosg::StringReader r;
|
||||
const RootT* root;
|
||||
mutable std::set<uint32_t> start_offsets;
|
||||
mutable std::vector<UnknownA3Entry> unknown_a3_entries;
|
||||
mutable std::vector<VectorXYZTF> colors;
|
||||
};
|
||||
|
||||
class MagMetadataTableDCNTE : public MagMetadataTable {
|
||||
public:
|
||||
MagMetadataTableDCNTE() = default;
|
||||
virtual ~MagMetadataTableDCNTE() = default;
|
||||
|
||||
virtual size_t num_mags() const {
|
||||
return 0x2C;
|
||||
}
|
||||
|
||||
virtual size_t num_motion_entries(bool) const {
|
||||
return 0;
|
||||
}
|
||||
virtual const MotionReferences& get_motion_references(bool, size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const {
|
||||
return 0;
|
||||
}
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual uint8_t get_render_flags(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual size_t num_colors() const {
|
||||
return 0;
|
||||
}
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t) const {
|
||||
throw std::runtime_error("Mag tables not available on DC NTE");
|
||||
}
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const {
|
||||
return get_v1_mag_evolution_number(data1_1);
|
||||
}
|
||||
};
|
||||
|
||||
using MagMetadataTableDC112000 = BinaryMagMetadataTableT<HeaderV1, RootV1<false>, 0x2C, 0x09, false>;
|
||||
using MagMetadataTableV1 = BinaryMagMetadataTableT<HeaderV1, RootV1<false>, 0x2C, 0x09, false>;
|
||||
using MagMetadataTableV2 = BinaryMagMetadataTableT<HeaderV2V3V4<false>, RootV2V3V4<false>, 0x3A, 0x09, false>;
|
||||
using MagMetadataTableGCNTE = BinaryMagMetadataTableT<HeaderV2V3V4<true>, RootV2V3V4<true>, 0x3A, 0x09, true>;
|
||||
using MagMetadataTableGC = BinaryMagMetadataTableT<HeaderV2V3V4<true>, RootV2V3V4<true>, 0x43, 0x12, true>;
|
||||
using MagMetadataTableXB = BinaryMagMetadataTableT<HeaderV2V3V4<false>, RootV2V3V4<false>, 0x43, 0x12, false>;
|
||||
using MagMetadataTableV4 = BinaryMagMetadataTableT<HeaderV2V3V4<false>, RootV2V3V4<false>, 0x53, 0x12, false>;
|
||||
|
||||
std::shared_ptr<MagMetadataTable> MagMetadataTable::from_binary(
|
||||
std::shared_ptr<const std::string> data, Version version) {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
return std::make_shared<MagMetadataTableDCNTE>();
|
||||
case Version::DC_11_2000:
|
||||
return std::make_shared<MagMetadataTableDC112000>(data);
|
||||
case Version::DC_V1:
|
||||
return std::make_shared<MagMetadataTableV1>(data);
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
case Version::PC_V2:
|
||||
return std::make_shared<MagMetadataTableV2>(data);
|
||||
case Version::GC_NTE:
|
||||
return std::make_shared<MagMetadataTableGCNTE>(data);
|
||||
case Version::GC_V3:
|
||||
case Version::GC_EP3:
|
||||
case Version::GC_EP3_NTE:
|
||||
return std::make_shared<MagMetadataTableGC>(data);
|
||||
case Version::XB_V3:
|
||||
return std::make_shared<MagMetadataTableXB>(data);
|
||||
case Version::BB_V4:
|
||||
return std::make_shared<MagMetadataTableV4>(data);
|
||||
default:
|
||||
throw std::logic_error("Cannot create mag metadata table for this version");
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<MagMetadataTable> MagMetadataTable::from_json(const phosg::JSON& json) {
|
||||
return std::make_shared<JSONMagMetadataTable>(json);
|
||||
}
|
||||
|
||||
phosg::JSON MagMetadataTable::json() const {
|
||||
if (this->num_motion_entries(true) != this->num_motion_entries(false)) {
|
||||
throw std::runtime_error("Motion entry counts differ across tables");
|
||||
}
|
||||
if (this->num_motion_entries(false) != this->num_mags()) {
|
||||
throw std::runtime_error(std::format("Motion entry count {} does not match mag count {}",
|
||||
this->num_motion_entries(false), this->num_mags()));
|
||||
}
|
||||
|
||||
auto mags_json = phosg::JSON::list();
|
||||
for (size_t z = 0; z < this->num_mags(); z++) {
|
||||
auto mag_json = phosg::JSON::dict();
|
||||
mag_json.emplace("MotionRefs1", this->get_motion_references(false, z).json());
|
||||
mag_json.emplace("MotionRefs2", this->get_motion_references(true, z).json());
|
||||
auto unknown_a2 = this->get_unknown_a2(z);
|
||||
mag_json.emplace("UnknownA2", phosg::JSON::list({unknown_a2.first, unknown_a2.second}));
|
||||
mag_json.emplace("RenderFlags", this->get_render_flags(z));
|
||||
mag_json.emplace("EvolutionNumber", this->get_evolution_number(z));
|
||||
mags_json.emplace_back(std::move(mag_json));
|
||||
}
|
||||
|
||||
auto unknown_a3_json = phosg::JSON::list();
|
||||
for (size_t z = 0; z < this->num_unknown_a3_entries(); z++) {
|
||||
unknown_a3_json.emplace_back(this->get_unknown_a3(z).json());
|
||||
}
|
||||
|
||||
auto colors_json = phosg::JSON::list();
|
||||
for (size_t z = 0; z < this->num_colors(); z++) {
|
||||
colors_json.emplace_back(json_for_color(this->get_color_rgba(z)));
|
||||
}
|
||||
|
||||
return phosg::JSON::dict({
|
||||
{"Mags", std::move(mags_json)},
|
||||
{"UnknownA3", std::move(unknown_a3_json)},
|
||||
{"Colors", std::move(colors_json)},
|
||||
});
|
||||
}
|
||||
|
||||
std::string MagMetadataTable::serialize_binary(Version version) const {
|
||||
switch (version) {
|
||||
case Version::DC_NTE:
|
||||
throw std::runtime_error("DC NTE does not have a an ItemMagEdit format");
|
||||
case Version::DC_11_2000:
|
||||
return MagMetadataTableDC112000::serialize(*this);
|
||||
case Version::DC_V1:
|
||||
return MagMetadataTableV1::serialize(*this);
|
||||
case Version::DC_V2:
|
||||
case Version::PC_NTE:
|
||||
case Version::PC_V2:
|
||||
return MagMetadataTableV2::serialize(*this);
|
||||
case Version::GC_NTE:
|
||||
return MagMetadataTableGCNTE::serialize(*this);
|
||||
case Version::GC_V3:
|
||||
case Version::GC_EP3:
|
||||
case Version::GC_EP3_NTE:
|
||||
return MagMetadataTableGC::serialize(*this);
|
||||
case Version::XB_V3:
|
||||
return MagMetadataTableXB::serialize(*this);
|
||||
case Version::BB_V4:
|
||||
return MagMetadataTableV4::serialize(*this);
|
||||
default:
|
||||
throw std::logic_error("Cannot create item parameter table for this version");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
#pragma once
|
||||
|
||||
#include "WindowsPlatform.hh"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "CommonFileFormats.hh"
|
||||
#include "Text.hh"
|
||||
#include "Types.hh"
|
||||
#include "Version.hh"
|
||||
|
||||
class MagMetadataTable {
|
||||
public:
|
||||
struct MotionReferences {
|
||||
// These entries specify which entry in ItemMagMotion.dat is used. The file is just a list of 0x64-byte structures.
|
||||
// 0xFF = no TItemMagSub is created
|
||||
struct Side {
|
||||
uint8_t eff_1;
|
||||
uint8_t eff_2;
|
||||
uint8_t eff_3;
|
||||
uint8_t eff_4_8;
|
||||
uint8_t eff_5;
|
||||
uint8_t eff_6_7;
|
||||
|
||||
bool operator==(const Side&) const = default;
|
||||
bool operator!=(const Side&) const = default;
|
||||
} __packed_ws__(Side, 6);
|
||||
parray<Side, 2> sides; // [0] = right side, [1] = left side
|
||||
|
||||
bool operator==(const MotionReferences&) const = default;
|
||||
bool operator!=(const MotionReferences&) const = default;
|
||||
|
||||
static MotionReferences from_json(const phosg::JSON& json);
|
||||
phosg::JSON json() const;
|
||||
} __packed_ws__(MotionReferences, 0x0C);
|
||||
|
||||
struct UnknownA3Entry {
|
||||
uint8_t flags;
|
||||
uint8_t unknown_a2;
|
||||
int16_t unknown_a3;
|
||||
int16_t unknown_a4;
|
||||
int16_t unknown_a5;
|
||||
|
||||
static UnknownA3Entry from_json(const phosg::JSON& json);
|
||||
phosg::JSON json() const;
|
||||
};
|
||||
|
||||
virtual ~MagMetadataTable() = default;
|
||||
|
||||
virtual size_t num_mags() const = 0;
|
||||
|
||||
virtual size_t num_motion_entries(bool use_second_table) const = 0;
|
||||
virtual const MotionReferences& get_motion_references(bool use_second_table, size_t index) const = 0;
|
||||
|
||||
virtual std::pair<uint8_t, uint8_t> get_unknown_a2(size_t index) const = 0;
|
||||
|
||||
virtual size_t num_unknown_a3_entries() const = 0;
|
||||
virtual const UnknownA3Entry& get_unknown_a3(size_t index) const = 0;
|
||||
|
||||
virtual uint8_t get_render_flags(size_t index) const = 0;
|
||||
|
||||
virtual size_t num_colors() const = 0;
|
||||
virtual const VectorXYZTF& get_color_rgba(size_t index) const = 0;
|
||||
|
||||
virtual uint8_t get_evolution_number(uint8_t data1_1) const = 0;
|
||||
|
||||
static std::shared_ptr<MagMetadataTable> from_binary(std::shared_ptr<const std::string> data, Version version);
|
||||
static std::shared_ptr<MagMetadataTable> from_json(const phosg::JSON& json);
|
||||
|
||||
phosg::JSON json() const;
|
||||
std::string serialize_binary(Version version) const;
|
||||
|
||||
protected:
|
||||
MagMetadataTable() = default;
|
||||
};
|
||||
+35
@@ -2396,6 +2396,41 @@ Action a_encode_item_parameter_table(
|
||||
write_output_data(args, data, nullptr);
|
||||
});
|
||||
|
||||
Action a_decode_mag_metadata_table(
|
||||
"decode-mag-metadata-table", "\
|
||||
decode-mag-metadata-table [INPUT-FILENAME [OUTPUT-FILENAME]] [OPTIONS...]\n\
|
||||
Converts an ItemMagEdit file into a JSON mag metadata file. A version\n\
|
||||
option is required. Expects compressed input (a .prs file) by default; use\n\
|
||||
--decompressed if the input is not compressed.\n",
|
||||
+[](phosg::Arguments& args) {
|
||||
auto input_data = read_input_data(args);
|
||||
if (!args.get<bool>("decompressed")) {
|
||||
input_data = prs_decompress(input_data);
|
||||
}
|
||||
auto data = std::make_shared<std::string>(std::move(input_data));
|
||||
auto table = MagMetadataTable::from_binary(data, get_cli_version(args, Version::BB_V4));
|
||||
auto json = table->json();
|
||||
auto serialized = json.serialize(phosg::JSON::SerializeOption::FORMAT | phosg::JSON::SerializeOption::SORT_DICT_KEYS);
|
||||
write_output_data(args, serialized, nullptr);
|
||||
});
|
||||
|
||||
Action a_encode_mag_metadata_table(
|
||||
"encode-mag-metadata-table", "\
|
||||
encode-mag-metadata-table [INPUT-FILENAME [OUTPUT-FILENAME]] [OPTIONS...]\n\
|
||||
Converts a JSON mag metadata file into an ItemMagEdit file compatible with\n\
|
||||
the game client. A version option is required. By default the output will\n\
|
||||
be compressed, as the client expects; use --decompressed to get\n\
|
||||
uncompressed output.\n",
|
||||
+[](phosg::Arguments& args) {
|
||||
auto json = phosg::JSON::parse(read_input_data(args));
|
||||
auto table = MagMetadataTable::from_json(json);
|
||||
std::string data = table->serialize_binary(get_cli_version(args, Version::BB_V4));
|
||||
if (!args.get<bool>("decompressed")) {
|
||||
data = prs_compress_optimal(data);
|
||||
}
|
||||
write_output_data(args, data, nullptr);
|
||||
});
|
||||
|
||||
Action a_decode_level_table(
|
||||
"decode-level-table", nullptr,
|
||||
+[](phosg::Arguments& args) {
|
||||
|
||||
+39
-34
@@ -489,15 +489,19 @@ std::shared_ptr<const ItemParameterTable> ServerState::item_parameter_table_for_
|
||||
return this->item_parameter_table(is_v1(version) ? Version::PC_V2 : version);
|
||||
}
|
||||
|
||||
std::shared_ptr<const MagEvolutionTable> ServerState::mag_evolution_table(Version version) const {
|
||||
if (is_v1(version)) {
|
||||
return this->mag_evolution_table_v1;
|
||||
std::shared_ptr<const MagMetadataTable> ServerState::mag_metadata_table(Version version) const {
|
||||
if (version == Version::DC_NTE) {
|
||||
return this->mag_metadata_table_dc_nte;
|
||||
} else if (version == Version::DC_11_2000) {
|
||||
return this->mag_metadata_table_dc_11_2000;
|
||||
} else if (is_v1(version)) {
|
||||
return this->mag_metadata_table_v1;
|
||||
} else if (is_v2(version)) {
|
||||
return this->mag_evolution_table_v2;
|
||||
return this->mag_metadata_table_v2;
|
||||
} else if (!is_v4(version)) {
|
||||
return this->mag_evolution_table_v3;
|
||||
return this->mag_metadata_table_v3;
|
||||
} else {
|
||||
return this->mag_evolution_table_v4;
|
||||
return this->mag_metadata_table_v4;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2156,25 +2160,32 @@ void ServerState::load_item_definitions() {
|
||||
auto json = phosg::JSON::parse(phosg::load_file("system/tables/translation-table.json"));
|
||||
auto new_item_translation_table = std::make_shared<ItemTranslationTable>(json, new_item_parameter_tables);
|
||||
|
||||
config_log.info_f("Loading v1 mag evolution table");
|
||||
auto mag_data_v1 = std::make_shared<std::string>(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-dc-v1.prs")));
|
||||
auto new_table_v1 = MagEvolutionTable::create(mag_data_v1, Version::DC_V1);
|
||||
config_log.info_f("Loading v2 mag evolution table");
|
||||
auto mag_data_v2 = std::make_shared<std::string>(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-dc-v2.prs")));
|
||||
auto new_table_v2 = MagEvolutionTable::create(mag_data_v2, Version::DC_V2);
|
||||
config_log.info_f("Loading v3 mag evolution table");
|
||||
auto mag_data_v3 = std::make_shared<std::string>(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-xb-v3.prs")));
|
||||
auto new_table_v3 = MagEvolutionTable::create(mag_data_v3, Version::XB_V3);
|
||||
config_log.info_f("Loading v4 mag evolution table");
|
||||
auto mag_data_v4 = std::make_shared<std::string>(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-bb-v4.prs")));
|
||||
auto new_table_v4 = MagEvolutionTable::create(mag_data_v4, Version::BB_V4);
|
||||
config_log.info_f("Creating DC NTE mag metadata table");
|
||||
auto new_table_dc_nte = MagMetadataTable::from_binary(nullptr, Version::DC_NTE);
|
||||
config_log.info_f("Loading DC 11/2000 mag metadata table");
|
||||
auto new_table_11_2000 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file(
|
||||
"system/tables/mag-metadata-table-dc-11-2000.json")));
|
||||
config_log.info_f("Loading v1 mag metadata table");
|
||||
auto new_table_v1 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file(
|
||||
"system/tables/mag-metadata-table-v1.json")));
|
||||
config_log.info_f("Loading v2 mag metadata table");
|
||||
auto new_table_v2 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file(
|
||||
"system/tables/mag-metadata-table-v2.json")));
|
||||
config_log.info_f("Loading v3 mag metadata table");
|
||||
auto new_table_v3 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file(
|
||||
"system/tables/mag-metadata-table-v3.json")));
|
||||
config_log.info_f("Loading v4 mag metadata table");
|
||||
auto new_table_v4 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file(
|
||||
"system/tables/mag-metadata-table-v4.json")));
|
||||
|
||||
this->item_parameter_tables = std::move(new_item_parameter_tables);
|
||||
this->item_translation_table = std::move(new_item_translation_table);
|
||||
this->mag_evolution_table_v1 = std::move(new_table_v1);
|
||||
this->mag_evolution_table_v2 = std::move(new_table_v2);
|
||||
this->mag_evolution_table_v3 = std::move(new_table_v3);
|
||||
this->mag_evolution_table_v4 = std::move(new_table_v4);
|
||||
this->mag_metadata_table_dc_nte = std::move(new_table_dc_nte);
|
||||
this->mag_metadata_table_dc_11_2000 = std::move(new_table_11_2000);
|
||||
this->mag_metadata_table_v1 = std::move(new_table_v1);
|
||||
this->mag_metadata_table_v2 = std::move(new_table_v2);
|
||||
this->mag_metadata_table_v3 = std::move(new_table_v3);
|
||||
this->mag_metadata_table_v4 = std::move(new_table_v4);
|
||||
}
|
||||
|
||||
void ServerState::load_ep3_cards() {
|
||||
@@ -2230,20 +2241,13 @@ void ServerState::generate_bb_stream_file() {
|
||||
config_log.info_f("Generating BB stream file");
|
||||
auto sf = std::make_shared<BBStreamFile>();
|
||||
|
||||
auto add_file = [&](const std::string& filename, const void* data = nullptr, size_t size = 0) -> void {
|
||||
auto add_file = [&](const std::string& filename, const void* data, size_t size) -> void {
|
||||
auto& e = sf->entries.emplace_back();
|
||||
e.offset = sf->data.size();
|
||||
e.filename = filename;
|
||||
if (!data) {
|
||||
std::string file_data = phosg::load_file("system/blueburst/" + filename);
|
||||
e.size = file_data.size();
|
||||
e.checksum = phosg::crc32(file_data.data(), file_data.size());
|
||||
sf->data += file_data;
|
||||
} else {
|
||||
e.size = size;
|
||||
e.checksum = phosg::crc32(data, size);
|
||||
sf->data.append(reinterpret_cast<const char*>(data), size);
|
||||
}
|
||||
e.size = size;
|
||||
e.checksum = phosg::crc32(data, size);
|
||||
sf->data.append(reinterpret_cast<const char*>(data), size);
|
||||
config_log.debug_f(
|
||||
"[BBStreamFile] Added file {} at offset {:08X} ({:08X} bytes) with checksum {:08X}; total size is now {:08X}",
|
||||
filename, e.offset, e.size, e.checksum, sf->data.size());
|
||||
@@ -2251,6 +2255,7 @@ void ServerState::generate_bb_stream_file() {
|
||||
|
||||
auto level_table_data = prs_compress_optimal(this->level_table_v4->serialize_binary_v4());
|
||||
auto pmt_data = prs_compress_optimal(this->item_parameter_table(Version::BB_V4)->serialize_binary(Version::BB_V4));
|
||||
auto mag_data = prs_compress_optimal(this->mag_metadata_table(Version::BB_V4)->serialize_binary(Version::BB_V4));
|
||||
|
||||
const auto& bps = *this->battle_params;
|
||||
add_file("BattleParamEntry.dat", &bps.get_table(true, Episode::EP1), sizeof(BattleParamsIndex::Table));
|
||||
@@ -2260,7 +2265,7 @@ void ServerState::generate_bb_stream_file() {
|
||||
add_file("BattleParamEntry_lab_on.dat", &bps.get_table(false, Episode::EP2), sizeof(BattleParamsIndex::Table));
|
||||
add_file("BattleParamEntry_ep4_on.dat", &bps.get_table(false, Episode::EP4), sizeof(BattleParamsIndex::Table));
|
||||
add_file("PlyLevelTbl.prs", level_table_data.data(), level_table_data.size());
|
||||
add_file("ItemMagEdit.prs");
|
||||
add_file("ItemMagEdit.prs", mag_data.data(), mag_data.size());
|
||||
add_file("ItemPMT.prs", pmt_data.data(), pmt_data.size());
|
||||
|
||||
this->bb_stream_file = sf;
|
||||
|
||||
+8
-6
@@ -24,7 +24,7 @@
|
||||
#include "ItemTranslationTable.hh"
|
||||
#include "LevelTable.hh"
|
||||
#include "Lobby.hh"
|
||||
#include "MagEvolutionTable.hh"
|
||||
#include "MagMetadataTable.hh"
|
||||
#include "Menu.hh"
|
||||
#include "Quest.hh"
|
||||
#include "TeamIndex.hh"
|
||||
@@ -221,10 +221,12 @@ struct ServerState : public std::enable_shared_from_this<ServerState> {
|
||||
std::array<std::shared_ptr<const ItemData::StackLimits>, NUM_VERSIONS> item_stack_limits_tables;
|
||||
size_t bb_max_bank_items = 200;
|
||||
size_t bb_max_bank_meseta = 999999;
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table_v1;
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table_v2;
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table_v3;
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table_v4;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table_dc_nte;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table_dc_11_2000;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table_v1;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table_v2;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table_v3;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table_v4;
|
||||
std::shared_ptr<const TextIndex> text_index;
|
||||
std::array<std::shared_ptr<const ItemNameIndex>, NUM_VERSIONS> item_name_indexes;
|
||||
std::shared_ptr<const WordSelectTable> word_select_table;
|
||||
@@ -371,7 +373,7 @@ struct ServerState : public std::enable_shared_from_this<ServerState> {
|
||||
std::shared_ptr<const LevelTable> level_table(Version version) const;
|
||||
std::shared_ptr<const ItemParameterTable> item_parameter_table(Version version) const;
|
||||
std::shared_ptr<const ItemParameterTable> item_parameter_table_for_encode(Version version) const;
|
||||
std::shared_ptr<const MagEvolutionTable> mag_evolution_table(Version version) const;
|
||||
std::shared_ptr<const MagMetadataTable> mag_metadata_table(Version version) const;
|
||||
std::shared_ptr<const ItemData::StackLimits> item_stack_limits(Version version) const;
|
||||
std::shared_ptr<const ItemNameIndex> item_name_index_opt(Version version) const; // Returns null if missing
|
||||
std::shared_ptr<const ItemNameIndex> item_name_index(Version version) const; // Throws if missing
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../tables/ItemMagEdit-bb-v4.prs
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
ItemMagEdit-pc-v2.prs
|
||||
@@ -1 +0,0 @@
|
||||
ItemMagEdit-gc-v3.prs
|
||||
@@ -1 +0,0 @@
|
||||
ItemMagEdit-gc-v3.prs
|
||||
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
||||
ItemMagEdit-pc-v2.prs
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,604 @@
|
||||
{
|
||||
"Colors": [
|
||||
[1.0, 0.19999998807907104, 0.099999994039535522, 1.0],
|
||||
[0.19999998807907104, 0.19999998807907104, 1.0, 1.0],
|
||||
[1.0, 0.89999997615814209, 0.099999994039535522, 1.0],
|
||||
[0.099999994039535522, 1.0, 0.099999994039535522, 1.0],
|
||||
[0.79999995231628418, 0.099999994039535522, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0],
|
||||
[0.89999997615814209, 1.0, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.89999997615814209, 1.0, 1.0],
|
||||
[0.5, 0.29999998211860657, 0.19999998807907104, 1.0]
|
||||
],
|
||||
"Mags": [
|
||||
{
|
||||
"EvolutionNumber": 0,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 32, "Eff5": 32, "Eff67": 32},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 31, "Eff5": 31, "Eff67": 31}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 32, "Eff5": 32, "Eff67": 32},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 31, "Eff5": 31, "Eff67": 31}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 3, "Eff5": 3, "Eff67": 3}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 3, "Eff5": 3, "Eff67": 3}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 11, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [6, 7]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 16, "Eff5": 16, "Eff67": 16},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 15, "Eff5": 15, "Eff67": 15}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 16, "Eff5": 16, "Eff67": 16},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 15, "Eff5": 15, "Eff67": 15}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 18, "Eff5": 18, "Eff67": 18},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 17, "Eff5": 17, "Eff67": 17}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 18, "Eff5": 18, "Eff67": 18},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 17, "Eff5": 17, "Eff67": 17}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46},
|
||||
"Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 20, "Eff5": 20, "Eff67": 20},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 19, "Eff5": 19, "Eff67": 19}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 20, "Eff5": 20, "Eff67": 20},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 19, "Eff5": 19, "Eff67": 19}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [1, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [2, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 21, "Eff2": 21, "Eff3": 21, "Eff48": 54, "Eff5": 21, "Eff67": 54}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 21, "Eff2": 21, "Eff3": 21, "Eff48": 21, "Eff5": 21, "Eff67": 21}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 6,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [8, 9]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [10, 11]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 38, "Eff48": 38, "Eff5": 38, "Eff67": 38}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 38, "Eff48": 38, "Eff5": 38, "Eff67": 38}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 3,
|
||||
"UnknownA2": [3, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 13]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [14, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
}
|
||||
],
|
||||
"UnknownA3": [
|
||||
{"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 67, "UnknownA2": 255, "UnknownA3": 0, "UnknownA4": -45, "UnknownA5": -15},
|
||||
{"Flags": 131, "UnknownA2": 255, "UnknownA3": 0, "UnknownA4": -45, "UnknownA5": -15},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30},
|
||||
{"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,606 @@
|
||||
{
|
||||
"Colors": [
|
||||
[1.0, 0.19999998807907104, 0.099999994039535522, 1.0],
|
||||
[0.19999998807907104, 0.19999998807907104, 1.0, 1.0],
|
||||
[1.0, 0.89999997615814209, 0.099999994039535522, 1.0],
|
||||
[0.099999994039535522, 1.0, 0.099999994039535522, 1.0],
|
||||
[0.79999995231628418, 0.099999994039535522, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0],
|
||||
[0.89999997615814209, 1.0, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.89999997615814209, 1.0, 1.0],
|
||||
[0.5, 0.29999998211860657, 0.19999998807907104, 1.0]
|
||||
],
|
||||
"Mags": [
|
||||
{
|
||||
"EvolutionNumber": 0,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 11, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [6, 7]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46},
|
||||
"Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [1, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [2, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 54, "Eff5": 3, "Eff67": 54}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 6,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [8, 9]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [10, 11]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 3,
|
||||
"UnknownA2": [3, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 13]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [14, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [15, 16]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [2, 4]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [2, 4]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [5, 8]
|
||||
}
|
||||
],
|
||||
"UnknownA3": [
|
||||
{"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0},
|
||||
{"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30},
|
||||
{"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,792 @@
|
||||
{
|
||||
"Colors": [
|
||||
[1.0, 0.19999998807907104, 0.099999994039535522, 1.0],
|
||||
[0.19999998807907104, 0.19999998807907104, 1.0, 1.0],
|
||||
[1.0, 0.89999997615814209, 0.099999994039535522, 1.0],
|
||||
[0.099999994039535522, 1.0, 0.099999994039535522, 1.0],
|
||||
[0.79999995231628418, 0.099999994039535522, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0],
|
||||
[0.89999997615814209, 1.0, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.89999997615814209, 1.0, 1.0],
|
||||
[0.5, 0.29999998211860657, 0.19999998807907104, 1.0]
|
||||
],
|
||||
"Mags": [
|
||||
{
|
||||
"EvolutionNumber": 0,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 11, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [6, 7]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46},
|
||||
"Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [1, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [2, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 54, "Eff5": 3, "Eff67": 54}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 6,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [8, 9]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [10, 11]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 3,
|
||||
"UnknownA2": [3, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 13]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [14, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [15, 16]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [2, 4]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [2, 4]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [5, 8]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81},
|
||||
"Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [17, 18]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81},
|
||||
"Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [19, 20]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [6, 7]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [255, 255]
|
||||
}
|
||||
],
|
||||
"UnknownA3": [
|
||||
{"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0},
|
||||
{"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30},
|
||||
{"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": 10, "UnknownA5": 50},
|
||||
{"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": -50, "UnknownA5": -10},
|
||||
{"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 80},
|
||||
{"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -80, "UnknownA5": 0}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,918 @@
|
||||
{
|
||||
"Colors": [
|
||||
[1.0, 0.19999998807907104, 0.099999994039535522, 1.0],
|
||||
[0.19999998807907104, 0.19999998807907104, 1.0, 1.0],
|
||||
[1.0, 0.89999997615814209, 0.099999994039535522, 1.0],
|
||||
[0.099999994039535522, 1.0, 0.099999994039535522, 1.0],
|
||||
[0.79999995231628418, 0.099999994039535522, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0],
|
||||
[0.89999997615814209, 1.0, 1.0, 1.0],
|
||||
[0.099999994039535522, 0.89999997615814209, 1.0, 1.0],
|
||||
[0.5, 0.29999998211860657, 0.19999998807907104, 1.0],
|
||||
[1.0, 0.39999997615814209, 0.0, 1.0],
|
||||
[0.50196075439453125, 0.54509800672531128, 0.97647053003311157, 1.0],
|
||||
[0.50196075439453125, 0.50196075439453125, 0.0, 1.0],
|
||||
[0.0, 0.94117641448974609, 0.71372544765472412, 1.0],
|
||||
[0.79999995231628418, 0.098039209842681885, 0.39215683937072754, 1.0],
|
||||
[0.49803918600082397, 0.49803918600082397, 0.49803918600082397, 1.0],
|
||||
[0.99607837200164795, 0.99607837200164795, 0.83529406785964966, 1.0],
|
||||
[0.99607837200164795, 0.49803918600082397, 0.78431367874145508, 1.0],
|
||||
[0.0, 0.49803918600082397, 0.32156860828399658, 1.0]
|
||||
],
|
||||
"Mags": [
|
||||
{
|
||||
"EvolutionNumber": 0,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71},
|
||||
"Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49},
|
||||
"Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61},
|
||||
"Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [6, 7]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51},
|
||||
"Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66},
|
||||
"Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74},
|
||||
"Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69},
|
||||
"Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [0, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42},
|
||||
"Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76},
|
||||
"Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46},
|
||||
"Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46},
|
||||
"Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [1, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53},
|
||||
"Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [2, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56},
|
||||
"Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58},
|
||||
"Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 1,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 2,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 6,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [8, 9]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [10, 11]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 3,
|
||||
"UnknownA2": [3, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 13]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [14, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 3,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [15, 16]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [2, 4]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [2, 4]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [5, 8]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81},
|
||||
"Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81},
|
||||
"Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [17, 18]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81},
|
||||
"Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81},
|
||||
"Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [19, 20]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43},
|
||||
"Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [6, 7]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82}
|
||||
},
|
||||
"RenderFlags": 255,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64},
|
||||
"Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [12, 13]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62}
|
||||
},
|
||||
"RenderFlags": 1,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47}
|
||||
},
|
||||
"RenderFlags": 10,
|
||||
"UnknownA2": [255, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 3,
|
||||
"UnknownA2": [10, 11]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11}
|
||||
},
|
||||
"RenderFlags": 2,
|
||||
"UnknownA2": [14, 255]
|
||||
},
|
||||
{
|
||||
"EvolutionNumber": 4,
|
||||
"MotionRefs1": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"MotionRefs2": {
|
||||
"Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255},
|
||||
"Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13}
|
||||
},
|
||||
"RenderFlags": 0,
|
||||
"UnknownA2": [255, 255]
|
||||
}
|
||||
],
|
||||
"UnknownA3": [
|
||||
{"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20},
|
||||
{"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0},
|
||||
{"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0},
|
||||
{"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60},
|
||||
{"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0},
|
||||
{"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30},
|
||||
{"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16},
|
||||
{"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40},
|
||||
{"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": 10, "UnknownA5": 50},
|
||||
{"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": -50, "UnknownA5": -10},
|
||||
{"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 80},
|
||||
{"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -80, "UnknownA5": 0}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@ fi
|
||||
|
||||
DIR=tests/game-tables
|
||||
PMT_PREFIX=$DIR/item-parameter-table
|
||||
MMT_PREFIX=$DIR/mag-metadata-table
|
||||
|
||||
echo "... (battle-params)"
|
||||
$EXECUTABLE decode-battle-params tests/game-tables/battle-params-ep1-on.dat tests/game-tables/battle-params-ep2-on.dat tests/game-tables/battle-params-ep4-on.dat tests/game-tables/battle-params-ep1-off.dat tests/game-tables/battle-params-ep2-off.dat tests/game-tables/battle-params-ep4-off.dat tests/game-tables/battle-params.json
|
||||
@@ -85,5 +86,60 @@ $EXECUTABLE decode-item-parameter-table --bb-v4 $PMT_PREFIX-bb-v4.expected.bin -
|
||||
$EXECUTABLE encode-item-parameter-table --bb-v4 $PMT_PREFIX-bb-v4.json $PMT_PREFIX-bb-v4.encoded.bin --decompressed
|
||||
bindiff $PMT_PREFIX-bb-v4.expected.bin $PMT_PREFIX-bb-v4.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) DC 11/2000"
|
||||
$EXECUTABLE decode-mag-metadata-table --dc-11-2000 $MMT_PREFIX-dc-11-2000.expected.bin --decompressed $MMT_PREFIX-dc-11-2000.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --dc-11-2000 $MMT_PREFIX-dc-11-2000.json $MMT_PREFIX-dc-11-2000.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-dc-11-2000.expected.bin $MMT_PREFIX-dc-11-2000.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) DC V1"
|
||||
$EXECUTABLE decode-mag-metadata-table --dc-v1 $MMT_PREFIX-dc-v1.expected.bin --decompressed $MMT_PREFIX-dc-v1.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --dc-v1 $MMT_PREFIX-dc-v1.json $MMT_PREFIX-dc-v1.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-dc-v1.expected.bin $MMT_PREFIX-dc-v1.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) DC V2"
|
||||
$EXECUTABLE decode-mag-metadata-table --dc-v2 $MMT_PREFIX-dc-v2.expected.bin --decompressed $MMT_PREFIX-dc-v2.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --dc-v2 $MMT_PREFIX-dc-v2.json $MMT_PREFIX-dc-v2.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-dc-v2.expected.bin $MMT_PREFIX-dc-v2.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) PC NTE"
|
||||
$EXECUTABLE decode-mag-metadata-table --pc-nte $MMT_PREFIX-pc-nte.expected.bin --decompressed $MMT_PREFIX-pc-nte.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --pc-nte $MMT_PREFIX-pc-nte.json $MMT_PREFIX-pc-nte.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-pc-nte.expected.bin $MMT_PREFIX-pc-nte.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) PC V2"
|
||||
$EXECUTABLE decode-mag-metadata-table --pc-v2 $MMT_PREFIX-pc-v2.expected.bin --decompressed $MMT_PREFIX-pc-v2.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --pc-v2 $MMT_PREFIX-pc-v2.json $MMT_PREFIX-pc-v2.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-pc-v2.expected.bin $MMT_PREFIX-pc-v2.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) GC NTE"
|
||||
$EXECUTABLE decode-mag-metadata-table --gc-nte $MMT_PREFIX-gc-nte.expected.bin --decompressed $MMT_PREFIX-gc-nte.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --gc-nte $MMT_PREFIX-gc-nte.json $MMT_PREFIX-gc-nte.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-gc-nte.expected.bin $MMT_PREFIX-gc-nte.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) GC V3"
|
||||
$EXECUTABLE decode-mag-metadata-table --gc-v3 $MMT_PREFIX-gc-v3.expected.bin --decompressed $MMT_PREFIX-gc-v3.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --gc-v3 $MMT_PREFIX-gc-v3.json $MMT_PREFIX-gc-v3.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-gc-v3.expected.bin $MMT_PREFIX-gc-v3.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) GC Ep3 NTE"
|
||||
$EXECUTABLE decode-mag-metadata-table --gc-ep3-nte $MMT_PREFIX-gc-ep3-nte.expected.bin --decompressed $MMT_PREFIX-gc-ep3-nte.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --gc-ep3-nte $MMT_PREFIX-gc-ep3-nte.json $MMT_PREFIX-gc-ep3-nte.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-gc-ep3-nte.expected.bin $MMT_PREFIX-gc-ep3-nte.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) GC Ep3"
|
||||
$EXECUTABLE decode-mag-metadata-table --gc-ep3 $MMT_PREFIX-gc-ep3.expected.bin --decompressed $MMT_PREFIX-gc-ep3.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --gc-ep3 $MMT_PREFIX-gc-ep3.json $MMT_PREFIX-gc-ep3.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-gc-ep3.expected.bin $MMT_PREFIX-gc-ep3.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) XB"
|
||||
$EXECUTABLE decode-mag-metadata-table --xb-v3 $MMT_PREFIX-xb-v3.expected.bin --decompressed $MMT_PREFIX-xb-v3.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --xb-v3 $MMT_PREFIX-xb-v3.json $MMT_PREFIX-xb-v3.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-xb-v3.expected.bin $MMT_PREFIX-xb-v3.encoded.bin
|
||||
|
||||
echo "... (mag-metadata-table) BB"
|
||||
$EXECUTABLE decode-mag-metadata-table --bb-v4 $MMT_PREFIX-bb-v4.expected.bin --decompressed $MMT_PREFIX-bb-v4.json --hex
|
||||
$EXECUTABLE encode-mag-metadata-table --bb-v4 $MMT_PREFIX-bb-v4.json $MMT_PREFIX-bb-v4.encoded.bin --decompressed
|
||||
bindiff $MMT_PREFIX-bb-v4.expected.bin $MMT_PREFIX-bb-v4.encoded.bin
|
||||
|
||||
echo "... clean up"
|
||||
rm -f $DIR/*.encoded.bin $DIR/*.json $DIR/battle-params.json.enc* $DIR/battle-params-encoded*
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user