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)); }
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); }