• Visit Rebornbuddy
  • Funky Bot

    Discussion in 'Combat Routines' started by herbfunk, Oct 27, 2013.

    1. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      Funky Bot
      A fully developed Bot that does combat, looting, and other actions! This is similar to Trinity and will not work together.

      • Cache - Objects, Collections, and Methods all redesigned to be optimal in performance and minimal in redundancies.
      • Avoidance -- New System to quickly find a location, optimized using blocking checks with directional.
      • Clustering -- True Clusters, implemented into Targeting and Skills.
      • Skills - with conditional properties for combat, buffing, and movement. Every skill is derived into its own object.
      • Targeting - Avoidance, Fleeing, Grouping, Line of Sight Movement are some of the behaviors implemented already.
      • Adventure Mode Support - Automatically adjusts behavior based on current bounty or rift!
      • Plus Many More Features!
      • No Multi-threading! Kept a single thread design -- with Reduced CPU and Memory usage!


      Installing FunkyBot
      1. Download the zip and extract the contained folders into Demonbuddy\Plugins\ Folder.

      Edit Last Used Routine
      Make sure the last used routine is "Funky"

      Enable the Plugins
      Make sure to enable both fBaseXtensions and fItemPlugin.

      Setting up the Bot
      There are two ways to access the Funky Settings Window!
      If you do not see the Funky Button, you can initialize it by clicking Settings Drop Menu and Clicking Combat Routine.
      Demonbuddy Settings are implemented so make sure you enable them too.


      Things You Need!

      QuestTools may be required for the profiles you use!


      GitHub Links
      Master URL (Thanks to ArrowCircle)
      Master Zip Archive
      Note you can check the latest and full log of changes made on GitHub!
      Latest Version Changes:
      [FONT=Arial Black][SIZE=5]v2.11.2.1[/SIZE][/FONT]
      [I][B]*Requires Fresh Install (Deleting previous Funky Folder!)[/B][/I]
      	Blessed Hammer will be used on any unit when no Primary Skill is present
      	Provoke will be used more frequently.
      	Akarats Champion will be used on clusters of 4 with Full Akkhan Set Bonus
      	Cyclone strike now uses minimum distance on single target conditions.
      	Epiphany will be used on non-normal units now.
      	Dashing Strike now checks for ROTS Set Bonus and adds additional critiera to use more often.
      	Added Rainments Thousand Storms (5/6) Set (missing gloves)
      	Added new Check for gear changes which will trigger a refresh.
      	Fixed the ignoring of Globes.
      	Slime Gysers in Act 2 now use a static position to help with LOS testing.
      	Added Hotbar Skill check for changes which will trigger a refresh.
      Skill and Skill Objects
      	Following Properties are now defined in the class and not during initalize method.
      		-UsageType, ExecutionType, IsProjectile, IsRanged, IsBuff, IsMovement, IsPrimarySkill, IsDestructiblePower, 
      	Initalize Method is no longer called during creation of a skill.
      	Removed override of RuneIndex and Equals from skills.
      Skill Single Unit Condition now has a optional Minimum Distance property.
      Added Death Skill Cooldown waiting options.
      Added Death Settings under General Tab.
      Added Pylons to ShrineTypes. (Should no longer ignore if Empowered is unchecked.)
      Added additional Cursed Shrine SNOId that was missing.
      	Added Poison Immunity Item Check.
      	Added Akkhan Set to EquippedTypes.
      	Added Starmetal Kukri Witch Doctor Dagger.
      	Exploding Palm now using ShouldTrack property.
      	Dashing Strike now usable as special movement (in/out of combat)
      Witch Doctor 
      	Big Bad Voodoo will be used more frequently with Starmetal Kukri equipped.
      	Archon Disintegration Wave now uses Minimum Distance of 10 yards for units.
      [B]FunkyBot has been Converted into a Combat Routine and is no longer a Plugin![/B]
      [B]Town Run behavior has been extracted from FunkyBot into a new separate plugin![/B]
      [*]Town Portaling and Horadric Cache Interaction still remain in FunkyBot.
      [*]Item Rules has been removed.
      [*]Pick Up settings are found in Item Tab which includes options for all quality types.
      	Encapsuled LOSMovement Settings in ProfileCache. (same as ClusterSettings)
      	LOSMovement will not occur for Adventure Mode if current tag is not ExploreTag.
      	Added Equipped Item Check for Piro Marella (Reduced Shield Bash Cost)
      	Sweep Attack used on any unit when energy is above 50%
      	Shield Bash used on any unit when energy is above 90% or 20% with Piro Marella equipped.
      	Added new Skiils for Cold/Fire/Lightning variations of Archon.
      	Archon will only activate on Non-Normal units (Combustion will on 10+ units also)
      	Fixed Refresh Archon Checking.
      	Archon Slow Time will be cast only once now.
      	Swift Steed with Rune Ramming Speed or Nightmare will be used offensively.
      	Swift Steed now used as Out of Combat Movement skill.
      	Fist of Heavens will be used on any target when energy is above 50%
      	Akarats Champion will be used on any non-normal unit or clusters of 10+ units.
      	Phalanx will be used on any target with 95% health or less.
      Witch Doctor
      	Check for Tall Man Finger to prevent recasting Zombie Dogs.
      	Haunt and Locust Swarm modified to be used more frequently and logically.
      	Piranhas will also be used on any target when energy is above 90%
      	Fixed Spirit Walk as Out of Combat Movement skill.
      	Fixed issue with gambling not recognizing last item type when multiple types were given
      	"Open World" bosses will no longer be ignored due to cluster logic.
      	Added Illusionary Boots check for Monster Collision ignoring.
      	Demon hunter companion skill updated for active support.
      	Removed plugin pickup settings and evaluation code. (Item rules, no rule equals no pickup! *Armor/Weapon/Jewelery*)
      	Added Act 4 Destroyer Drop to avoidances.
      	Added Boss to LOS movement. (Only when explore tag is used!)
      	Added Demon Hunter Sentry to pet data.
      	Added Witch Doctor Fetish to pet data.
      	Demon Hunter Sentry has been updated!
      	Witch Doctor Fetish Army now recongizes Zunimassa five set.
      	Added new File Equipment and property equipment to CharacterCache.
      	Added Bottomless Potion recongization and usage. (3/6 IDs)
      	End of town runs will reset gold inactivity and update MGP.
      Town Run:
      	Idenification Behavior will only manually ID a single item, otherwise it will use book of cain.
      	Fixed Town Run Gambling not showing checkboxes for certain item types.
      	Legendary Idenification setting added under Town Run tab. (Disabled by Default)
      	Barb Bash now modifies range if using pulverize rune.
      	Barb HOTA now used on normal tagets when energy is above 80%
      	Line of Sight movement will no longer backtrack.
      	Added Ghoms Posion Cloud to Avoidances.
      	Corruptant Growths no longer ignore LOS.
      	Game Stats now also generated in Funky Window under Misc tab.
      	Profiles that Disable Combat will be obeyed when unit is not prioritized.
              Gold Inactivity will reset and reload first profile as intended.
      	Wizard Energy Armor use will reset Max Energy in Character Cache.
      	Witch Doctor Acid Cloud/Grasp will be used on single targets when energy is above 90% and target is not low HP.
      	Witch Doctor Summon Zombie Dogs now checks Fierce Loyality Passive.
      	Crusader Primary Skills priority is now Low (was none).
      	Getting a Destructible skill will now check if default attack is usable.
      	Fixed Issue with Multiple Conditions not working after first condition failed!
      	Player Mover will now check skip ahead cache during ExploreDungeon profile behavior.
      	Added OnLevelUp Event for characters under level 70, recreates player class after leveling up.
      	Low Level Settings will now use Soft Rules (pickup all items).
      	Junk Log will no longer create log file outside of Account Folder.
      	Gambling Mojo item type should work now.
      	Added IsRegularPotion to CacheACDItem and BalanceCache.
      	Conduit Pylon buff will set minimum range to 20 for units.
      	Interactables should pass LOS testing more often!
      	Cursed Chests should trigger wait properly.
      	Removed ItemRules Salvage Rules.
      	Added Salvage Settings into Town Run Tab. (None/All/ROS Only are valid options for white/magic/rare/legendary)
      	Overhauled the Settings Window into a actual windows Form.. although it might be ugly, changes will be easy with the designer.
      	Added Keystone Fragments to Item Pickup settings.
      	Gold Inactivity set to Zero will no longer be tripped.
      	Added A5 Avodiances for Adria and Malthael ground.
      	Added Trinties A5 Blacklisting IDs.
      	Merged the "Object" blacklist into a single collection.
      	Removed IgnoreLOSCheckSNO Collection, IgnoresLOSChecks are bosses only now!
      	Object and Unit ID Cache class have been overhauled. 
      	Added GizmoIsDisabled and check to exclude from targeting.
      	Event switches now capable of Line of Sight movement.
      	Fixed Adria not showing up as potential target.
      	Character Max Energy added to fix issue with DB max energy returning wrong values.
      	Added IsFriendly to CacheUnit and Hashset for NPC SNO's not to ignore.
      	Added IsVendorBought to ACDItem and Checks into Salvage/Sell routine.
      	Kill bounties will only navigate markers on last levels.
      	Added Act 5 Kill Bounties.
      	Added Profile Stat for # Completed Bounties.
      	Added ShouldTrack property to skill.
      	ShouldTrack will add/update entries on the object it was used for.
      	Witch Doctor: Modified Haunt, Lotus Swarm, Spirit Barge, Pirhanas, Zombie Dogs.
      	Act 5 Salvaging should not get stuck anymore when at stash.
      Known Issues:
      	Mule behavior cannot change hero. (Demonbuddy function failure)
      	Avoidance during Malthael isn't working.
      	Added teleport to avoidance cache types. (Is disabled by default)
      	Quest Monsters will use minimum of 200 kill radius.
      	Cursed Chests and Shrines should always stay put while it exists.
      Town Run:
      	Gambling is now capable of all item types.
      	Added A4 Bounty Cache Entries.
      	Line of Sight behavior for bounty markers will check if quest is active and will no longer start when it shouldn't.
      	Fixed issue with player class creation throwing error when a passive ability that reduced cooldowns existed.
      	All Primary Skills have been modified to remove any type of delay.
      	Plugin Initialize will now set Funky as the combat routine.
      	Player Mover now checks if distance is very close.
      Player Class Creation checks Blackthorne's Avoidance Immune Bonus. 
      	&& (Checks for Ring of Grandeur for Reduced Set Bonus)
      Item Loot Checking Updated and Should work again. (Uses GamebalanceID and Quality to match item looted)
      Reduced Gambling Item Wait.
      Added Bounty to Logger Types.
      Adventure Mode:
      	Added Setting AdventuringMode which determines if the plugin will check bounty or not.
      		*Plugin Setting that tracks active bounty and modifies combat behavior using found cache value.
      		*A Cache Entry consists of a Name, Type, StartLevelID with options for EndLevelID, KillCount, and AdditionalLevelIds that are inbetween Start and End.
      		*Act 1 Cache for Kill/Clear/CursedEvents have been added only!
      		*Act1 Cache File can be found @ "/Game/Bounty/BountyCache/"
      		*Act3 Cache File Started (Majority Kill Types done) -- still need to do Clear/CursedEvent types.
      	No longer ignores Gizmo Switches that are not Cursed Chest/Shrines.
      	Removed TargetProperties.IsSpecial from all SingleTargetConditions. 
      	Barbarian Leap Cluster Unit Count Increased to 4 from 2.
      	Barbarian HoA Cluster Unit Count Increased to 3 from 2.
      	Bug: Gambling Behavior only valid for Weapon Items. (i.e. the first tab of the vendor!)
      Town Run:
      	Added Option to Stash Horadric Cache.
      	Added New Interaction Behavior to Open Horadric Cache.
      	Added New Gambling Behavior to Spend Blood Shards.
      	Added Bloodsprings to Avoidances.
      Adventure Mode:
      	Added Option to Navigate to Points of Interest. (Experimental for Adventure Mode)
      XML Tags:
      	Removed Trinity Related Tags. (QuestTools)
      	Added support for AkaratsChampion, Bombardment, FistOfTheHeavens, HeavensFury, Phalanx for Crusader.
      	Recompiling Funky will now disable plugins prior.
      	Added Soft Rules Again (For Leveling)
      	Added CacheObjectIDs class with XML loading. (Cache/Dictionaries/SNOId_Cache_Objects.xml)
      	Gizmos will check CacheObjectIDs first before getting GizmoType from DiaGizmo.
      	UpdateBounties now refreshes quest states too.
      	Line of Sight Movement now validates object is still valid for targeting. (Fixed bug with containers)
      Town Run:
      	Added check for in-game and valid actor into behaviors. (So it will stop when its not in game!)
      	FunkyWaypoint now checks and changes the map to the valid area when using waypoints.
      	TrinityExploreDungeon now Caches Ignored Areas.
      	Added HasQuestAndStep Tag from Trinity.
      	Updated TrinityExploreDungeon with newest Until Types.
      	Updated MinimapMarker Class according to Trinity.
      	Added TrinitySetQuesting Tag: This enables monster quest property refreshing which prioritizes quest monsters.
      	Updated Rare Rules using ShutteR's.
      	Common Crafting Items now have Armor or DPS to eliminate inferior items.
      	Added Knockback Animations to Crusader Class.
      	Knockback Animation Sets are separated by male/female.
      	Started on Crusader Skills...
      	Added Line of Sight option for Cursed Chests/Shrines.
      	Changed both Single and Cluster conditions to Lists allowing multiple criterias to be tested.
      		PrioritizeScene has optional Minimum Distance before attempting navigation. (minDistance="125")
      		Optimized Priority and Ignored Scene Checking.
      		Fixed Bounty Checks when it shouldn't occur.
      		Added support for stayAfterBounty.
      		Added new until option: BountyCompleted (args: bountyId)
      	FunkyWaypoint will now toggle waypoint map prior to teleporting.
      	FunkyBountyLoad now sets Current Bounty SNO ID when successful.
      	FunkyBountyRefresh now has optional reset parameter to set Current Bounty SNO ID to 0.
      	Added HaveBounty and ActBountiesComplete tags from Trinity.
      	Pools of Reflection, Cursed Chest, Cursed Shrine and Potion Range Settings added.
      	Gold Inactivity Timeout Added to General.
      	Marquise Gem Quality added to Pickup Settings.
      	Cursed Chest Support Added.
      	Demon Hunter Vengeance Skill Added.
      	Crusader Skills Added Again.. (But not setup!)
      	Line of Sight tests use Melee Vector for CacheObjects.
      	Added Horadric Cache support.
      	Stats now include key fragments and horadric cache.
      	Added Bounty Cache.
      	Barbarian Avalanche skill added.
      	Act 1 Town Runs should work properly again!
      	Monk Epiphany Support Added. (Cluster of 13+ units)
      Bounty Support:
      	New Tags:
      		FunkyBountyLoad (Bounty ID match that is not yet completed and loads a profile)
      		FunkyBountyRefresh (Refreshes Bounty Cache)
      		FunkyWaypoint (Uses waypoint non-gizmo Map Style)
      	Act 1 Bounty Profiles Added. (Some self made others copied )
      Stuck Count of 2 will use navigator to find unstuck pos
      Added Meteor Impact to Avoidances.
      Modified default radius/health for Thunderstorm, Frozen Pulse.
      Cursed Shrines support added.
      Line of Sight:
      Enabled by default now.
      Added TargetProperty Normal.
      Added new setting for Crafting Material Pickup.
      Support for Exploding Palm, Cyclone Strike, and Seven Sided Strike added.
      Added Temp Summon Portal (arreat crater) to blacklist.
      Added a3 NPC to blacklist.
      ItemRules now pickup Magical and Rare items.
      Removed Soft Rules from ItemRules.
      Updated code and namespaces to be compatable with new Demonbuddy and Diablo changes.
      -Updated Gizmos to recongize Pool of Reflection and Power Globes.
      -Diamond Gems are now recongized, new setting added.
      Town Runs:
      -Adjusted the salvage location for Act 1 to avoid getting stuck on the little chest!
      -Re-Enabled Custom ID behavior, Removed Finish Behavior.
      Item Rules:
      -Adjusted Hard Rules to pickup all salvagable items.
      -Added Gold Inactivity check that restarts game after 3 mintues of no change.
      -Item Pickup Evaluation is now an event that can be hooked with custom code.
      -Destructibles once again check animation for valid targeting.
      -Item loot confirmation now checks stack quanity when neccessary.
      -Target Property IsMissileReflecting now checks target Animation State.
      -Fixed exceptions causing bot to stop!
              -Townruns will no longer sell potions on new bot start.
              -Added null check when removing object from cache during update.
                      -Added namespace DBHandlers
                      -Player namespace now contains all related game character classes.
                      -Abilities renamed to Skills and moved under HotBar namespace.
                      -Precast and Target conditions now create criteria inside class constructor.
                      -Added additional constructor to Precast and Target condition to allow custom criteria.
      -Reverted back to old TrinityMoveTo.
      -Added cache for tracking server interactable objects such as portals.
      -Interactive Behavior Tags such as UseObject will now attempt to move to the object using the cache.
      Witch Doctor:
      -Updated Sacrifice to use every 27 seconds or whenever zombie dogs is castable.
      -Horrify with Armor Buff rune will now maintain it when able.
      -Added Setting Allow Default Attack Always -- this will ignore the fact that it shouldn't use default attack.
      Profile Stats:
      -Complete overhaul to the stat tracking code.
      -Item stats now include Dropped/Looted/Stashed/Vendored/Salvaged
      Avoid & Flee:
      -Behavior for both avoidance and fleeing has been improved.
      -New settings tab for Fleeing now available in the Combat Tab.
      -New settings tab for Line of Sight Behavior now available in the Targeting Tab.
      -Added Monk Class Setting -- Maintain Sweeping Winds.
      -Out of Combat Profile Behaviors that are intractive will move back if combat movement occured.
      -Incapacitated Bot will now wait during Target Handler! (Fixes the ignorance of units)
      -Fixed TrinityMoveTo and TrinityExploreDungeon XML Tags!
      Line Of Sight Behavior:
      -Is now disabled by default! (to enable -> Funky Settings Advanced tab)
      -Fixed validation of object (should no longer get stuck!)
      -Units that are allowed is now based on IsSpecial (I.E. Targeting -> Unit Exceptions)
      -Added setting for Low HP Unit Max Distance Allowed. (used with Unit Exception Low HP <=25%)
      -New Game Event now clears TrinityLoadOnce UsedProfile List.
      -Healthwells no longer ignored due to health.
      -Added fixed collision radius values for large objects. (should help with avoidance movement)
      -Funky Townportal now generates random movements!
      -Added Female Zombies to Spawner ID Lookup.
      -Bot now recongizes Major Health Potions.
      -Fixed town run sell behavior bug where no potions existed in backpack.
      -Item Looting should no longer be hit or miss.
      -Fixed Shrines being reused when they shouldn't be.
      -Reduced the time of interaction for Interactable Gizmos.
      -Monk Breath of Light updated for non-buff versions of the skill.
      -Line of sight checking for ranged abilities should no longer ignore "transforming" units.
      -Added IsChanneling Property (this will allow buffs to be used during target handling)
      Line of Sight Behavior:
      -Added Blacklist of previous objects.
      -Rare chests are now capable of being used as the target. (when Increase Range for Rare Chests is enabled)
      -Units capable of being selected is now limited to Rare/Elites/Uniques/Goblins
      Demon Hunter:
      -Modified Spike trap criteria.
      -Added Townrun Movement hook to reduce the lag trying to travel back to the townportal.
      -Fixed Stats (Keys are now counted, Death/Game counter are now accurate)
      -Item objects now use 2D to check distance.
      -Avoidance behavior no longer checks time in the conditional property.
      -Added Death treehook (BotEvents -> Death.cs). This does not override the DB behavior but is used prior to the DB behavior.
      -Character CurrentHitPointsPct event added when Value Changes.
      -Character CurrentLevelID event added when Value Changes.
      ErrorClicker Plugin:
      -Added new plugin to deal with Error Dialogs.
      Line of Sight Behavior:
      -New behavior that will move towards special units that have not passed Line of Sight check.
      -This behavior only activates when no target has been found.
      -Added new setting for Prioritize Close Range Units.
      -Fixed issue with triggering during update of objects.
      -Added trigger check for Spores/Grotesque.
      -Range Classes check against possible units with nearby avoidances has been fixed.
      -Target condition checks if unit is targetable+attackable.
      -Range ability now checks if unit is "flying/hover" when AllowProjectile fails.
      -Improved preformance of inventory cache update.
      -Improved preformance of town run behavior.
      -Added handler for OnProfileLoaded Event, replaces old check method used.
      -Moved Player Folder Contents into Character Folder. (Player Class and Abilities)
      -Player Class:
      	-Removed LOSConditions Property.
      	-Constructor no longer requires ActorClass as a parameter, and all dereived classes now set the AC property.
      	-Fixed Barbarian IsMelee property (was false :X)
      -Renamed the plugin to FunkyBot (since its not really a trinity plugin anymore!)
      -Added LowLevel default settings.
      -Disabled fleeing for InfernoRanged default setting.
      -Renamed ability to Ability, Namespace Ability to AbilityFunky.
      -Added FCombatMovement and FOutOfCombatMovement Criterias, updated abilities that used them, and replaced old "Special Movement" code in Target Movement and Player Mover.
      -Modified the weighting of units for Range Classes so that it will use abilities that can be used at current position.
      -Avoidance Requirement is now ignored when bot is "moving".
      -Battlerage now checks precast CanCast. Added check of bot HP when fury dumping (>50%)
      -Removed UI Setting for Inna Set Bonus. Now checked internally.
      Witch Doctor:
      -Spirit walk is now "Special Ability" (meaning it will force a energy wait on other abilities if unable to cast)
      -Removed Check of Recast Timer for Acid Cloud. (Now spams it)
      -Removed the following features: OOC ID Items, Coffee Break, Bot Stop and Low Level Logic.
      -Removed a lot of unused code.
      -Moved target related properties from Combat into Target.
      -Modified the weighting comparison
      -Friendly Poison Gas no longer triggers Avoidance Movement.
      -Removed Non-Threatening Spore SNOID from avoidances.
      -Removed Line of Sight Checking of AllowWalk (This was causing Health Potions to be skipped often)
      -Obstacles will now obey the Destructible Range as well.
      -Fixed Health Check! (This time I think so..)
      -Moved all subfolders out of Bot into Plugin Folder. 
      -Abilities of each class are now found under Player -> "Class" Folder -> Abilities
      -Moved Refresh Code from Bot Class and into Targeting Refresh.
      -Character subclasses Pets and Backpack now extracted into seperate files.
      -Avoidance related code now found in Avoidances Folder.
      -Enums that were unorgranized have all found a home in the proper locations.
      -Ability enums have been renamed for some clearification.
      -IsDestructible and IsSpecialMovement are now settable.
      -AbilityCriteria now holds all func criteria and methods to test.
      -AbilityLogicConditions is now a static class that initializes the criteria conditions.
      -The intialize of conditions occurs during the recreation of abilities within each player class file.
      -LastUsed is now a property that is set after using SuccessfullyUsed
      -AbilityUseTimer is now a method of ability -- orginally found in Player Class.
      -Fixed Line of Sight issues with Raycasting by changing the method used.
      -Destructibles should now  be targeted after being stuck when its radius distance is less than 10f.
      -Out of combat behavior now allows doors and obstacle objects when using (TownPortal/UseObject/UseWaypoint/UsePortal) tags.
      -Treespore and Grotesque Avoidance lifespan has been increased. (so it wont be removed early!)
      -TrinityExploreDungeon resets skip ahead cache again.
      -Added Unified Trinity Profile Tag: TrinityUseTownPortal.
      -Gold/Globe avoidance tests no longer uses modified location if pickup radius is zero.
      -  Funky Settings now has option to load settings!
      -    ->This includes the entire settings and individual setting.
      -    ->Load buttons can be found at bottom of UI for valid settings.
      -    ->Load Menu is found at the top of the UI to load all settings.
      -    ->Note: Loading another settings will overwrite current.

      Giles Smith - Who is the creator of the original Trinity Plugin.
      Rrrix - Notably the author of QuestTools and the person who continued development of the Official Trinity Plugin.
      Darkfriend77 - Author of the plugin Item Rules, an awesome scripting interpreter!
      And to all the others who have contributed publicly with source code and/or plugins. Thank You!

      Old Original Topic Thread

      Attached Files:

      Last edited: May 28, 2015
    2. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:

      Alternative Heroes
      Initial Setup
      To start the setup of hero indexes, make sure you are at the main game menu logged in with the Switch Hero button showing.
      Open fBaseXtensions Setting Window and Navigate to the Bnet Control Tab located under General Tab.
      Click Setup to begin

      Continue Clicking Setup to record each hero.

      Once setup is finished, the drop down box will populate with the heroes it recorded. You can now select the alternate hero you want to use.

      To make use of the alternative hero, you also need to change the fItemPlugin setting for gambling. Select the Alt Hero option to use switching of heroes.

      Finally, make sure both the main and alternative heroes fItemPlugin settings are setup

      I deleted a hero and now my indexes do not match anymore!
      You can delete the indexes by clicking the Reset Indexes button then redo the setup!


      Enabling this will ignore most single units with a few exceptions (see Targeting -> Unit Exceptions). Valid targets are units that are within a cluster with the minimum unit count set.
      Cluster Distance is the range between each monster acceptable. To understand the range better, the viewing distance in-game is around 50 in all directions, and about 5 in any direction directly connected to current position. So 5 would be tight clustering and 10 is recommended maximum, and higher values can be used to allow combat more frequently.
      Note: Ability cluster conditions are not connected to Target Clustering!

      Enabling this will attempt to engage distant clusters after engaging the current target.
      The Min and Max distance determines what groups should be considered. Using high max value can be risky since it will continue with behavior on all valid groups that meet the criteria.
      Minimum Clusters will limit the behavior to occur only when the number of clusters is met. This should not be set high unless the unit count is low.
      Minimum Bot HP will disable the behavior when the bot's current health percent is below the set value. Useful if your character can't take a beating..

      Line of Sight
      Enabling this will attempt to move to the object that is not considered to be in Line of Sight only when no other valid targets exist.
      Settings for what objects qualify can be found under the Targeting Tab -> LOS.

      Radius, Health, and Weight are settings for each avoidance.
      Weight is used to determine which avoidance is more dangerous, higher is deadlier.
      Health values of 1 will always avoid the area the avoidance is occupying, try reducing it to allow movement when full health.

      Similar to avoiding, but instead uses units that qualify as a flee triggering monster.
      Maximum distance is how close qualified monsters can be before behavior is activated.
      Bot health percent determines when behavior is acceptable, value of 1 will always activate when any monster qualifies.
      Trigger settings include:
      • Electrified (monster affix)
      • Rare & Elite
      • Normal
      • Above average HitPoints (this is calculated by each new level using monster entries added)
      • Ignore Fast (Excludes monsters with Fast affix and naturally fast)
      • Ignore Suicide Bomber (Excludes bombers)
      • Ignore Ranged (Excludes ranged units -- that usually flee too)



      Debugging Issues
      There are several tools included with FunkyBot to help find issues.
      Funky Logging options are found in the Debug Tab. Enabling log levels will output debug text to the Funky Log file, found in \Demonbuddy\Logs\.
      Also found in the Funky Window are buttons that dump data from the cache. Data dumped can be copied by double clicking the entry.

      Suggesting Skill Modifications
      When posting skill suggestions the more thorough the better. Include
      If its related to an item or item(s), then see below on how to contribute item data.
      Last edited: Dec 12, 2014
    3. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      Tips and Tricks!
      • Most settings can be edited directly from the Funky Settings Window however there are additional settings that are not found in the settings window.. You can edit these directly inside the settings file found @ location: "Demonbuddy\\Settings\\FunkyBot\\AccountName\\CharacterName.xml"
      • Want to view the log file quickly? Use the Funky Drop Down Menu on the Main Demonbuddy Application!
      • Visit Github to see if there are any new updates posted!

      Profile Statistics
      Every new game will update current profile stats.
      These stats can be found in Demonbuddy Folder\\FunkyStats\\Account Name\\ProfileStats
      Stats include Gold/XP, Deaths, Town Runs, Items Gambled, Bounties Completed, Time, and Loot Stats. This is for each profile ran and overall.

      Example Output
      == TOTAL SUMMARY ==
      Time 20 h 40 m 34 s
      Unique Profiles:3
      Deaths:1 (.05 dph)
      Gold:2945841 (142473.77 gph) -- EXP:-414742715 (-20058774 xph)
      Town Runs: 18  Items Gambled: 58  Horadric Cache Opened: 1
      Bounties Completed: 83
      Type       	 Drop 	 Loot 	 Stash 	 Sold 	 Salvaged
      Magical:    	 252 	 0 	 0 	 0 	 6 
      Rare:      	 499 	 437 	 0 	 0 	 470 
      Legendary: 	 10 	 9 	 8 	 0 	 1 
      Gems:      	 131 	 101 	 70 	 0 	 0 
      Crafting: 	 47 	 44 	 51 	 0 	 0 
      Keys:      	 0 	 0 	 0 	 0 	 0 
      KeyFrags: 	 0 	 0 	 78 	 0 	 0 
      Cache:     	 0 	 0 	 9 	 0 	 0 
      Drops Per Hour: 45.41 -- Looted Per Hour: 28.58
      Stash Per Hour: 10.45 -- Vendored Per Hour:  -- Salvaged Per Hour: 23.07

      Adventure Mode
      The plugin comes with built in support for both bounty and rifting.
      By default this setting is enabled. It can be changed in the General Tab -> Adventure Mode.

      Bounty Cache is setup for Kill, Clear, and Cursed Event bounties. Entries include the SNOID and Level Area IDs to Identify when behaviors should be modified.
      • Kill Bounties that have a entry added will use Line of Sight movement to move towards the "Unique" monster. It will also disable clustering logic while in the correct level area.
      • Clear Bounties will disable cluster logic and use Line of Sight movement on all monsters that failed when in the correct level area.
      • Cursed Events will use Line of Sight movement to move towards the Cursed Object.

      During Rifts, Cluster logic will be disabled and Line of Sight movement will be used when the boss spawns.

      My bot finished the bounty, but stayed to explore.. why's that!?
      If the profile requires certain objects to be found, like during Cursed Events, it may not get recognized since the bot already did it.
      Last edited: Jun 12, 2014
    4. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:

      Modifying Skills
      All skills are separated into their own files which can be found inside FunkyBot\Player\HotBar\Skills\Skill Objects folder.

      Many properties are definable but below are the most commonly used.

      Defines how the skill is ultimately used.
      • None
      • Buff (On Players Location)
      • Location (At Targets Location)
      • Target
      • ClusterTarget
      • ClusterLocation (At Cluster Target Location)
      • ZigZagPathing
      • Self
      • RemoveBuff
      • ClusterTargetNearest (Closest Cluster Target)

      Flag that defines when the skill is usable.
      • Anywhere
      • OutOfCombat
      • Combat


      Sets the priority in which it is evaluated.
      • None
      • Low
      • Medium
      • High
      It is best to set skills that are used only periodically higher than those you would reuse a lot. (Buffs should be High and Primary should be Low. None is reserved for Default Attack which should only be used when all others failed.)


      The minimum range required before activation of the skill should occur.


      Adds an entry to the target with the Power and Date it was used.
      if (Bot.Targeting.Cache.CurrentTarget.[B]SkillsUsedOnObject[/B].ContainsKey(Power))
      	//If we have Creeping Death, then we ignore any units that we already cast upon.
      	if (Bot.Character.Class.HotBar.PassivePowers.Contains(SNOPower.Witchdoctor_Passive_CreepingDeath)) return false;
      	return DateTime.Now.Subtract(Bot.Targeting.Cache.CurrentTarget.[B]SkillsUsedOnObject[/B][Power]).TotalSeconds > 11;

      Skill will set Bot.Character.Class.bWaitingForSpecial if Energy was the reason it could not cast.


      The Check if the skill is usable.
      • None
      • CheckEnergy
      • CheckExisitingBuff
      • CheckPetCount
      • CheckRecastTimer
      • CheckCanCast
      • CheckPlayerIncapacitated
      • CheckPlayerRooted
      PreCast accepts multiple values, as well as a custom condition.
      PreCast=new SkillPreCast((SkillPrecastFlags.CheckCanCast|SkillPrecastFlags.CheckPlayerIncapacitated));
      PreCast.Criteria += (s) => !Bot.Character.Class.HotBar.HasDebuff(SNOPower.Succubus_BloodStar);

      The final check for a buff skill.
      FcriteriaBuff=() => !Bot.Character.Class.HotBar.HasBuff(SNOPower.Barbarian_WarCry);

      Finally the last remaining are combat conditions. You can define all these properties within a skill. You can also choose to not define any and allow the skill to execute whenever possible.
      This is the order in which each property is tested.
      • ClusterConditions
      • SingleUnitCondition
      • FcriteriaCombat

      Final check for a combat skill.
      This will be tested when any of the other four conditions are checked and pass or None of the other four conditions are setup. It is a final check for combat skills.
      FcriteriaCombat=() => !Bot.Character.Class.bWaitingForSpecial;


      Defines a criteria when preforming cluster checks.
      Note: Multiple SkillClusterConditions can be added to a single skill!

      • double ClusterDistance - Max Distance between each monster allowed.
      • float MaximumDistance - Max Distance from the Bot's Position.
      • float MinimumDistance - Minimum Distance required from Bot's Position.
      • int MinimumUnits - The Minimum Units Required for Success.
      • bool IgnoreNonTargetable - Ignores Non-Targetable Monsters
      • ClusterProperties ClusterFlags - Filters out groups that don't match the flags set.
      • bool UseRadiusDistance - Uses radius distance instead of center distance.
      ClusterConditions.Add(new SkillClusterConditions(7d, 20f, 2, false));

      Defines a single unit condition.
      Note: Multiple UnitTargetConditions can be added to a single skill!

      • TargetProperties TrueConditionFlags - Things that must be true about the target.
      • TargetProperties FalseConditionFlags - Things that should not be true about the target.
      • int Distance - The distance from the bot. (Setting to -1 will not check the distance)
      • double HealthPercent - (Minimum Health Percent -- Setting to Zero will not check the health)
      • Func<CacheUnit, bool> Criteria - Can be used to add additional custom conditions.
      • None
      • MissileReflecting
      • MissileDampening
      • Shielding
      • Boss
      • RareElite
      • Unique
      • TreasureGoblin
      • Stealthable
      • Burrowing
      • SucideBomber
      • Weak
      • FullHealth
      • IsSpecial
      • Ranged
      • TargetableAndAttackable
      • Fast
      • DOTDPS
      • CloseDistance
      • ReflectsDamage
      • Electrified
      • Normal
      • LowHealth

      Example: Any Non Low Health Unit when Bot's Energy Percent is above 90%.
      SingleUnitCondition.Add(new UnitTargetConditions
      	TrueConditionFlags = TargetProperties.None,
      	Criteria = (unit) => Bot.Character.Data.dCurrentEnergyPct > 0.9d,
      	Distance = 50,
      	FalseConditionFlags = TargetProperties.LowHealth,
      Example: Any Non-Normal Unit with minimum of 99% or less Health.
      Non-Normal includes Boss, Elites, Rares, Uniques and Treasure Goblins.
      SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, -1, 0.99d, TargetProperties.Normal));
      Last edited: Dec 11, 2014
    5. submarine

      submarine New Member

      Apr 15, 2013
      Likes Received:
      Trophy Points:
      Something happened with old thread cannot post to it anymore.
      Found issue .
      If to use Profile "FallenDev Act1 Profile" http://www.thebuddyforum.com/demonbuddy-forum/demonbuddy-profiles/act-1/118796-fallendev-act1-profile.html
      Bot always stuck in ancient crypts (just staing and relaxing). I tryed to use same profile with normal trinity it works ok.
      Issue happens at moment of execution
      One more thing. I think it will be good to disable temporary cluster logic during combat with hard elite packs or keywarden. Not sure is it an issue but sometimes happens situation when bot hit couple of times KW and run away.

      Some fixups needed for Monk.
      1. Inna set decrease cost of Sweeping Wind . Bot have support of it. But it bit not optimum.
      2. Is it possible to use Wave of Light after mantras. ?
      3. Is it possibel to use Wave of Light after Sweeping Wind in case of Inna set enabled ?
    6. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      v2623 Beta Uploaded..

      This introduces new profile tracking code, which replaces the old and removes the output file. Every new game will update the total statistics which can be viewed in the Funky Window under Misc Tab. Taking suggestions for additional stats to track! P.S. these stats are not written to file yet.. and it requires a full game to occur before total stats are shown.

      Also added backtracking when profile tag is "Interactive" (UseObject/UseWaypoint/UsePortal). This will record the position and will backtrack if combat movement occurs.

      This has been fixed.

      This should be fixed!

      I added setting option to Maintain Sweeping Wind.. which will recast to maintain the buff when not in combat.
    7. stacked

      stacked Member

      Nov 21, 2012
      Likes Received:
      Trophy Points:
      View attachment 7548 2013-11-03 14.15.txt

      I have been trying to get this to work but have not been able to do so.

      Things done:
      Downloaded a fresh copy of DB
      Created a folder called "DBnew"
      Created Plugin Folder
      Placed the contents of Funky-2623 into the Plugin folder.
      Started up DB and recieved the following errors in the log.
      Looking at the plugin section of DB shows no items to be checked. It is completely blank.

      I have attached the log with errors.
    8. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      You need to use Demonbuddy Beta.
    9. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      v2630 uploaded! (Requires Demonbuddy Beta!)

      Okay, I originally dealt with this issue by not really dealing with it at all.. Unified Trinity's Version of TrinityMoveTo resets the skip ahead tracking cache.. which means it don't really skip ahead to much. After I updated to Unified's version, it solved the issue.. but only because the issue was due to range of the object trying to be interacted. Also this could have solved by marking the TrinityMoveTo tags with NoSkip=True. I decided to go back to the old TrinityMoveTo so it wont backtrack as much but I needed to solve the issue with objects not being within range anymore, so I added code to track these objects and when the Tag to Interact is active.. Funky will navigate to the object so the profile wont break. So now backtracking is minimal and profile breaking shouldn't occur due to object distance.

      I also did a few modifications to Witch Doctor and sacrifice build with horrify. Using build from Thread Post.
    10. submarine

      submarine New Member

      Apr 15, 2013
      Likes Received:
      Trophy Points:
      Hi. Folowing issues still exist
      1) Bot sometimes forget to kill last elite monster in pack
      2) After long battle bot almost always forget to return for loot. Long battle means bot start fight and during fight find another pack and another pack of monsters. After finish battle bot never return for loot where was initial battle. In most cases it happens during fight with elites
      3) I have feeling that arcane and frozen avoidance not always work right way
      4) Sometimes bot initiate Townrun without any reason. In most cases when it happens bot not clear location and just try and try teleport. Avoidances in such situation work.
      5) I think that need completely reconstruct avoidances. Bot think that poison spores , desecrator is a rigid body which not possible to cross. In most cases such thinking make death for bot in really simple situation where need just to make one step to not covered area.
      6) In case if bag full and one elite alive bot start to make teleport untill die
      7) Strange avoidance behaviour during batte with wallers . Bot try to cross wall and of course cannot do it because it is wall.
      As an example desecrator + waller affixes in 70 % death . Because bot try to cross wall and stay in desecrator.
      8) I have feeling that bot not always know current level of health.
    11. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      I'm back.. after a forced break from internet!

      1) Forgets? do you mean ignore?.. this may be due to no health change occuring?
      2) Yeah I realize backtracking would be very useful.. I'll put this on the TO DO list.
      3)Those two specifically cover large areas.. which blocks off much of the possible area for safety..
      4)Repair and Full backpack are only two reasons town run would start from plugin..
      5)Yes I agree.. avoidance logic needs improvements when it comes to where it moves.. (maybe preferring a location in current direction first?)
      6)This depends on if combat is possible.. avoidance or line of sight failure will ignore the monster and continue with non-combat action. (I'll have to look into this further tho)
      7)Walls are not handled very well.. since it does not take into account rotation, a wall covers a radius of the entire length.. but I think it would be possible to add priority of path that does not intersect over one that does intersects walls.
      8)Health is updated every 150ms.. maybe more explanation to why you think this?

      So basically avoidance needs to be improved.. prioritizing where to move and when to move.. and how no movement possible effects the ending of combat.. and also backtracking feature.. Got It!
    12. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      So I managed to implement backtracking.. (Available via Beta on GitHub)

      I first started by making simple return to position of where plugin behavior starts..
      Then I added option to set the return position only after first combat ability is used.
      Finally a 3rd option was added for the path precision back to the start position.

      But I realize that the backtrack feature is a regular request is due to loot. So I added another option which will keep loot in the cache and also add it to the line-of-sight movement list if it is to far to be a valid target anymore. This only works when LOS movement is enabled though.

      Any ideas about backtracking feature would be appreciated..
    13. submarine

      submarine New Member

      Apr 15, 2013
      Likes Received:
      Trophy Points:
      i have a lot of ideas. May be some of them great and may be some of them crap.
      I ll try to create big wall of text with pictures and full description. At least we can discuss. It is little big hard because english not my native but i ll try.
    14. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      v2.7.0.0 uploaded!

      Mostly programming update (Refactoring).. but the bot should be functioning properly now using latest Demonbuddy Stable Release.

      Also game stats file now found in FunkyBot/Logs/ProfileStats -- and includes overall stats as well as overall stats of each profile.
    15. graves732

      graves732 New Member

      Mar 8, 2013
      Likes Received:
      Trophy Points:
      Very impressed by your work. thank you! Recommend this
    16. coolabah

      coolabah Member

      May 11, 2011
      Likes Received:
      Trophy Points:
      @herbfunk hi it keeps stopping at random places then it dies because it doesnt attack i have a fresh install of demonbuddy with the plugins funkybot funkybot error clicker and buddystats
    17. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      v2.7.1.0 posted

      Notable Changes:
      Added Gold Inactivity Check which restarts after 3 minutes of no change in gold. (As Requested)
      Destructible should no longer be targeted after being destroyed.

    18. phaer

      phaer Member

      Oct 27, 2013
      Likes Received:
      Trophy Points:
      Does this plugin sort out the current issue with the bot freezing once it gets full inventory with a new legendary in it? If so consider me a new fan.
    19. CrazyJosh

      CrazyJosh Member

      Nov 30, 2010
      Likes Received:
      Trophy Points:
      New DemonBuddy install and new install from your master-zip:

      Attached Files:

    20. herbfunk

      herbfunk Community Developer

      Oct 30, 2012
      Likes Received:
      Trophy Points:
      v2.8.0.0 is uploaded now.. compatible with newest Demonbuddy and Diablo 2.0 changes.

      Been busy the last few weeks and the changes required more than a quick change.. (3+ hours alone on namespace changes from demonbuddy! :rolleyes:)

      I also managed to get Diamond Gems, Power Globes and Pools of Reflection added so the bot recognizes them.

      Will reply with future updates -- hopefully sooner than later! :cool:

    Share This Page