What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal
RebornBuddy Forums

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Library Corrupted Area still not working..... Anyone help make a plugin??

bcain1787

Member
Joined
Aug 13, 2013
Messages
131
So library's Corrupted area is still not working right even with early explore end not checked and explore % set to 100... Can anyone make a plugin or know a fix for this? I have tried everything I know it seems. Any advice would be greatly appreciated.
 
Have a look at Dominus Plugin, change the area to the library's corrupted area name, or do a check using Loki.Game.GameData.DatWorldAreaWrapper.IsCorruptedArea. If it is check for said area's boss name and hang around until the boss is dead. It's pretty simple. I've got my hands full atm, but when I have time i'll whip one up, should take a few hours at most.

Edit, Ok whipped this up prety Quick, so hopefully no bugs. Let me know any issues or if it works lol.

Go down a post it's posted.
 

Attachments

Last edited:
Have a look at Dominus Plugin, change the area to the library's corrupted area name, or do a check using Loki.Game.GameData.DatWorldAreaWrapper.IsCorruptedArea. If it is check for said area's boss name and hang around until the boss is dead. It's pretty simple. I've got my hands full atm, but when I have time i'll whip one up, should take a few hours at most.

Edit, Ok whipped this up prety Quick, so hopefully no bugs. Let me know any issues or if it works lol.

View attachment 146078

Hello,

Code:
Compiler Error: c:\Users\<>\Desktop\EB\Plugins\LibraryCorruptedHandler\LibraryCorruptedHandler.cs(103,26) : error CS1525: Invalid expression term '}'
Compiler Error: c:\Users\<>\Desktop\EB\Plugins\LibraryCorruptedHandler\LibraryCorruptedHandler.cs(103,27) : error CS1002: ; expected
Compiler Error: c:\Users\<>\Desktop\EB\Plugins\LibraryCorruptedHandler\LibraryCorruptedHandler.cs(111,4) : error CS0126: An object of a type convertible to 'System.Windows.Controls.UserControl' is required
 
Hello sir,

I did exactly same fix (changing it to 'return null;') its compile fine, but still leaving before fighting the boss :/

Edit : He just found now a corrupted area, Ill edit in few secs to lets know whats happen
Edit 2 : He skipped boss :/
 
Last edited:
Hello sir,

I did exactly same fix (changing it to 'return null;') its compile fine, but still leaving before fighting the boss :/

Edit : He just found now a corrupted area, Ill edit in few secs to lets know whats happen
Edit 2 : He skipped boss :/
hum ok, i'll go to library and check the boss out, it's probably the name it has ' in it.
Ok do this for me, when you have killed everything, DO NOT TRIGGER THE BOSS,
instead, go to exilebuddy, click on Tools, then select Object Explorer, click refresh inside object explorer, choose Monsters, and find the name Ch'aska, Maker of Rain. Can you tell me it's Meta data? I'll have a more through look tonight when I get back.
 
Roger that, Ill do this within few mins.
Killing everything without triggering the boss gonna be a lil hard

Edit : Bot is in corrupted area, I let him clear, then Ill do that :)
RUhspIa.png


