Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of HunkHud v1.0.3
HunkHud.dll
Decompiled 18 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HG; using HarmonyLib; using HunkHud.Components; using HunkHud.Components.UI; using HunkHud.Modules; using MaterialHud; using RoR2; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.UI; using ZioConfigFile; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace HunkHud { public class CustomHudElement : HudElement { protected CharacterBody _prevBody; public CharacterBody targetBody => base._targetCharacterBody; public CharacterMaster targetMaster { get { HUD hud = base._hud; if (hud == null) { return null; } return hud.targetMaster; } } protected virtual void OnEnable() { if (((HudElement)this).hud == null) { HUD val = (((HudElement)this).hud = ((Component)((Component)this).transform.root).GetComponent<HUD>()); } HUD.onHudTargetChangedGlobal += HUD_onHudTargetChangedGlobal; InstanceTracker.Add<CustomHudElement>(this); } protected virtual void HUD_onHudTargetChangedGlobal(HUD newHud) { _prevBody = targetBody; ((HudElement)this).hud = newHud; } protected virtual void OnDisable() { HUD.onHudTargetChangedGlobal -= HUD_onHudTargetChangedGlobal; InstanceTracker.Remove<CustomHudElement>(this); } } public class LevelDisplay : ExpBar { private float expFillMin; private float expFillMax = 0.76f; public Image fillImage; private void Update() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) TeamIndex val = (TeamIndex)((!Object.op_Implicit((Object)(object)base.source)) ? 1 : ((int)base.source.teamIndex)); float num = 0f; if (Object.op_Implicit((Object)(object)TeamManager.instance)) { num = Mathf.InverseLerp((float)TeamManager.instance.GetTeamCurrentLevelExperience(val), (float)TeamManager.instance.GetTeamNextLevelExperience(val), (float)TeamManager.instance.GetTeamExperience(val)); } if (Object.op_Implicit((Object)(object)fillImage)) { fillImage.fillAmount = Util.Remap(num, 0f, 1f, expFillMin, expFillMax); } } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.public_ParticleSystem.HunkHud", "HunkHud", "1.0.3")] public class HunkHudMain : BaseUnityPlugin { public const string GUID = "com.public_ParticleSystem.HunkHud"; public const string MODAUTHOR = "public_ParticleSystem"; public const string MODNAME = "HunkHud"; public const string VERSION = "1.0.3"; public static AssetBundle mainAssetBundle; public static ConfigFile activeConfig; private static Harmony harm; private static PatchClassProcessor patcher; public static HunkHudMain instance { get; private set; } public void Awake() { instance = this; Log.Init(((BaseUnityPlugin)this).Logger); LoadAssets(); SetHooks(); } private void SetHooks() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown harm = new Harmony("com.public_ParticleSystem.HunkHud"); patcher = harm.CreateClassProcessor(typeof(Hooks)); patcher.Patch(); } private void LoadAssets() { mainAssetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "hunkui")); RiskUIPlugin._newHud = mainAssetBundle.LoadAsset<GameObject>("HunkUI"); RiskUIPlugin._newClassicRunHud = mainAssetBundle.LoadAsset<GameObject>("HunkClassicRunInfoHudPanel"); RiskUIPlugin._newSimulacrumHud = mainAssetBundle.LoadAsset<GameObject>("HunkSimulacrum"); RiskUIPlugin._allyCard = mainAssetBundle.LoadAsset<GameObject>("HunkAllyCard"); ((ResourceAvailability)(ref ItemCatalog.availability)).CallWhenAvailable((Action)CreateBandMap); } private void CreateBandMap() { CreateEntry("BandDisplay", "FireRing", "IceRing"); CreateEntry("BandDisplayVoid", "ElementalRingVoid"); CreateEntry("BandDisplayHealing", "ITEM_HEALING_BAND", "ITEM_BARRIER_BAND"); CreateEntry("BandDisplayNova", "ITEM_NOVA_BAND"); CreateEntry("BandDisplaySacrificial", "ITEM_SANDSWEPT_SACRIFICIAL_BAND"); } private void CreateEntry(string prefabName, params string[] itemNames) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 ItemIndex[] array = (ItemIndex[])(object)new ItemIndex[0]; for (int i = 0; i < itemNames.Length; i++) { ItemIndex val = ItemCatalog.FindItemIndex(itemNames[i]); if ((int)val != -1) { ArrayUtils.ArrayAppend<ItemIndex>(ref array, ref val); } } if (array.Length != 0) { GameObject val2 = mainAssetBundle.LoadAsset<GameObject>(prefabName); if (!((Object)(object)val2 == (Object)null)) { BandDisplayController.BandDisplayInfo bandDisplayInfo = new BandDisplayController.BandDisplayInfo { prefabName = prefabName, displayPrefab = val2, itemsToDisplay = array }; ArrayUtils.ArrayAppend<BandDisplayController.BandDisplayInfo>(ref BandDisplayController.bandInfos, ref bandDisplayInfo); } } } } public static class HudAssets { public static AssetBundle mainAssetBundle; public static TMP_FontAsset hgFont; public static void Init() { } private static void HUD_OnHudTargetChangedGlobal(HUD hud) { } private static void HandleHud(HUD hud, CharacterBody targetBody) { //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) ChildLocator component = ((Component)hud).GetComponent<ChildLocator>(); Transform val = component.FindChild("SpringCanvas"); if (!Object.op_Implicit((Object)(object)val)) { return; } Transform val2 = val.Find("BottomRightCluster/Scaler"); if (Object.op_Implicit((Object)(object)val2)) { if (((Component)val2).GetComponent<SkillIconMover>() == null) { ((Component)val2).gameObject.AddComponent<SkillIconMover>(); } Transform obj = val2.Find("SprintCluster"); if (obj != null) { ((Component)obj).gameObject.SetActive(false); } Transform obj2 = val2.Find("InventoryCluster"); if (obj2 != null) { ((Component)obj2).gameObject.SetActive(false); } } Transform val3 = val.Find("UpperLeftCluster"); if (Object.op_Implicit((Object)(object)val3) && ((Component)val3).GetComponent<MoneyDisplayMover>() == null) { ((Component)val3).gameObject.AddComponent<MoneyDisplayMover>(); } Transform val4 = component.FindChild("TopCenterCluster"); if (Object.op_Implicit((Object)(object)val4)) { foreach (Transform item in val4) { Transform val5 = item; if (Object.op_Implicit((Object)(object)((Component)val5).GetComponentInChildren<ItemInventoryDisplay>())) { if (!Object.op_Implicit((Object)(object)((Component)val5).GetComponent<ItemDisplayMover>())) { ((Component)val5).gameObject.AddComponent<ItemDisplayMover>(); } break; } } if (!Object.op_Implicit((Object)(object)val4.Find("ObjectiveGauge"))) { GameObject obj3 = Object.Instantiate<GameObject>(mainAssetBundle.LoadAsset<GameObject>("ObjectiveGauge"), val4); ((Object)obj3).name = "ObjectiveGauge"; obj3.transform.SetSiblingIndex(1); obj3.AddComponent<ObjectiveChargeDisplay>(); } } if (Object.op_Implicit((Object)(object)hud.gameModeUiInstance) && !Object.op_Implicit((Object)(object)hud.gameModeUiInstance.GetComponent<ObjectiveDisplayMover>())) { hud.gameModeUiInstance.AddComponent<ObjectiveDisplayMover>(); } Transform val6 = component.FindChild("CrosshairExtras"); if (Object.op_Implicit((Object)(object)val6)) { Transform obj4 = val6.Find("BandTracker"); if (!Object.op_Implicit((Object)(object)((obj4 != null) ? ((Component)obj4).GetComponent<BandDisplay>() : null))) { GameObject obj5 = Object.Instantiate<GameObject>(mainAssetBundle.LoadAsset<GameObject>("BandCooldownTracker"), val6); ((Object)obj5).name = "BandTracker"; obj5.AddComponent<BandDisplay>(); } } Transform val7 = val.Find("BottomRightCluster"); if (Object.op_Implicit((Object)(object)val7)) { Transform obj6 = val.Find("BottomLeftCluster/BarRoots"); if (obj6 != null) { ((Component)obj6).gameObject.SetActive(false); } Transform obj7 = val7.Find("CustomHealthBar"); if (!Object.op_Implicit((Object)(object)((obj7 != null) ? ((Component)obj7).GetComponent<CustomHealthBar>() : null))) { GameObject obj8 = Object.Instantiate<GameObject>(mainAssetBundle.LoadAsset<GameObject>("CustomHealthBar"), val7); ((Object)obj8).name = "CustomHealthBar"; obj8.AddComponent<CustomHealthBar>(); } if (Object.op_Implicit((Object)(object)hud.contextManager)) { RectTransform component2 = ((Component)hud.contextManager).GetComponent<RectTransform>(); ((Transform)component2).SetParent(val7); ((Transform)component2).localScale = 0.75f * Vector3.one; ((Transform)component2).localPosition = new Vector3(-550f, 50f, 0f); } } } } } namespace HunkHud.Modules { [HarmonyPatch] public class Hooks { [HarmonyPatch(typeof(CrosshairController), "Awake")] [HarmonyPostfix] private static void CrosshairController_Awake(CrosshairController __instance) { UnityObjectExtensions.EnsureComponent<DynamicCrosshair>((Component)(object)__instance); } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } } namespace HunkHud.Components { public class AllyHealthBarMover : DisplayMover { private AllyCardController cardController; protected override void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) base.Awake(); offset = new Vector3(-500f, 0f, 0f); cardController = ((Component)this).GetComponent<AllyCardController>(); } public override void CheckForActivity() { HealthComponent val = (Object.op_Implicit((Object)(object)cardController) ? cardController.cachedHealthComponent : null); if (Object.op_Implicit((Object)(object)val)) { float num = val.health + val.shield; float num2 = val.fullHealth + val.fullShield; if (num / num2 < 0.99f) { SetActive(); } } } } [RequireComponent(typeof(CanvasGroup))] public abstract class DisplayMover : CustomHudElement, IConfigHandler { public float delayTimer = 0.1f; public float activeInterval = 3f; public float activeTimer = 8f; public float smoothSpeed = 4f; public Vector3 offset; [NonSerialized] public CanvasGroup canvas; [NonSerialized] public Vector3 activePosition; [NonSerialized] public Vector3 desiredPosition; [NonSerialized] public ZioConfigEntry<bool> _configEntry; public abstract void CheckForActivity(); protected virtual void ConfigUpdated(ZioConfigEntryBase zioConfigEntryBase, object o, bool arg3) { ((Behaviour)this).enabled = _configEntry?.Value ?? true; } public virtual void Startup() { _configEntry = ConfigHelper.Bind<bool>("HunkHud", ((object)this).GetType().Name, true, "Enable or disable moving this hud element", (Action<ZioConfigEntry<bool>>)null, (object)null); } public void SetActive() { SetActive(activeInterval); } public virtual void SetActive(float time) { activeTimer = Mathf.Max(activeTimer, time); delayTimer = Mathf.Max(delayTimer, 0.1f); } protected override void HUD_onHudTargetChangedGlobal(HUD newHud) { base.HUD_onHudTargetChangedGlobal(newHud); SetActive(8f); } protected virtual void Awake() { canvas = ((Component)this).GetComponent<CanvasGroup>(); Startup(); ((ZioConfigEntryBase)_configEntry).SettingChanged += ConfigUpdated; } protected virtual void Start() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) activePosition = ((Component)this).transform.localPosition; offset.x = Mathf.Abs(offset.x) * Mathf.Sign(((Component)this).transform.position.x); offset.y = Mathf.Abs(offset.y) * Mathf.Sign(((Component)this).transform.position.y); } protected override void OnEnable() { base.OnEnable(); ConfigUpdated(null, null, arg3: false); } protected virtual void Update() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) Vector3 localPosition = ((Component)this).transform.localPosition; Vector3 val = activePosition; if (activeTimer <= 0f) { val += offset; } if (offset.x == 0f) { val.x = localPosition.x; } if (offset.y == 0f) { val.y = localPosition.y; } if (offset.z == 0f) { val.z = localPosition.z; } ((Component)this).transform.localPosition = Vector3.Lerp(localPosition, val, smoothSpeed * Time.deltaTime); canvas.alpha = Mathf.Clamp01(2f * (activeTimer + 0.5f)); } protected virtual void FixedUpdate() { activeTimer -= Time.fixedDeltaTime; delayTimer -= Time.fixedDeltaTime; if (Object.op_Implicit((Object)(object)((HudElement)this).hud?.scoreboardPanel) && ((HudElement)this).hud.scoreboardPanel.activeSelf) { SetActive(activeInterval * 0.5f); } if (delayTimer <= 0f) { delayTimer = 0.1f; CheckForActivity(); } } protected virtual void OnDestroy() { ((ZioConfigEntryBase)_configEntry).SettingChanged -= ConfigUpdated; } } [RequireComponent(typeof(CrosshairController))] [RequireComponent(typeof(HudElement))] public class DynamicCrosshair : MonoBehaviour { public float range = 300f; public float interval = 0.2f; private HudElement hudElement; private (Image image, Color color)[] crosshairSprites; private float stopwatch; private void Awake() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) hudElement = ((Component)this).GetComponent<HudElement>(); List<(Image, Color)> list = new List<(Image, Color)>(); SpritePosition[] spriteSpreadPositions = ((Component)this).GetComponent<CrosshairController>().spriteSpreadPositions; foreach (SpritePosition val in spriteSpreadPositions) { Image val2 = (Object.op_Implicit((Object)(object)val.target) ? ((Component)val.target).GetComponent<Image>() : null); if (Object.op_Implicit((Object)(object)val2)) { list.Add((val2, ((Graphic)val2).color)); } } crosshairSprites = list.ToArray(); } private void FixedUpdate() { stopwatch -= Time.fixedDeltaTime; if (stopwatch <= 0f) { stopwatch = interval; Simulate(); } } private void Simulate() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) CharacterBody val = (Object.op_Implicit((Object)(object)hudElement) ? hudElement.targetCharacterBody : null); if (!Object.op_Implicit((Object)(object)val) || !Object.op_Implicit((Object)(object)val.inputBank)) { return; } Ray aimRay = val.inputBank.GetAimRay(); Color? val2 = null; RaycastHit val3 = default(RaycastHit); if (Physics.Raycast(aimRay, ref val3, range, LayerMask.op_Implicit(CommonMasks.bullet), (QueryTriggerInteraction)2)) { HurtBox val4 = (Object.op_Implicit((Object)(object)((RaycastHit)(ref val3)).collider) ? ((Component)((RaycastHit)(ref val3)).collider).GetComponent<HurtBox>() : null); if (Object.op_Implicit((Object)(object)val4)) { CharacterBody val5 = (Object.op_Implicit((Object)(object)val4.healthComponent) ? val4.healthComponent.body : null); if (Object.op_Implicit((Object)(object)val5) && (Object)(object)val5 != (Object)(object)val) { val2 = ((val5.teamComponent.teamIndex == val.teamComponent.teamIndex) ? Color.green : Color.red); } } } for (int i = 0; i < crosshairSprites.Length; i++) { ((Graphic)crosshairSprites[i].image).color = (Color)(((??)val2) ?? crosshairSprites[i].color); } } } public class HealthBarMover : DisplayMover { private uint prevLevel; private InteractionDriver interactionDriver; public override void CheckForActivity() { //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Invalid comparison between Unknown and I4 //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Invalid comparison between Unknown and I4 HealthComponent val = (Object.op_Implicit((Object)(object)base.targetBody) ? base.targetBody.healthComponent : null); if (!Object.op_Implicit((Object)(object)val)) { return; } float num = val.health + val.shield; float num2 = val.fullHealth + val.fullShield; if (num / num2 < 0.99f) { SetActive(); } uint num3 = Convert.FloorToUIntClamped(base.targetBody.level); if (num3 != prevLevel) { prevLevel = num3; SetActive(); } if (!Object.op_Implicit((Object)(object)interactionDriver)) { return; } PurchaseInteraction val2 = (Object.op_Implicit((Object)(object)interactionDriver.currentInteractable) ? interactionDriver.currentInteractable.GetComponent<PurchaseInteraction>() : null); if (Object.op_Implicit((Object)(object)val2)) { CostTypeIndex costType = val2.costType; if ((int)costType == 2 || (int)costType == 15) { SetActive(); } } } protected override void HUD_onHudTargetChangedGlobal(HUD newHud) { base.HUD_onHudTargetChangedGlobal(newHud); interactionDriver = (Object.op_Implicit((Object)(object)base.targetBody) ? ((Component)base.targetBody).GetComponent<InteractionDriver>() : null); } } public class ItemDisplayMover : DisplayMover { private InteractionDriver interactionDriver; protected override void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) base.Awake(); offset = new Vector3(0f, 250f, 0f); } protected override void Start() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) Vector3 localPosition = ((Component)this).transform.localPosition; localPosition.x = 0f; ((Component)this).transform.localPosition = localPosition; base.Start(); } public override void CheckForActivity() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Invalid comparison between I4 and Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Invalid comparison between Unknown and I4 if (Object.op_Implicit((Object)(object)interactionDriver)) { PurchaseInteraction val = (Object.op_Implicit((Object)(object)interactionDriver.currentInteractable) ? interactionDriver.currentInteractable.GetComponent<PurchaseInteraction>() : null); if (Object.op_Implicit((Object)(object)val) && 4 <= (int)val.costType && (int)val.costType <= 13) { SetActive(); } } } protected override void HUD_onHudTargetChangedGlobal(HUD newHud) { base.HUD_onHudTargetChangedGlobal(newHud); if (_prevBody != null) { _prevBody.onInventoryChanged -= base.SetActive; } if (Object.op_Implicit((Object)(object)base.targetBody)) { base.targetBody.onInventoryChanged += base.SetActive; } interactionDriver = (Object.op_Implicit((Object)(object)base.targetBody) ? ((Component)base.targetBody).GetComponent<InteractionDriver>() : null); } } public class MoneyDisplayMover : DisplayMover { public CostTypeIndex costType; private int cachedMoney; private MoneyText moneyText; private InteractionDriver interactionDriver; protected override void Awake() { base.Awake(); moneyText = ((Component)this).GetComponent<MoneyText>(); activeInterval = 2.25f; } public override void CheckForActivity() { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)moneyText)) { int displayAmount = moneyText.displayAmount; if (displayAmount != cachedMoney) { cachedMoney = displayAmount; SetActive(); } } if (Object.op_Implicit((Object)(object)interactionDriver)) { PurchaseInteraction val = (Object.op_Implicit((Object)(object)interactionDriver.currentInteractable) ? interactionDriver.currentInteractable.GetComponent<PurchaseInteraction>() : null); if (Object.op_Implicit((Object)(object)val) && val.costType == costType) { SetActive(); } } } protected override void HUD_onHudTargetChangedGlobal(HUD newHud) { base.HUD_onHudTargetChangedGlobal(newHud); interactionDriver = (Object.op_Implicit((Object)(object)base.targetBody) ? ((Component)base.targetBody).GetComponent<InteractionDriver>() : null); } } public class ObjectiveDisplayMover : DisplayMover { private int prevCount; private ObjectivePanelController objectivePanel; protected override void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) base.Awake(); offset = new Vector3(400f, 100f, 0f); objectivePanel = ((Component)this).GetComponentInChildren<ObjectivePanelController>(); GlobalEventManager.onTeamLevelUp += GlobalEventManager_onTeamLevelUp; } protected override void OnDestroy() { base.OnDestroy(); GlobalEventManager.onTeamLevelUp -= GlobalEventManager_onTeamLevelUp; } private void GlobalEventManager_onTeamLevelUp(TeamIndex team) { SetActive(); } public override void CheckForActivity() { if (Object.op_Implicit((Object)(object)objectivePanel)) { int count = objectivePanel.objectiveTrackers.Count; if (count != prevCount) { prevCount = count; SetActive(); } } } } public class SkillIconMover : DisplayMover { private int prevStocks; protected override void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) base.Awake(); offset = new Vector3(0f, 0f, 0f); activeInterval = 2.25f; } public override void CheckForActivity() { CharacterBody obj = base.targetBody; int? obj2; if (obj == null) { obj2 = null; } else { EquipmentSlot equipmentSlot = obj.equipmentSlot; obj2 = ((equipmentSlot != null) ? new int?(equipmentSlot.stock) : null); } int? num = obj2; int valueOrDefault = num.GetValueOrDefault(); if (valueOrDefault != prevStocks) { prevStocks = valueOrDefault; SetActive(); } } protected override void HUD_onHudTargetChangedGlobal(HUD newHud) { base.HUD_onHudTargetChangedGlobal(newHud); if (_prevBody != null) { _prevBody.onSkillActivatedAuthority -= OnSkillActivatedAuthority; } if (Object.op_Implicit((Object)(object)base.targetBody)) { base.targetBody.onSkillActivatedAuthority += OnSkillActivatedAuthority; } } private void OnSkillActivatedAuthority(GenericSkill skill) { if (skill.stock < skill.maxStock) { SetActive(); } } } } namespace HunkHud.Components.UI { public class BandDisplay : CustomHudElement { public Gradient fillGradient; public GameObject fullObj; public GameObject fillObj; public Image fillImage; public string buffName; public string cooldownName; [NonSerialized] public HealthBarMover healthBar; private float timer; private int maxBuffs; private void FixedUpdate() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)base.targetBody) && Object.op_Implicit((Object)(object)healthBar)) { if (base.targetBody.HasBuff(BuffCatalog.FindBuffIndex(buffName))) { SetRingReady(); return; } int buffCount = base.targetBody.GetBuffCount(BuffCatalog.FindBuffIndex(cooldownName)); if (buffCount > 0) { SetRingCooldown(buffCount); return; } } fillObj.SetActive(false); fullObj.SetActive(false); } private void SetRingReady() { fullObj.SetActive(true); fillObj.SetActive(false); timer = 0f; maxBuffs = 0; } private void SetRingCooldown(int newBuffs) { //IL_0064: Unknown result type (might be due to invalid IL or missing references) fullObj.SetActive(false); fillObj.SetActive(true); healthBar.SetActive(); maxBuffs = Math.Max(maxBuffs, newBuffs); float num = Util.Remap(timer, 0f, (float)maxBuffs, 0f, 1f); ((Graphic)fillImage).color = fillGradient.Evaluate(num); fillImage.fillAmount = num; timer += Time.fixedDeltaTime; } public BandDisplay() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) Gradient val = new Gradient(); val.alphaKeys = (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey { alpha = 1f, time = 0f }, new GradientAlphaKey { alpha = 1f, time = 1f } }; val.colorKeys = (GradientColorKey[])(object)new GradientColorKey[5] { new GradientColorKey { color = Color.red, time = 0f }, new GradientColorKey { color = Color.yellow, time = 0.5f }, new GradientColorKey { color = new Color(31f / 85f, 57f / 85f, 23f / 51f), time = 0.6f }, new GradientColorKey { color = new Color(31f / 85f, 57f / 85f, 23f / 51f), time = 0.95f }, new GradientColorKey { color = Color.white, time = 1f } }; fillGradient = val; base..ctor(); } } public class BandDisplayController : CustomHudElement { public struct BandDisplayInfo { public ItemIndex[] itemsToDisplay; public GameObject displayPrefab; public string prefabName; } public HealthBarMover healthBar; public static BandDisplayInfo[] bandInfos = new BandDisplayInfo[0]; private Inventory inventory; protected override void HUD_onHudTargetChangedGlobal(HUD newHud) { base.HUD_onHudTargetChangedGlobal(newHud); if (_prevBody != null) { _prevBody.onInventoryChanged -= CheckInventory; } if (Object.op_Implicit((Object)(object)base.targetBody)) { base.targetBody.onInventoryChanged += CheckInventory; } } private void CheckInventory() { inventory = (Object.op_Implicit((Object)(object)base.targetMaster) ? base.targetMaster.inventory : null); Util.NullifyIfInvalid<Inventory>(ref inventory); for (int i = 0; i < bandInfos.Length; i++) { AddOrRemovePrefab(ref bandInfos[i]); } } private void AddOrRemovePrefab(ref BandDisplayInfo bandInfo) { bool flag = false; if (inventory != null) { for (int i = 0; i < bandInfo.itemsToDisplay.Length; i++) { if (inventory.GetItemCountEffective(bandInfo.itemsToDisplay[i]) > 0) { flag = true; break; } } } Transform val = ((Component)this).transform.Find(bandInfo.prefabName); bool flag2 = (Object)(object)val != (Object)null; if (flag != flag2) { if (flag2) { Object.Destroy((Object)(object)((Component)val).gameObject); return; } GameObject obj = Object.Instantiate<GameObject>(bandInfo.displayPrefab, ((Component)this).transform); ((Object)obj).name = bandInfo.prefabName; BandDisplay component = obj.GetComponent<BandDisplay>(); component.healthBar = healthBar; ((HudElement)component).hud = ((HudElement)this).hud; } } } public class CustomHealthBar : HealthBar { [Serializable] public struct CustomBarInfo { [NonSerialized] public bool enabled; [NonSerialized] public float targetFill; [NonSerialized] public float currentFill; [SerializeField] public Image image; } public static CustomHealthBar instance; public Gradient healthBarGradient; public Color shieldColor; public Color pinkShieldColor; public Color infusionColor; public CustomBarInfo healthFill; public CustomBarInfo lowHealthFill; public CustomBarInfo shieldFill; public CustomBarInfo damageFill; public CustomBarInfo healingFill; public CustomBarInfo curseFill; public CustomBarInfo barrierFill; public CustomBarInfo barrierFillShiny; public CustomBarInfo delayedDamageMask; public CustomBarInfo ospFill; public CustomBarInfo echoFill; public CustomBarInfo collapseFill; public CustomBarInfo cullFill; public TextMeshProUGUI gunText; public RawImage gunIcon; public GameObject gunIconHolder; public RawImage characterIcon; public RawImage characterIconBorder; public GameObject characterIconHolder; public GameObject lunarRuinDisplay; public GameObject immunityDisplay; public GameObject biomassBar; public HealthBarMover hpBarMover; private float fillSpeed; private float minFill; private float maxFill; private float inverseFillMin; private float inverseFillMax; public CharacterBody targetBody => ((HealthBar)this).source?.body; private void Awake() { ((HealthBar)this).Awake(); SetDefaults(); biomassBar.SetActive(false); gunIconHolder.SetActive(false); characterIconHolder.SetActive(true); } private void OnEnable() { ((HealthBar)this).OnEnable(); SingletonHelper.Assign<CustomHealthBar>(ref instance, this); } private void OnDisable() { ((HealthBar)this).OnDisable(); SingletonHelper.Unassign<CustomHealthBar>(ref instance, this); } private void Update() { base.updateTimer -= Time.deltaTime; if ((Object)(object)base._source != (Object)(object)base.oldSource) { base.updateTimer = 0f; base.oldSource = base._source; SetCharacterIcon(); } if (base.updateTimer <= 0f) { base.updateTimer = base.updateDelay; SetCharacterIcon(); UpdateCustomBarInfos(); ApplyCustomBars(); } ApplyCustomBarsUpdate(); } private void ApplyCustomBarsUpdate() { Apply(ref healthFill); Apply(ref shieldFill); Apply(ref damageFill); } private void ApplyCustomBars() { Apply(ref healingFill); Apply(ref barrierFill); Apply(ref barrierFillShiny); Apply(ref lowHealthFill); Apply(ref curseFill); Apply(ref cullFill); Apply(ref delayedDamageMask); Apply(ref collapseFill); Apply(ref echoFill); Apply(ref ospFill); } private void Apply(ref CustomBarInfo info) { if (info.currentFill != info.targetFill) { info.currentFill = Mathf.Lerp(info.currentFill, info.targetFill, fillSpeed * Time.deltaTime); } ((Behaviour)info.image).enabled = info.enabled; info.image.fillAmount = info.currentFill; } private void SetDefaults() { healthFill.enabled = false; healingFill.enabled = false; lowHealthFill.enabled = false; shieldFill.enabled = false; barrierFill.enabled = false; barrierFillShiny.enabled = false; damageFill.targetFill = 0f; damageFill.enabled = 0f < damageFill.currentFill; delayedDamageMask.enabled = false; collapseFill.enabled = false; echoFill.enabled = false; ospFill.enabled = false; cullFill.enabled = false; immunityDisplay.SetActive(false); } private void UpdateCustomBarInfos() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_0365: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)((HealthBar)this).source) || !Object.op_Implicit((Object)(object)targetBody)) { SetDefaults(); return; } if (base.isInventoryCheckDirty) { ((HealthBar)this).CheckInventory(); } HealthBarValues healthBarValues = ((HealthBar)this).source.GetHealthBarValues(); float num = 1f - (healthBarValues.healthFraction + healthBarValues.shieldFraction); float num2 = 1f - healthBarValues.curseFraction; float num3 = Mathf.Clamp01(GetCollapseFraction() * num2); ((Graphic)shieldFill.image).color = (healthBarValues.hasVoidShields ? pinkShieldColor : shieldColor); ((Graphic)healthFill.image).color = (healthBarValues.hasInfusion ? infusionColor : healthBarGradient.Evaluate(healthBarValues.healthFraction)); GameObject obj = immunityDisplay; if (obj != null) { obj.SetActive(targetBody.HasBuff(Buffs.HiddenInvincibility)); } GameObject obj2 = lunarRuinDisplay; if (obj2 != null) { obj2.SetActive(healthBarValues.hasLunarRuin); } float num4 = Util.Remap(healthBarValues.healthFraction, 0f, 1f, minFill, maxFill); healthFill.enabled = healthBarValues.healthFraction > 0f; healthFill.targetFill = num4; healthFill.currentFill = Mathf.Min(num4, healthFill.currentFill); float num5 = Util.Remap(healthBarValues.healthFraction + healthBarValues.shieldFraction, 0f, 1f, minFill, maxFill); damageFill.targetFill = num5; damageFill.currentFill = Mathf.Max(num5, damageFill.currentFill); damageFill.enabled = damageFill.currentFill > num5; shieldFill.enabled = healthBarValues.shieldFraction > 0f; shieldFill.targetFill = num5; shieldFill.currentFill = Mathf.Min(num5, shieldFill.currentFill); Remap(ref healingFill, healthBarValues.healthFraction, healthFill.currentFill < healthFill.targetFill, inverse: false); Remap(ref lowHealthFill, HealthComponent.lowHealthFraction * num2, (base.hasLowHealthItem || base.hasLowHealthBuff) && !((HealthBar)this).source.isHealthLow, inverse: false); Remap(ref barrierFill, healthBarValues.barrierFraction, healthBarValues.barrierFraction > 0f, inverse: false); Remap(ref barrierFillShiny, healthBarValues.barrierFraction, healthBarValues.barrierFraction > 0f, inverse: false); Remap(ref cullFill, healthBarValues.cullFraction, healthBarValues.cullFraction > 0f, inverse: false); Remap(ref curseFill, healthBarValues.curseFraction, healthBarValues.curseFraction > 0f, inverse: true); Remap(ref ospFill, healthBarValues.ospFraction + num, healthBarValues.ospFraction > 0f, inverse: true); Remap(ref delayedDamageMask, healthBarValues.healthFraction + healthBarValues.shieldFraction, enabled: true, inverse: false); Remap(ref collapseFill, num3 + num, num3 > 0f && targetBody.HasBuff(Buffs.Fracture), inverse: true); Remap(ref echoFill, healthBarValues.echoFraction + num, healthBarValues.echoFraction > 0f && targetBody.HasBuff(Buffs.DelayedDamageDebuff), inverse: true); if (echoFill.enabled || collapseFill.enabled) { hpBarMover?.SetActive(); damageFill.currentFill = damageFill.targetFill; } void Remap(ref CustomBarInfo bar, float value, bool enabled, bool inverse) { bar.enabled = enabled; value = Mathf.Clamp01(value); bar.currentFill = (bar.targetFill = (inverse ? Util.Remap(value, 0f, 1f, inverseFillMin, inverseFillMax) : Util.Remap(value, 0f, 1f, minFill, maxFill))); } } private float GetCollapseFraction() { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) DotController val = DotController.FindDotController(((Component)targetBody).gameObject); if (!Object.op_Implicit((Object)(object)val) || !val.HasDotActive((DotIndex)8)) { return 0f; } float num = 0f; foreach (DotStack dotStack in val.dotStackList) { if ((int)dotStack.dotIndex == 8) { float damage = dotStack.damage; ModifyIncomingDamage(ref damage, dotStack.attackerObject, dotStack.attackerTeam, dotStack.damageType); num += Mathf.Max(0f, damage); } } return num / ((HealthBar)this).source.fullCombinedHealth; } private void ModifyIncomingDamage(ref float damage, GameObject attacker, TeamIndex attackerTeam, DamageTypeCombo damageType) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) if ((damageType.damageTypeExtended & 0x10000000) != 0) { damage = ((HealthBar)this).source.fullHealth * 0.1f; } if (targetBody.HasBuff(Buffs.KnockUpHitEnemiesJuggleCount)) { damage *= 1f + 0.1f * (float)targetBody.GetBuffCount(Buffs.KnockUpHitEnemiesJuggleCount); } if (targetBody.HasBuff(Buffs.lunarruin)) { damage *= 1f + 0.1f * (float)targetBody.GetBuffCount(Buffs.lunarruin); } if (attackerTeam == targetBody.teamComponent.teamIndex) { damage *= TeamCatalog.GetTeamDef(attackerTeam)?.friendlyFireScaling ?? 1f; } CharacterBody val = (Object.op_Implicit((Object)(object)attacker) ? attacker.GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.inventory)) { int itemCountEffective; if (((HealthBar)this).source.combinedHealth >= ((HealthBar)this).source.fullCombinedHealth * 0.9f) { itemCountEffective = val.inventory.GetItemCountEffective(Items.Crowbar); if (itemCountEffective > 0) { damage *= 1f + 0.75f * (float)itemCountEffective; } } itemCountEffective = val.inventory.GetItemCountEffective(Items.NearbyDamageBonus); if (itemCountEffective > 0) { Vector3 val2 = targetBody.corePosition - val.corePosition; if (((Vector3)(ref val2)).sqrMagnitude <= 169f) { damage *= 1f + (float)itemCountEffective * 0.2f; } } itemCountEffective = val.inventory.GetItemCountEffective(Items.FragileDamageBonus); if (itemCountEffective > 0) { damage *= 1f + (float)itemCountEffective * 0.2f; } } if ((damageType.damageType & 0x10) != 0) { damage *= 1.5f; } if (targetBody.HasBuff(Buffs.DeathMark)) { damage *= 1.5f; } if ((damageType.damageType & 2) == 0) { float num = targetBody.armor + ((HealthBar)this).source.adaptiveArmorValue; if ((targetBody.bodyFlags & 0x40) != 0 && DamageTypeCombo.op_Implicit(damageType & DamageTypeCombo.op_Implicit((DamageType)131072)) != 0L) { num += 300f; } float num2 = ((num >= 0f) ? (1f - num / (num + 100f)) : (2f - 100f / (100f - num))); damage = Mathf.Max(1f, damage * num2); if (Object.op_Implicit((Object)(object)targetBody.inventory)) { int itemCountEffective = targetBody.inventory.GetItemCountEffective(Items.ArmorPlate); if (itemCountEffective > 0) { damage = Mathf.Max(1f, damage - 5f * (float)itemCountEffective); } } } if (targetBody.hasOneShotProtection && (damageType.damageType & 0x40000) == 0) { float num3 = (((HealthBar)this).source.fullCombinedHealth + ((HealthBar)this).source.barrier) * (1f - targetBody.oneShotProtectionFraction); float num4 = Mathf.Max(0f, num3 - ((HealthBar)this).source.serverDamageTakenThisUpdate); damage = Mathf.Min(damage, num4); } if ((damageType.damageType & 0x80000) != 0) { damage *= Mathf.Lerp(3f, 1f, ((HealthBar)this).source.combinedHealthFraction); } if (targetBody.HasBuff(Buffs.LunarShell)) { damage = Mathf.Min(damage, ((HealthBar)this).source.fullHealth * 0.1f); } if (Object.op_Implicit((Object)(object)targetBody.inventory)) { int itemCountEffective = targetBody.inventory.GetItemCountEffective(Items.MinHealthPercentage); if (itemCountEffective > 0) { float num5 = ((HealthBar)this).source.fullCombinedHealth * ((float)itemCountEffective / 100f); damage = Mathf.Max(0f, Mathf.Min(damage, ((HealthBar)this).source.combinedHealth - num5)); } } if (targetBody.HasBuff(Buffs.DelayedDamageBuff)) { damage *= 0.8f; } } public void SetCharacterIcon() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)targetBody)) { Color bodyColor = targetBody.bodyColor; bodyColor.a = 0.5f; ((Graphic)characterIconBorder).color = bodyColor; characterIcon.texture = targetBody.portraitIcon; } } public void SetGenericIcon(Texture icon = null) { gunIconHolder.SetActive(true); characterIconHolder.SetActive(false); gunIcon.texture = icon; } public CustomHealthBar() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) Gradient val = new Gradient(); val.alphaKeys = (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey { alpha = 1f, time = 0f }, new GradientAlphaKey { alpha = 1f, time = 1f } }; val.colorKeys = (GradientColorKey[])(object)new GradientColorKey[4] { new GradientColorKey { color = Color.red, time = 0f }, new GradientColorKey { color = Color.yellow, time = 0.5f }, new GradientColorKey { color = new Color(31f / 85f, 57f / 85f, 23f / 51f), time = 0.8f }, new GradientColorKey { color = new Color(31f / 85f, 57f / 85f, 23f / 51f), time = 1f } }; healthBarGradient = val; shieldColor = new Color(0.14901961f, 0.70980394f, 0.80784315f); pinkShieldColor = new Color(0.80784315f, 0.29803923f, 0.7607843f); infusionColor = new Color(1f, 18f / 85f, 0.23137255f); fillSpeed = 1.5f; minFill = 0.341f; maxFill = 0.752f; inverseFillMin = 0.248f; inverseFillMax = 0.659f; ((HealthBar)this)..ctor(); } } public class LuminousDisplay : CustomHudElement { public Color activeColor = Color.white; public Color inactiveColor = new Color(0f, 0f, 0f, 0.25f); public TextMeshProUGUI label; public GameObject baseHolder; public Image[] pips; private void FixedUpdate() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) int num = (Object.op_Implicit((Object)(object)base.targetBody) ? base.targetBody.GetBuffCount(Buffs.IncreasePrimaryDamageBuff) : 0); if (num == 0) { baseHolder.SetActive(false); return; } for (int i = 0; i < pips.Length; i++) { ((Graphic)pips[i]).color = ((num > i) ? activeColor : inactiveColor); } ((TMP_Text)label).text = num.ToString(); baseHolder.SetActive(true); } } public class ObjectiveChargeDisplay : MonoBehaviour { public Image fill; public GameObject fullBar; public TextMeshProUGUI label; public CanvasGroup canvas; private float targetAlpha; private void Awake() { ((Component)this).transform.SetSiblingIndex(1); } private void FixedUpdate() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected I4, but got Unknown //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) ActivationState val = (ActivationState)0; if (Object.op_Implicit((Object)(object)TeleporterInteraction.instance)) { val = TeleporterInteraction.instance.activationState; } switch (val - 1) { default: targetAlpha = 0f; break; case 0: fullBar.SetActive(false); fill.fillAmount = 0f; ((TMP_Text)label).text = ""; targetAlpha = Mathf.Lerp(targetAlpha, 1f, Time.fixedDeltaTime); break; case 1: fullBar.SetActive(false); fill.fillAmount = TeleporterInteraction.instance.chargeFraction; ((TMP_Text)label).text = $"{TeleporterInteraction.instance.chargePercent}%"; targetAlpha = 1f; break; case 2: fullBar.SetActive(true); fill.fillAmount = 1f; ((TMP_Text)label).text = "100%"; targetAlpha = Mathf.Lerp(targetAlpha, 0f, Time.fixedDeltaTime); break; } canvas.alpha = targetAlpha; ((Component)canvas).gameObject.SetActive(targetAlpha > 0f); } } }