public override string Print(bool link = true, DwarfObject pov = null) { string eventString = GetYearTime(); eventString += AttackerHistoricalFigure?.ToLink(link, pov, this) ?? "an unknown creature"; if (AttackerLeader != null) { eventString += " as part of a squad"; if (AttackerLeadershipRoll <= 25) { eventString += " poorly"; } else if (AttackerLeadershipRoll >= 100) { eventString += " ably"; } eventString += " led by "; eventString += AttackerLeader.ToLink(link, pov, this); eventString += ","; } eventString += " clashed with "; if (DefenderHistoricalFigure != null) { eventString += DefenderHistoricalFigure.ToLink(link, pov, this); eventString += " as part of squad"; } else { if (DefenderNumber > 0 && DefenderRaceId > 0) { eventString += Formatting.IntegerToWords(DefenderNumber); eventString += " <span title='" + DefenderRaceId + "'>creatures</span>"; } else { eventString += "another squad"; } } if (Site != null) { eventString += " in " + Site.ToLink(link, pov, this); } if (DefenderLeader != null) { if (DefenderLeadershipRoll <= 25) { eventString += " poorly"; } else if (DefenderLeadershipRoll >= 100) { eventString += " ably"; } eventString += " led by "; eventString += DefenderLeader.ToLink(link, pov, this); } if (DefenderNumber == DefenderSlain) { eventString += ", slaying them"; } else if (DefenderSlain > 0) { eventString += ", slaying " + Formatting.IntegerToWords(DefenderSlain); } eventString += PrintParentCollection(link, pov); eventString += "."; return(eventString); }