private static bool Prefix(Pawn pawn, BodyPartGroupDef bodyPartGroupDef, ref Apparel __result) { Room room = pawn.GetRoom(RegionType.Set_Passable); if (room.isPrisonCell) { foreach (IntVec3 current in room.Cells) { List <Thing> thingList = current.GetThingList(pawn.Map); for (int i = 0; i < thingList.Count; i++) { if (thingList[i] is Apparel apparel && RaceAddonTools.CheckApparel(pawn, apparel.def) && apparel.def.apparel.bodyPartGroups.Contains(bodyPartGroupDef) && pawn.CanReserve(apparel, 1, -1, null, false) && !apparel.IsBurning() && ApparelUtility.HasPartsToWear(pawn, apparel.def)) { __result = apparel; return(false); } } } } __result = null; return(false); }
private static bool Prefix(Pawn pawn, Apparel ap, ref float __result) { if (!RaceAddonTools.CheckApparel(pawn, ap.def)) { __result = -100f; return(false); } return(true); }
private static bool Prefix(Pawn pawn, ref List <ThingStuffPair> ___allApparelPairs) { if (savedAllApparelPairs == null) { savedAllApparelPairs = ___allApparelPairs.ListFullCopy(); } ___allApparelPairs = savedAllApparelPairs.FindAll((ThingStuffPair x) => RaceAddonTools.CheckApparel(pawn, x.thing)); return(true); }
private static void Postfix(Pawn pawn, Apparel ap, ref float __result) { if (__result < 0f) { return; } if (!RaceAddonTools.CheckApparel(pawn, ap.def)) { __result = -50f; } }
private static void Postfix(Pawn pawn, LocalTargetInfo target, ref FloatMenuOption __result) { if (pawn != null && target.Thing != null) { var thing = target.Thing; if (thing is Apparel apparel && !RaceAddonTools.CheckApparel(pawn, apparel.def) && __result.Label == "ForceWear".Translate(apparel.LabelShort, apparel)) { __result = new FloatMenuOption("CannotWear".Translate(apparel.Label, apparel) + " (" + "RaceAddonRestriction_FloatMenu".Translate() + ")", null); } if (thing.TryGetComp <CompEquippable>() != null && !RaceAddonTools.CheckWeapon(pawn, thing.def) && __result.Label.Contains("Equip".Translate(thing.LabelShort))) { __result = new FloatMenuOption("CannotEquip".Translate(thing.LabelShort) + " (" + "RaceAddonRestriction_FloatMenu".Translate() + ")", null); } } }
private static bool Prefix(Pawn p, ref Thing ___draggedItem, ref bool ___droppedDraggedItem) { ___droppedDraggedItem = false; if (___draggedItem.def.IsApparel && !RaceAddonTools.CheckApparel(p, ___draggedItem.def)) { Messages.Message("RaceAddonRestriction_Caravan".Translate(p.LabelShort), p, MessageTypeDefOf.RejectInput, false); ___draggedItem = null; return(false); } if (___draggedItem.def.IsWeapon && !RaceAddonTools.CheckWeapon(p, ___draggedItem.def)) { Messages.Message("RaceAddonRestriction_Caravan".Translate(p.LabelShort), p, MessageTypeDefOf.RejectInput, false); ___draggedItem = null; return(false); } return(true); }
public override void CompTickRare() { base.CompTickRare(); if (Pawn != null && Pawn.Spawned) { // resolve draw size var newDrawSize = RaceAddonTools.GetPawnDrawSize(Pawn, ThingDef); if (drawSize != newDrawSize) { drawSize = newDrawSize; if (ThingDef.raceAddonSettings.graphicSetting.drawSize[drawSize].apparanceOverwrite.FindAll(x => x.gender == Gender.None || x.gender == Pawn.gender) is var overwrite && overwrite.Count > 0) { var appearanceDef = overwrite.RandomElementByWeight(x => x.weight).appearanceDef; HarmonyPathces_PawnGenerator_GeneratePawn.GenerateAppearance(Pawn, appearanceDef); Pawn.Drawer.renderer.graphics.ResolveAllGraphics(); } else { var appearanceDef = ThingDef.raceAddonSettings.graphicSetting.raceAppearances.FindAll(x => x.gender == Gender.None || x.gender == Pawn.gender).RandomElementByWeight(x => x.weight).appearanceDef; HarmonyPathces_PawnGenerator_GeneratePawn.GenerateAppearance(Pawn, appearanceDef); Pawn.Drawer.renderer.graphics.ResolveAllGraphics(); } if (Pawn.IsColonist) { Find.LetterStack.ReceiveLetter("RaceAddon_GrowUp_Label".Translate(Pawn.Name.ToStringShort), "RaceAddon_GrowUp_String".Translate(), LetterDefOf.PositiveEvent); } } foreach (var apparel in Pawn.apparel.WornApparel) { if (!RaceAddonTools.CheckApparel(Pawn, apparel.def)) { Pawn.apparel.TryDrop(apparel); } } HarmonyPatches_ResolveApparelGraphics.ResolveAddonDraw(this, ThingDef, AllAddonGraphicSets, null); }