Ejemplo n.º 1
0
        // 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);
            }
        }
Ejemplo n.º 2
0
        // 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);
                }
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 7
0
        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();
                }
            }
        }