public bool Equals(SynthesisNugetVersioning other) { if (!Mutagen.Equals(other.Mutagen)) { return(false); } if (!Synthesis.Equals(other.Synthesis)) { return(false); } return(true); }
private void EjectPawn() { _scratchList.Clear(); _scratchList.AddRange(innerContainer.OfType <Pawn>()); var pawn = _scratchList[0] as Pawn; if (pawn == null) { Log.Error("trying to eject empty muta chamber!"); return; } EjectContents(); SelectorComp.Enabled = false; TransformationRequest tfRequest; Mutagen mutagen = null; switch (_currentUse) { case ChamberUse.Mutation: tfRequest = null; break; case ChamberUse.Merge: var otherPawn = (Pawn)_scratchList[1]; if (otherPawn == null) { Log.Error("merging but cannot find other pawn! aborting!"); tfRequest = null; break; } tfRequest = new TransformationRequest(_targetAnimal, pawn, otherPawn) { addMutationToOriginal = false, factionResponsible = Faction, forcedFaction = Faction, forcedSapienceLevel = 1, manhunterSettingsOverride = ManhunterTfSettings.Never }; mutagen = MutagenDefOf.MergeMutagen.MutagenCached; break; case ChamberUse.Tf: PawnKindDef animal = SelectorComp.ChosenKind; if (animal == null) { animal = GetRandomAnimal(); } tfRequest = new TransformationRequest(animal, pawn) { addMutationToOriginal = true, factionResponsible = Faction, forcedFaction = Faction, forcedGender = TFGender.Original, forcedSapienceLevel = 1, manhunterSettingsOverride = ManhunterTfSettings.Never }; mutagen = MutagenDefOf.defaultMutagen.MutagenCached; break; default: throw new ArgumentOutOfRangeException(); } if (tfRequest == null) { return; } TransformedPawn tfPawn = mutagen.Transform(tfRequest); if (tfPawn == null) { Log.Error($"unable to transform pawn(s)! {_currentUse} {_innerState}"); return; } var gComp = Find.World.GetComponent <PawnmorphGameComp>(); gComp.AddTransformedPawn(tfPawn); foreach (Pawn oPawn in tfPawn.OriginalPawns) { if (oPawn.Spawned) { oPawn.DeSpawn(); } } }