public void Deserialize(EntityPropsSpecial entity_props, JObject root)
 {
     entity_props.special_props              = root["special_props"].GetEnum <MatcenSpecialProperties>(MatcenSpecialProperties.NONE);;
     entity_props.matcen_spawn_type_1        = root["matcen_spawn_type_1"].GetEnum <EnemyType>(EnemyType.RECOILA);
     entity_props.matcen_spawn_probability_1 = root["matcen_spawn_probability_1"].GetFloat();
     entity_props.matcen_spawn_type_2        = root["matcen_spawn_type_2"].GetEnum <EnemyType>(EnemyType.RECOILA);
     entity_props.matcen_spawn_probability_2 = root["matcen_spawn_probability_2"].GetFloat();
     entity_props.m_max_alive     = root["m_max_alive"].GetInt();
     entity_props.m_spawn_wait    = root["m_spawn_wait"].GetEnum <MatcenSpawnWait>(MatcenSpawnWait.MEDIUM);
     entity_props.ed_invulnerable = root["ed_invulnerable"].GetBool();
 }
 // SPECIAL
 public void Serialize(EntityPropsSpecial entity_props, JObject root)
 {
     root["special_props"]              = entity_props.special_props.ToString();
     root["matcen_spawn_type_1"]        = entity_props.matcen_spawn_type_1.ToString();
     root["matcen_spawn_probability_1"] = entity_props.matcen_spawn_probability_1.ToString();
     root["matcen_spawn_type_2"]        = entity_props.matcen_spawn_type_2.ToString();
     root["matcen_spawn_probability_2"] = entity_props.matcen_spawn_probability_2.ToString();
     root["m_max_alive"]     = entity_props.m_max_alive.ToString();
     root["m_spawn_wait"]    = entity_props.m_spawn_wait.ToString();
     root["ed_invulnerable"] = entity_props.ed_invulnerable.ToString();
 }