public BeatingInProgress GetOrStartBeatingInProgress(Pawn beatee, Pawn beater = null) { BeatingInProgress beating = GetBeatingInProgress(beatee); if (beating == null) { beating = new BeatingInProgress(); beating.beatee = beatee; beatingsInProgress.Add(beating); Logger.MessageFormat(this, "Started a new beating for {0}", beatee); } if (beater != null) { beating.AddBeater(beater); BeatingCounter counter = beatingCounters.Find(bc => bc.beater == beater); if (counter == null) { counter = new BeatingCounter(); counter.beater = beater; counter.nextBeatingTick = Find.TickManager.TicksGame + minimumBeatingInterval; } } return(beating); }
public bool CanGiveBeating(Pawn beater) { BeatingCounter counter = beatingCounters.Find(bc => bc.beater == beater); if (counter == null) { return(true); } int ticksUntilNextBeating = counter.nextBeatingTick - Find.TickManager.TicksGame; if (ticksUntilNextBeating > 0) { Logger.MessageFormat(this, "{0} cannot give beating for another {1} ticks", beater, ticksUntilNextBeating); } return(ticksUntilNextBeating <= 0); }