public void PaintWorld(WorldLayer layer)
        {
            var shrines = Hud.Game.Shrines.Where(s => s.DisplayOnOverlay);

            foreach (var shrine in shrines)
            {
                if (shrine.Type == ShrineType.HealingWell && ShowHealingWells == false)
                {
                    continue;
                }
                if (shrine.Type == ShrineType.PoolOfReflection && ShowPoolOfReflection == true)
                {
                    continue;
                }

                var shrineName = (ShrineCustomNames[shrine.Type] != string.Empty) ? ShrineCustomNames[shrine.Type] : shrine.SnoActor.NameLocalized;
                ShrineDecorators[shrine.Type].Paint(layer, shrine, shrine.FloorCoordinate, shrineName);

                var ShrineNameShort = (ShrineCustomNamesShort[shrine.Type] != string.Empty) ? ShrineCustomNamesShort[shrine.Type] : shrine.SnoActor.NameLocalized;
                ShrineShortDecorators[shrine.Type].Paint(layer, shrine, shrine.FloorCoordinate, ShrineNameShort);
            }

            var riftPylonSpawnPoints = Hud.Game.Actors.Where(x => x.SnoActor.Sno == ActorSnoEnum._markerlocation_tieredriftpylon);

            foreach (var actor in riftPylonSpawnPoints)
            {
                PossibleRiftPylonDecorators.Paint(layer, actor, actor.FloorCoordinate, (PossibleRiftPylonName != string.Empty) ? PossibleRiftPylonName : "Pylon?");
            }
        }
예제 #2
0
        public void PaintWorld(WorldLayer layer)
        {
            string NemesisMessage   = string.Empty;
            string MyNemesisMessage = string.Empty;
            int    MyNemesisCount   = 0;

            foreach (var player in Hud.Game.Players.OrderBy(p => p.PortraitIndex))
            {
                if (player == null)
                {
                    continue;
                }
                var Nemo = player.Powers.GetBuff(318820);
                if (Nemo == null || !Nemo.Active)
                {
                }
                else
                {
                    if (player.IsMe)
                    {
                        MyNemesisCount++;
                    }
                    else
                    {
                        if (NemesisMessage == string.Empty)
                        {
                            NemesisMessage += Environment.NewLine + player.BattleTagAbovePortrait;
                        }
                        else
                        {
                            NemesisMessage += Environment.NewLine + " or " + player.BattleTagAbovePortrait;
                        }
                    }
                }
            }


            if (NemesisMessage != string.Empty)
            {
                NemesisMessage = "Leave for" + NemesisMessage;
            }
            if (MyNemesisCount == 1)
            {
                NemesisMessage = "HIT ME!";
            }

            var shrines = Hud.Game.Shrines.Where(x => !x.IsDisabled && !x.IsOperated);

            foreach (var shrine in shrines)
            {
                if (ShowAllWhenHealthIsUnder40 && Hud.Game.Me.Defense.HealthPct < (float)40)
                {
                    ShowHealingWells = true; ShowPoolOfReflection = true;
                }
                else if (ShowAllWhenHealthIsUnder40 && Hud.Game.Me.Defense.HealthPct >= (float)40)
                {
                    ShowHealingWells = false; ShowPoolOfReflection = false;
                }

                if (shrine.Type == ShrineType.HealingWell && ShowHealingWells == false)
                {
                    continue;
                }
                if (shrine.Type == ShrineType.PoolOfReflection && ShowPoolOfReflection == false)
                {
                    continue;
                }
                if (shrine.Type == ShrineType.HealingWell && ShowHealingWells == true || shrine.Type == ShrineType.PoolOfReflection && ShowPoolOfReflection == true)
                {
                    NemesisMessage = string.Empty;
                }

                var shrineName = (ShrineCustomNames[shrine.Type] != string.Empty) ? ShrineCustomNames[shrine.Type] : shrine.SnoActor.NameLocalized;
                ShrineDecorators[shrine.Type].Paint(layer, shrine, shrine.FloorCoordinate, shrineName);

                var ShrineNameShort = (ShrineCustomNamesShort[shrine.Type] != string.Empty) ? ShrineCustomNamesShort[shrine.Type] : shrine.SnoActor.NameLocalized;

                switch (shrine.Type)
                {
                case ShrineType.BlessedShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u26E8 -25% damage received \u26E8";
                    break;

                case ShrineType.EnlightenedShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "+25% EXP gain";
                    break;

                case ShrineType.FortuneShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u2728 +25% magic & gold find \u2728";
                    break;

                case ShrineType.FrenziedShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u2694 +25% attack speed \u2694";
                    break;

                case ShrineType.EmpoweredShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "+100% resource gain" + Environment.NewLine + "\u231A -50% cooldown time \u231A";
                    break;

                case ShrineType.FleetingShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\uD83C\uDFC3 +25% movement speed \uD83C\uDFC3" + Environment.NewLine + "+20yd pickup radius";
                    break;

                case ShrineType.PowerPylon:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\uD83D\uDCAA +400% damage dealt \uD83D\uDCAA";
                    break;

                case ShrineType.ConduitPylon:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u26A1 HIGH VOLTAGE \u26A1";
                    break;

                case ShrineType.ChannelingPylon:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u231A -75% cooldown time \u231A" + Environment.NewLine + "No resource cost";
                    break;

                case ShrineType.ShieldPylon:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "60s of invulnerability";
                    break;

                case ShrineType.SpeedPylon:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u2694 +30% attack speed \u2694" + Environment.NewLine + "\uD83C\uDFC3 +80% movement speed \uD83C\uDFC3";
                    break;

                case ShrineType.PoolOfReflection:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "+25% EXP gain"; NemesisMessage = string.Empty;
                    break;

                case ShrineType.BanditShrine:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\uD83D\uDCB0 GOBLINS! \uD83D\uDCB0";
                    break;

                case ShrineType.HealingWell:
                    ShrineNameShort = ShrineNameShort + Environment.NewLine + "\u2764 restores life \u2764"; NemesisMessage = string.Empty;
                    break;
                }

                ShrineShortDecorators[shrine.Type].Paint(layer, shrine, shrine.FloorCoordinate, ShrineNameShort);
                if (shrine.FloorCoordinate.Offset(0, 0, 10).IsOnScreen())
                {
                    LeaveMessageDecorator.Paint(layer, null, shrine.FloorCoordinate.Offset(0, 0, 10), NemesisMessage);
                }
            }

            var riftPylonSpawnPoints = Hud.Game.Actors.Where(x => x.SnoActor.Sno == ActorSnoEnum._markerlocation_tieredriftpylon);  //  428690

            foreach (var actor in riftPylonSpawnPoints)
            {
                PossibleRiftPylonDecorators.Paint(layer, actor, actor.FloorCoordinate, (PossibleRiftPylonName != string.Empty) ? PossibleRiftPylonName : "Pylon?");
            }
        }