public override string Print(bool link = true, DwarfObject pov = null) { string eventString = GetYearTime(); eventString += Artifact.ToLink(link, pov, this); eventString += " was offered to "; if (HistoricalFigureReceiver != null) { eventString += HistoricalFigureReceiver.ToLink(link, pov, this); if (EntityReceiver != null) { eventString += " of "; } } if (EntityReceiver != null) { eventString += EntityReceiver.ToLink(link, pov, this); } eventString += " by "; if (HistoricalFigureGiver != null) { eventString += HistoricalFigureGiver.ToLink(link, pov, this); if (EntityGiver != null) { eventString += " of "; } } if (EntityGiver != null) { eventString += EntityGiver.ToLink(link, pov, this); } if (ArtifactReason != ArtifactReason.Unknown) { switch (ArtifactReason) { case ArtifactReason.CementBondsOfFriendship: eventString += " in order to cement the bonds of friendship"; break; case ArtifactReason.PartOfTradeNegotiation: eventString += " as part of a trade negotiation"; break; } } eventString += PrintParentCollection(link, pov); eventString += "."; return(eventString); }
// http://www.bay12games.com/dwarves/mantisbt/view.php?id=11350 // 0011350: "artifact given" event sometimes has the same <giver_hist_figure_id> and <receiver_hist_figure_id> public ArtifactGiven(List <Property> properties, World world) : base(properties, world) { foreach (Property property in properties) { switch (property.Name) { case "artifact_id": Artifact = world.GetArtifact(Convert.ToInt32(property.Value)); break; case "giver_hist_figure_id": HistoricalFigureGiver = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break; case "receiver_hist_figure_id": HistoricalFigureReceiver = world.GetHistoricalFigure(Convert.ToInt32(property.Value)); break; case "giver_entity_id": EntityGiver = world.GetEntity(Convert.ToInt32(property.Value)); break; case "receiver_entity_id": EntityReceiver = world.GetEntity(Convert.ToInt32(property.Value)); break; case "reason": switch (property.Value) { case "cement bonds of friendship": ArtifactReason = ArtifactReason.CementBondsOfFriendship; break; case "part of trade negotiation": ArtifactReason = ArtifactReason.PartOfTradeNegotiation; break; default: property.Known = false; break; } break; } } Artifact.AddEvent(this); HistoricalFigureGiver.AddEvent(this); if (HistoricalFigureGiver != HistoricalFigureReceiver) { HistoricalFigureReceiver.AddEvent(this); } EntityGiver.AddEvent(this); EntityReceiver.AddEvent(this); }