public override string Print(bool link = true, DwarfObject pov = null) { string eventString = GetYearTime(); if (HistoricalFigure != null) { eventString += HistoricalFigure.ToLink(link, pov, this); } else { eventString += "UNKNOWN HISTORICAL FIGURE"; } switch (LinkType) { case HfEntityLinkType.Prisoner: eventString += " was imprisoned by "; break; case HfEntityLinkType.Slave: eventString += " was enslaved by "; break; case HfEntityLinkType.Enemy: eventString += " became an enemy of "; break; case HfEntityLinkType.Member: eventString += " became a member of "; break; case HfEntityLinkType.FormerMember: eventString += " became a former member of "; break; case HfEntityLinkType.Squad: case HfEntityLinkType.Position: EntityPosition position = Entity.EntityPositions.FirstOrDefault(pos => pos.Name.ToLower() == Position.ToLower() || pos.Id == PositionId); if (position != null) { string positionName = position.GetTitleByCaste(HistoricalFigure?.Caste); eventString += " became the " + positionName + " of "; } else if (!string.IsNullOrWhiteSpace(Position)) { eventString += " became the " + Position + " of "; } else { eventString += " got an honorable position in "; } break; default: eventString += " linked to "; break; } eventString += Entity.ToLink(link, pov, this); eventString += PrintParentCollection(link, pov); if (AppointerHf != null) { eventString += ", appointed by "; eventString += AppointerHf.ToLink(link, pov, this); } if (PromiseToHf != null) { eventString += " as promised to "; eventString += PromiseToHf.ToLink(link, pov, this); } eventString += "."; return(eventString); }