Beispiel #1
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!Enabled)
            {
                return;
            }

            foreach (
                var unit in ObjectManager.Get <Obj_AI_Hero>().Where(h => h.IsValid && h.IsHPBarRendered && h.IsEnemy))
            {
                var barPos = unit.HPBarPosition;
                var damage = DamageToUnit(unit);
                var percentHealthAfterDamage = Math.Max(0, unit.Health - damage) / unit.MaxHealth;

                var champOffset   = unit.ChampionName == "Jhin" ? new Vector2(-9, -16) : Vector2.Zero;
                var xPos          = barPos.X + XOffset + champOffset.X;
                var xPosDamage    = xPos + Width * percentHealthAfterDamage;
                var xPosCurrentHp = xPos + Width * unit.Health / unit.MaxHealth;
                var yPos          = barPos.Y + YOffset + champOffset.Y;

                if (Killable && damage > unit.Health)
                {
                    Text.X    = (int)(barPos.X + XOffset + champOffset.X);
                    Text.Y    = (int)barPos.Y + YOffset + 20;
                    Text.text = "KILLABLE";
                    Text.OnEndScene();
                }

                if (Fill)
                {
                    var differenceInHp = xPosCurrentHp - xPosDamage;
                    DamageBar.Color  = DamageColor.ToSharpDXColor();
                    DamageBar.X      = (int)(barPos.X + 9 + 107 * percentHealthAfterDamage + champOffset.X);
                    DamageBar.Y      = (int)yPos - 1;
                    DamageBar.Width  = (int)Math.Round(differenceInHp);
                    DamageBar.Height = Height + 3;
                    DamageBar.OnEndScene();
                }

                if (PredictedHealth)
                {
                    HealthLine.Start = new Vector2(xPosDamage, yPos - 1);
                    HealthLine.End   = new Vector2(xPosDamage, yPos + Height);
                    HealthLine.Width = 2;
                    HealthLine.Color = HealthColor.ToSharpDXColor();
                    HealthLine.OnEndScene();
                }
            }
        }
Beispiel #2
0
        //[PermissionSet(SecurityAction.Assert, Unrestricted = true)]
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!Enabled)
            {
                return;
            }

            foreach (
                var unit in ObjectManager.Get <AIHeroClient>().Where(h => h.IsValid && h.IsHPBarRendered && h.IsEnemy))
            {
                var barPos = unit.HPBarPosition;
                var damage = DamageToUnit(unit);
                var percentHealthAfterDamage = Math.Max(0, unit.Health - damage) / unit.MaxHealth;
                var yPos          = barPos.Y + YOffset;
                var xPosDamage    = barPos.X + XOffset + Width * percentHealthAfterDamage;
                var xPosCurrentHp = barPos.X + XOffset + Width * unit.Health / unit.MaxHealth;

                if (Killable && damage > unit.Health)
                {
                    Text.X    = (int)barPos.X + XOffset;
                    Text.Y    = (int)barPos.Y + YOffset + 20;
                    Text.text = "KILLABLE";
                    Text.OnEndScene();
                }

                if (Fill)
                {
                    var differenceInHp = xPosCurrentHp - xPosDamage;
                    DamageBar.Color  = DamageColor.ToBGRA();
                    DamageBar.X      = (int)(barPos.X + 9 + (107 * percentHealthAfterDamage));
                    DamageBar.Y      = (int)yPos - 5;
                    DamageBar.Width  = (int)Math.Round(differenceInHp);
                    DamageBar.Height = Height + 14;
                    DamageBar.OnEndScene();
                }

                if (PredictedHealth)
                {
                    HealthLine.Start = new Vector2(xPosDamage, yPos - 1);
                    HealthLine.End   = new Vector2(xPosDamage, yPos + Height);
                    HealthLine.Width = 2;
                    HealthLine.Color = HealthColor.ToBGRA();
                    HealthLine.OnEndScene();
                }
            }
        }
        private void GlobalEventManager_OnPlayerCharacterDeath(On.RoR2.GlobalEventManager.orig_OnPlayerCharacterDeath orig, GlobalEventManager self, DamageReport damageReport, NetworkUser netUser)
        {
            orig(self, damageReport, netUser);
            if (!netUser)
            {
                return;
            }

            var    attackerBody = damageReport.attackerBody;
            var    damageTaken  = damageReport.damageInfo.damage;
            var    healthLeft   = damageReport.combinedHealthBeforeDamage;
            bool   wasCrit      = damageReport.damageInfo.crit;
            var    dotType      = damageReport.dotType;
            bool   wasDot       = dotType != DotIndex.None;
            string prefixStr    = string.Empty;

            if (wasCrit || wasDot)
            {
                prefixStr = "<style=cDeath>";
                if (wasCrit)
                {
                    Color  critColor = DamageColor.FindColor(DamageColorIndex.WeakPoint);
                    string critStr   = Util.GenerateColoredString("Crit ", critColor);
                    prefixStr += critStr;
                }
                if (wasDot)
                {
                    string dotStr = DotIndexToString(dotType);
                    if (!string.IsNullOrWhiteSpace(dotStr))
                    {
                        Color dotColor = DamageColor.FindColor(damageReport.damageInfo.damageColorIndex);
                        dotStr     = Util.GenerateColoredString($"{dotStr} ", dotColor);
                        prefixStr += dotStr;
                    }
                }
                prefixStr += "from </style>";
            }

            string text = $"<style=cDeath>Killed by: <style=cIsDamage>{prefixStr}{(attackerBody ? attackerBody.GetDisplayName() : "Unknown causes")}</style> <style=cIsUtility>({damageTaken:F2} damage dealt to '{netUser.userName}' with {healthLeft:F2} health left)</style></style>";

            Chat.SendBroadcastChat(new Chat.SimpleChatMessage {
                baseToken = text
            });
        }
Beispiel #4
0
 public static string GetDamageColorCode(DamageColorIndex damageColorIndex)
 {
     return("#" + ColorUtility.ToHtmlStringRGB(DamageColor.FindColor(damageColorIndex)));
 }