void update_statblock() { int level = (fCreature != null) ? fCreature.Level : 0; IRole role = (fCreature != null) ? fCreature.Role : null; List <string> lines = HTML.GetHead(null, null, Session.Preferences.TextSize); lines.Add("<BODY>"); lines.Add("<TABLE class=clear>"); lines.Add("<TR class=clear>"); lines.Add("<TD class=clear>"); lines.Add("<P class=table>"); lines.Add("<TABLE>"); lines.AddRange(fPower.AsHTML(null, CardMode.Build, fFromFunctionalTemplate)); lines.Add("</TABLE>"); lines.Add("</P>"); lines.Add("</TD>"); lines.Add("<TD class=clear>"); lines.Add("<P class=table>"); lines.Add("<TABLE>"); lines.Add("<TR class=heading>"); lines.Add("<TD colspan=2><B>Power Advice</B></TD>"); lines.Add("</TR>"); lines.Add("<TR class=shaded>"); lines.Add("<TD colspan=2><B>Attack Bonus</B></TD>"); lines.Add("</TR>"); lines.Add("<TR>"); lines.Add("<TD>Attack vs Armour Class</TD>"); lines.Add("<TD align=center>+" + Statistics.AttackBonus(DefenceType.AC, level, role) + "</TD>"); lines.Add("</TR>"); lines.Add("<TR>"); lines.Add("<TD>Attack vs Other Defence</TD>"); lines.Add("<TD align=center>+" + Statistics.AttackBonus(DefenceType.Fortitude, level, role) + "</TD>"); lines.Add("</TR>"); if (role != null) { lines.Add("<TR class=shaded>"); lines.Add("<TD colspan=2><B>Damage</B></TD>"); lines.Add("</TR>"); if (role is Minion) { lines.Add("<TR>"); lines.Add("<TD>Minion Damage</TD>"); lines.Add("<TD align=center>" + Statistics.Damage(level, DamageExpressionType.Minion) + "</TD>"); lines.Add("</TR>"); } else { lines.Add("<TR>"); lines.Add("<TD>Damage vs Single Targets</TD>"); lines.Add("<TD align=center>" + Statistics.Damage(level, DamageExpressionType.Normal) + "</TD>"); lines.Add("</TR>"); lines.Add("<TR>"); lines.Add("<TD>Damage vs Multiple Targets</TD>"); lines.Add("<TD align=center>" + Statistics.Damage(level, DamageExpressionType.Multiple) + "</TD>"); lines.Add("</TR>"); } if (fExamples.Count != 0) { lines.Add("<TR class=shaded>"); lines.Add("<TD><B>Example Power Details</B></TD>"); lines.Add("<TD align=center><A href=details:refresh>(refresh)</A></TD>"); lines.Add("</TR>"); foreach (string example in fExamples) { int index = fExamples.IndexOf(example); lines.Add("<TR>"); lines.Add("<TD colspan=2>" + example + " <A href=details:" + index + ">(use this)</A></TD>"); lines.Add("</TR>"); } } } lines.Add("</TABLE>"); lines.Add("</P>"); lines.Add("</TD>"); lines.Add("</TR>"); lines.Add("</TABLE>"); lines.Add("</BODY>"); lines.Add("</HTML>"); StatBlockBrowser.DocumentText = HTML.Concatenate(lines); }
void update_power() { List <string> lines = new List <string>(); lines.AddRange(HTML.GetHead(fPower.Name, "", Session.Preferences.TextSize)); lines.Add("<BODY>"); lines.Add("<P class=table>"); lines.Add("<TABLE>"); lines.AddRange(fPower.AsHTML(null, CardMode.View, false)); lines.Add("</TABLE>"); lines.Add("</P>"); lines.Add("<P class=instruction align=left>"); lines.Add("Click to add an attack roll for:"); string heroes = ""; foreach (Hero hero in Session.Project.Heroes) { CombatData cd = hero.CombatData; if ((!roll_exists(hero.ID)) && (hero.GetState(cd.Damage) != CreatureState.Defeated)) { if (heroes != "") { heroes += " | "; } heroes += "<A href=hero:" + hero.ID + ">" + hero.Name + "</A>"; } } if (heroes != "") { lines.Add("<BR>"); lines.Add(heroes); } string creatures = ""; foreach (EncounterSlot slot in fEncounter.Slots) { foreach (CombatData cd in slot.CombatData) { if ((!roll_exists(cd.ID)) && (slot.GetState(cd) != CreatureState.Defeated)) { if (creatures != "") { creatures += " | "; } creatures += "<A href=opponent:" + cd.ID + ">" + cd.DisplayName + "</A>"; } } } if (creatures != "") { lines.Add("<BR>"); lines.Add(creatures); } lines.Add("<BR>"); lines.Add("<A href=target:blank>An unnamed target</A>"); lines.Add("</P>"); lines.Add("</BODY>"); lines.Add("</HTML>"); PowerBrowser.DocumentText = HTML.Concatenate(lines); }