public void NotifyPlayerOfKilled(DamageInfo?dinfo, Hediff hediff, Caravan caravan) { TaggedString taggedString = ""; taggedString = (dinfo.HasValue ? dinfo.Value.Def.deathMessage.Formatted(pawn.LabelShortCap, pawn.Named("PAWN")) : ((hediff == null) ? "PawnDied".Translate(pawn.LabelShortCap, pawn.Named("PAWN")) : "PawnDiedBecauseOf".Translate(pawn.LabelShortCap, hediff.def.LabelCap, pawn.Named("PAWN")))); Quest quest = null; if (pawn.IsBorrowedByAnyFaction()) { foreach (QuestPart_LendColonistsToFaction item in QuestUtility.GetAllQuestPartsOfType <QuestPart_LendColonistsToFaction>()) { if (item.LentColonistsListForReading.Contains(pawn)) { taggedString += "\n\n" + "LentColonistDied".Translate(pawn.Named("PAWN"), item.lendColonistsToFaction.Named("FACTION")); quest = item.quest; break; } } } taggedString = taggedString.AdjustedFor(pawn); if (pawn.Faction == Faction.OfPlayer) { TaggedString label = "Death".Translate() + ": " + pawn.LabelShortCap; if (caravan != null) { Messages.Message("MessageCaravanDeathCorpseAddedToInventory".Translate(pawn.Named("PAWN")), caravan, MessageTypeDefOf.PawnDeath); } if (pawn.Name != null && !pawn.Name.Numerical && pawn.RaceProps.Animal) { label += " (" + pawn.KindLabel + ")"; } pawn.relations.CheckAppendBondedAnimalDiedInfo(ref taggedString, ref label); Find.LetterStack.ReceiveLetter(label, taggedString, LetterDefOf.Death, pawn, null, quest); } else { Messages.Message(taggedString, pawn, MessageTypeDefOf.PawnDeath); } }