SteveTownsend / SmartHarvestSE

AutoHarvest 2 Skyrim SE mod ported to CommonLibSSE
GNU General Public License v3.0
18 stars 7 forks source link

Slow bulk stealing/pickup in Bards College and other dense REFR locations #466

Closed SteveTownsend closed 8 months ago

SteveTownsend commented 8 months ago

Nexus report from Fusion39730 with detailed timings

My settings: Grab absolutely everything. No notification. No steal while standing. Steal if undetected while crouching. Radius inside and outside max - 100 feet Scan time inside and out 1 second. ( I have my movement speed faster than vanilla )

Times ( done with a stopwatch ): Bard's College Solitude ( crouched inside main entrance beside stairs ) 3 minutes 58 seconds

Mistveil Keep Rifton ( crouched at the firepit inside main entrance ) 2 minutes 31 seconds

Dragon's Reach White Run ( crouched at the firepit infront of the throne ) 1 minute 50 seconds

I started with Smart Harvest paused and hit unpause and start timer at the same time. I stopped the timer when the sounds of items being picked up stopped.

I see similar slowness. Some of it is down to overly optimistic handling of OnHarvest timing out, slackened that and blocked REFR with a log if it happens. Detection checking is also super slow, see $463 for info on that.

SteveTownsend commented 8 months ago

A lot of changes here. Still needs more testing. End result using Release build: 27 seconds to loot 446 items in the Bards' College. Start looting Line 12485: 2024-03-21 08:43:35.727 info 21856 SmartHarvest Yngol and the Sea-Ghosts/0x0002a563 for REFR 0x000c85ec, collectible=false, type book, notify false, pending 0 End looting Line 13407: 2024-03-21 08:44:02.031 info 60060 UnlockHarvest OK for REFR 0x00015f56 to 0x00064b32/Eidar Cheese

Fusion5669 commented 8 months ago

I picked a few random items ( corpse outside, white item inside, red item inside, white container inside ). I searched my entire drive for a log and didn't find one. Is there something special I have to do?

Settings: [common:config]

EnableHarvest=1 ; 0 = disabled, 1 = enabled EnableLootContainer=1 ; 0 = disabled, 1 = enabled EnableLootDeadbody=1 ; 0 = disabled, 1 = exclude armor, 3 = exclude underwear, 2 = all

UnencumberedInPlayerHome=0 UnencumberedInCombat=0 UnencumberedIfWeaponDrawn=0

CollectionsEnabled=0 ;0 = collections disabled, 1 = enabled

AdventuresEnabled=0 ;0 = adventures disabled, 1 = enabled

FortuneHuntingEnabled=0 ;0 = fortune hunting disabled, 1 = enabled FortuneHuntItem=0 FortuneHuntNPC=0 FortuneHuntContainer=0 ; granular settings only relevant if main toggle is enabled

UnlockGlowColours=0 ;0 = cannot alter glow colours, 1 = allowed to alter

;Be sure each part of the mod is enabled. ;Hotkeys mapped as DX Scan codes per https://www.creationkit.com/index.php?title=Input_Script#DXScanCodes ;Pause default key [G] PauseHotkeyCode=34 ;WhiteList default key [U] WhiteListHotkeycode=22 ;BlackList default key [K] BlackListHotkeycode=37

; Is Population Center looting prevented? ; Keywords determine LCTN category. ; You can also fine-tune allowed locations with BlackList. ; 0 = No Limits ; 1 = Settlements ; 2 = Towns and Settlements ; 3 = Cities, Towns and Settlements PreventPopulationCenterLooting=1 ; 0 = off, 1 = on. Turn on to notify of Location change affecting auto-loot permissions NotifyLocationChange=1

; Glow color defaults ; 0=red ; 1=flames ; 2=purple ; 3=copper ; 4=gold ; 5=blue ; 6=green ; 7=silver [common:glow] Locked=0 Boss=1 Quest=2 Collectible=3 Valuable=4 Enchanted=5 PlayerOwned=6 SimpleTarget=7

[smartharvest:config] ; External cell outdoors scan is more costly as we have to check adjacent cells, so increase distance and poll less ; Horse sprint speed is 28.1 feet per second per http://en.uesp.net/wiki/Skyrim:Transport RadiusFeet=45 IntervalSeconds=1.2 ; Internal cell (indoors) scan is less costly as we don't have to check adjacent cells, but can break immersion with too large ; a radius, scanning adjacent (not yet entered) rooms including but not limited to chests behind locked doors ; Indoor max speed is foot sprint, 23.4 feet per second IndoorsRadiusFeet=25 IndoorsIntervalSeconds=0.6

