public void Reload()
{
var guest = CreateGuestWithPotential(Guest);
SupportMembers = SelectSupportMembers();
SupportMemberVocalAppeal = SupportMembers.Sum(x => CalculateAppeal(AppealType.Vocal, x, true, IsEncore));
SupportMemberDanceAppeal = SupportMembers.Sum(x => CalculateAppeal(AppealType.Dance, x, true, IsEncore));
SupportMemberVisualAppeal = SupportMembers.Sum(x => CalculateAppeal(AppealType.Visual, x, true, IsEncore));
VocalAppeal = SupportMemberVocalAppeal + CalculateAppeal(AppealType.Vocal, guest, false, IsEncore) +
Unit.GetValueOrDefault(u => u.Slots.Sum(x => CalculateAppeal(AppealType.Vocal, x, false, IsEncore)));
DanceAppeal = SupportMemberDanceAppeal + CalculateAppeal(AppealType.Dance, guest, false, IsEncore) +
Unit.GetValueOrDefault(u => u.Slots.Sum(x => CalculateAppeal(AppealType.Dance, x, false, IsEncore)));
VisualAppeal = SupportMemberVisualAppeal + CalculateAppeal(AppealType.Visual, guest, false, IsEncore) +
Unit.GetValueOrDefault(u => u.Slots.Sum(x => CalculateAppeal(AppealType.Visual, x, false, IsEncore)));
if (Unit != null)
{
int i = 1;
ExpectedTriggerRatio = Unit.Slots.ToDictionary(
x => $"スロット{i++}",
x =>
{
if (SkillControl == SkillTriggerControl.NeverTrigger || x == null || x.Skill == null)
{
return .0;
}
else if (SkillControl == SkillTriggerControl.AlwaysTrigger)
{
return 1.0;
}
else
{
return GetSkillTriggerProbability(x, Unit.Center, Guest, Song);
//return x.Skill.EstimateProbability(x.SkillLevel) * (1 + skillUpRate.GetValueOrDefault(0) + (songType != null && songType.Value.HasFlag(x.Category) ? 0.3 : 0));
}
});
}
Life = CalculateLife(Unit, guest);
ResultsUpToDate = false;
}