Code:
_28: 0x0
BaseComponentPtr: 0x56D8C368
WorldPosition.X: 6559,783
WorldPosition.Y: 2201,087
WorldPosition.Z: -120,0522
ModelLength: 38,04348
ModelWidth: 38,04348
ModelHeight: 103,9204
_30: -15,625
_34: -120,0522
Name: Ch'aska
Maker of Rain
Rotation.X: 3,926991
Rotation.Y: 3,926991
Rotation.Z: 0
_70: 0x1
_7C: 0x0
_80: 0x3F5C0885
_84: 0x3F02D948
TerrainHeightAt: -15,625
_8C: First: 4B7C1C08
Last: 4B7C1C10
End: 4B7C1C10
Allocator: 440000
_9C: First: 0
Last: 0
End: 0
Allocator: 0
_AC: First: 0
Last: 0
End: 0
Allocator: 0
_BC: First: 0
Last: 0
End: 0
Allocator: 20
_CC: 0x46151AD0
_D0: 0x1A823E8
_D4: 0x32E36BC8
_D8: 0
_DC: 0
_E0: 0x0
_E4: 0x0
_E8: 0x1000000
_EC: 1
Model Size (Map): 3.49999980163574, 3.49999980163574, 9.56067492675781
Health: 57667/57667 (100%)
Mana: 948/948 (100%)
Energy Shield: 0/0 (0%)
Actor Flags: None (00000000)
Pathing To: {0, 0} ({0, 0})
Stats: 
	MainHandWeaponType = 9
	OffHandWeaponType = 14
	IsDualWielding = 0
	MaximumLife = 57667
	MainHandAttackSpeedPosPct = 33
	OffHandAttackSpeedPosPct = 33
	MainHandBaseWeaponAttackDurationMs = 1650
	OffHandBaseWeaponAttackDurationMs = 1650
	MainHandMinimumAttackDistance = 4
	OffHandMinimumAttackDistance = 4
	MainHandBaseMaximumAttackDistance = 50
	OffHandBaseMaximumAttackDistance = 50
	MonsterAttackCastSpeedPosPctAndDamageNegPctFinal = 33
	MainHandMaximumAttackDistance = 50
	OffHandMaximumAttackDistance = 50
	CombinedAllDamageOverTimePosPct = 70
	MonsterDropHigherLevelGear = 2
	ItemDropSlots = 1
	MaximumPhysicalDamageReductionPct = 75
	BaseEvasionRating = 7833
	BaseMaximumLife = 7954
	BaseMaximumMana = 200
	ManaRegenerationRatePerMinutePct = 100
	BaseMaximumEnergyShield = 0
	EnergyShieldRechargeRatePerMinutePct = 2000
	EnergyShieldDelayNegPct = 50
	ResistAllElementsPctPerEnduranceCharge = 15
	MaximumFireDamageResistancePct = 75
	BaseFireDamageResistancePct = 30
	MaximumColdDamageResistancePct = 75
	BaseColdDamageResistancePct = 30
	MaximumLightningDamageResistancePct = 75
	BaseLightningDamageResistancePct = 30
	MaximumChaosDamageResistancePct = 75
	BaseChaosDamageResistancePct = 15
	MovementVelocityPosPctPerFrenzyCharge = 3
	MaxEnduranceCharges = 3
	MaxFrenzyCharges = 3
	MaxPowerCharges = 3
	MaximumMana = 948
	ManaRegenerationRatePerMinute = 948
	EvasionRating = 7833
	MainHandAccuracyRating = 380
	OffHandAccuracyRating = 380
	ColdDamageResistancePct = 30
	FireDamageResistancePct = 30
	LightningDamageResistancePct = 30
	ChaosDamageResistancePct = 15
	BaseAttackSpeedPosPctPerFrenzyCharge = 20
	IntermediaryMaximumLife = 7954
	PhysicalDamageReductionPctPerEnduranceCharge = 15
	MaximumBlockPct = 75
	BaseCastSpeedPosPctPerFrenzyCharge = 20
	MaxViperStrikeOrbs = 4
	MaxFuseArrowOrbs = 5
	CriticalStrikeChancePosPctPerPowerCharge = 200
	BaseCriticalStrikeMultiplier = 130
	MainHandCriticalStrikeMultiplier = 130
	OffHandCriticalStrikeMultiplier = 130
	SpellCriticalStrikeMultiplier = 130
	ChanceToHitPct = 95
	ChanceToEvadePct = 95
	SecondaryCriticalStrikeMultiplier = 130
	MainHandLocalAccuracyRating = 380
	OffHandLocalAccuracyRating = 380
	BaseNumberOfTotemsAllowed = 1
	BaseNumberOfTrapsAllowed = 3
	BaseNumberOfRemoteMinesAllowed = 5
	BaseMaximumFireDamageResistancePct = 75
	BaseMaximumColdDamageResistancePct = 75
	BaseMaximumLightningDamageResistancePct = 75
	BaseMaximumChaosDamageResistancePct = 75
	NumberOfTrapsAllowed = 3
	NumberOfRemoteMinesAllowed = 5
	NumberOfTotemsAllowed = 1
	MovementVelocityCap = 128
	IntermediaryMaximumLifeIncludingChaosInnoculation = 7954
	ManaRecoveryPerMinute = 948
	TotalBaseEvasionRating = 7833
	AttackSpeedPosPctPerFrenzyCharge = 20
	CastSpeedPosPctPerFrenzyCharge = 20
	MaxCorruptedBloodStacks = 20
	MonsterLevelScaleMaximumManaAndManaCostPosPctFinal = 374
	MaxCorruptedBloodRainStacks = 20
	TotalFireDamageResistancePct = 30
	TotalColdDamageResistancePct = 30
	TotalLightningDamageResistancePct = 30
	TotalChaosDamageResistancePct = 15
	MaximumDodgeChancePct = 75
	MaximumSpellDodgeChancePct = 75
