wutisgoingon
-
Content Count
15 -
Joined
-
Last visited
Posts posted by wutisgoingon
-
-
Still figuring out more options and all the additions to the game to improve the bot. This one is ridiculously strong. Have the bot link the following:
'Cast when damage taken' -> Curse of your choice(perhaps Vulnerability/Enfeeble) -> Molten Shell -> Enduring Cry
It will cast all of these when taking 400 damage or so. This is too good to be true.
-
Thanks! It works ^_^
-
I found a proper aura setup:
Reduced Mana (lvl 11) -> Hatred -> Grace OR Determination
Reduced Mana at level 11 allows you to run both auras.
Blood Magic linked to Leap Slam so you don't use any mana
We have enough defense with talents to run Hated which is a huge damage boost
Use Grace if you have iron reflexes and if it gives more physical reduction, otherwise use Determination.
-
Another thing that is helpful is linking 'Endurance Charge on Melee Stun' to leap slam. You will have 3 charges up for 15% physical reduction pretty much ALL the time. If you get talents for extra endurance charges, you can get 5 charges for 25% reduction. This could replace Item Quantity (because you can't get it on Nemesis)
-
New passive skill tree (for Scion start):
http://www.pathofexile.com/passive-skil ... L8xf4K_o8=
Scion seems like a very solid start with lots of life/resist nodes as well as berserking nearby, but you could still make duelist/marauder work if you want. Note there are several, good sword talents that are selected, only take those if you use a sword obviously.
-
Need an update of this guide because of the release please !
I just returned to the game after my bot died (refer to my older post), so I'm figuring out what I'm going to do with my new leapslammer. I think it should be generally similar, except for auras. Hatred now has a 60% mana cost, maybe we have to only use the defensive auras.
-
When farming Merc City of Sarn how do you guys deal with the bear trapper?
I feel like he might shit all over my bot.
Edit* Just got to act 3 cruel on my level 47 leap slammer duelist, I feel like its hard for me to do atm. Even with 75 all resist. My life is 1500, 58% DR with grace up.
I started having mana problems with leap slam so i went to 4 link Leap Slam/BM/AddedFire/LifeonHit and I feel like I take to much damage now. Farming Chamber of Sins in A2 Cruel to hopefully get a few levels.
Any tips? I s my gear maybe not good enough?
for city of sarn, you don't need resists. you should focus on life and armor. High armor is the best defense against perpetus. Life regen talents are really strong also, you should not need life on hit support gem, and instead use melee physical damage. killing faster = more survivability as well. Improving your gear though is the easiest thing to do to bot safely.
-
So I set my RMB to Move Only, and the bot just keeps spamming the RMB on mobs like it is trying to attack. Am I missing something?
sounds like your skills config file is not set up properly. make sure your right click is set up 600 max range, and left click max range is 200 range
-
and the insane life regen percentage
-
unfortunately my bot died because it pulled an LMP life regen dog pack near the waypoint before it put on my purity aura
gee gee
-
This used to be an overview of my Leap Slam bot who was comfortably doing Merc Docks on Onslaught. Now it can be used as a guide to botting a leap slammer in Nemesis.
NEW 1.0 TALENT TREE (SCION START)
http://www.pathofexile.com/passive-skil ... L8xf4K_o8=
Scion seems like a very solid start with lots of life/resist nodes as well as berserking nearby, but you could still make duelist/marauder work if you want. Note there are several, good sword talents that are selected, only take those if you use a sword obviously.
GEAR - (currently I don't have much IIQ) Update-go for a Koam's Primacy
All of my gear has been acquired using currency found by botting city of sarn. I also crafted a lot of the 20% quantity jewelry myself because it's hard to find good ones for trade
The weapon I bought for 3 exalts because it has a perfect roll. I see others go for around 2 exalts. These are onslaught prices by the way. If you've been botting for awhile in city of sarn, this should be easily affordable and definitely worth it. You will also have to 4 or 5 link it.
This helm I bought using the poe index mostly for the necessary cold resist that I was lacking for Docks. When searching the index, quantity was the absolute priority followed by life and then cold/fire resists
This chest was 2 chaos from the index. This is the only piece of gear that you are free from the restriction of needing quantity. So you must try to get high armor/evasion, high life, and at least some resists.
Perfect sadimas provide the most quantity you can get on gloves. I paid about 4 chaos. If you can't get these go for some life/resist/quantity armor based rares
Perfect quantity Perandus Blazon--can't get quantity on anything else. Also has necessary fire resist and all attributes. A perfect 12% is worth 3-5 chaos. Other options are Meginord's or a rare, but this build attempts to maximize quantity while still surviving onslaught merc docks.
I paid a small premium for these 2 perfect uniques, but the % IQ go along way if you're doing a lot of botting
There are two options for boots. I found that for running docks, you need run speed because it spends a lot of time searching the empty grid. So I found a very nice pair with 30% move speed and 20% quantity. They also have 45% fire resist to easily replace my 30% quantity Goldwyrm Nubuck boots. I paid 5 chaos for these boots, which I plan on exalting soon, and the Goldwyrm's are 7 chaos for 30%. In my talent tree you will see 'Celerity' for 8% movement speed and 2x mana reservations so that I can run haste (more movement speed).
For my jewelry, I bought an itemlevel 77 sapphire ring and altered it until I got a 20% quantity affix. The second mod doesn't matter that much because 20% quantity is so rare. You can then regal it for another chance at max life. I ended up exalting Golem Loop until I filled up all the slots (with peer pressure from my friends) and got some pretty decent rolls.
I also crafted the ilvl77 amulet. It isn't that good, but I value 20% quantity a lot. I don't think it's quite exalt worthy but it's tempting.
And I bought Skull Nail from the index for around 5 chaos.
GEMS - updated for Nemesis
My current setup: Leap Slam->Blood Magic->Endurance Charge on Melee Stun->Melee Physical OR Added Fire
*Endurance Charge on Melee Stun could be swapped for more damage if you have 'Cast on damage taken' linked with enduring cry (see below).
*Once you have a 5-link, you could use Item Rarity
Note: Item Quantity does not exist in Nemesis. Another thing that is helpful is linking 'Endurance Charge on Melee Stun' to leap slam. You will have 3 charges up for 15% physical reduction pretty much ALL the time. If you get talents for extra endurance charges, you can get 5 charges for 25% reduction. This could replace Item Quantity (because you can't get it on Nemesis)
Updated Aura Setup:
Reduced Mana (at least lvl 11) -> Hatred -> Grace OR Determination
*Reduced Mana at level 11 allows you to run both auras
*Blood Magic linked to Leap Slam so you don't use any mana
*We have enough defense with talents to run Hated which is a huge damage boost
*Use Grace if you have iron reflexes and if it gives more physical reduction, otherwise use Determination
More Gem Options
Additionally, have the bot link the following:
'Cast when damage taken' -> Curse of your choice(perhaps Vulnerability/Enfeeble) -> Molten Shell -> Enduring Cry
It will cast all of these when taking 400 damage or so. This is too good to be true.
FLASKS - outdated script
First of all, I use PoE_AutoFlasks.ahk for flasks and chickening. This means I set my bot config flask settings to 0. I setup my autoflask so that it will spam three 'Seething' flasks when needed and 2 granites when needed. With this setup, my bot is pretty much a god. I find it imperative to have Seething flasks so that you can face tank LMP dogs and keep your health capped off. The following is my autoflask script utilizing 'OverrideFlaskDuration': **You must use 3 'Seething' prefix flasks in your 1-2-3 slots for this to work**
SetBatchLines, -1
DetectHiddenWindows, On
cliname=Path of Exile
cliexe=Client.exe
trayNotifications:=true ;display tray notifications about script actions : drinking potions, autoquitting
autoPotionsWatchdogPeriod:=100 ;milliseconds, decrease this value to have script recheck life/mana/flasks availability more often/increase chances of getting saved from death in time
lagCompensation:=50
autoQuitMode:=1 ; default autoQuit method : 0 =winKill, 1 = exit to login screen
autoQuitPauseBeforeClick:=100
autoQuitSoftToleranceBeforeKill:=2000 ; try to quit to loginscreen at most milliseconds before killing game window(in case we can't quit by clicking menu option for some reason)
PlayerConfig:={}
PlayerConfig["Default"]:={minLifeRatioToDrink: 0.8, minManaRatioToDrink: 0, minManaToDrink: 0, minLifeRatioToPopGranite: 0.85, minLifeRatioToQuit: 0.35} ; disableAutoPotions:true, minLifeRatioToQuit:, minNShieldRatioToQuit: , HasZealotsOath: false, }
PlayerConfig["Default"].FlaskConfig:=[]
PlayerConfig["Default"].FlaskConfig[1]:={Hotkey:"{1 Down 1 UP}", OverrideFlaskDuration:0} ; ,OverrideFlaskDuration:0, instantRecoveryOnLowLife:true, } ;specify override recovery time in deciseconds, e.g. 7 seconds = 70
PlayerConfig["Default"].FlaskConfig[2]:={Hotkey:"{2 Down 2 UP}", OverrideFlaskDuration:0}
PlayerConfig["Default"].FlaskConfig[3]:={Hotkey:"{3 Down 3 UP}", OverrideFlaskDuration:0}
PlayerConfig["Default"].FlaskConfig[4]:={Hotkey:"{4 Down 4 UP}"}
PlayerConfig["Default"].FlaskConfig[5]:={Hotkey:"{5 Down 5 UP}"}
PlayerConfig["YourHardcorePlayerName"]:={minLifeRatioToDrink: 0.7, minManaRatioToDrink: 0.35, minManaToDrink: 70, minLifeRatioToQuit: 0.4}
PlayerConfig["YourHardcorePlayerName"].FlaskConfig:=[]
PlayerConfig["YourHardcorePlayerName"].FlaskConfig[1]:={Hotkey:"{1 Down 1 UP}"}
PlayerConfig["YourHardcorePlayerName"].FlaskConfig[2]:={Hotkey:"{2 Down 2 UP}"}
PlayerConfig["YourHardcorePlayerName"].FlaskConfig[3]:={Hotkey:"{3 Down 3 UP}"}
PlayerConfig["YourHardcorePlayerName"].FlaskConfig[4]:={Hotkey:"{4 Down 4 UP}"}
PlayerConfig["YourHardcorePlayerName"].FlaskConfig[5]:={Hotkey:"{5 Down 5 UP}"}
autoPotionsState:=true
WindowQueuedFlaskEffects:=[] ;keyed by "%hwnd%%CurrPid%", hpQueueEndtime, manaQueueEndtime
baseMgrPtr:=0x71E008 ; 0.11.3b delete for script to try to auto-scan for it in newer versions, scan takes 4-5 seconds
basePtrAoBArray:=[0x6A,0xFF,0x68,"?","?","?","?",0x50,0x64,"?","?","?","?","?","?",0xA1,"?","?","?","?",0x81,0xEC,"?","?","?","?",0x53,0x55,0x56,0x57,0x33,0xFF,0x3B,0xC7]
basePtrAobOffset:=0x10
WindowBasicsCache:=[] ; keyed by "%hwnd%%CurrPid%", entries are objects with properties processHandle, moduleBase, moduleSize, baseFramePtr
#Include AutoHotkeyMemoryLib.ahk
Loop
{
AutoPotions()
}
GetWindowBasics(hwnd, byref mB="", byref pH="", byref mS="")
{
global WindowBasicsCache
global cliexe
WinGet, CurrPid, PID, ahk_id %hwnd%
k="%hwnd%%CurrPid%"
mB:=WindowBasicsCache[k].mBase
mS:=WindowBasicsCache[k].mSize
if mB=
{
WindowBasicsCache[k]:=Object()
GetModuleInfo(cliexe, CurrPid, mB, mS)
if (mB="" || mS="")
{
MsgBox, Failed to obtain moduleBase or moduleSize for PID %CurrPid%, script will now terminate
ExitApp
}
WindowBasicsCache[k].mBase:=mB
WindowBasicsCache[k].mSize:=mS
}
pH:=WindowBasicsCache[k].ProcessHandle
if pH=
{
pH:=GetProcessHandle(CurrPid)
if (pH="" || pH=-1)
{
MsgBox, Invalid process handle obtained for PID %CurrPid%, script will now terminate
ExitApp
}
WindowBasicsCache[k].ProcessHandle:=pH
}
}
ScanBaseMgrPtr(mBase,pH,moduleSize)
{
global basePtrAoBArray
global basePtrAobOffset
global baseMgrPtr
aobResult:=AobScan(pH,mBase,moduleSize,basePtrAoBArray)
if aobResult
{
SetFormat, IntegerFast, hex
baseMgrPtr:=ReadMemUInt(pH,mBase+aobResult+basePtrAobOffset)-mBase
MsgBox, PoE Base ptr found with AoB Scan baseMgrPtr = %baseMgrPtr%, save this value to script for quick startup
SetFormat, IntegerFast, dec
}
else
{
MsgBox, baseMgrPtr not found with AoBScan, script will now terminate
ExitApp
}
}
GetFrameBase(hwnd)
{
global baseMgrPtr
global WindowBasicsCache
WinGet, CurrPid, PID, ahk_id %hwnd%
k="%hwnd%%CurrPid%"
fB:=WindowBasicsCache[k].fBase
if fB=
{
GetWindowBasics(hwnd, mBase, pH, mSize)
if baseMgrPtr=
{
ScanBaseMgrPtr(mBase, pH, mSize)
}
fB:=GetMultilevelPointer(pH,[mBase+baseMgrPtr,4,0x7C,0x94])
WindowBasicsCache[k].fBase:=fB
}
return fB
}
GetUiBase(hwnd)
{
global baseMgrPtr
GetWindowBasics(hwnd, mBase, pH, mSize)
if baseMgrPtr=
{
ScanBaseMgrPtr(mBase, pH, mSize)
}
FrameBase:=GetFrameBase(hwnd)
if (FrameBase="" || FrameBase=0)
return
uiBase:=GetMultilevelPointer(pH,[FrameBase+0x38,0x78,0xA4,0x50])
return uiBase
}
ReadClientResolution(hwnd, ByRef w, ByRef h)
{
GetWindowBasics(hwnd,mBase,pH)
if (mBase!=0 && pH && pH!=-1)
{
FrameBase:=GetFrameBase(hwnd)
w:=ReadMemUInt(pH,FrameBase+0x1340)
h:=ReadMemUInt(pH,FrameBase+0x1344)
return true
}
}
ReadPlayerStats(hwnd, byRef PlayerStats)
{
GetWindowBasics(hwnd, mBase, pH)
fBase:=GetFrameBase(hwnd)
PlayerBase:=GetMultilevelPointer(pH,[fBase+0xb4,0x59C])
PlayerMain:=ReadMemUInt(pH,PlayerBase+4)
PlayerStatsOffset:=ReadMemUInt(pH,PlayerMain+0xC)
PlayerStats.MaxHP:=ReadMemUInt(pH,PlayerStatsOffset+0x50)
PlayerStats.CurrHP:=ReadMemUInt(pH,PlayerStatsOffset+0x54)
PlayerStats.ReservedHPFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x5C)
PlayerStats.ReservedHPPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x60)
PlayerStats.MaxMana:=ReadMemUInt(pH,PlayerStatsOffset+0x74)
PlayerStats.ReservedManaFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x80)
PlayerStats.ReservedManaPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x84)
PlayerStats.CurrMana:=ReadMemUInt(pH,PlayerStatsOffset+0x78)
PlayerStats.MaxNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x98)
PlayerStats.CurrNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x9C)
if (ReadMemUInt(pH, ReadMemUInt(pH,PlayerMain+0x14)+0x24)
PlayerStats.Name:=ReadMemStr(pH, ReadMemUint(pH,PlayerMain+0x14)+0x10,100,"UTF-16") ;immediate name in component
else
PlayerStats.Name:=ReadMemStr(pH, GetMultilevelPointer(pH,[PlayerMain+0x14,0x10]),100,"UTF-16") ; otherwise pointer to name is stored
}
ReadFlasksData(hwnd, byRef FlasksData)
{
GetWindowBasics(hwnd, mBase, pH)
UiBase:=GetUiBase(hwnd)
if (!UiBase) ;not InGame
return
FlaskInvBase:=GetMultilevelPointer(pH,[uiBase+0x8d0,0x8e8,0x28])
Loop, 5
{
currFlaskPtr:=ReadMemUInt(pH,FlaskInvBase+(A_Index-1)*4)
if (currFlaskPtr!=0) ; there's a flask in said slot
{
FlasksData[A_Index]:={}
FlaskChargesPtr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0xC])
FlasksData[A_Index].ChargesCurrent:=ReadMemUInt(pH,FlaskChargesPtr+0xC)
FlasksData[A_Index].ChargesPerUse:=ReadMemUInt(pH,ReadMemUInt(pH,FlaskChargesPtr+8)+0xC)
if (FlasksData[A_Index].ChargesCurrent
continue
FlaskMetadataPtr:=GetMultilevelPointer(ph,[currFlaskPtr,0,8])
FlaskMetadataStr:=ReadMemStr(ph,FlaskMetadataPtr,70,"UTF-16")
FlaskTypeStr:=SubStr(FlaskMetadataStr,23)
FlasksData[A_Index].type:=FlaskTypeStr
FlaskLocalstatsPtr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x18,0x20,0xC])
if InStr(FlaskTypeStr, "Life")
{
FlasksData[A_Index].HPRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+4)
FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0xC)
}
if InStr(FlaskTypeStr, "Mana")
{
FlasksData[A_Index].ManaRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+4)
FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0xC)
}
if InStr(FlaskTypeStr, "Hybrid")
{
FlasksData[A_Index].HPRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+4)
FlasksData[A_Index].ManaRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+0xC)
FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0x14)
}
if InStr(FlaskTypeStr, "FlaskUtility")
{
FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0x4)
}
}
}
}
IsInGame(hwnd)
{
if (hwnd=0 || hwnd="")
return false
GetWindowBasics(hwnd,mBase,pH)
if (mBase="" || mBase=0 || pH="" || pH=-1)
return false
fBase:=GetFrameBase(hwnd)
if (fBase="" || fBase=0)
return false
localConnection:=ReadMemUInt(pH,fBase+0xb8)
if (localConnection=0 || localConnection="")
return false
else
return true
}
SetGameStateMenu(hwnd)
{
if (hwnd=0 || hwnd="")
return false
GetWindowBasics(hwnd,mBase,pH)
if (mBase="" || mBase=0 || pH="" || pH=-1)
return false
fBase:=GetFrameBase(hwnd)
if (fBase="" || fBase=0)
return false
localConnection:=ReadMemUInt(pH,fBase+0xb8)
if (localConnection!="" && localConnection!=0)
{
WriteMemUInt(pH,localConnection+0x1d78,1)
}
}
ReadCursorScreenPosition(hwnd,ByRef cX, ByRef cY)
{
GetWindowBasics(hwnd,mBase,pH)
if (mBase!=0 && pH && pH!=-1)
{
FrameBase:=GetFrameBase(hwnd)
cX:=ReadMemSInt(pH,FrameBase+0x155c)
cY:=ReadMemSInt(pH,FrameBase+0x1560)
return true
}
}
ScreenToClient(hwnd, ByRef x, ByRef y)
{
VarSetCapacity(pt, 8)
NumPut(x, pt, 0)
NumPut(y, pt, 4)
DllCall("ScreenToClient", "uint", hwnd, "uint", &pt)
x := NumGet(pt, 0, "int")
y := NumGet(pt, 4, "int")
VarSetCapacity(pt, 0)
}
GetClientCoords(byRef mx, byRef my)
{
hwnd:=WinActive("A")
CoordMode, Mouse, Screen
MouseGetPos, mx, my
ScreenToClient(hwnd,mx,my) ;get mouse pos relative to window client rect
}
GetFractionalCoords(ByRef fX, ByRef fY)
{
hwnd:=WinActive("A")
if (!IsInGame(hwnd))
GetClientCoords(mx,my)
else
ReadCursorScreenPosition(hwnd,mx,my)
ReadClientResolution(hwnd,w,h)
fX:=mx/w
fY:=my/h
}
GetClientCoordsFromFractional(hwnd, fX,fY, ByRef cX, ByRef cY)
{
ReadClientResolution(hwnd,w,h)
cX:=fX*w
cY:=fY*h
}
QuitToLoginScreen(hwnd)
{
if (!IsInGame(hwnd))
{
return
}
SetGameStateMenu(hwnd)
}
GetMaxChargesFlaskOfType(ByRef FlasksData,TypeStr)
{
currMaxCharges:=0
Loop, 5
if (InStr(FlasksData[A_Index].type,TypeStr))
{
if FlasksData[A_Index].ChargesCurrent>currMaxCharges
{
currMaxI:=A_Index
currMaxCharges:=FlasksData[A_Index].ChargesCurrent
}
}
return currMaxI
}
AutoPotions()
{
global autoPotionsWatchdogPeriod
global lagCompensation
global PlayerConfig
global WindowQueuedFlaskEffects
global cliname
global cliexe
global trayNotifications
global autoQuitMode
if (autoPotionsState!=true)
return
WinGet, WinID, List, %cliname%
Loop, %WinID%
{
WinGet, ProcModuleName, ProcessName, % "ahk_id" WinID%A_Index%
If(ProcModuleName!=cliexe) ; got a window with title "Path of Exile" but exe is not Client.exe, perhaps we have browser window open with PoE site, ignore it
continue
if (!IsInGame(WinID%A_Index%)) ;not ingame
continue
if (WinID%A_Index%=WinActive("A"))
ThisID:=WinActive("A")
PlayerStats:={}
ReadPlayerStats(WinID%A_Index%, PlayerStats)
if (PlayerStats.MaxHP
continue
if (PlayerConfig.HasKey(PlayerStats.Name))
CurrentConfig:=PlayerConfig[PlayerStats.Name]
else
CurrentConfig:=PlayerConfig["Default"]
if PlayerStats.MaxNShield>0
{
currNShieldRatio:=PlayerStats.CurrNShield/PlayerStats.MaxNShield
}
if (PlayerStats.MaxHP>1)
{
currLifeRatio:=PlayerStats.CurrHP/(PlayerStats.MaxHP-PlayerStats.ReservedHPFlat-PlayerStats.MaxHP*PlayerStats.ReservedHPPercent/100)
}
if CurrentConfig.HasZealotsOath
{
currLifeRatio:=currNShieldRatio
}
if (PlayerStats.MaxMana>0)
{
currManaRatio:=PlayerStats.CurrMana/(PlayerStats.MaxMana-PlayerStats.ReservedManaFlat-PlayerStats.MaxMana*PlayerStats.ReservedManaPercent/100)
}
if (currLifeRatio
{
if (autoQuitMode=0)
{
TrayTip, PoE autoPotions AutoQuit by closing window, specified min life reached, %A_Space% , 2
WinKill, % "ahk_id" WinID%A_Index%
}
else if (autoQuitMode=1)
{
QuitToLoginScreen(WinID%A_Index%)
}
autoQuit:=1
continue
}
if (CurrentConfig.disableAutoPotions)
continue
FlasksData:=[]
ReadFlasksData(WinID%A_Index%,FlasksData)
WinGet, CurrPID, PID, % "ahk_id" WinID%A_Index%
hwnd:=WinID%A_Index%
k="%hwnd%%CurrPid%"
if (!WindowQueuedFlaskEffects.HasKey(k))
{
WindowQueuedFlaskEffects[k]:={}
}
if (currLifeRatio
if ((!WindowQueuedFlaskEffects[k].HasKey("graniteQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].graniteQueueEndtime-lagCompensation)))
{
flaskNum:=GetMaxChargesFlaskOfType(FlasksData,"FlaskUtility5") ; granite flask
if (flaskNum!="")
{
if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
else
EffectDuration:=FlasksData[flaskNum].EffectDuration
WindowQueuedFlaskEffects[k].graniteQueueEndtime:=A_TickCount+EffectDuration*100
if (trayNotifications)
{
pname:=PlayerStats.Name
TrayTip, PoE autoPotions popping Granite flask %flaskNum% on %pname%, %A_Space% , 2
}
hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
ControlSend,,%hkey%, % "ahk_id" hwnd
break
}
}
if (currLifeRatio=1)
WindowQueuedFlaskEffects[k].hpQueueEndtime:=A_TickCount
if (currManaRatio=1)
WindowQueuedFlaskEffects[k].ManaQueueEndtime:=A_TickCount
if (currLifeRatio
if ((!WindowQueuedFlaskEffects[k].HasKey("hpQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].hpQueueEndtime-lagCompensation)))
{
tflaskNum1:=GetMaxChargesFlaskOfType(FlasksData,"FlaskLife")
tflaskNum2:=GetMaxChargesFlaskOfType(FlasksData,"FlaskHybrid")
if ((tflaskNum1!=) && (tflaskNum2!=))
flaskNum:=(FlasksData[tflaskNum1].ChargesCurrent>FlasksData[tflaskNum2].ChargesCurrent) ? tflaskNum1 : tflaskNum2
else
{
if (tflaskNum1!="")
flaskNum:=tflaskNum1
if (tflaskNum2!="")
flaskNum:=tflaskNum2
}
if (flaskNum!="")
{
if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
else
EffectDuration:=FlasksData[flaskNum].EffectDuration
if ((CurrentConfig.FlaskConfig[flaskNum].instantRecoveryOnLowLife) && ((PlayerStats.CurrHP/PlayerStats.MaxHP)
EffectDuration:=lagCompensation
WindowQueuedFlaskEffects[k].hpQueueEndtime:=A_TickCount+EffectDuration*100
if (FlasksData[flaskNum].HasKey("ManaRegAmount")) ; hybrid flask
WindowQueuedFlaskEffects[k].ManaQueueEndtime:=A_TickCount+EffectDuration*100
if (trayNotifications)
{
pname:=PlayerStats.Name
TrayTip, PoE autoPotions sipping HP flask %flaskNum% on %pname%, %A_Space% , 2
}
hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
ControlSend,,%hkey%, % "ahk_id" hwnd
break
}
}
if (PlayerStats.MaxMana>0 && (currManaRatio
if ((!WindowQueuedFlaskEffects[k].HasKey("ManaQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].ManaQueueEndtime-lagCompensation)))
{
tflaskNum1:=GetMaxChargesFlaskOfType(FlasksData,"FlaskMana")
tflaskNum2:=GetMaxChargesFlaskOfType(FlasksData,"FlaskHybrid")
if ((tflaskNum1!=) && (tflaskNum2!=))
flaskNum:=(FlasksData[tflaskNum1].ChargesCurrent>FlasksData[tflaskNum2].ChargesCurrent) ? tflaskNum1 : tflaskNum2
else
{
if (tflaskNum1!="")
flaskNum:=tflaskNum1
if (tflaskNum2!="")
flaskNum:=tflaskNum2
}
if (flaskNum!="")
{
if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
{
EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
}
else
EffectDuration:=FlasksData[flaskNum].EffectDuration
if ((CurrentConfig.FlaskConfig[flaskNum].instantRecoveryOnLowLife) && ((PlayerStats.CurrHP/PlayerStats.MaxHP)
EffectDuration:=lagCompensation
WindowQueuedFlaskEffects[k].ManaQueueEndtime:=A_TickCount+EffectDuration*100
if (FlasksData[flaskNum].HasKey("HPRegAmount")) ; hybrid flask
WindowQueuedFlaskEffects[k].hpQueueEndtime:=A_TickCount+EffectDuration*100
hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
if (trayNotifications)
{
pname:=PlayerStats.Name
TrayTip, PoE autoPotions sipping mana flask %flaskNum% on %pname%, %A_Space% , 2
}
ControlSend,,%hkey%, % "ahk_id" hwnd
break
}
}
}
if ((autoQuit=1) && (ThisID!="") && (ThisID!=WinActive("A")))
WinActivate, % "ahk_id" ThisID
Sleep, %autoPotionsWatchdogPeriod%
}
F1::
global autoPotionsState
global trayNotifications
autoPotionsState:=not autoPotionsState
if (trayNotifications)
{
if (autoPotionsState=true)
TrayTip, PoE autoPotions is on, %A_Space% , 2
else
TrayTip, PoE autoPotions is off, %A_Space% , 2
}
return
F2::
GetClientCoords(mx,my)
GetFractionalCoords(fx,fy)
msgbox, mx=%mx% my=%my% fx=%fx% fy=%fy%
return
F4::
QuitToLoginScreen(WinActive("A"))
return
KEY BINDS
·Auras on QWERT
·Leap Slam on left click with a 200 max range
·Move Only on right click with 600 max range
I found this to be the optimal setup
IN SUMMARY
To run docks, you must have capped fire/cold. 81% is what you should aim for with elemental adaptation and a level 20 purity
I focused part of my build on run speed. I think its worth sacrificing a little bit of quantity for it because there's a lot of running in docks.
The flask setup is extremely important. With my PoE_AutoFlask script and 3 seething potions w/ 2 granites, I never even log out with 3.1k hp.
- 1
-
Hey, I set up the bittorrent sync and put in the secret code but nothing seems to be downloading?
-
pepapepa, do you have an ideal build for a character that can run merciless sarn without dying and having a fast clear? I may want to try this on onslaught. It seems that merciless scales way up and becomes much harder.
-
This works surprisingly well
My Merciless Docks 174% IIQ Leap Slammer UPDATED FOR 1.0
in Character builds and strategies & Bot setups
Posted · Report reply
city of sarn normal requires a gear check in order to get passed perpetus. you need 1k life and optimally you want to run a granite flask + determination
you could also link leap slam to 'endurance charge on melee stun' OR run cast when damage taken->enduring cry->decoy totem