public QuestOrigin(QuestOriginSerializable serializable, Database database)
        {
            Type         = serializable.Type;
            Factions     = new RequiredFactions(serializable.Factions, database);
            MinDistance  = new NumericValue <int>(serializable.MinDistance, 0, 9999);
            MaxDistance  = new NumericValue <int>(serializable.MaxDistance, 0, 9999);
            MinRelations = new NumericValue <int>(serializable.MinRelations, -100, 100);
            MaxRelations = new NumericValue <int>(serializable.MaxRelations, -100, 100);

            OnDataDeserialized(serializable, database);
        }
        public QuestOriginSerializable Serialize()
        {
            var serializable = new QuestOriginSerializable();

            serializable.Type         = Type;
            serializable.Factions     = Factions.Serialize();
            serializable.MinDistance  = MinDistance.Value;
            serializable.MaxDistance  = MaxDistance.Value;
            serializable.MinRelations = MinRelations.Value;
            serializable.MaxRelations = MaxRelations.Value;
            OnDataSerialized(ref serializable);
            return(serializable);
        }
 partial void OnDataSerialized(ref QuestOriginSerializable serializable);
 partial void OnDataDeserialized(QuestOriginSerializable serializable, Database database);