protected override IEnumerable <Toil> MakeNewToils() { /* Log.Message("I got asked to do woohoo!!!!"); */ var list = new List <Toil>(); list.Add(Toils_Goto.Goto(TargetIndex.A, PathEndMode.ClosestTouch)); list.Add(Toils_Goto.Goto(TargetIndex.B, PathEndMode.ClosestTouch)); list.AddRange(WoohooManager.AnimateLovin(pawn, TargetA.Thing as Pawn, TargetB.Thing as Building_Bed)); Toil t; list.Add(t = new Toil { initAction = delegate { Log.Message("Getting Woohooing, will be done in 400 ticks"); }, defaultDuration = 400, defaultCompleteMode = ToilCompleteMode.Delay }); t.AddFinishAction(delegate { Log.Message("Done Woohing Get"); }); PawnHelper.DelayNextWooHoo(pawn); //add a moodlet for being asked return(list); }
protected override IEnumerable <Toil> MakeNewToils() { //Pawn mate = TargetA.Thing as Pawn; //Building_Bed bed = TargetB.Thing as Building_Bed; Pawn mate; Building_Bed bed; if (TargetA != null && TargetA.Thing != null && (mate = TargetA.Thing as Pawn) != null && TargetB != null && TargetB.Thing != null && (bed = TargetB.Thing as Building_Bed) != null && pawn != null && PawnHelper.is_human(pawn) && PawnHelper.is_human(mate) && !bed.IsBurning() ) { //everything is in order then } else { Log.Error("[" + pawn.Name + "] can't woohoo right.", true); EndJobWith(JobCondition.Errored); return(null); } if (pawn == mate) { throw new Exception("You cant WooHoo Alone and Together with yourself"); } var hookupBedManager = new HookupBedManager(bed); bool partnerSaidYes; IEnumerable <Toil> toilsAskForWoohoo; if (PawnHelper.IsNotWoohooing(mate)) { pawn.records.Increment(Constants.CountAskedForWoohoo); mate.records.Increment(Constants.CountGotAskedToWooHoo); partnerSaidYes = AskPartner(pawn, mate); toilsAskForWoohoo = WoohooManager.ToilsAskForWoohoo(pawn, mate, bed, partnerSaidYes, hookupBedManager); } else { /* Log.Message("Partner already woohooin, dont need to ask."); */ partnerSaidYes = true; toilsAskForWoohoo = nothing(); } ///Log.Message("[WooHoo]Toils Ongoing: ["+r.Count()+"]"); if (partnerSaidYes) { toilsAskForWoohoo = toilsAskForWoohoo?.Union(WoohooManager.MakePartnerWoohoo(pawn, mate, bed)) .Union(WoohooManager.AnimateLovin(pawn, mate, bed)) .Union(MakeMyLoveToils(pawn, mate)) .Union( WoohooManager.AnimateLovin(pawn, mate, bed, null , 500) ); } else { mate.records.Increment(Constants.CountGotAskedToWooHooSaidNo); } toilsAskForWoohoo = toilsAskForWoohoo?.Union(hookupBedManager.GiveBackToil()); /* Log.Message("[WooHoo]Toils: ["+r.Count()+"]"); */ PawnHelper.DelayNextWooHoo(pawn); return(toilsAskForWoohoo); }