83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
"""Diablo II: Resurrected configuration.
|
|
|
|
Game-specific settings for screen regions, colors, and timings.
|
|
"""
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import Dict, Tuple
|
|
|
|
|
|
@dataclass
|
|
class D2RScreenRegions:
|
|
"""Screen regions for UI elements at 1920x1080."""
|
|
|
|
health_orb: Tuple[int, int, int, int] = (28, 545, 170, 170)
|
|
mana_orb: Tuple[int, int, int, int] = (1722, 545, 170, 170)
|
|
xp_bar: Tuple[int, int, int, int] = (0, 1058, 1920, 22)
|
|
belt: Tuple[int, int, int, int] = (838, 1010, 244, 48)
|
|
minimap: Tuple[int, int, int, int] = (1600, 0, 320, 320)
|
|
inventory: Tuple[int, int, int, int] = (960, 330, 530, 440)
|
|
stash: Tuple[int, int, int, int] = (430, 330, 530, 440)
|
|
chat: Tuple[int, int, int, int] = (0, 800, 500, 200)
|
|
skill_left: Tuple[int, int, int, int] = (194, 1036, 52, 52)
|
|
skill_right: Tuple[int, int, int, int] = (1674, 1036, 52, 52)
|
|
|
|
|
|
@dataclass
|
|
class D2RColors:
|
|
"""HSV color ranges for game element detection."""
|
|
|
|
health_filled: Tuple[Tuple[int, int, int], Tuple[int, int, int]] = (
|
|
(0, 100, 100), (10, 255, 255) # Red
|
|
)
|
|
mana_filled: Tuple[Tuple[int, int, int], Tuple[int, int, int]] = (
|
|
(100, 100, 100), (130, 255, 255) # Blue
|
|
)
|
|
item_unique: Tuple[Tuple[int, int, int], Tuple[int, int, int]] = (
|
|
(15, 100, 180), (30, 255, 255) # Gold/unique
|
|
)
|
|
item_set: Tuple[Tuple[int, int, int], Tuple[int, int, int]] = (
|
|
(35, 100, 150), (55, 255, 255) # Green/set
|
|
)
|
|
item_rare: Tuple[Tuple[int, int, int], Tuple[int, int, int]] = (
|
|
(15, 50, 200), (25, 150, 255) # Yellow/rare
|
|
)
|
|
portal_blue: Tuple[Tuple[int, int, int], Tuple[int, int, int]] = (
|
|
(90, 150, 150), (120, 255, 255) # Town portal blue
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class D2RTimings:
|
|
"""Game-specific timing constants in seconds."""
|
|
|
|
loading_screen_max: float = 15.0
|
|
town_portal_cast: float = 3.5
|
|
teleport_delay: float = 0.15
|
|
potion_cooldown: float = 1.0
|
|
click_delay: float = 0.1
|
|
pickup_delay: float = 0.3
|
|
vendor_interaction: float = 0.5
|
|
|
|
|
|
@dataclass
|
|
class D2RConfig:
|
|
"""Master D2R configuration."""
|
|
|
|
resolution: Tuple[int, int] = (1920, 1080)
|
|
regions: D2RScreenRegions = field(default_factory=D2RScreenRegions)
|
|
colors: D2RColors = field(default_factory=D2RColors)
|
|
timings: D2RTimings = field(default_factory=D2RTimings)
|
|
|
|
# Loot filter
|
|
pickup_uniques: bool = True
|
|
pickup_sets: bool = True
|
|
pickup_rares: bool = True
|
|
pickup_runes: bool = True
|
|
min_rune_tier: int = 10 # Lem+
|
|
pickup_gems: bool = False
|
|
|
|
# Safety
|
|
health_potion_threshold: float = 0.5
|
|
mana_potion_threshold: float = 0.3
|
|
chicken_threshold: float = 0.2 # Exit game if health below this
|