public static void Actions(Monster monster, ref string statBlock) { var match = Act_Section_Regex.Match(statBlock); if (match.Success) { var actionsMatch = actionSection_Regex.Matches(match.Groups[1].Value); var acts = new List <NormalAction>(); foreach (Match action in actionsMatch) { var act = new NormalAction { Name = action.Groups[1].Value, Description = action.Groups[2].Value, }; var xPerDayMatch = new Regex(@"([\s\S]+) \((\d+)/Day\)").Match(act.Name); if (xPerDayMatch.Success) { act.Name = xPerDayMatch.Groups[1].Value; act.Uses = Convert.ToInt32(xPerDayMatch.Groups[2].Value); act.UseTimeframe = "Day"; } var rechargeMatch = new Regex(@"([\s\S]+) \(Recharge ([\d-–]+)\)").Match(act.Name); if (rechargeMatch.Success) { act.Name = rechargeMatch.Groups[1].Value; act.RechargeRange = rechargeMatch.Groups[2].Value; } acts.Add(act); } monster.Actions = acts.ToArray(); statBlock = Act_Section_Regex.Strip(statBlock); } }
public static void Reactions(Monster monster, ref string statBlock) { DoMatch(React_Section_Regex, ref statBlock, match => { var reactionsMatch = actionSection_Regex.Matches(match.Groups[1].Value); var reacts = new List <NormalAction>(); foreach (Match reaction in reactionsMatch) { var react = new NormalAction { Name = reaction.Groups[1].Value, Description = reaction.Groups[2].Value, }; reacts.Add(react); } monster.Reactions = reacts.ToArray(); }); }