Current Auras:
Rarity: Unique
Implicit Affixes:
	Level: 1, Category: MonsterSlainExperience, InternalName: MonsterUnique1, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 450, Max: 450, Stat: 10, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MaximumLifeIncreasePercent, InternalName: MonsterUnique2, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 625, Max: 625, Stat: 125, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterDroppedItemQuantity, InternalName: MonsterUnique3, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 2850, Max: 2850, Stat: 12, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterDroppedItemRarity, InternalName: MonsterUnique4, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 1000, Max: 1000, Stat: 11, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterDamage, InternalName: MonsterUnique5, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 70, Max: 70, Stat: 25, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterSlainFlaskCharges, InternalName: MonsterUnique6, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 1000, Max: 1000, Stat: 465, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterDoesNotFlee, InternalName: MonsterUnique7, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 100, Max: 100, Stat: 521, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterSpeedAndDamageFixupRarity, InternalName: MonsterUnique8, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 33, Max: 33, Stat: 882, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterHighLevelDrops, InternalName: MonsterUnique9, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 2, Max: 2, Stat: 2078, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MoreLifeBelowLevelThreshold, InternalName: MonsterLifeAndDamageLessBelowLevel33, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: -20, Max: -20, Stat: 2286, Min: -20, Max: -20, Stat: 2287, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Explicit Affixes:
	Level: 1, Category: MonsterSpeedAndDamageFixup, InternalName: MonsterSpeedAndDamageFixupComplete, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 33, Max: 33, Stat: 881, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: MonsterSideAreaBoss, InternalName: MonsterSideAreaBoss, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 300, Max: 300, Stat: 12, Min: 800, Max: 800, Stat: 11, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
	Level: 1, Category: DemonBossSideAreaEnrageOnLowLife, InternalName: DemonBossSideAreaEnrageOnLowLife, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 60, Max: 60, Stat: 595, Min: 60, Max: 60, Stat: 593, Min: 60, Max: 60, Stat: 791, Min: 60, Max: 60, Stat: 591
	Level: 1, Category: MonsterMercilessDrops, InternalName: MonsterInvasionMercilessDrops1, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 600, Max: 600, Stat: 1999, Min: 600, Max: 600, Stat: 1998, Min: 300, Max: 300, Stat: 2006, Min: 300, Max: 300, Stat: 2007
Walk Triangles:
Projection Triangles:
Dword0: 27031188
Dword4: 1780218680

