
; Skills config file
[general]

; Set here the distance from where bot should go toward closest monster position instead of exploring
monsters_attack_range=150

; Bot will kill any monster at this range before looting anything (chest and item)
safe_range=50

; Bot will use sprint while exploring and traveling on the map (any other action will make bot stop the sprint)
enable_sprint=false

; Sprint safe range - bot will only sprint if no monsters are within this range (default 150)
sprint_safe_range=150

; Bot will use Rhoa mount if summoned
enable_rhoa_mount=false

; Safe distance from monsters before mounting Rhoa
rhoa_mount_safe_distance=70

; Set life flask key here
life_flask_key=1

; Set mana flask key here
mana_flask_key=2

; Use life flask when health falls below this percentage
use_life_flask_percent=0.70

; Use life flask when energy shield falls below this percentage
use_life_flask_es_percent=0

; Time to wait before using life flask again
life_flask_delay=1500

; Use mana flask when mana falls below this percentage
use_mana_flask_percent=0.20

; Time to wait before using life flask again
mana_flask_delay=2000

; Disconnect when health falls below this percentage
chicken_life_below_percent=0

; Disconnect when taking damage greater than this percentage of maximum health
chicken_life_on_hit_percent=1.0

; Disconnect when energy shield falls below this percentage
chicken_es_below_percent=0

; Disconnect when taking damage greater than this percentage of maximum energy shield
chicken_es_on_hit_percent=1.0

; Disconnect when mana falls below this percentage
chicken_mana_below_percent=0

; Disconnect when taking damage greater than this percentage of maximum mana
chicken_mana_on_hit_percent=1.0

; Refill mana when not full in town. Disable if using Blink or other mana using skills in town
refill_mana_in_town=true

; Refill life when not full in town. Disable if using lich with Eternal Life
refill_life_in_town=true

; Set here the amount of skills
skill_count=8

[kiting]
; Enable kiting mode - bot will alternate between moving away from monsters and attacking
enable_kite_mode=false

; Range at which monsters are considered "too close" and trigger kiting movement
kite_range=60

; Range at which monsters trigger emergency dodge roll (should be less than kite_range)
dodge_roll_range=15

; Time (in milliseconds) to wait before dodge roll can be used again
dodge_roll_timer=1500

; Minimum number of regular monsters within kite_range to trigger kiting
; Note: Rare and unique monsters always trigger kiting regardless of this setting
min_close_monsters=1

; Health threshold (percentage) - triggers emergency repositioning when health drops below this value
; Example: Set to 50 to reposition when health drops below 50%
health_threshold=0

; Mana threshold (percentage) - triggers emergency repositioning when mana drops below this value
; Example: Set to 30 to reposition when mana drops below 30%
mana_threshold=0

; Energy Shield threshold (percentage) - triggers emergency repositioning when ES drops below this value
; Example: Set to 70 to reposition when ES drops below 70%
es_threshold=0

; Evaluation radius for threats (monsters/walls that could affect positions)
threat_evaluation_radius=150

; Enable boss circling - bot will circle around unique bosses (rarity 3) while alternating between movement and attacking
; This is similar to kiting but moves tangentially around the boss instead of directly away
enable_boss_circling=false

; Radius to maintain from the boss while circling (in map units)
circle_radius=50

; Angle increment for each circling movement (in degrees)
; Higher values = larger steps around the circle, lower values = more frequent smaller movements
; Recommended: 30-60 degrees
circle_angle_increment=45

; === Movement Strategy System ===
; Choose movement strategy: "escape", "wiggle", or "adaptive"
; - "escape": Traditional kiting (moves away from danger) - default, original behavior
; - "wiggle": Lateral dodging (maintains combat range while dodging projectiles)
; - "adaptive": Intelligently switches between escape and wiggle based on health/threat level
movement_strategy=escape

; === Wiggle Mode Settings (Projectile Dodging) ===
; Minimum dodge distance in wiggle mode
wiggle_min_radius=20

; Maximum dodge distance in wiggle mode
wiggle_max_radius=40

; Cooldown between wiggle movements (milliseconds)
wiggle_cooldown=800

; Minimum number of monsters needed to trigger wiggle mode
wiggle_min_monsters=2

; Detection range for counting nearby monsters to trigger wiggle (map units)
; Monsters beyond this range won't be counted for wiggle activation
wiggle_detection_range=100

; Maximum random angle variation for wiggle movement (degrees)
; Adds unpredictability to dodge patterns. Higher = more random, lower = more predictable
; Recommended: 20-40 degrees
wiggle_randomness_degrees=30

; === Damage Tracking (Reactive Dodging) ===
; Time window to track incoming damage (milliseconds)
damage_tracking_window=2000

; Number of hits within tracking window to trigger reactive wiggle
damage_hits_threshold=3

; === Adaptive Mode Settings (Smart Switching) ===
; Below this health %, adaptive mode will force escape (regardless of other conditions)
adaptive_health_escape=40