DisableInCombat=0 ;Only 2 options, 0 = pick up always, 1 = don't pick up, DisableDrawingWeapon=0 ;Only 2 options, 0 = pick up always, 1 = don't pick up, DisableWhileConcealed=1 ;Only 2 options while invisible or ethereal, 0 = pick up always, 1 = don't pick up,

CrimeCheckNotSneaking=1 ;3 options, 0 = steal if undetected, 1 = pick up if not a crime, 2 = pick up ownerless only CrimeCheckSneaking=1 ;3 options, 0 = steal if undetected, 1 = pick up if not a crime, 2 = pick up ownerless only

QuestObjectLoot=1 ;0 = don't pick up, 1 = glow

LockedChestLoot=2 ;0 = don't pick up, 1 = pick up, 2 = glow, 3 = loot once unlocked BossChestLoot=2 ;0 = don't pick up, 1 = pick up, 2 = glow

EnchantedItemLoot=1 ;0 = don't pick up, 1 = pick up, 2 = glow

ValuableItemLoot=1 ;0 = don't pick up, 1 = pick up, 2 = glow ValuableItemThreshold=500 ;Minimum value of item required to qualify as "Valuable"

PlayerBelongingsLoot=0 ;0 = don't pick up, 1 = pick up, 2 = glow PlayContainerAnimation=2 ;0 = don't play, 1 = play, 2 = glow briefly

;Inform about manually-lootable targets ManualLootTargetNotify=1

;Inform about looting of whitelisted targets WhiteListTargetNotify=0

;If no value/weight set for an item type, collect if >= this valueWeightDefault=10.0 ;Limit on mined ore, to prevent over-mining of Player House building materials maxMiningItems=8 ;Are tools required to mine ore and other resources? miningToolsRequired=0 ;Disallow mining while sneaking disallowMiningIfSneaking=0

;Limit vertical looting to this muliplier of IndoorsRadiusFeet/RadiusFeet VerticalRadiusFactor=1.0 ;0 = no restriction, 1 = do not loot anything further away than nearest door DoorsPreventLooting=0 ;0 = disallow in-settlement harvesting and V/W looting, 1 = allow LootAllowedItemsInSettlement=1 ;0 = disallow player house harvesting and V/W looting, 1 = allow LootAllowedItemsInPlayerHouse=0

;If excess inventory is auto-sold, get this % of item value SaleValuePercent=25.0

;0 = no special handling, 1 = always pick up UnknownIngredientLoot=0

; Excess inventory handling for Crafting Items ; main toggle 0/1 HandleExcessCraftingItems=0 ; how to handle crafting excess CraftingItemsExcessHandling=0 CraftingItemsExcessCount=0 CraftingItemsExcessWeight=0.0