Stats: 
	MainHandWeaponType = 9
	OffHandWeaponType = 14
	IsDualWielding = 0
	MaximumLife = 57667
	MainHandAttackSpeedPosPct = 33
	OffHandAttackSpeedPosPct = 33
	MainHandBaseWeaponAttackDurationMs = 1650
	OffHandBaseWeaponAttackDurationMs = 1650
	MainHandMinimumAttackDistance = 4
	OffHandMinimumAttackDistance = 4
	MainHandBaseMaximumAttackDistance = 50
	OffHandBaseMaximumAttackDistance = 50
	MonsterAttackCastSpeedPosPctAndDamageNegPctFinal = 33
	MainHandMaximumAttackDistance = 50
	OffHandMaximumAttackDistance = 50
	CombinedAllDamageOverTimePosPct = 70
	MonsterDropHigherLevelGear = 2
	ItemDropSlots = 1
	MaximumPhysicalDamageReductionPct = 75
	BaseEvasionRating = 7833
	BaseMaximumLife = 7954
	BaseMaximumMana = 200
	ManaRegenerationRatePerMinutePct = 100
	BaseMaximumEnergyShield = 0
	EnergyShieldRechargeRatePerMinutePct = 2000
	EnergyShieldDelayNegPct = 50
	ResistAllElementsPctPerEnduranceCharge = 15
	MaximumFireDamageResistancePct = 75
	BaseFireDamageResistancePct = 30
	MaximumColdDamageResistancePct = 75
	BaseColdDamageResistancePct = 30
	MaximumLightningDamageResistancePct = 75
	BaseLightningDamageResistancePct = 30
	MaximumChaosDamageResistancePct = 75
	BaseChaosDamageResistancePct = 15
	MovementVelocityPosPctPerFrenzyCharge = 3
	MaxEnduranceCharges = 3
	MaxFrenzyCharges = 3
	MaxPowerCharges = 3
	MaximumMana = 948
	ManaRegenerationRatePerMinute = 948
	EvasionRating = 7833
	MainHandAccuracyRating = 380
	OffHandAccuracyRating = 380
	ColdDamageResistancePct = 30
	FireDamageResistancePct = 30
	LightningDamageResistancePct = 30
	ChaosDamageResistancePct = 15
	BaseAttackSpeedPosPctPerFrenzyCharge = 20
	IntermediaryMaximumLife = 7954
	PhysicalDamageReductionPctPerEnduranceCharge = 15
	MaximumBlockPct = 75
	BaseCastSpeedPosPctPerFrenzyCharge = 20
	MaxViperStrikeOrbs = 4
	MaxFuseArrowOrbs = 5
	CriticalStrikeChancePosPctPerPowerCharge = 200
	BaseCriticalStrikeMultiplier = 130
	MainHandCriticalStrikeMultiplier = 130
	OffHandCriticalStrikeMultiplier = 130
	SpellCriticalStrikeMultiplier = 130
	ChanceToHitPct = 95
	ChanceToEvadePct = 95
	SecondaryCriticalStrikeMultiplier = 130
	MainHandLocalAccuracyRating = 380
	OffHandLocalAccuracyRating = 380
	BaseNumberOfTotemsAllowed = 1
	BaseNumberOfTrapsAllowed = 3
	BaseNumberOfRemoteMinesAllowed = 5
	BaseMaximumFireDamageResistancePct = 75
	BaseMaximumColdDamageResistancePct = 75
	BaseMaximumLightningDamageResistancePct = 75
	BaseMaximumChaosDamageResistancePct = 75
	NumberOfTrapsAllowed = 3
	NumberOfRemoteMinesAllowed = 5
	NumberOfTotemsAllowed = 1
	MovementVelocityCap = 128
	IntermediaryMaximumLifeIncludingChaosInnoculation = 7954
	ManaRecoveryPerMinute = 948
	TotalBaseEvasionRating = 7833
	AttackSpeedPosPctPerFrenzyCharge = 20
	CastSpeedPosPctPerFrenzyCharge = 20
	MaxCorruptedBloodStacks = 20
	MonsterLevelScaleMaximumManaAndManaCostPosPctFinal = 374
	MaxCorruptedBloodRainStacks = 20
	TotalFireDamageResistancePct = 30
	TotalColdDamageResistancePct = 30
	TotalLightningDamageResistancePct = 30
	TotalChaosDamageResistancePct = 15
	MaximumDodgeChancePct = 75
	MaximumSpellDodgeChancePct = 75
