Exemple #1
0
        private static int GetDamageOverlaysCount(Thing b, int hp)
        {
            float num   = (float)hp / (float)b.MaxHitPoints;
            int   count = ThingsToxicDamageSectionLayerUtility.GetAvailableOverlays(b).Count;

            return(count - Mathf.FloorToInt((float)count * num));
        }
Exemple #2
0
        public static List <DamageOverlay> GetOverlays(Thing b)
        {
            ThingsToxicDamageSectionLayerUtility.overlays.Clear();
            ThingsToxicDamageSectionLayerUtility.overlaysWorkingList.Clear();
            ThingsToxicDamageSectionLayerUtility.overlaysWorkingList.AddRange(ThingsToxicDamageSectionLayerUtility.GetAvailableOverlays(b));
            if (!ThingsToxicDamageSectionLayerUtility.overlaysWorkingList.Any <DamageOverlay>())
            {
                return(ThingsToxicDamageSectionLayerUtility.overlays);
            }
            Rand.PushState();
            Rand.Seed = Gen.HashCombineInt(b.thingIDNumber, 1958376471);
            int damageOverlaysCount = ThingsToxicDamageSectionLayerUtility.GetDamageOverlaysCount(b, b.Map.GetComponent <MapComponent_MapEvents>().ToxicDamages[b]);
            int num = 0;

            while (num < damageOverlaysCount && ThingsToxicDamageSectionLayerUtility.overlaysWorkingList.Any <DamageOverlay>())
            {
                DamageOverlay item = ThingsToxicDamageSectionLayerUtility.overlaysWorkingList.RandomElement <DamageOverlay>();
                ThingsToxicDamageSectionLayerUtility.overlaysWorkingList.Remove(item);
                ThingsToxicDamageSectionLayerUtility.overlays.Add(item);
                num++;
            }
            Rand.PopState();
            return(ThingsToxicDamageSectionLayerUtility.overlays);
        }