; Allowed values for item category collection ;xxx=0 (xxx won't be picked up) ;xxx=1 (xxx will be picked up with no value-weight check WITHOUT notifying you) ;xxx=2 (xxx will be picked up with no value-weight check and you'll be notified) ;xxx=3 (xxx will be picked up if value-weight check passes WITHOUT notifying you) ;xxx=4 (xxx will be picked up if value-weight check passes and you'll be notified) ; For flora and critter this is either 0 or 1. Granular checks are done on their Lootable item [smartharvest:itemObjects] flora=1 critter=1 ingredient=1 septims=1 gem=3 lockpick=1 animalHide=1 oreIngot=1 soulgem=3 key=2 clutter=3 book=2 spellbook=2 skillbook=2 bookRead=3 spellbookRead=3 skillbookRead=3 scroll=3 ammo=1 weapon=3 enchantedWeapon=4 armor=3 enchantedArmor=4 jewelry=3 enchantedJewelry=4 potion=3 poison=3 food=3 drink=3 ; special case: 0 = do not take; 1 = take if not Clay/Quarried Stone; 2 = take all oreVein=1

; Value/Weight (V/W) ratios per item category, assuming collection allowed by smartharvest:itemObjects and other rules ; = 0.0 -> No V/W check, always collect ; >= 0.1 -> collect only if V/W >= config setting ; Excludes weightless items key, lockpick, oreVein, septims and ammo ; 'Immersive Jewelry SSE' makes septims have weight but that won't be checked. Other mods may also assign item weight where we assume none. ; oreVeins are assumed weightless for simplicity. "Mine or Not Mine, there is no Try." ; affecting items we assume weightless [smartharvest:valueWeight] CheckWeightlessValue=0 WeightlessMinimumValue=10 ;Minimum value of weightless item required to pass V/W check: toggle and threshold flora=0.0 critter=0.0 ingredient=0.0 gem=0.0 animalHide=0.0 ; exclude Dwemer heavyweights oreIngot=3.0 soulgem=0.0 clutter=0.0 book=0.0 spellbook=0.0 skillbook=0.0 bookRead=0.0 spellbookRead=0.0 skillbookRead=0.0 scroll=0.0 ; for arrows this represents an absolute threshold value, with value representing the arrow's damage ammo=0.0 weapon=0.0 enchantedWeapon=0.0 armor=0.0 enchantedArmor=0.0 jewelry=0.0 enchantedJewelry=0.0 potion=0.0 poison=0.0 food=0.0 drink=0.0

; Excess inventory handling by category - values not in the master are unsupported ; default is leave behind, if any limit is enabled ; Saving settings containing values other than 0 (Leave behind) or 1 (convert to septims) is unreliable ; because other values map to loot transfer targets in the MCM [smartharvest:excessHandling] ammo=0 animalHide=0 armor=0 book=0 clutter=0 drink=0 food=0 gem=0 ingredient=0 jewelry=0 lockpick=0 oreIngot=0 poison=0 potion=0 scroll=0 septims=0 soulgem=0 key=0 weapon=0

; Item count limits by category - values not in the master are unsupported [smartharvest:maxItems] ammo=0 animalHide=0 armor=0 book=0 clutter=0 drink=0 food=0 gem=0 ingredient=0 jewelry=0 lockpick=0 oreIngot=0 poison=0 potion=0 scroll=0 septims=0 soulgem=0 key=0 weapon=0

; Item weight limits by category - values not in the master are unsupported [smartharvest:maxWeight] ammo=0 animalHide=0 armor=0 book=0 clutter=0 drink=0 food=0 gem=0 ingredient=0 jewelry=0 lockpick=0 oreIngot=0 poison=0 potion=0 scroll=0 septims=0 soulgem=0 key=0 weapon=0

ScreenShot0 ScreenShot1 ScreenShot2 ScreenShot3

Fusion5669 commented 8 months ago

Oh the corpse was in Markarth and the other 3 were in the tavern in Markarth. I can't remember the name.

SteveTownsend commented 8 months ago

Please try v5.6.4, the last couple of point releases were sketchy, this will work better. Might be more to fix, though. A lot of high-impact changes the past few weeks.

On Tue, Mar 26, 2024 at 3:52 PM Fusion5669 @.***> wrote:

Oh the corpse was in Markarth and the other 3 were in the tavern in Markarth. I can't remember the name.

— Reply to this email directly, view it on GitHub https://github.com/SteveTownsend/SmartHarvestSE/issues/466#issuecomment-2021340759, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADRDNC4GC5RA2H4SFPC4I6TY2HGZBAVCNFSM6AAAAABE4XEPQ2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRRGM2DANZVHE . You are receiving this because you modified the open/close state.Message ID: @.***>

Fusion5669 commented 8 months ago

v5.6.4 is working exactly like v5.5.2. I'm not asking you to go through these but they do use some of the same files. Do you see something that you know conflicts?

ConsoleUtilSSE NG https://www.nexusmods.com/skyrimspecialedition/mods/76649

powerofthree's Papyrus Extender https://www.nexusmods.com/skyrimspecialedition/mods/22854

PapyrusUtil SE - Modders Scripting Utility Functions https://www.nexusmods.com/skyrimspecialedition/mods/13048

powerofthree's Tweaks https://www.nexusmods.com/skyrimspecialedition/mods/51073

Everything else in my load out is cosmetic or simple tweaks except for the file required by your mod. My loot speed is still about half of what I originally posted. I know the problem is on my end and not your mod but I can't figure out what.

Fusion5669 commented 8 months ago

Just for your information. Everything else was looted, both red and white.

ScreenShot4