using System.Collections.Generic;
using log4net;
using Loki.Bot;
using Loki.Bot.Settings;
using Loki.Game;
using Loki.Game.GameData;
using Loki.Game.Objects;
using Loki.Utilities;
using System;
using System.Windows;
using System.Windows.Markup;
using System.IO;
using System;
using System.Windows.Data;
using System.Threading.Tasks;
using System.Linq;
using System.Windows.Controls;
//!CompilerOption|AddRef|C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Speech.dll
namespace AlertBot
{
/// <summary> </summary>
public class AlertBot : IBot
{
private static readonly ILog Log = Logger.GetLoggerInstanceForType();
struct Skill
{
public readonly Loki.Game.NativeWrappers.ActionWrapper action;
public readonly int createdts;
public int timeout;
public readonly bool active;
public Skill(Loki.Game.NativeWrappers.ActionWrapper action)
{
this.action = action;
this.createdts = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
this.timeout = 3;
this.active = true;
}
public override bool Equals(Object obj)
{
// Check for null values and compare run-time types.
if (obj == null || GetType() != obj.GetType())
return false;
Skill s = (Skill)obj;
return (s.action.Skill.Name == action.Skill.Name) && (s.action.Destination.Equals(action.Destination)) && (s.createdts - createdts <= 3);
}
public override int GetHashCode()
{
return (action.GetHashCode() + action.Destination.GetHashCode() + createdts) % 100000000;
}
}
private readonly List<Skill> _trackedSkills = new List<Skill>();
#region Implementation of IAuthored
/// <summary> The name of this bot. </summary>
public string Name
{
get { return "AssistantBot"; }
}
/// <summary> The description of this bot. </summary>
public string Description
{
get { return "This bot will assist you during manual play."; }
}
/// <summary>The author of this bot.</summary>
public string Author
{
get { return "JYam"; }
}
/// <summary>The version of this bot's implementation.</summary>
public Version Version
{
get { return new Version(0, 0, 1, 1); }
}
#endregion
#region Implementation of IBase
/// <summary>Initializes this object. This is called when the object is loaded into the bot.</summary>
public void Initialize()
{
}
#endregion
#region Implementation of IRunnable
/// <summary> The bot start callback. Do any initialization here. </summary>
public void Start()
{
Log.DebugFormat("[AssistantBot] Start");
// Reset the default MsBetweenTicks on start.
Log.DebugFormat("[Start] MsBetweenTicks: {0}.", MainSettings.Instance.MsBetweenTicks);
Log.DebugFormat("[Start] InputEventMsDelay: {0}.", MainSettings.Instance.InputEventMsDelay);
GameEventManager.Start();
GameEventManager.AreaChanged += GameEventManagerOnAreaChanged;
}
/// <summary> The bot tick callback. Do any update logic here. </summary>
public void Tick()
{
// We don't want to do anything when we're not in game!
if (!LokiPoe.IsInGame)
return;
GameEventManager.Tick();
foreach (Monster obj in LokiPoe.ObjectManager.GetObjectsByType<Monster>())
{
if (obj.IsHostile && obj.Rarity == Rarity.Unique && obj.HasCurrentAction && obj.CurrentAction.Skill != null && obj.CurrentAction.Skill.Name.Length >= 5)
{
Loki.Game.NativeWrappers.ActionWrapper action = ((Monster)obj).CurrentAction;
if (!_trackedSkills.Contains(new Skill(action)))
{
_trackedSkills.Add(new Skill(action));
Log.DebugFormat("Action performed by {0} [X : {1}, Y : {2}]", obj.Name, obj.Position.X, obj.Position.Y);
if (action.Destination != null)
Log.DebugFormat("Destination X : {0}, Y : {1}", action.Destination.X, action.Destination.Y);
if (action.Target != null)
Log.DebugFormat("Target X : {0}, Y : {1}", action.Target.Position.X, action.Target.Position.Y);
if (action.Skill != null)
Log.DebugFormat("{0} [ID : {2} - Addr : {3}] ~ {1}", action.Skill.Name, action.Skill.Description, action.Skill.Id, action.Skill.BaseAddress);
}
}
List<Skill> toDelete = new List<Skill>();
foreach (Skill s in _trackedSkills)
{
if (s.createdts + s.timeout <= (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds)
{
toDelete.Add(s);
}
}
foreach (Skill s in toDelete)
{
_trackedSkills.Remove(s);
}
}
}
/// <summary> The bot stop callback. Do any pre-dispose cleanup here. </summary>
public void Stop()
{
Log.DebugFormat("[AssistantBot] OnStop");
GameEventManager.Stop();
GameEventManager.AreaChanged -= GameEventManagerOnAreaChanged;
}
#endregion
#region Implementation of IConfigurable
public JsonSettings Settings
{
get { return null; }
}
/// <summary> The bot's settings control. This will be added to the Exilebuddy Settings tab.</summary>
public UserControl Control
{
get { return null; }
}
#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
#region Coroutine Logic
#endregion
private void GameEventManagerOnAreaChanged(object sender, AreaChangedEventArgs areaChangedEventArgs)
{
_trackedSkills.Clear();
}
}
}
return (s.action.Skill.Name == action.Skill.Name) && (s.action.Destination.Equals(action.Destination)) && (s.createdts - createdts <= 3);
if (!await Coroutines.MoveToLocation(dodgepos, 1, 1000))
{
Log.InfoFormat("[Warning] Failed Dodge");
}
}
}
}
else
{
}
}
_28: 0x0
BaseComponentPtr: 0x59A45570
WorldPosition.X: 8375
WorldPosition.Y: 17201,09
WorldPosition.Z: -31,88479
ModelLength: 19,56522
ModelWidth: 19,56522
ModelHeight: 31,88479
_30: 0
_34: -31,88479
Name: Spindle Spider
Rotation.X: 4,248736
Rotation.Y: 4,248735
Rotation.Z: 2,384186E-06
_70: 0x1
_7C: 0x0
_80: 0x380030
_84: 0x35
TerrainHeightAt: 0
_8C: First: 66303688
Last: 6630368C
End: 6630368C
Allocator: 3F240000
_9C: First: 0
Last: 0
End: 0
Allocator: 0
_AC: First: 59629390
Last: 59629390
End: 596293A4
Allocator: 0
_BC: First: 0
Last: 0
End: 0
Allocator: 20
_CC: 0x651CFC20
_D0: 0x19E1928
_D4: 0x578AC2F8
_D8: 0
_DC: 0
_E0: 0x0
_E4: 0x0
_E8: 0x1000000
_EC: 1
Model Size (Map): 1.79999987792969, 1.79999987792969, 2.93340089416504
Health: 1/10028 (0%)
Mana: 928/928 (100%)
Energy Shield: 0/0 (0%)
Actor Flags: UsingAbility, AbilityCooldownActive (00000012)
Pathing To: {770, 1582} ({0, 0})
Stats:
MainHandWeaponType = 10
OffHandWeaponType = 14
MovementVelocityPosPct = 10
IsDualWielding = 0
MaximumLife = 10028
MainHandAttackSpeedPosPct = 20
OffHandAttackSpeedPosPct = 20
FireDamageResistancePct = 0
MainHandBaseWeaponAttackDurationMs = 1440
OffHandBaseWeaponAttackDurationMs = 1440
MainHandMinimumAttackDistance = 3
OffHandMinimumAttackDistance = 3
MainHandBaseMaximumAttackDistance = 3
OffHandBaseMaximumAttackDistance = 3
ActionSpeedNegPct = 30
CannotDie = 1
MonsterAttackCastSpeedPosPctAndDamageNegPctFinal = 20
MainHandMaximumAttackDistance = 3
OffHandMaximumAttackDistance = 3
ActorScalePosPct = 20
CombinedAllDamageOverTimePosPct = 80
FireDamageTakenPerMinute = 0
MonsterDropHigherLevelGear = 1
ItemDropSlots = 1
MaximumPhysicalDamageReductionPct = 75
BaseEvasionRating = 2642
BaseMaximumLife = 2889
BaseMaximumMana = 200
ManaRegenerationRatePerMinutePct = 100
BaseMaximumEnergyShield = 0
EnergyShieldRechargeRatePerMinutePct = 2000
EnergyShieldDelayNegPct = 50
ResistAllElementsPctPerEnduranceCharge = 15
MaximumFireDamageResistancePct = 75
BaseFireDamageResistancePct = 0
MaximumColdDamageResistancePct = 75
BaseColdDamageResistancePct = 0
MaximumLightningDamageResistancePct = 75
BaseLightningDamageResistancePct = 40
MaximumChaosDamageResistancePct = 75
BaseChaosDamageResistancePct = 0
MovementVelocityPosPctPerFrenzyCharge = 3
MaxEnduranceCharges = 3
MaxFrenzyCharges = 3
MaxPowerCharges = 3
MaximumMana = 928
ManaRegenerationRatePerMinute = 928
EvasionRating = 2642
MainHandAccuracyRating = 362
OffHandAccuracyRating = 362
LightningDamageResistancePct = 40
BaseAttackSpeedPosPctPerFrenzyCharge = 20
IntermediaryMaximumLife = 2889
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 = 362
OffHandLocalAccuracyRating = 362
BaseNumberOfTotemsAllowed = 1
BaseNumberOfTrapsAllowed = 3
BaseNumberOfRemoteMinesAllowed = 5
BaseMaximumFireDamageResistancePct = 75
BaseMaximumColdDamageResistancePct = 75
BaseMaximumLightningDamageResistancePct = 75
BaseMaximumChaosDamageResistancePct = 75
NumberOfTrapsAllowed = 3
NumberOfRemoteMinesAllowed = 5
NumberOfTotemsAllowed = 1
MovementVelocityCap = 128
IntermediaryMaximumLifeIncludingChaosInnoculation = 2889
ManaRecoveryPerMinute = 928
TotalBaseEvasionRating = 2642
AttackSpeedPosPctPerFrenzyCharge = 20
CastSpeedPosPctPerFrenzyCharge = 20
MaxCorruptedBloodStacks = 20
MonsterLevelScaleMaximumManaAndManaCostPosPctFinal = 364
MaxCorruptedBloodRainStacks = 20
TotalLightningDamageResistancePct = 40
MaximumDodgeChancePct = 75
MaximumSpellDodgeChancePct = 75
Current Auras:
Name: , InternalName: monster_magic_effect_buff, Description: , IsInvisible: True, IsRemovable: False, Charges: 1, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 18183, OwnerId: 0
Name: Necrovigil, InternalName: bloodlines_necrovigil, Description: The souls of your fallen pack members protect you, IsInvisible: False, IsRemovable: False, Charges: 0, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 25534, OwnerId: 0
Name: Necrovigil, InternalName: bloodlines_necrovigil, Description: The souls of your fallen pack members protect you, IsInvisible: False, IsRemovable: False, Charges: 0, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 6205, OwnerId: 0
Name: Chilled Ground, InternalName: ground_ice_chill, Description: Your actions are slowed while standing on chilled ground, IsInvisible: False, IsRemovable: False, Charges: 1, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: -2147478431, OwnerId: 0
Rarity: Magic
Implicit Affixes:
Level: 1, Category: MonsterSlainExperience, InternalName: MonsterMagic1, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 250, Max: 250, 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: MonsterMagic2, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 187, Max: 187, 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: MonsterMagic3, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 600, Max: 600, 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: MonsterMagic4, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 200, Max: 200, 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: MonsterMagic5, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 30, Max: 30, 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: MonsterMagic6, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 250, Max: 250, 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: MonsterMagic7, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 50, Max: 50, Stat: 521, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: MovementVelocity, InternalName: MonsterMagic8, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 10, Max: 10, Stat: 181, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: MonsterSpeedAndDamageFixupRarity, InternalName: MonsterMagic9, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 20, Max: 20, 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: MonsterMagic10, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 1, Max: 1, Stat: 2078, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Explicit Affixes:
Level: 1, Category: MaximumLifeIncreasePercent, InternalName: MonsterIncreasedLife1, DisplayName: Massive, IsHidden: False, IsPrefix: True, IsSuffix: False, Stats: Min: 50, Max: 50, Stat: 125, Min: 20, Max: 20, Stat: 730, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: Bloodlines, InternalName: MonsterBloodlinesNecrovigil1, DisplayName: Necrovigil, IsHidden: False, IsPrefix: False, IsSuffix: False, Stats: Min: 50, Max: 50, Stat: 2576, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Walk Triangles:
Projection Triangles:
Dword0: 26373828
Dword4: 1558294472
Stats:
MainHandWeaponType = 10
OffHandWeaponType = 14
MovementVelocityPosPct = 10
IsDualWielding = 0
MaximumLife = 10028
MainHandAttackSpeedPosPct = 20
OffHandAttackSpeedPosPct = 20
FireDamageResistancePct = 0
MainHandBaseWeaponAttackDurationMs = 1440
OffHandBaseWeaponAttackDurationMs = 1440
MainHandMinimumAttackDistance = 3
OffHandMinimumAttackDistance = 3
MainHandBaseMaximumAttackDistance = 3
OffHandBaseMaximumAttackDistance = 3
ActionSpeedNegPct = 30
CannotDie = 1
MonsterAttackCastSpeedPosPctAndDamageNegPctFinal = 20
MainHandMaximumAttackDistance = 3
OffHandMaximumAttackDistance = 3
ActorScalePosPct = 20
CombinedAllDamageOverTimePosPct = 80
FireDamageTakenPerMinute = 0
MonsterDropHigherLevelGear = 1
ItemDropSlots = 1
MaximumPhysicalDamageReductionPct = 75
BaseEvasionRating = 2642
BaseMaximumLife = 2889
BaseMaximumMana = 200
ManaRegenerationRatePerMinutePct = 100
BaseMaximumEnergyShield = 0
EnergyShieldRechargeRatePerMinutePct = 2000
EnergyShieldDelayNegPct = 50
ResistAllElementsPctPerEnduranceCharge = 15
MaximumFireDamageResistancePct = 75
BaseFireDamageResistancePct = 0
MaximumColdDamageResistancePct = 75
BaseColdDamageResistancePct = 0
MaximumLightningDamageResistancePct = 75
BaseLightningDamageResistancePct = 40
MaximumChaosDamageResistancePct = 75
BaseChaosDamageResistancePct = 0
MovementVelocityPosPctPerFrenzyCharge = 3
MaxEnduranceCharges = 3
MaxFrenzyCharges = 3
MaxPowerCharges = 3
MaximumMana = 928
ManaRegenerationRatePerMinute = 928
EvasionRating = 2642
MainHandAccuracyRating = 362
OffHandAccuracyRating = 362
LightningDamageResistancePct = 40
BaseAttackSpeedPosPctPerFrenzyCharge = 20
IntermediaryMaximumLife = 2889
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 = 362
OffHandLocalAccuracyRating = 362
BaseNumberOfTotemsAllowed = 1
BaseNumberOfTrapsAllowed = 3
BaseNumberOfRemoteMinesAllowed = 5
BaseMaximumFireDamageResistancePct = 75
BaseMaximumColdDamageResistancePct = 75
BaseMaximumLightningDamageResistancePct = 75
BaseMaximumChaosDamageResistancePct = 75
NumberOfTrapsAllowed = 3
NumberOfRemoteMinesAllowed = 5
NumberOfTotemsAllowed = 1
MovementVelocityCap = 128
IntermediaryMaximumLifeIncludingChaosInnoculation = 2889
ManaRecoveryPerMinute = 928
TotalBaseEvasionRating = 2642
AttackSpeedPosPctPerFrenzyCharge = 20
CastSpeedPosPctPerFrenzyCharge = 20
MaxCorruptedBloodStacks = 20
MonsterLevelScaleMaximumManaAndManaCostPosPctFinal = 364
MaxCorruptedBloodRainStacks = 20
TotalLightningDamageResistancePct = 40
MaximumDodgeChancePct = 75
MaximumSpellDodgeChancePct = 75
MagicProperties: (Magic)
MonsterSlainExperiencePosPct = 250
MonsterDroppedItemRarityPosPct = 200
MonsterDroppedItemQuantityPosPct = 600
DamagePosPct = 30
MaximumLifePosPct = 237
BaseMovementVelocityPosPct = 10
MonsterSlainFlaskChargesGrantedPosPct = 250
MonsterChanceToNotFleePct = 50
BaseActorScalePosPct = 20
MonsterRarityAttackCastSpeedPosPctAndDamageNegPctFinal = 20
MonsterDropHigherLevelGear = 1
CannotDieAndDamagePosPctNearPackCorpse = 50
Current Auras:
Name: , InternalName: monster_magic_effect_buff, Description: , IsInvisible: True, IsRemovable: False, Charges: 1, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 18183, OwnerId: 0
Name: Necrovigil, InternalName: bloodlines_necrovigil, Description: The souls of your fallen pack members protect you, IsInvisible: False, IsRemovable: False, Charges: 0, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 25534, OwnerId: 0
Name: Necrovigil, InternalName: bloodlines_necrovigil, Description: The souls of your fallen pack members protect you, IsInvisible: False, IsRemovable: False, Charges: 0, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 6205, OwnerId: 0
_28: 0x0
BaseComponentPtr: 0x59A4B420
WorldPosition.X: 19125
WorldPosition.Y: 19440,22
WorldPosition.Z: -54,88486
ModelLength: 38,04348
ModelWidth: 38,04348
ModelHeight: 47,07236
_30: 7,8125
_34: -39,25986
Name: Noxious Tarantula
Rotation.X: 2,034443
Rotation.Y: 2,034443
Rotation.Z: 1,764948
_70: 0x1
_7C: 0x0
_80: 0x320031
_84: 0x39
TerrainHeightAt: -7,8125
_8C: First: 6493AA60
Last: 6493AA64
End: 6493AA64
Allocator: 876D0000
_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: 57F90020
_CC: 0x7E8C3C50
_D0: 0x19E1928
_D4: 0x65FF4E58
_D8: 0
_DC: 0
_E0: 0x0
_E4: 0x0
_E8: 0x1000000
_EC: 1
Model Size (Map): 3.49999980163574, 3.49999980163574, 4.33065756225586
Health: 10952/10952 (100%)
Mana: 928/928 (100%)
Energy Shield: 0/0 (0%)
Actor Flags: UsingAbility, AbilityCooldownActive (00000012)
Pathing To: {1769, 1793} ({0, 0})
Stats:
MainHandWeaponType = 10
OffHandWeaponType = 14
MovementVelocityPosPct = 10
IsDualWielding = 0
MaximumLife = 10952
MainHandAttackSpeedPosPct = 20
OffHandAttackSpeedPosPct = 20
MainHandBaseWeaponAttackDurationMs = 1440
OffHandBaseWeaponAttackDurationMs = 1440
MainHandMinimumAttackDistance = 4
OffHandMinimumAttackDistance = 4
MainHandBaseMaximumAttackDistance = 6
OffHandBaseMaximumAttackDistance = 6
ActionSpeedNegPct = 0
CannotDie = 0
MonsterAttackCastSpeedPosPctAndDamageNegPctFinal = 20
MainHandMaximumAttackDistance = 6
OffHandMaximumAttackDistance = 6
CombinedAllDamageOverTimePosPct = 55
MonsterDropHigherLevelGear = 1
ItemDropSlots = 1
MaximumPhysicalDamageReductionPct = 75
BaseEvasionRating = 2642
BaseMaximumLife = 3705
BaseMaximumMana = 200
ManaRegenerationRatePerMinutePct = 100
BaseMaximumEnergyShield = 0
EnergyShieldRechargeRatePerMinutePct = 2000
EnergyShieldDelayNegPct = 50
ResistAllElementsPctPerEnduranceCharge = 15
MaximumFireDamageResistancePct = 75
BaseFireDamageResistancePct = 0
MaximumColdDamageResistancePct = 75
BaseColdDamageResistancePct = 0
MaximumLightningDamageResistancePct = 75
BaseLightningDamageResistancePct = 40
MaximumChaosDamageResistancePct = 75
BaseChaosDamageResistancePct = 0
MovementVelocityPosPctPerFrenzyCharge = 3
MaxEnduranceCharges = 3
MaxFrenzyCharges = 3
MaxPowerCharges = 3
MaximumMana = 928
ManaRegenerationRatePerMinute = 928
EvasionRating = 2642
MainHandAccuracyRating = 362
OffHandAccuracyRating = 362
LightningDamageResistancePct = 40
BaseAttackSpeedPosPctPerFrenzyCharge = 20
IntermediaryMaximumLife = 3705
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 = 362
OffHandLocalAccuracyRating = 362
BaseNumberOfTotemsAllowed = 1
BaseNumberOfTrapsAllowed = 3
BaseNumberOfRemoteMinesAllowed = 5
BaseMaximumFireDamageResistancePct = 75
BaseMaximumColdDamageResistancePct = 75
BaseMaximumLightningDamageResistancePct = 75
BaseMaximumChaosDamageResistancePct = 75
NumberOfTrapsAllowed = 3
NumberOfRemoteMinesAllowed = 5
NumberOfTotemsAllowed = 1
MovementVelocityCap = 128
IntermediaryMaximumLifeIncludingChaosInnoculation = 3705
ManaRecoveryPerMinute = 928
TotalBaseEvasionRating = 2642
AttackSpeedPosPctPerFrenzyCharge = 20
CastSpeedPosPctPerFrenzyCharge = 20
MaxCorruptedBloodStacks = 20
MonsterLevelScaleMaximumManaAndManaCostPosPctFinal = 364
MaxCorruptedBloodRainStacks = 20
TotalLightningDamageResistancePct = 40
MaximumDodgeChancePct = 75
MaximumSpellDodgeChancePct = 75
Current Auras:
Name: , InternalName: monster_magic_effect_buff, Description: , IsInvisible: True, IsRemovable: False, Charges: 1, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 38, OwnerId: 0
Rarity: Magic
Implicit Affixes:
Level: 1, Category: MonsterSlainExperience, InternalName: MonsterMagic1, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 250, Max: 250, 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: MonsterMagic2, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 187, Max: 187, 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: MonsterMagic3, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 600, Max: 600, 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: MonsterMagic4, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 200, Max: 200, 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: MonsterMagic5, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 30, Max: 30, 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: MonsterMagic6, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 250, Max: 250, 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: MonsterMagic7, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 50, Max: 50, Stat: 521, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: MovementVelocity, InternalName: MonsterMagic8, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 10, Max: 10, Stat: 181, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: MonsterSpeedAndDamageFixupRarity, InternalName: MonsterMagic9, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 20, Max: 20, 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: MonsterMagic10, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 1, Max: 1, Stat: 2078, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Explicit Affixes:
Level: 1, Category: MonsterDamage, InternalName: MonsterPhysicalDamage1, DisplayName: Savage, IsHidden: False, IsPrefix: True, IsSuffix: False, Stats: Min: 25, Max: 25, Stat: 25, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: MonsterCastsViperStrikeText, InternalName: MonsterCastsViperStrikeText, DisplayName: , IsHidden: True, IsPrefix: False, IsSuffix: False, Stats: Min: 1, Max: 1, Stat: 963, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Level: 1, Category: Bloodlines, InternalName: MonsterBloodlinesNecrovigil1, DisplayName: Necrovigil, IsHidden: False, IsPrefix: False, IsSuffix: False, Stats: Min: 50, Max: 50, Stat: 2576, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0
Walk Triangles:
Projection Triangles:
Dword0: 26373828
Dword4: 1558459592
Stats:
MainHandWeaponType = 10
OffHandWeaponType = 14
MovementVelocityPosPct = 10
IsDualWielding = 0
MaximumLife = 10952
MainHandAttackSpeedPosPct = 20
OffHandAttackSpeedPosPct = 20
MainHandBaseWeaponAttackDurationMs = 1440
OffHandBaseWeaponAttackDurationMs = 1440
MainHandMinimumAttackDistance = 4
OffHandMinimumAttackDistance = 4
MainHandBaseMaximumAttackDistance = 6
OffHandBaseMaximumAttackDistance = 6
ActionSpeedNegPct = 0
CannotDie = 0
MonsterAttackCastSpeedPosPctAndDamageNegPctFinal = 20
MainHandMaximumAttackDistance = 6
OffHandMaximumAttackDistance = 6
CombinedAllDamageOverTimePosPct = 55
MonsterDropHigherLevelGear = 1
ItemDropSlots = 1
MaximumPhysicalDamageReductionPct = 75
BaseEvasionRating = 2642
BaseMaximumLife = 3705
BaseMaximumMana = 200
ManaRegenerationRatePerMinutePct = 100
BaseMaximumEnergyShield = 0
EnergyShieldRechargeRatePerMinutePct = 2000
EnergyShieldDelayNegPct = 50
ResistAllElementsPctPerEnduranceCharge = 15
MaximumFireDamageResistancePct = 75
BaseFireDamageResistancePct = 0
MaximumColdDamageResistancePct = 75
BaseColdDamageResistancePct = 0
MaximumLightningDamageResistancePct = 75
BaseLightningDamageResistancePct = 40
MaximumChaosDamageResistancePct = 75
BaseChaosDamageResistancePct = 0
MovementVelocityPosPctPerFrenzyCharge = 3
MaxEnduranceCharges = 3
MaxFrenzyCharges = 3
MaxPowerCharges = 3
MaximumMana = 928
ManaRegenerationRatePerMinute = 928
EvasionRating = 2642
MainHandAccuracyRating = 362
OffHandAccuracyRating = 362
LightningDamageResistancePct = 40
BaseAttackSpeedPosPctPerFrenzyCharge = 20
IntermediaryMaximumLife = 3705
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 = 362
OffHandLocalAccuracyRating = 362
BaseNumberOfTotemsAllowed = 1
BaseNumberOfTrapsAllowed = 3
BaseNumberOfRemoteMinesAllowed = 5
BaseMaximumFireDamageResistancePct = 75
BaseMaximumColdDamageResistancePct = 75
BaseMaximumLightningDamageResistancePct = 75
BaseMaximumChaosDamageResistancePct = 75
NumberOfTrapsAllowed = 3
NumberOfRemoteMinesAllowed = 5
NumberOfTotemsAllowed = 1
MovementVelocityCap = 128
IntermediaryMaximumLifeIncludingChaosInnoculation = 3705
ManaRecoveryPerMinute = 928
TotalBaseEvasionRating = 2642
AttackSpeedPosPctPerFrenzyCharge = 20
CastSpeedPosPctPerFrenzyCharge = 20
MaxCorruptedBloodStacks = 20
MonsterLevelScaleMaximumManaAndManaCostPosPctFinal = 364
MaxCorruptedBloodRainStacks = 20
TotalLightningDamageResistancePct = 40
MaximumDodgeChancePct = 75
MaximumSpellDodgeChancePct = 75
MagicProperties: (Magic)
MonsterSlainExperiencePosPct = 250
MonsterDroppedItemRarityPosPct = 200
MonsterDroppedItemQuantityPosPct = 600
DamagePosPct = 55
MaximumLifePosPct = 187
BaseMovementVelocityPosPct = 10
MonsterSlainFlaskChargesGrantedPosPct = 250
MonsterChanceToNotFleePct = 50
MonsterRarityAttackCastSpeedPosPctAndDamageNegPctFinal = 20
MonsterCastsViperStrikeText = 1
MonsterDropHigherLevelGear = 1
CannotDieAndDamagePosPctNearPackCorpse = 50
Current Auras:
Name: , InternalName: monster_magic_effect_buff, Description: , IsInvisible: True, IsRemovable: False, Charges: 1, TimeLeft: 10675199.02:48:05.4775807, BuffType: 26, CasterId: 38, OwnerId: 0
if (LokiPoe.ObjectManager.GetObjectByMetadata("Metadata/Monsters/Demonmodular/TowerSpawners/TowerFightStarter") != null) { //We are in dominus ring area
ExampleRoutineSettings.Instance.CombatRange = 50;
} else {
ExampleRoutineSettings.Instance.CombatRange = 1;
}
Hi jyam,check area + tileset, if it's not matching dominus area, make your Combat range to 1.
How to check if you're in dominus area :
idk if it works as i don't know if combatrange is writtable or not, my way of doing it is kinda different but can't share it atm. but this should work the exact same (albeit this one still is gonna try corrupted area and open chestbox, you need to disable them) if it's writtable.Code:if (LokiPoe.ObjectManager.GetObjectByMetadata("Metadata/Monsters/Demonmodular/TowerSpawners/TowerFightStarter") != null) { //We are in dominus ring area ExampleRoutineSettings.Instance.CombatRange = 50; } else { ExampleRoutineSettings.Instance.CombatRange = 1; }
Hey WhereIsMyMind,What are id 0 objects?
wimm
jyam, is this still being developed/updated?
Would it be possible to add to this bot, that once a hand of god is detected that within the evade movement we hit/use a lightning res flask, if available?