private bool ParseSelfPreEffect(PgAbilityPvX item, string value, out PgSelfPreEffect selfPreEffect) { selfPreEffect = null !; int StartIndex = value.IndexOf('('); int EndIndex = value.IndexOf(')'); if (StartIndex > 0 && EndIndex > StartIndex + 1 && EndIndex + 1 == value.Length) { string Prefix = value.Substring(0, StartIndex); if (Prefix == "EnhanceZombie") { string Enhancement = value.Substring(StartIndex + 1, EndIndex - StartIndex - 1); if (!StringToEnumConversion <PreEffect> .TryParse(Enhancement, out PreEffect enumValue)) { return(false); } selfPreEffect = new PgSelfPreEffectEnhanceZombie() { Value = enumValue }; } else if (Prefix == "ConfigGalvanize") { if (value[StartIndex + 1] != ',') { return(Program.ReportFailure($"Symbol ',' was expected")); } string Enhancement = value.Substring(StartIndex + 2, EndIndex - StartIndex - 2); if (!int.TryParse(Enhancement, out int Value)) { return(Program.ReportFailure($"Value {Enhancement} was expected to be an int")); } selfPreEffect = new PgSelfPreEffectConfigGalvanize() { RawValue = Value }; } else { return(Program.ReportFailure($"Invalid SelfPreEffect format {Prefix}")); } } else { if (!StringToEnumConversion <PreEffect> .TryParse(value, out PreEffect enumValue)) { return(false); } selfPreEffect = new PgSelfPreEffectSimple() { Value = enumValue }; } return(true); }