Exemplo n.º 1
0
 public bool Equals(SynthesisNugetVersioning other)
 {
     if (!Mutagen.Equals(other.Mutagen))
     {
         return(false);
     }
     if (!Synthesis.Equals(other.Synthesis))
     {
         return(false);
     }
     return(true);
 }
Exemplo n.º 2
0
        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();
                }
            }
        }