public override bool IsViolationOnPawn(Pawn pawn, BodyPartRecord part, Faction billDoerFaction) { if (BloodItemUtility.ExtractionWillKill(pawn, BloodExtractType.Vial)) { Messages.Message("ROMV_DeadlyOperation".Translate(pawn.Label), MessageTypeDefOf.NegativeEvent); } return(pawn.Faction != billDoerFaction); //&& HealthUtility.PartRemovalIntent(pawn, part) == BodyPartRemovalIntent.Harvest; }
public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List <Thing> ingredients, Bill bill) { bool flag = IsClean(pawn, part); bool flag2 = IsViolationOnPawn(pawn, part, Faction.OfPlayer); if (billDoer != null) { //if (base.CheckSurgeryFail(billDoer, pawn, ingredients, part)) //{ // return; //} TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[] { billDoer, pawn }); BloodItemUtility.SpawnBloodFromExtraction(pawn, true); } pawn.TakeDamage(new DamageInfo(DamageDefOf.Cut, 1, -1f, null, part)); int badGoodwillAmt = -3; if (flag) { if (pawn.Dead) { badGoodwillAmt = -20; VampireThoughtUtility.GiveThoughtsForPawnDiedOfBloodLoss(pawn, billDoer); } else { VampireThoughtUtility.GiveThoughtsForPawnBloodHarvested(pawn); //ThoughtUtility.GiveThoughtsForPawnOrganHarvested(pawn); } } if (flag2) { pawn.Faction.AffectGoodwillWith(billDoer.Faction, badGoodwillAmt); } }
public override string GetLabelWhenUsedOn(Pawn pawn, BodyPartRecord part) { return(recipe.LabelCap + " (" + BloodTypeUtility.BloodType(pawn).GetLabel() + ")" + ((BloodItemUtility.ExtractionWillKill(pawn, BloodExtractType.Vial)) ? " (" + ("ROMV_DeadlyOperationShort".Translate()).RawText + ")" : "")); }