public AbilityFeatChoiceModel(PlayerModel model, AbilityScoreFeatFeature asff) : base(model, asff.UniqueID, 2, asff, true) { Name = "Ability Score Improvement"; OnSelect = new Command((par) => { if (par is ChoiceOption co) { AbilityFeatChoice afc = Model.Context.Player.GetAbilityFeatChoice(Feature as AbilityScoreFeatFeature); Model.MakeHistory(); if (co.Value is AbilityChoice ac) { afc.Feat = null; if (co.Selected) { if (afc.Ability2 == ac.Ability) { afc.Ability2 = Ability.None; } else if (afc.Ability1 == ac.Ability) { afc.Ability1 = Ability.None; } } else { if (afc.Ability1 == Ability.None) { afc.Ability1 = ac.Ability; } else { afc.Ability2 = ac.Ability; } } } else { afc.Ability1 = Ability.None; afc.Ability2 = Ability.None; if (co.Selected) { afc.Feat = null; } else { afc.Feat = co.NameWithSource; } } Model.Save(); Model.FirePlayerChanged(); } }); }
public override List <string> GetAllTakenChoices() { List <String> res = new List <string>(); AbilityFeatChoice afc = Model.Context.Player.GetAbilityFeatChoice(Feature as AbilityScoreFeatFeature); if (afc.Ability1 != Ability.None) { res.Add("+1 " + afc.Ability1.ToString()); } if (afc.Ability2 != Ability.None) { res.Add("+1 " + afc.Ability2.ToString()); } if (afc.Feat != null && afc.Feat != "") { res.Add(afc.Feat); } return(res); }