; Below this ES %, adaptive mode will force escape
; Critical for ES-based builds (e.g., CI, Hybrid)
adaptive_es_escape_threshold=30

; Above this health %, adaptive mode allows wiggle
; Creates health bands: <40% = escape, 40-60% = default escape, >60% = can wiggle
adaptive_wiggle_min_health=60

; When fighting unique bosses (rarity 3), force escape if health drops below this %
; Helps survive dangerous boss mechanics
adaptive_boss_health_threshold=60

; Distance that defines "very close" monsters for threat assessment (map units)
; Monsters within this range are considered immediate threats
adaptive_very_close_range=30

; This many very close monsters will force adaptive mode to escape
adaptive_high_threat_count=5

; Within this range, adaptive mode prefers wiggle over escape (when healthy)
adaptive_prefer_wiggle_range=80

[skills]

; key or mouse button
skill0_key=mouse_left

; Min distance to use this skill
skill0_min_distance_value=0

; Max distance to use this skill
skill0_max_distance_value=0

; Set here the minimum required power charges to use this skill.
skill0_min_power_charges=0

; Set here the maximum power charges to use this skill.
skill0_max_power_charges=10

; Set here the minimum required endurance charges to use this skill.
skill0_min_endurance_charges=0

; Set here the maximum endurance charges to use this skill.
skill0_max_endurance_charges=10

; Set here the minimum required frenzy charges to use this skill.
skill0_min_frenzy_charges=0

; Set here the maximum frenzy charges to use this skill.
skill0_max_frenzy_charges=10

; Enable this option to cast the skill only on corpses. Don't forget to add a cooldown to the skill setting to avoid weird behaviour.
skill0_target_corpses=false

; Bot will use this skill for moving.
skill0_is_movement=false

; Set which type of minion is this. (0: None, 1: Fire golem, 2: Ice golem, 3: Chaos golem, 4: Stone golem, 5: Lightning golem)
skill0_miniontype=0

; Set how much of this type you can spawn. (The bot will use the skill until this amount of minion is summoned.)
skill0_minioncount=1

; Set if the skill is Righteous Fire.
skill0_always_recast=false

; Skill recast timer in milliseconds
skill0_cooldown=0

; Priority of the skill
skill0_priority=1

; The bot will use this skill against selected monster rarity and upper. (0: All monster, 1: Magic monsters, 2: Rare monsters, 3: Unique monsters, 4: Normal only)
skill0_target=0

; Use skill depending of the number of monsters close to the target
skill0_close_targets=0

; Range used when checking monsters around the target
skill0_close_targets_range=10

; Press the skill button and hold it until target change?
skill0_maintain=false

; Skill type: 0 = Attack (default), 1 = Combat Buff, 2 = Persistent
; - Attack (0): Regular attack skill with all targeting and distance checks
; - Combat Buff (1): Buff skill cast during combat, skips monster targeting checks (no distance/rarity requirements)
; - Persistent (2): Skill pressed periodically during movement/exploration (e.g., Spark)
;   Uses skill cooldown for press interval (default 500ms if cooldown=0)
skill0_type=0

; Resource triggers - skill will only trigger when resources are within these thresholds
; These apply to ATTACK (type 0) and COMBAT_BUFF (type 1) skills only
; PERSISTENT (type 2) skills do not check resource thresholds
; Values are percentages from 0.0 to 1.0 (e.g., 0.5 = 50%)
; IMPORTANT: Max values default to 2.0 to handle temporary overcapping from remnants/buffs
; When buffs increase max resources, current resources may temporarily exceed normal max,
; causing percentages >100% (e.g., 1500/1000 life = 1.5 = 150%)
; Set min=0.0 and max=2.0 to disable the check (skill will trigger at any resource level)
skill0_min_life_percent=0.0
skill0_max_life_percent=2.0
skill0_min_mana_percent=0.0
skill0_max_mana_percent=2.0
skill0_min_es_percent=0.0
skill0_max_es_percent=2.0

skill1_key=mouse_right
skill1_min_distance_value=0
skill1_max_distance_value=25
skill1_min_power_charges=0
skill1_max_power_charges=10
skill1_min_endurance_charges=0
skill1_max_endurance_charges=10
skill1_min_frenzy_charges=0
skill1_max_frenzy_charges=10
skill1_is_movement=false
skill1_miniontype=0
skill1_minioncount=1
skill1_always_recast=false
skill1_target_corpses=false
skill1_cooldown=0
skill1_priority=1
skill1_target=0
skill1_close_targets = 0
skill1_close_targets_range=10
skill1_maintain=false
skill1_type=0
skill1_min_life_percent=0.0
skill1_max_life_percent=2.0
skill1_min_mana_percent=0.0
skill1_max_mana_percent=2.0
skill1_min_es_percent=0.0
skill1_max_es_percent=2.0