MagicProperties: (Unique)
	MonsterSlainExperiencePosPct = 450
	MonsterDroppedItemRarityPosPct = 1800
	MonsterDroppedItemQuantityPosPct = 3150
	DamagePosPct = 70
	MaximumLifePosPct = 625
	MonsterSlainFlaskChargesGrantedPosPct = 1000
	MonsterChanceToNotFleePct = 100
	DamagePosPctWhenOnLowLife = 60
	CastSpeedPosPctWhenOnLowLife = 60
	AttackSpeedPosPctWhenOnLowLife = 60
	MovementVelocityPosPctWhenOnLowLife = 60
	MonsterBaseTypeAttackCastSpeedPosPctAndDamageNegPctFinal = 33
	MonsterRarityAttackCastSpeedPosPctAndDamageNegPctFinal = 33
	MonsterAdditionalRarityOfDroppedItemsInMercilessPosPct = 600
	MonsterAdditionalQuantityOfDroppedItemsInMercilessPosPct = 600
	MonsterAdditionalQuantityOfDroppedItemsInCruelPosPct = 300
	MonsterAdditionalRarityOfDroppedItemsInCruelPosPct = 300
	MonsterDropHigherLevelGear = 2
	Level33OrLowerLifePosPctFinal = -20
	Level33OrLowerDamagePosPctFinal = -20
	MonsterEnragesOnLowLifeText = 1

Edit : It was in double boss area, that why boss appear twice
 
Last edited:
as long as you can get me the name or metadata it's fine. I just need it as to tell the bot to there and trigger, then stick around until the SOB is dead.
 
Ah I didn't account for double boss. Can you somehow do one with a single boss? Let me know, I'll whip something up for double boss.

P.S ty for the info =), great way to give me info lol.

Code:
IsHidden: True

Yea it's a hidden boss lol.
 
Thanks for the work on this, it's not that much of a rush really, just as long as it will eventually work =)
 
Ah I didn't account for double boss. Can you somehow do one with a single boss? Let me know, I'll whip something up for double boss.

P.S ty for the info =), great way to give me info lol.

Code:
IsHidden: True

Yea it's a hidden boss lol.

Even single boss, it skip it
 
Ok Works now, I tested, it will port to town after Killing boss and opening vaal vessel.
Code:
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Markup;
using log4net;
using System;
using Loki.Bot;
using Loki.Bot.Logic.Bots.BasicGrindBot;
using Loki.Bot.Pathfinding;
using Loki.Bot.v3;
using Loki.Game;
using Loki.Game.Objects;
using Loki.Utilities;
using Buddy.Coroutines;
namespace LibraryCorruptedHandler
{
    internal class LibraryCorruptedHandler : IPlugin
    {
        private static readonly ILog Log = Logger.GetLoggerInstanceForType();

        private bool _enabled;
        private bool _skip;

        /// <summary> The name of the plugin. </summary>
        public string Name
        {
            get { return "LibraryCorruptedHandler"; }
        }

        /// <summary> The description of the plugin. </summary>
        public string Description
        {
            get { return "A plugin that handles the logic required for fighting Library Corrupted Boss."; }
        }

        /// <summary>The author of the plugin.</summary>
        public string Author
        {
            get { return "Bossland GmbH"; }
        }

        /// <summary>The version of the plugin.</summary>
        public Version Version
        {
            get { return new Version(0, 0, 1, 1); }
        }

        /// <summary>Initializes this plugin.</summary>
        public void Initialize()
        {
            Log.DebugFormat("[LibraryCorruptedHandler] Initialize");
        }

        /// <summary> The plugin start callback. Do any initialization here. </summary>
        public void Start()
        {
            Log.DebugFormat("[LibraryCorruptedHandler] Start");

            GameEventManager.AreaChanged += GameEventManagerOnAreaChanged;
            Reset();

            // Check to see if the current grind zone is for Dominus.
            if (BasicGrindBotSettings.Instance.GrindZoneName != "The Library")
            {

                Log.InfoFormat("[LibraryCorruptedHandler] The area to grind is not The Library. Skipping execution until a restart or area change.");
                _skip = true;
                return;
            }

            // We want to change the behavior after exploration, so we can start the boss fight, and stay in it
            // though different phases.
            if (!TaskManager.AddAfter(new HandleLibraryCorruptedArea(), "ExploreTask"))
            {
                Log.ErrorFormat("[LibraryCorruptedHandler]  AddBefore Explore Task failed.");
                BotManager.Stop();
            }
            else
            {
                Log.ErrorFormat("[LibraryCorruptedHandler] AddBefore Explore Task Success.");
            }
        }

