I've made a couple small changes that have increased the reliability of skinning greatly for me, basically adding two pauses to wait for corpses to become lootable and skinnable and a couple other small changes. They compensate for a slow system or connection or server lag.
In Kbot.iss I changed the KB_TOGGLEBUFF routine to always go to KB_REST:
Code:
case KB_TOGGLEBUFF
call ToggleBuffs
; changed to go right to rest routine by brig
; if ${Me.HealthPct} < ${restHealthPct} || ${Me.EndurancePct} < ${restEndurancePct} || ${Me.EnergyPct} < ${restEnergyPct}
;{
cState:Set[KB_REST]
;}
;else
;{
; cState:Set[KB_CORPSECHECK]
;}
break
In KBot.iss I commented out the first Corpsecheck in KB_REST:
Code:
case KB_REST
; first see if there are corpses to loot
; commented out first corpsecheck by brig
;call CorpseCheck
;if ${Return.Equal[LOOT]}
;{
; cState:Set[KB_LOOT]
; return
;}
In KBot.iss in KB_REST I cut spud's bard rest song lines:
Code:
;begin add spud
if ${Me.Class.Equal[Bard]}
call PlayBardSong "Rest"
;end add spud
and moved them down a few lines to remove unnecessary instrument switching caused by another of my changes (only matters if you're a bard):
Code:
call DebugIt ". Need to rest up, downtime loop started..."
isSitting:Set[FALSE]
;Moved song change inside health check by brig
;begin add spud
if ${Me.Class.Equal[Bard]}
call PlayBardSong "Rest"
;end add spud
do
Also in the KBot.iss KB_REST routine I added a two second pause if skinning is on:
Code:
call CombatHeal
; begin add by brig
if ${doSkinMobs}
{
call DebugIt ". Added 2 second wait in Rest routine after mob dies"
wait 20
}
; end add by brig
; Rest up for next fight?
In KBot.iss I changed the KB_SKIN routine to check for corpses again after skinning instead of starting to roam again after the first successful skin:
Code:
case KB_SKIN
if ${doSkinMobs}
{
call skinCorpse
tTimeOut:Set[${Time.Timestamp}]
}
; changed by brig from move to corpsecheck again
; cState:Set[KB_MOVE]
cState:Set[KB_CORPSECHECK]
break
Then in the Common/KBfunctions.iss file I added another 2 second pause in the lootcorpses function after looting something:
Code:
call DebugIt ". Looting ${Me.Target}"
Me.Target:LootAll
wait 5
; begin add by brig
if ${doSkinMobs}
{
call DebugIt ". Added 2 second wait in lootcorpse routine after looting"
wait 20
}
; end add by brig
Then in Common/KBfunctions.iss I changed the hard 10 meter limit to move to a corpse for skinning to the dynamic loot corpses distance (otherwise any skinnable corpse over 10 but less than your loot corpses distance would cause the script to hang)
Code:
; Changed max moveto distance from 10 to ${maxLootDistance} by brig
if ${doSkinMobs} && ${Me.Target.Type.Equal[Corpse]} && ${Me.Target.IsHarvestable} && ${Me.Target.Distance} < ${maxLootDistance} && !${Me.Target.Name.Find[remains]}
{
;Move to the corpse if you're not close
I personally set the Loot Corpses variable in the UI to 25. Occasionally long lag will still cause the bot to skip looting or skinning, but as long as you haven't gone more than 25 meters away chasing mobs, you'll go back and loot or skin them afterwards.
I'm not a programmer, but the changes seem to help alot.