skill2_key=mouse_wheel
skill2_min_distance_value=0
skill2_max_distance_value=0
skill2_min_power_charges=0
skill2_max_power_charges=10
skill2_min_endurance_charges=0
skill2_max_endurance_charges=10
skill2_min_frenzy_charges=0
skill2_max_frenzy_charges=10
skill2_is_movement=false
skill2_miniontype=0
skill2_minioncount=1
skill2_always_recast=false
skill2_target_corpses=false
skill2_cooldown=0
skill2_priority=1
skill2_target=0
skill2_close_targets = 0
skill2_close_targets_range=10
skill2_maintain=false
skill2_type=0
skill2_min_life_percent=0.0
skill2_max_life_percent=2.0
skill2_min_mana_percent=0.0
skill2_max_mana_percent=2.0
skill2_min_es_percent=0.0
skill2_max_es_percent=2.0

skill3_key=Q
skill3_min_distance_value=0
skill3_max_distance_value=0
skill3_min_power_charges=0
skill3_max_power_charges=10
skill3_min_endurance_charges=0
skill3_max_endurance_charges=10
skill3_min_frenzy_charges=0
skill3_max_frenzy_charges=10
skill3_is_movement=false
skill3_miniontype=0
skill3_minioncount=1
skill3_always_recast=false
skill3_target_corpses=false
skill3_cooldown=0
skill3_priority=1
skill3_target=0
skill3_close_targets = 0
skill3_close_targets_range=10
skill3_maintain=false
skill3_type=0
skill3_min_life_percent=0.0
skill3_max_life_percent=2.0
skill3_min_mana_percent=0.0
skill3_max_mana_percent=2.0
skill3_min_es_percent=0.0
skill3_max_es_percent=2.0

skill4_key=W
skill4_min_distance_value=0
skill4_max_distance_value=0
skill4_min_power_charges=0
skill4_max_power_charges=10
skill4_min_endurance_charges=0
skill4_max_endurance_charges=10
skill4_min_frenzy_charges=0
skill4_max_frenzy_charges=10
skill4_is_movement=false
skill4_miniontype=0
skill4_minioncount=1
skill4_always_recast=false
skill4_target_corpses=false
skill4_cooldown=0
skill4_priority=1
skill4_target=0
skill4_close_targets = 0
skill4_close_targets_range=10
skill4_maintain=false
skill4_type=0
skill4_min_life_percent=0.0
skill4_max_life_percent=2.0
skill4_min_mana_percent=0.0
skill4_max_mana_percent=2.0
skill4_min_es_percent=0.0
skill4_max_es_percent=2.0

skill5_key=E
skill5_min_distance_value=0
skill5_max_distance_value=0
skill5_min_power_charges=0
skill5_max_power_charges=10
skill5_min_endurance_charges=0
skill5_max_endurance_charges=10
skill5_min_frenzy_charges=0
skill5_max_frenzy_charges=10
skill5_is_movement=false
skill5_miniontype=0
skill5_minioncount=1
skill5_always_recast=false
skill5_target_corpses=false
skill5_cooldown=0
skill5_priority=1
skill5_target=0
skill5_close_targets = 0
skill5_close_targets_range=10
skill5_maintain=false
skill5_type=0
skill5_min_life_percent=0.0
skill5_max_life_percent=2.0
skill5_min_mana_percent=0.0
skill5_max_mana_percent=2.0
skill5_min_es_percent=0.0
skill5_max_es_percent=2.0

skill6_key=R
skill6_min_distance_value=0
skill6_max_distance_value=0
skill6_min_power_charges=0
skill6_max_power_charges=10
skill6_min_endurance_charges=0
skill6_max_endurance_charges=10
skill6_min_frenzy_charges=0
skill6_max_frenzy_charges=10
skill6_is_movement=false
skill6_miniontype=0
skill6_minioncount=1
skill6_always_recast=false
skill6_target_corpses=false
skill6_cooldown=0
skill6_priority=1
skill6_target=0
skill6_close_targets = 0
skill6_close_targets_range=10
skill6_maintain=false
skill6_type=0
skill6_min_life_percent=0.0
skill6_max_life_percent=2.0
skill6_min_mana_percent=0.0
skill6_max_mana_percent=2.0
skill6_min_es_percent=0.0
skill6_max_es_percent=2.0

skill7_key=T
skill7_min_distance_value=0
skill7_max_distance_value=0
skill7_min_power_charges=0
skill7_max_power_charges=10
skill7_min_endurance_charges=0
skill7_max_endurance_charges=10
skill7_min_frenzy_charges=0
skill7_max_frenzy_charges=10
skill7_is_movement=false
skill7_miniontype=0
skill7_minioncount=1
skill7_always_recast=false
skill7_target_corpses=false
skill7_cooldown=0
skill7_priority=1
skill7_target=0
skill7_close_targets = 0
skill7_close_targets_range=10
skill7_maintain=false
skill7_type=0
skill7_min_life_percent=0.0
skill7_max_life_percent=2.0
skill7_min_mana_percent=0.0
skill7_max_mana_percent=2.0
skill7_min_es_percent=0.0
skill7_max_es_percent=2.0