private static bool Prefix(Pawn p, GatheringDef gatheringDef)
 {
     if (p.HasTrait(VTEDefOf.VTE_Anxious))
     {
         return(false);
     }
     return(true);
 }
        public override void TryExecute()
        {
            GatheringDef gatheringDef = GatheringDefOf.Party;

            Verse.AI.Group.LordMaker.MakeNewLord(pawn.Faction, new LordJob_Joinable_Party(intVec, pawn, gatheringDef), Helper.AnyPlayerMap, null);
            string text = $"{pawn.LabelShort} is throwing a party! Everyone who goes will gain recreation and social energy, and a lasting positive mood boost.";

            Find.LetterStack.ReceiveLetter("Party", text, LetterDefOf.PositiveEvent, new TargetInfo(intVec, Helper.AnyPlayerMap, false), null, null);
        }
        public override IEnumerable <Gizmo> GetGizmos()
        {
            //TODO Graphics
            foreach (Gizmo gizmo in base.GetGizmos())
            {
                yield return(gizmo);
            }

            if (Faction != Faction.OfPlayer)
            {
                yield break;
            }
            if (Map == null)
            {
                yield break;
            }

            var cmd = new Command_Action
            {
                action = CreateSubMenu
            };
            List <Pawn>  skaven = GetAllLeaders().ToList();
            GatheringDef gDef   = PSGatheringDefOf.SkavenTFGathering;

            try
            {
                var worker = (Worker_TfRitual)gDef.Worker;


                if (!worker.CanExecute(Map, this, skaven.FirstOrDefault(), out string reason))
                {
                    cmd.Disable(reason);
                }
            }
            catch (InvalidCastException e)
            {
                Log.Error($"unable to cast worker on {gDef.defName} to {nameof(Worker_TfRitual)}!\n{e.ToString().Indented("|\t")}");
                yield break;
            }

            yield return(cmd);
        }
        static bool Prefix(Map map, GatheringDef gatheringDef, ref bool __result)
        {
            if (gatheringDef == DiscoDefOf.DSC_DiscoGathering)
            {
                if (!GatheringsUtility.AcceptableGameConditionsToContinueGathering(map) || GatheringsUtility.AnyLordJobPreventsNewGatherings(map) || map.dangerWatcher.DangerRating != StoryDanger.None)
                {
                    __result = false;
                    return(false);
                }

                int colonistsSpawnedCount = map.mapPawns.FreeColonistsSpawnedCount;
                if (colonistsSpawnedCount < 3)
                {
                    return(false);
                }

                int num = 0;
                foreach (Pawn pawn in map.mapPawns.FreeColonistsSpawned)
                {
                    if (pawn.health.hediffSet.BleedRateTotal > 0.05)
                    {
                        __result = false;
                        return(false);
                    }
                    if (pawn.Drafted)
                    {
                        num++;
                    }
                }

                __result = num / (double)colonistsSpawnedCount < 0.75 && GatheringsUtility.EnoughPotentialGuestsToStartGathering(map, gatheringDef);
                return(false);
            }

            return(true);
        }
Пример #5
0
 public LordToil_Disco(IntVec3 spot, GatheringDef gatheringDef, float joyPerTick = 3.5E-05f)
     : base(spot, gatheringDef)
 {
     this.joyPerTick = joyPerTick;
     this.data       = new LordToilData_Disco();
 }
Пример #6
0
 protected override LordToil CreateGatheringToil(IntVec3 spot, Pawn organizer, GatheringDef gatheringDef)
 {
     return(new LordToil_Party(spot, gatheringDef));
 }
Пример #7
0
 public LordJob_Joinable_Feast(IntVec3 spot, Pawn organizer, GatheringDef gatheringDef)
     : base(spot, organizer, gatheringDef)
 {
     durationTicks = Rand.RangeInclusive(55000, 65000);
 }
Пример #8
0
 public LordToil_TfRitual(IntVec3 spot, GatheringDef gatheringDef, Pawn organizer) : base(spot, gatheringDef, organizer)
 {
     this.organizer = organizer;
     data           = new LordToilData_TfRitual();
 }
 public LordJob_Joinable_Disco(IntVec3 spot, Pawn organizer, GatheringDef gatheringDef, Building_DJStand stand) : base(spot, organizer, gatheringDef)
 {
     this.durationTicks = Rand.RangeInclusive(10000, 15000);
     this.DJStand       = stand;
 }
 public LordJob_TfRitual(IntVec3 gatherSpot, Pawn organizer, Pawn target, GatheringDef gatheringDef) : base(gatherSpot, organizer,
                                                                                                            gatheringDef)
 {
     this.target = target;
 }