        /// <summary> The plugin tick callback. Do any update logic here. </summary>
        public void Tick()
        {
            if (_skip)
                return;

            if (!LokiPoe.IsInGame || LokiPoe.Me.IsInTown || LokiPoe.Me.IsDead)
                return;
        }

        /// <summary> The plugin stop callback. Do any pre-dispose cleanup here. </summary>
        public void Stop()
        {
            Log.DebugFormat("[LibraryCorruptedHandler] Stop");

            GameEventManager.AreaChanged -= GameEventManagerOnAreaChanged;
        }

        #region Implementation of IConfigurable

        public JsonSettings Settings
        {
            get { return null; }
        }

        /// <summary> The plugin's settings control. This will be added to the Exilebuddy Settings tab.</summary>
        public UserControl Control
        {
            get { return null; }
        }

        #endregion

        #region Implementation of IEnableable

        /// <summary>Is this plugin currently enabled?</summary>
        public bool IsEnabled
        {
            get { return _enabled; }
        }

        /// <summary> The plugin is being enabled.</summary>
        public void Enable()
        {
            Log.DebugFormat("[LibraryCorruptedHandler] Enable");
            _enabled = true;
        }

        /// <summary> The plugin is being disabled.</summary>
        public void Disable()
        {
            Log.DebugFormat("[LibraryCorruptedHandler] Disable");
            _enabled = false;
        }

        #endregion

        #region Implementation of IDisposable

        /// <summary> </summary>
        public void Dispose()
        {
        }

        #endregion

        #region Override of Object

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return Name + ": " + Description;
        }

        #endregion

        private void GameEventManagerOnAreaChanged(object sender, AreaChangedEventArgs areaChangedEventArgs)
        {
            Reset();
        }

        private void Reset()
        {
            Log.DebugFormat("[LibraryCorruptedHandler] Now resetting task state.");
            _skip = false;
        }

        /// <summary>
        /// This task helps BasicGrindBot stay in the Dominus boss fight area, resetting exploration to 
        /// keep the bot moving around to trigger different phases.
        /// </summary>
        public class HandleLibraryCorruptedArea : ITask
        {
            private bool _enabled = true;

            /// <summary>The name of this task.</summary>
            public string Name
            {
                get { return "HandleLibraryCorruptedArea"; }
            }

            /// <summary>A description of what this task does.</summary>
            public string Description
            {
                get { return "This task helps BasicGrindBot stay in the Dominus boss fight area, resetting exploration to keep the bot moving around to trigger different phases."; }
            }

            /// <summary>The author of this task.</summary>
            public string Author
            {
                get { return "Bossland GmbH"; }
            }

            /// <summary>The version of this task.</summary>
            public Version Version
            {
                get { return new Version(0, 0, 1, 1); }
            }

