public static bool canUseSidearmType(ThingDefStuffDefPair sidearmType, Pawn pawn, out string errString) { if (sidearmType != null && sidearmType.thing != null) { if (ModsConfig.IdeologyActive && pawn.Ideo != null) { Precept_Role role = pawn.Ideo.GetRole(pawn); if (role != null) { if (role.def.roleEffects != null && role.def.roleEffects.Any()) { //hardcoded cos RoleEffect's CanEquip requires an instance of Thing if (sidearmType.thing.IsMeleeWeapon) { if (role.def.roleEffects.Any(e => e is RoleEffect_NoMeleeWeapons)) { errString = "RoleEffectWontUseMeleeWeapons".Translate(); return(false); } } else if (sidearmType.thing.IsRangedWeapon) { if (role.def.roleEffects.Any(e => e is RoleEffect_NoRangedWeapons)) { errString = "RoleEffectWontUseRangedWeapons".Translate(); return(false); } } } } } } errString = "No issue"; return(true); }
public void DrawIcons(Rect rect, Pawn colonist) { if (colonist.Dead) { return; } tmpIconsToDraw.Clear(); bool flag = false; if (colonist.CurJob != null) { JobDef def = colonist.CurJob.def; if (def == JobDefOf.AttackMelee || def == JobDefOf.AttackStatic) { flag = true; } else if (def == JobDefOf.Wait_Combat) { Stance_Busy stance_Busy = colonist.stances.curStance as Stance_Busy; if (stance_Busy != null && stance_Busy.focusTarg.IsValid) { flag = true; } } } if (colonist.IsFormingCaravan()) { tmpIconsToDraw.Add(new IconDrawCall(Icon_FormingCaravan, Strings.ActivityIconFormingCaravan)); } if (colonist.InAggroMentalState) { tmpIconsToDraw.Add(new IconDrawCall(Icon_MentalStateAggro, colonist.MentalStateDef.LabelCap)); } else if (colonist.InMentalState) { tmpIconsToDraw.Add(new IconDrawCall(Icon_MentalStateNonAggro, colonist.MentalStateDef.LabelCap)); } else if (colonist.InBed() && colonist.CurrentBed().Medical) { tmpIconsToDraw.Add(new IconDrawCall(Icon_MedicalRest, Strings.ActivityIconMedicalRest)); } else if (colonist.CurJob != null && colonist.jobs.curDriver.asleep) { tmpIconsToDraw.Add(new IconDrawCall(Icon_Sleeping, Strings.ActivityIconSleeping)); } else if (colonist.CurJob != null && colonist.CurJob.def == JobDefOf.FleeAndCower) { tmpIconsToDraw.Add(new IconDrawCall(Icon_Fleeing, Strings.ActivityIconFleeing)); } else if (flag) { tmpIconsToDraw.Add(new IconDrawCall(Icon_Attacking, Strings.ActivityIconAttacking)); } else if (colonist.mindState.IsIdle && GenDate.DaysPassed >= 1) { tmpIconsToDraw.Add(new IconDrawCall(Icon_Idle, Strings.ActivityIconIdle)); } if (colonist.IsBurning()) { tmpIconsToDraw.Add(new IconDrawCall(Icon_Burning, Strings.ActivityIconBurning)); } if (colonist.Inspired) { tmpIconsToDraw.Add(new IconDrawCall(Icon_Inspired, colonist.InspirationDef.LabelCap)); } if (colonist.IsSlaveOfColony) { tmpIconsToDraw.Add(new IconDrawCall(colonist.guest.GetIcon())); } else { bool flag2 = false; if (colonist.Ideo != null) { Ideo ideo = colonist.Ideo; Precept_Role role = ideo.GetRole(colonist); if (role != null) { tmpIconsToDraw.Add(new IconDrawCall(role.Icon, null, ideo.Color)); flag2 = true; } } if (!flag2) { Faction faction = null; if (colonist.HasExtraMiniFaction()) { faction = colonist.GetExtraMiniFaction(); } else if (colonist.HasExtraHomeFaction()) { faction = colonist.GetExtraHomeFaction(); } if (faction != null) { tmpIconsToDraw.Add(new IconDrawCall(faction.def.FactionIcon, null, faction.Color)); } } } if (!(ModCompatibility.rimworldOfMagicDrawMethod is null)) { ModCompatibility.rimworldOfMagicDrawMethod.Invoke(this, new object[] { null, rect, colonist }); } float num = Mathf.Min(BaseIconAreaWidth / (float)tmpIconsToDraw.Count, BaseIconMaxSize) * TacticUtils.TacticalColonistBar.Scale; Vector2 pos = new Vector2(rect.x + 1f, rect.yMax - num - 1f); foreach (IconDrawCall item in tmpIconsToDraw) { GUI.color = item.color ?? Color.white; DrawIcon(item.texture, ref pos, num, item.tooltip); GUI.color = Color.white; } }
public override bool AppliesToRole(Precept_Role role, out string reason, Precept_Ritual ritual = null, Pawn p = null, bool skipReason = false) { reason = null; return(false); }