protected void UpdateFullStat() { var r = new ComboStat(SupportingStats.Cast <astat>(), this); ApplyConversions(r); _fullStat = r; UpToDate = true; }
public void ApplyConversions(ComboStat target, StatType excluder) { foreach (var c in ConvertersAndSupportingConverters) { if (!c.TargetType.Supports(excluder) && !c.SourceType.Supports(excluder)) { var st = this.StatType & ~c.TargetType | c.SourceType; //inherit conversion in sourcetype as well, IE physical weapon damage is to be converted if physical damage is converted c.Apply(Owner.GetStat(st).ExcludingStat(excluder | this.StatType), target); } } }
public ComboStat ExcludingStat(StatType excluder) { if (this.StatType.Supports(excluder)) { return(new ComboStat(this.StatType)); } var r = new ComboStat(SupportingStats.Where(ss => !ss.StatType.Supports(excluder)).Cast <astat>(), this); ApplyConversions(r, excluder); return(r); }
public void ApplyConversions(ComboStat target) { ApplyConversions(target, StatType.None); }
public void Apply(astat source, ComboStat target) { _converter(source)(target); }