            private Vector2i _towerFightStarterPos;
            private Vector2i __objectVaalChestPos;
            /// <summary>
            /// The tasks's execution logic.
            /// </summary>
            /// <returns>true if the TaskManager should not execute any other tasks, and false if it should.</returns>
            public async Task<bool> Execute()
            {

				 if(!LokiPoe.CurrentWorldArea.IsCorruptedArea)
                 {
                     Log.InfoFormat("[LibraryCorruptedHandler] Not Corrupted area");
                     return false;

                 }
                 else
                 {
                     Log.InfoFormat("[LibraryCorruptedHandler] Corrupted Area Found");
                 }
                // When we first spawn into the area, exploration should take us within range of everything.
                // Start out by triggering the fight itself.
                if (_towerFightStarterPos == Vector2i.Zero)
                {
                    var fightStarter =
                        LokiPoe.ObjectManager.GetObjectByName(
                            "Vaal Vessel");
                    if (fightStarter != null)
                    {
                        _towerFightStarterPos = ExilePather.WalkablePositionFor(fightStarter, 10);
                        Log.InfoFormat("[LibraryCorruptedHandler] _fightStarterPos: {0}.", _towerFightStarterPos);
                        if (!await Coroutines.MoveToLocation(_towerFightStarterPos, 10, 30000))
                        {
                            Log.ErrorFormat("[LibraryCorruptedHandler] MoveToLocation failed.");
                        }

                        return true;
                    }
                }

                // Simply move towards Dominus if nothing else is running.
                var boss = LokiPoe.ObjectManager.GetObjectByName<Monster>("Ch'aska, Maker of Rain");
                if (boss != null)
                {
                    if (!boss.IsDead)
                    {
                        PlayerMover.MoveTowards(boss.Position);
                        Log.InfoFormat("[LibraryCorruptedHandler] {0} is Not Dead. Finding Him", boss.Name);
                        return true;
                    }
					if(boss.IsDead)
					{			
						Log.InfoFormat("[LibraryCorruptedHandler] Boss Dead. Triggering Town Run");
                        if (__objectVaalChestPos == Vector2i.Zero)
                        {
                            var _objectVaalChest =
                                LokiPoe.ObjectManager.GetObjectByName(
                                    "Vaal Vessel");
                            if (_objectVaalChest != null)
                            {
                                if (_objectVaalChest.IsTargetable)
                                {
                                    __objectVaalChestPos = ExilePather.WalkablePositionFor(_objectVaalChest, 10);
                                    Log.InfoFormat("[LibraryCorruptedHandler] _fightStarterPos: {0}.", __objectVaalChestPos);
                                    if (!await Coroutines.MoveToLocation(__objectVaalChestPos, 10, 30000))
                                    {
                                        Log.ErrorFormat("[LibraryCorruptedHandler] MoveToLocation failed.");
                                        return true;
                                    }
                                    await Coroutine.Sleep(Utility.LatencySafeValue(500));
                                    if (!LokiPoe.Input.HighlightObject(_objectVaalChest))
                                    {
                                        return true;
                                    }
                                    if (!await Coroutines.InteractWith(_objectVaalChest, false, 160))
                                    {
                                        return true;
                                    }
                                    BasicGrindBotSettings.Instance.TriggerTownRun();
                                }
                                else
                                {
                                    BasicGrindBotSettings.Instance.NeedsTownRun = 2;

                                }
                            }

                        }
						//BasicGrindBotSettings.Instance.TriggerTownRun();
						
					}
                    return true;
                }


                // Reset the explorer, so we move around the area looking for things that might be out of view.
                // It's up to the CR to avoid getting stuck killing Miscreations near their spawner.
                if (AreaStateCache.Current.Explorer != null)
                {
                    Log.InfoFormat("[LibraryCorruptedHandler] Now resetting the explorer.");
                    AreaStateCache.Current.Explorer.Reset();
                }

                // Don't execute any tasks afterwards. This forces the BasicGrindBot to say in the boss area.
                return true;
            }

            /// <summary>The bot Start event.</summary>
            public void Start()
            {
            }

            /// <summary>The bot Tick event.</summary>
            public void Tick()
            {
            }

            /// <summary>The bot Stop event.</summary>
            public void Stop()
            {
            }
            public void RemoveMe()
            {
                if(!TaskManager.Remove("LibraryCorruptedHandler"))
                {
                    Log.InfoFormat("[LibraryCorruptedHandler] Remove LibraryCorruptedHandler Task Failed");
                }
            }
            /// <summary>Is this task currently enabled?</summary>
            public bool IsEnabled
            {
                get { return _enabled; }
            }

            /// <summary>Called when the task should be enabled.</summary>
            public void Enable()
            {
                _enabled = true;
            }

            /// <summary>Called when the task should be disabled.</summary>
            public void Disable()
            {
                _enabled = false;
            }
        }
    
	}
}
 
Thanks for all mate :)

Edit : Tested, works like a charm
 
Last edited:
Thanks for all mate :)

Edit : Tested, works like a charm
Yea Np, I'll extend it to all corrupted areas when I get some time. Still trouble shooting act 2 of my bandit quest. I have to keep putting logic on top of logic lol.
 
Yea Np, I'll extend it to all corrupted areas when I get some time. Still trouble shooting act 2 of my bandit quest. I have to keep putting logic on top of logic lol.

Great thanks, atm just looking for Dominus way one (boss named 'Wiraq, the Impaler')

Edit : He's in the same corrupted area since 5 mins, he visit everything in loop, but not the boss ô_ô
 
Last edited:
Back
Top