// Token: 0x06000062 RID: 98 RVA: 0x00006438 File Offset: 0x00004638 public static void CorrectActiveApparel(Apparel apparel, Pawn pawn = null) { var thing = ThingMaker.MakeThing(apparel.def, apparel.Stuff); if (apparel.TryGetQuality(out var qualityCategory)) { var compQuality = thing.TryGetComp <CompQuality>(); compQuality?.SetQuality(qualityCategory, ArtGenerationContext.Colony); } var compColorable = apparel.TryGetComp <CompColorable>(); if (compColorable != null) { var compColorable2 = thing.TryGetComp <CompColorable>(); compColorable2?.SetColor(compColorable.Color); } if (pawn != null) { pawn.apparel.Remove(apparel); apparel.Destroy(); pawn.apparel.Wear(thing as Apparel); return; } if (!apparel.Spawned) { return; } var intVec = IntVec3.Zero; var map = apparel.Map; if (map != null) { intVec = apparel.Position; } apparel.Destroy(); if (intVec != IntVec3.Zero) { GenSpawn.Spawn(thing, intVec, map); } }
// Token: 0x06000062 RID: 98 RVA: 0x00006438 File Offset: 0x00004638 public static void CorrectActiveApparel(Apparel apparel, Pawn pawn = null) { Thing thing = ThingMaker.MakeThing(apparel.def, apparel.Stuff); if (QualityUtility.TryGetQuality(apparel, out QualityCategory qualityCategory)) { CompQuality compQuality = ThingCompUtility.TryGetComp <CompQuality>(thing); if (compQuality != null) { compQuality.SetQuality(qualityCategory, ArtGenerationContext.Colony); } } CompColorable compColorable = ThingCompUtility.TryGetComp <CompColorable>(apparel); if (compColorable != null) { CompColorable compColorable2 = ThingCompUtility.TryGetComp <CompColorable>(thing); if (compColorable2 != null) { compColorable2.Color = compColorable.Color; } } if (pawn != null) { pawn.apparel.Remove(apparel); apparel.Destroy(0); pawn.apparel.Wear(thing as Apparel, true, false); return; } if (apparel.Spawned) { IntVec3 intVec = IntVec3.Zero; Map map = apparel?.Map; if (map != null) { intVec = apparel.Position; } apparel.Destroy(0); if (intVec != IntVec3.Zero) { GenSpawn.Spawn(thing, intVec, map, 0); } } }
void InitializeApparel(bool remove) { if (def.apparel == null) { return; } List <Apparel> list = pawn.apparel.WornApparel; foreach (ThingDef apparelDef in def.apparel) { // this adds tools to the apparel so that damage capabilities are showin in the inventory tooltip foreach (HediffCompProperties_VerbGiver comp in def.comps.OfType <HediffCompProperties_VerbGiver>()) { foreach (Tool tool in comp.tools) { if (apparelDef.tools == null) { apparelDef.tools = new List <Tool>(); } if (!apparelDef.tools.Contains(tool)) { apparelDef.tools.Add(tool); } } } Apparel existing = list.FirstOrDefault(x => x.def == apparelDef); if (remove) { if (existing != null) { pawn.apparel.Remove(existing); } existing.Destroy(); continue; } if (existing != null) { continue; } Apparel apparel = ThingMaker.MakeThing(apparelDef) as Apparel; if (apparel == null) { continue; } pawn.apparel.Wear(apparel); } }
public override void Notify_PawnDied() { base.Notify_PawnDied(); Apparel ap = base.Pawn.apparel.WornApparel.Find(x => x.TryGetComp <CompCartridge>() != null); if (ap != null) { ap.Destroy(DestroyMode.Vanish); base.Pawn.apparel.Remove(ap); ResurrectionUtility.Resurrect(base.Pawn); Messages.Message("PolarisMessageSomeoneResurrected".Translate(ap.LabelShort, base.Pawn.LabelShort), MessageTypeDefOf.PositiveEvent); } base.Pawn.health.RemoveHediff(base.parent); }
private static void DestroyAllHats() { foreach (Pawn allMap in PawnsFinder.AllMaps) { if (allMap.RaceProps.Humanlike) { for (int num = allMap.apparel.WornApparel.Count - 1; num >= 0; num--) { Apparel apparel = allMap.apparel.WornApparel[num]; if (apparel.def.apparel.bodyPartGroups.Contains(BodyPartGroupDefOf.FullHead) || apparel.def.apparel.bodyPartGroups.Contains(BodyPartGroupDefOf.UpperHead)) { apparel.Destroy(); } } } } }
public override void Notify_PawnDied() { base.Notify_PawnDied(); if (this.HediffApparel != null) { Hediff combatChip = this.Pawn.health.hediffSet.hediffs.Find(x => x is Hediff_CombatChip); if (combatChip != null) { this.Pawn.health.RemoveHediff(combatChip); this.Pawn.health.AddHediff(PolarisblocDefOf.PolarisCombatChip_Assassin, this.Pawn.health.hediffSet.GetBrain()); } Apparel ap = this.HediffApparel.wornApparel; if (ap != null) { ap.Destroy(DestroyMode.Vanish); //base.Pawn.apparel.Remove(ap); ResurrectionUtility.Resurrect(base.Pawn); Messages.Message("PolarisMessageSomeoneResurrected".Translate(ap.LabelShort, base.Pawn.LabelShort), MessageTypeDefOf.PositiveEvent); } if (!this.Pawn.Faction.IsPlayer) { List <Lord> lords = base.Pawn.Map.lordManager.lords; foreach (Lord lord in lords) { lord.RemovePawn(this.Pawn); } this.Pawn.mindState.exitMapAfterTick = Find.TickManager.TicksGame + 150; IntVec3 invalid = IntVec3.Invalid; if (!RCellFinder.TryFindRandomCellOutsideColonyNearTheCenterOfTheMap(this.Pawn.Position, this.Pawn.Map, 10f, out invalid)) { invalid = IntVec3.Invalid; } if (invalid.IsValid) { this.Pawn.mindState.forcedGotoPosition = CellFinder.RandomClosewalkCellNear(invalid, this.Pawn.Map, 10, null); } } base.Pawn.health.RemoveHediff(base.parent); } }
public void removeDroppedEquipment() { while (DroppedApparel.Any()) { Apparel apparel = DroppedApparel[0]; UsedApparelList.Remove(DroppedApparel[0]); if (apparel != null && apparel.Destroyed == false) { apparel.Destroy(); } } while (DroppedWeapons.Any()) { ThingWithComps weapon = DroppedWeapons[0]; UsedWeaponList.Remove(DroppedWeapons[0]); if (weapon != null && weapon.Destroyed == false) { weapon.Destroy(); } } }