diff --git a/CONFIGURATION_TEMPLATE.md b/CONFIGURATION_TEMPLATE.md
new file mode 100644
index 0000000..92c09ec
--- /dev/null
+++ b/CONFIGURATION_TEMPLATE.md
@@ -0,0 +1,403 @@
+# Configuration Template Guide
+
+This guide provides a template and examples for common character configurations. Use this as a starting point when setting up a new character.
+
+## Quick Configuration Checklist
+
+When setting up a new character, configure these in order:
+
+- [ ] Set `Scripts.UserAddon = false;`
+- [ ] Configure `Config.AttackSkill[1]` and `Config.AttackSkill[3]`
+- [ ] Set up `Config.Inventory[]` lock pattern
+- [ ] Configure `Config.BeltColumn[]` for potions
+- [ ] Add pickit files to `Config.PickitFiles[]`
+- [ ] Enable desired scripts (set `Scripts.* = true`)
+
+---
+
+## Attack Configuration Examples
+
+### Sorceress - Frozen Orb Build
+
+```javascript
+// Primary skill to bosses
+Config.AttackSkill[1] = 37; // Frozen Orb
+
+// Primary skill to others
+Config.AttackSkill[3] = 37; // Frozen Orb
+
+// Secondary skill if immune to primary
+Config.AttackSkill[5] = 54; // Lightning (for cold immunes)
+
+// Low mana fallback
+Config.LowManaSkill[0] = 59; // Blizzard (if out of mana)
+```
+
+### Sorceress - Blizzard Build
+
+```javascript
+Config.AttackSkill[1] = 59; // Blizzard (bosses)
+Config.AttackSkill[3] = 59; // Blizzard (others)
+Config.AttackSkill[5] = 54; // Lightning (immunes)
+Config.LowManaSkill[0] = 37; // Frozen Orb (low mana)
+```
+
+### Paladin - Blessed Hammer
+
+```javascript
+Config.AttackSkill[1] = 112; // Blessed Hammer (bosses)
+Config.AttackSkill[3] = 112; // Blessed Hammer (others)
+Config.AttackSkill[5] = 113; // Charge (immunes)
+```
+
+### Barbarian - Whirlwind
+
+```javascript
+Config.AttackSkill[1] = 129; // Whirlwind (bosses)
+Config.AttackSkill[3] = 129; // Whirlwind (others)
+Config.AttackSkill[5] = 130; // Berserk (immunes)
+```
+
+**Find more skill IDs:** [skills.txt](https://github.com/Borega/pd2bs-scripts/blob/main/kolbot/sdk/skills.txt)
+
+---
+
+## Inventory Configuration Examples
+
+### Standard 4-Row Setup (Recommended)
+
+Allows 4 rows for items, locks bottom 4 rows for charms/tomes:
+
+```javascript
+Config.Inventory[0] = [1,1,1,1,1,1,1,1,1,0]; // Row 1: 9 usable, 1 locked (right column)
+Config.Inventory[1] = [1,1,1,1,1,1,1,1,1,0]; // Row 2: 9 usable, 1 locked
+Config.Inventory[2] = [1,1,1,1,1,1,1,1,1,0]; // Row 3: 9 usable, 1 locked
+Config.Inventory[3] = [1,1,1,1,1,1,1,1,1,0]; // Row 4: 9 usable, 1 locked
+Config.Inventory[4] = [0,0,0,0,0,0,0,0,0,0]; // Row 5: All locked (charms)
+Config.Inventory[5] = [0,0,0,0,0,0,0,0,0,0]; // Row 6: All locked (charms)
+Config.Inventory[6] = [0,0,0,0,0,0,0,0,0,0]; // Row 7: All locked (charms)
+Config.Inventory[7] = [0,0,0,0,0,0,0,0,0,0]; // Row 8: All locked (charms)
+```
+
+**What this means:**
+- **Rows 1-4:** Bot can use 9 slots per row (left 9 columns)
+- **Right column (all rows):** Locked for ID/TP tomes, keys
+- **Rows 5-8:** Completely locked for skiller charms
+
+### Maximum Space Setup
+
+Use all inventory space (not recommended - no room for charms):
+
+```javascript
+Config.Inventory[0] = [1,1,1,1,1,1,1,1,1,1]; // All usable
+Config.Inventory[1] = [1,1,1,1,1,1,1,1,1,1];
+Config.Inventory[2] = [1,1,1,1,1,1,1,1,1,1];
+Config.Inventory[3] = [1,1,1,1,1,1,1,1,1,1];
+Config.Inventory[4] = [1,1,1,1,1,1,1,1,1,1];
+Config.Inventory[5] = [1,1,1,1,1,1,1,1,1,1];
+Config.Inventory[6] = [1,1,1,1,1,1,1,1,1,1];
+Config.Inventory[7] = [1,1,1,1,1,1,1,1,1,1];
+```
+
+### Conservative Setup (More Locked Space)
+
+More space for charms, less for items:
+
+```javascript
+Config.Inventory[0] = [1,1,1,1,1,1,1,1,0,0]; // 7 usable, 3 locked
+Config.Inventory[1] = [1,1,1,1,1,1,1,1,0,0]; // 7 usable, 3 locked
+Config.Inventory[2] = [1,1,1,1,1,1,1,1,0,0]; // 7 usable, 3 locked
+Config.Inventory[3] = [1,1,1,1,1,1,1,1,0,0]; // 7 usable, 3 locked
+Config.Inventory[4] = [0,0,0,0,0,0,0,0,0,0]; // All locked
+Config.Inventory[5] = [0,0,0,0,0,0,0,0,0,0]; // All locked
+Config.Inventory[6] = [0,0,0,0,0,0,0,0,0,0]; // All locked
+Config.Inventory[7] = [0,0,0,0,0,0,0,0,0,0]; // All locked
+```
+
+---
+
+## Potion Configuration Examples
+
+### Standard Belt Setup
+
+```javascript
+// Belt columns (left to right)
+Config.BeltColumn[0] = "hp"; // Column 1: Healing potions
+Config.BeltColumn[1] = "mp"; // Column 2: Mana potions
+Config.BeltColumn[2] = "rv"; // Column 3: Rejuvenation potions
+Config.BeltColumn[3] = "rv"; // Column 4: Rejuvenation potions
+
+// Minimum potions to keep (triggers vendor visit if below)
+Config.MinColumn[0] = 3; // Keep at least 3 healing potions
+Config.MinColumn[1] = 3; // Keep at least 3 mana potions
+Config.MinColumn[2] = 0; // Rejuvs can't be bought (set to 0)
+Config.MinColumn[3] = 0; // Rejuvs can't be bought (set to 0)
+```
+
+### High Mana Usage (Sorceress)
+
+```javascript
+Config.BeltColumn[0] = "hp";
+Config.BeltColumn[1] = "mp"; // More mana potions
+Config.BeltColumn[2] = "mp"; // Extra mana column
+Config.BeltColumn[3] = "rv";
+
+Config.MinColumn[0] = 2;
+Config.MinColumn[1] = 4; // Higher threshold for mana
+Config.MinColumn[2] = 4; // Higher threshold for mana
+Config.MinColumn[3] = 0;
+
+// Keep extra mana potions in inventory
+Config.MPBuffer = 4; // Keep 4 mana potions in inventory
+```
+
+### Melee Character (Less Mana)
+
+```javascript
+Config.BeltColumn[0] = "hp";
+Config.BeltColumn[1] = "hp"; // More healing potions
+Config.BeltColumn[2] = "mp";
+Config.BeltColumn[3] = "rv";
+
+Config.MinColumn[0] = 4;
+Config.MinColumn[1] = 4;
+Config.MinColumn[2] = 2;
+Config.MinColumn[3] = 0;
+```
+
+### Potion Usage Thresholds
+
+```javascript
+// When to use potions (percentage of life/mana)
+Config.UseHP = 75; // Use healing potion if life < 75%
+Config.UseRejuvHP = 40; // Use rejuv if life < 40%
+Config.UseMP = 30; // Use mana potion if mana < 30%
+Config.UseRejuvMP = 0; // Use rejuv for mana (0 = disabled)
+
+// Keep potions in inventory as backup
+Config.HPBuffer = 0; // Keep 0 healing potions in inventory
+Config.MPBuffer = 0; // Keep 0 mana potions in inventory
+Config.RejuvBuffer = 0; // Keep 0 rejuvs in inventory
+```
+
+---
+
+## Pickit Configuration Examples
+
+### Basic Setup (Redix NIP)
+
+```javascript
+// Pickit config. Default folder is kolbot/pickit.
+Config.PickitFiles.push("redix.nip");
+Config.PickRange = 40; // Pick radius
+```
+
+### Multiple Pickit Files
+
+```javascript
+Config.PickitFiles.push("redix.nip"); // Base item filter
+Config.PickitFiles.push("custom.nip"); // Your custom items
+Config.PickitFiles.push("runes.nip"); // Rune-specific filter
+Config.PickRange = 40;
+```
+
+### Fast Pick (Pick Items During Combat)
+
+```javascript
+Config.PickitFiles.push("redix.nip");
+Config.PickRange = 40;
+Config.FastPick = true; // Pick items between attacks (may affect performance)
+```
+
+---
+
+## Script Configuration Examples
+
+### MF Sorceress (Mephisto + Andariel)
+
+```javascript
+// Disable UserAddon
+Scripts.UserAddon = false;
+
+// Act 1
+Scripts.Andariel = true;
+
+// Act 3
+Scripts.Mephisto = true;
+Config.Mephisto.MoatTrick = true; // Use moat trick
+Config.Mephisto.KillCouncil = false; // Skip council
+Config.Mephisto.TakeRedPortal = true; // Take red portal
+```
+
+### Baal Runner
+
+```javascript
+Scripts.UserAddon = false;
+
+// Act 5
+Scripts.Baal = true;
+Config.Baal.KillBaal = true; // Kill Baal
+Config.Baal.DollQuit = false; // Don't quit on dolls
+Config.Baal.SoulQuit = false; // Don't quit on souls
+Config.Baal.HotTPMessage = "Hot TP!"; // Message for hot TP
+Config.Baal.SafeTPMessage = "Safe TP!"; // Message for safe TP
+```
+
+### Key Hunter
+
+```javascript
+Scripts.UserAddon = false;
+Scripts.GetKeys = true; // Hunt for T/H/D keys
+```
+
+### Countess + Summoner + Nihlathak (Key Farming)
+
+```javascript
+Scripts.UserAddon = false;
+
+// Act 1
+Scripts.Countess = true;
+Config.Countess.KillGhosts = false;
+
+// Act 2
+Scripts.Summoner = true;
+
+// Act 5
+Scripts.Nihlathak = true;
+Config.Nihlathak.ViperQuit = true; // Quit if Tomb Vipers found
+```
+
+### Full Act Run (All Bosses)
+
+```javascript
+Scripts.UserAddon = false;
+
+// Act 1
+Scripts.Countess = true;
+Scripts.Andariel = true;
+
+// Act 2
+Scripts.Summoner = true;
+Scripts.Duriel = true;
+
+// Act 3
+Scripts.Mephisto = true;
+
+// Act 4
+Scripts.Diablo = true;
+Config.Diablo.Entrance = true;
+
+// Act 5
+Scripts.Baal = true;
+```
+
+---
+
+## Common Build Templates
+
+### Sorceress - Cold/Fire Hybrid
+
+```javascript
+// Attack Skills
+Config.AttackSkill[1] = 37; // Frozen Orb (bosses)
+Config.AttackSkill[3] = 37; // Frozen Orb (others)
+Config.AttackSkill[5] = 59; // Blizzard (cold immunes)
+
+// Potions
+Config.BeltColumn[0] = "hp";
+Config.BeltColumn[1] = "mp";
+Config.BeltColumn[2] = "mp"; // Extra mana for teleporting
+Config.BeltColumn[3] = "rv";
+Config.MPBuffer = 4; // Keep mana potions
+
+// Scripts
+Scripts.UserAddon = false;
+Scripts.Mephisto = true;
+Scripts.Andariel = true;
+Scripts.Countess = true;
+```
+
+### Paladin - Hammerdin
+
+```javascript
+// Attack Skills
+Config.AttackSkill[1] = 112; // Blessed Hammer
+Config.AttackSkill[3] = 112; // Blessed Hammer
+Config.AttackSkill[5] = 113; // Charge (for immunes)
+
+// Potions
+Config.BeltColumn[0] = "hp";
+Config.BeltColumn[1] = "mp";
+Config.BeltColumn[2] = "rv";
+Config.BeltColumn[3] = "rv";
+
+// Scripts
+Scripts.UserAddon = false;
+Scripts.Baal = true;
+Scripts.Diablo = true;
+```
+
+---
+
+## Advanced Configuration Tips
+
+### Town Check Settings
+
+Prevent unnecessary town visits:
+
+```javascript
+Config.TownCheck = false; // Don't go to town if out of potions
+Config.TownHP = 0; // Don't go to town based on HP (0 = disabled)
+Config.TownMP = 0; // Don't go to town based on MP (0 = disabled)
+```
+
+### Chicken Settings (Exit Game)
+
+Safety settings to prevent death:
+
+```javascript
+Config.LifeChicken = 30; // Exit if life <= 30%
+Config.ManaChicken = 0; // Exit if mana <= 0% (disabled)
+Config.MercChicken = 0; // Exit if merc life <= 0% (disabled)
+```
+
+### Game Time Settings
+
+```javascript
+Config.MinGameTime = 60; // Stay in game at least 60 seconds
+Config.MaxGameTime = 0; // No maximum (0 = disabled)
+```
+
+### Stash Gold Settings
+
+```javascript
+Config.StashGold = 100000; // Stash gold when you have 100k+
+Config.LowGold = 0; // Minimum gold threshold
+```
+
+---
+
+## Configuration File Location
+
+Your character config files are located at:
+```
+\d2bs\kolbot\libs\config\[Class].[CharacterName].js
+```
+
+Examples:
+- `Sorceress.MySorc.js`
+- `Paladin.MyPally.js`
+- `Barbarian.MyBarb.js`
+
+---
+
+## Need Help?
+
+- **Full Configuration Reference:** See `_BaseConfigFile.js` in `libs/config/`
+- **Skill IDs:** [skills.txt](https://github.com/Borega/pd2bs-scripts/blob/main/kolbot/sdk/skills.txt)
+- **NIP Guide:** [NIP File Guide](https://github.com/blizzhackers/pickits/blob/master/NipGuide.md)
+- **Discord:** [PD2BS Discord](https://discord.gg/jwkm47kX)
+
+---
+
+**Last Updated:** 2024
diff --git a/MILESTONE_1_AUDIT_REPORT.md b/MILESTONE_1_AUDIT_REPORT.md
new file mode 100644
index 0000000..b59deb7
--- /dev/null
+++ b/MILESTONE_1_AUDIT_REPORT.md
@@ -0,0 +1,467 @@
+# Milestone 1: Comprehensive Codebase Audit Report
+**Project:** pd2bs-scripts (Kolbot for Project D2)
+**Date:** 2024
+**Auditor:** Development Team
+
+---
+
+## Executive Summary
+
+This audit report provides a comprehensive analysis of the pd2bs-scripts codebase, identifying current architecture, pain points, and recommendations for improvement. The project is a JavaScript-based game automation bot for Diablo 2 (Project D2 variant), built on the Kolbot framework.
+
+**Key Findings:**
+- **Total Files Analyzed:** 150+ JavaScript files, 30+ configuration files
+- **Primary Language:** JavaScript (ECMAScript 3/5 compatible)
+- **Architecture:** Event-driven, modular bot system
+- **Configuration Complexity:** High - requires manual editing of character-specific config files
+- **Documentation:** Basic README exists but lacks comprehensive setup and troubleshooting guides
+
+---
+
+## 1. Repository Structure Analysis
+
+### 1.1 Directory Layout
+
+```
+pd2bs-scripts/
+├── kolbot/ # Main bot directory
+│ ├── console/ # Console output/logs
+│ ├── data/ # Data files (secure, web)
+│ ├── libs/ # Core library files
+│ │ ├── bots/ # 81 bot scripts (area/boss runners)
+│ │ ├── common/ # 26 shared utility modules
+│ │ ├── config/ # 20 config files (class templates + custom)
+│ │ ├── modules/ # 10 modular components
+│ │ └── [core files] # OOG.js, GameAction.js, etc.
+│ ├── mules/ # Mule character data
+│ ├── pickit/ # Item pickup configuration (.nip files)
+│ ├── sdk/ # Game data (skills, areas, items, etc.)
+│ ├── tools/ # 11 utility scripts
+│ └── *.dbj # Entry point scripts
+└── README.md # Project documentation
+```
+
+### 1.2 File Organization Assessment
+
+**Strengths:**
+- Clear separation between bots, common utilities, and configuration
+- Logical grouping by functionality (bots, common, config)
+- SDK data separated from logic
+
+**Weaknesses:**
+- No clear entry point documentation
+- Configuration files scattered (class configs, custom configs, templates)
+- No clear distinction between user-editable and system files
+- Missing project-level configuration management
+
+---
+
+## 2. Architecture Analysis
+
+### 2.1 Entry Points
+
+**Primary Entry Scripts:**
+- `default.dbj` - Main game entry point, initializes all systems
+- `D2BotLead.dbj` - Leader bot entry point
+- `D2BotFollow.dbj` - Follower bot entry point
+- `D2BotMap.dbj` - Manual play with bot features
+- `D2BotMule.dbj` - Mule character handler
+- `D2BotGameAction.dbj` - Game action handler
+
+**Execution Flow:**
+1. D2BS loads entry script (e.g., `D2BotLead.dbj`)
+2. Entry script includes `default.dbj`
+3. `default.dbj` initializes:
+ - Config system (`Config.init()`)
+ - Pickit system
+ - Attack system
+ - Storage system
+ - Crafting/Runeword systems
+4. `Loader.init()` executes bot scripts in sequence
+
+### 2.2 Core Systems
+
+#### Configuration System (`libs/common/Config.js`)
+- **Purpose:** Central configuration management
+- **Loading Order:**
+ 1. Custom config (profile-based)
+ 2. Class.Profile.js
+ 3. Realm.Class.Charname.js
+ 4. Class.Charname.js
+ 5. Profile.js
+ 6. Fallback to class default (e.g., Sorceress.js)
+- **Issues:**
+ - Complex loading hierarchy not well documented
+ - No validation of configuration values
+ - Hardcoded defaults scattered throughout codebase
+ - No environment-specific configs
+
+#### Bot Script System (`libs/bots/`)
+- **Structure:** 81 individual bot scripts
+- **Pattern:** Each script is self-contained with init/run logic
+- **Loading:** Dynamic loading via `Loader.js` based on `Scripts.*` flags
+- **Issues:**
+ - No dependency management between scripts
+ - Scripts can conflict if both enabled
+ - No script priority/ordering system beyond Loader sequence
+
+#### Pickit System (`libs/common/Pickit.js`)
+- **Purpose:** Item pickup and filtering
+- **Configuration:** `.nip` files in `pickit/` directory
+- **Issues:**
+ - NIP file format not well documented in README
+ - No validation of NIP syntax
+ - Multiple pickit files can conflict
+
+### 2.3 Module Dependencies
+
+**Key Dependencies:**
+- `libs/common/Config.js` - Required by all systems
+- `libs/common/Attack.js` - Required by all combat bots
+- `libs/common/Pather.js` - Required for movement/navigation
+- `libs/common/Town.js` - Required for town operations
+- `libs/OOG.js` - Out-of-game operations (character creation, logging)
+
+**Dependency Graph:**
+```
+default.dbj
+├── Config.js (core)
+├── Pickit.js
+├── Attack.js
+├── Pather.js
+├── Town.js
+├── Storage.js
+└── [Bot Scripts]
+ ├── Depend on: Config, Attack, Pather, Town
+ └── May depend on: Other bot scripts (via Scripts flags)
+```
+
+---
+
+## 3. Configuration System Deep Dive
+
+### 3.1 Configuration File Structure
+
+**Character Config Files:**
+- Location: `libs/config/`
+- Naming: `[Class].[CharacterName].js` (e.g., `Sorceress.MySorc.js`)
+- Format: JavaScript file with `LoadConfig()` function
+- Size: 600-700 lines per file
+
+**Configuration Hierarchy:**
+1. `_BaseConfigFile.js` - Template with all available options
+2. `_CustomConfig.js` - Profile-to-config mapping
+3. Class defaults (e.g., `Sorceress.js`, `Paladin.js`)
+4. Character-specific overrides
+
+### 3.2 Configuration Pain Points Identified
+
+#### Pain Point 1: Hardcoded Game Server
+**Location:** `libs/OOG.js:6`
+```javascript
+var gameserver = ""; //Enter the gameserver you'd like to use here
+```
+**Issue:**
+- Requires code modification for each user
+- Not profile-specific
+- Not documented clearly in README
+
+**Impact:** High - Users must edit source code to configure
+
+#### Pain Point 2: Complex Configuration Loading
+**Location:** `libs/common/Config.js:10-87`
+**Issue:**
+- 5 different config file naming patterns
+- Loading order not intuitive
+- No clear error messages when config not found
+- Users don't know which pattern to use
+
+**Impact:** High - Confusing for new users
+
+#### Pain Point 3: No Configuration Validation
+**Issue:**
+- Invalid values cause runtime errors
+- No type checking
+- No range validation (e.g., percentages > 100)
+- Silent failures on typos
+
+**Impact:** Medium - Causes frustration and debugging time
+
+#### Pain Point 4: Scattered Default Values
+**Issue:**
+- Defaults defined in `Config.js` object
+- Overridden in `_BaseConfigFile.js`
+- Further overridden in class configs
+- No single source of truth
+
+**Impact:** Medium - Hard to understand what the actual defaults are
+
+#### Pain Point 5: Large Configuration Files
+**Issue:**
+- 600-700 line config files
+- Most settings unused by typical users
+- Hard to find relevant settings
+- Intimidating for new users
+
+**Impact:** Medium - High barrier to entry
+
+### 3.3 Configuration Categories
+
+**Identified Configuration Categories:**
+1. **Script Activation** (Scripts.*) - 50+ boolean flags
+2. **Attack Configuration** (Config.AttackSkill[]) - Skill IDs and priorities
+3. **Inventory Management** (Config.Inventory[]) - Lock/unlock slots
+4. **Potion Settings** (Config.UseHP, Config.BeltColumn[]) - Healing thresholds
+5. **Pickit Configuration** (Config.PickitFiles[]) - Item pickup rules
+6. **Script-Specific Settings** (Config.[ScriptName].*) - 30+ script config objects
+7. **Advanced Features** (Config.Cubing, Config.Gamble, etc.) - Optional systems
+
+---
+
+## 4. Code Quality Analysis
+
+### 4.1 Code Organization
+
+**Strengths:**
+- Consistent file naming conventions
+- Modular design with clear separation of concerns
+- Good use of namespaces (Config, Scripts, etc.)
+
+**Weaknesses:**
+- Inconsistent error handling
+- Some files very large (default.dbj: 296 lines, some configs: 700+ lines)
+- Mixed coding styles (some ES3, some ES5 features)
+- Limited JSDoc documentation
+
+### 4.2 Error Handling
+
+**Current State:**
+- Basic try-catch blocks in critical paths
+- Error messages often cryptic
+- No centralized error logging
+- Some errors silently fail
+
+**Example Issues:**
+- `Config.js:66` - Throws generic error without context
+- `default.dbj` - Errors in config loading cause complete failure
+- No validation before execution
+
+### 4.3 Documentation
+
+**Current Documentation:**
+- README.md exists but basic
+- Inline comments in config files (good)
+- No API documentation
+- No architecture documentation
+- No troubleshooting guide
+
+**Gaps:**
+- No setup wizard or guided configuration
+- No examples of common configurations
+- No migration guide for updates
+- Limited troubleshooting information
+
+---
+
+## 5. User Experience Pain Points
+
+### 5.1 Initial Setup
+
+**Current Process:**
+1. Download PD2BS
+2. Download kolbot folder
+3. Replace kolbot folder
+4. Create profile in D2Bot manager
+5. Run bot → Get errors
+6. Press Home + Space to generate config
+7. Edit 600+ line config file
+8. Fix attack skills (common first error)
+9. Configure inventory
+10. Configure pickit
+11. Enable desired scripts
+
+**Issues:**
+- 11-step process with no guidance
+- Errors occur at step 5 with no explanation
+- Step 6 (Home + Space) not documented in README
+- Step 7 requires editing large JavaScript file
+- No validation until runtime
+
+**Estimated Time:** 2-3 hours for new users
+
+### 5.2 Configuration Management
+
+**Issues:**
+- No visual configuration tool
+- Must use text editor (Notepad++ recommended)
+- No configuration templates for common builds
+- No way to share configurations
+- No version control for configs
+- Hard to compare configs
+
+### 5.3 Error Messages
+
+**Issues:**
+- Errors often cryptic (e.g., "Failed to load character config")
+- No line numbers in config errors
+- No suggestions for fixing errors
+- Runtime errors don't point to config issues
+
+---
+
+## 6. Identified Issues Summary
+
+### Critical Issues (Fix Immediately)
+1. **Hardcoded gameserver in OOG.js** - Requires code modification
+2. **Missing config file error handling** - Unclear error messages
+3. **No attack skill validation** - Common first-time error not caught early
+
+### High Priority Issues
+4. **Complex configuration loading** - 5 different patterns, unclear which to use
+5. **Large, intimidating config files** - 600+ lines, most unused
+6. **No configuration validation** - Runtime errors from typos
+7. **Incomplete README** - Missing setup steps, troubleshooting
+
+### Medium Priority Issues
+8. **No configuration templates** - Users start from scratch
+9. **Scattered default values** - Hard to find actual defaults
+10. **Limited error messages** - Don't help users fix issues
+11. **No setup wizard** - Manual process error-prone
+
+### Low Priority Issues
+12. **Inconsistent code style** - ES3 vs ES5
+13. **Limited JSDoc** - Hard to understand APIs
+14. **No automated testing** - Changes may break existing configs
+
+---
+
+## 7. Recommendations
+
+### Immediate Improvements (Milestone 1)
+1. ✅ **Improve README** - Add comprehensive setup guide, troubleshooting section
+2. ✅ **Fix hardcoded gameserver** - Move to config or profile-based
+3. ✅ **Add configuration template** - Example config with comments
+4. ✅ **Improve error messages** - More descriptive, actionable errors
+5. ✅ **Clean up test files** - Remove `test file - remove this.txt`
+
+### Short-term Improvements (Milestone 2-3)
+6. **Centralized configuration system** - Single config file format
+7. **Configuration validation** - Pre-flight checks before execution
+8. **Configuration wizard** - Interactive setup tool
+9. **Better documentation** - API docs, architecture diagrams
+10. **Configuration examples** - Common build templates
+
+### Long-term Improvements (Future Milestones)
+11. **Visual configuration tool** - GUI for non-developers
+12. **Configuration migration system** - Auto-update configs on updates
+13. **Configuration sharing** - Import/export configs
+14. **Automated testing** - Prevent regressions
+15. **Plugin system** - Easier extension points
+
+---
+
+## 8. Dependency Map
+
+### Core Dependencies (Always Loaded)
+- `Config.js` - Configuration management
+- `OOG.js` - Out-of-game operations
+- `GameAction.js` - Game action handling
+- `GameData.js` - Game data access
+
+### Common Utilities (Loaded as Needed)
+- `Attack.js` - Combat system
+- `Pather.js` - Pathfinding
+- `Town.js` - Town operations
+- `Pickit.js` - Item pickup
+- `Storage.js` - Inventory management
+- `Cubing.js` - Horadric cube recipes
+- `Runewords.js` - Runeword creation
+
+### Bot Scripts (Loaded Based on Config)
+- 81 individual bot scripts in `libs/bots/`
+- Each script independent but may depend on common utilities
+- Loaded in sequence by `Loader.js`
+
+---
+
+## 9. Metrics
+
+### Codebase Size
+- **Total JavaScript Files:** ~150
+- **Configuration Files:** ~20
+- **Bot Scripts:** 81
+- **Common Utilities:** 26
+- **SDK Data Files:** 30+
+- **Lines of Code (Estimated):** 50,000+
+
+### Configuration Complexity
+- **Total Config Options:** 200+
+- **Script Flags:** 50+
+- **Attack Config Options:** 10+
+- **Inventory Config Options:** 5+
+- **Average Config File Size:** 600-700 lines
+
+### User Experience Metrics
+- **Estimated Setup Time:** 2-3 hours (new users)
+- **Common First Errors:** Attack skills not configured
+- **Configuration File Edits Required:** 5-10 minimum
+- **Documentation Gaps:** 8+ major areas
+
+---
+
+## 10. Conclusion
+
+The pd2bs-scripts codebase is a functional, feature-rich game automation bot with a solid architectural foundation. However, it suffers from configuration complexity and documentation gaps that create a high barrier to entry for new users.
+
+**Key Strengths:**
+- Well-organized modular structure
+- Comprehensive feature set
+- Active community and updates
+
+**Key Weaknesses:**
+- Complex configuration system
+- Limited documentation
+- No validation or error prevention
+- High setup complexity
+
+**Priority Focus Areas:**
+1. Configuration management (easiest to configure)
+2. Documentation (easier to understand)
+3. Error handling (easier to run)
+4. Structure improvements (easier to extend)
+
+The recommendations in this report provide a clear roadmap for improving usability while maintaining the existing functionality that users depend on.
+
+---
+
+## Appendix A: File Structure Details
+
+### Entry Point Scripts
+- `default.dbj` - Main game initialization
+- `D2BotLead.dbj` - Leader bot entry
+- `D2BotFollow.dbj` - Follower bot entry
+- `D2BotMap.dbj` - Manual play mode
+- `D2BotMule.dbj` - Mule handler
+- `D2BotGameAction.dbj` - Game action handler
+- `D2BotChannel.dbj` - Channel operations
+- `D2BotBlank.dbj` - Blank template
+
+### Core Library Files
+- `OOG.js` - Out-of-game operations (1,283 lines)
+- `GameAction.js` - Game action system
+- `GameData.js` - Game data access
+- `AutoMule.js` - Automatic muling
+- `Gambling.js` - Gambling system
+- `CraftingSystem.js` - Crafting recipes
+- `TorchSystem.js` - Uber Diablo/Torch system
+- `MuleLogger.js` - Mule logging
+
+### Configuration Files
+- `_BaseConfigFile.js` - Base template (665 lines)
+- `_CustomConfig.js` - Custom config mapping
+- `[Class].js` - Class default configs (7 classes)
+- `[Class].[Name].js` - Character-specific configs (user-created)
+
+---
+
+**End of Audit Report**
diff --git a/README.md b/README.md
index a2e2295..d942218 100644
--- a/README.md
+++ b/README.md
@@ -1,177 +1,479 @@
# pd2bs-scripts
-Scripts for pd2bs- Kolbot
-DL the newest Release of PD2BS and copy over the Kolbot from here to the d2bs folder.
-Use at your own risk.
+**Scripts for PD2BS - Kolbot Automation for Project D2**
-For changes please summit issues and pullrequests.
+This repository contains the Kolbot scripts and configurations for Project D2 (PD2BS). These scripts enable automated gameplay, item management, and various bot functionalities for Diablo 2.
+> **⚠️ Use at your own risk.** This is a third-party automation tool. Make sure you understand the risks before using.
-## Frequently Asked Questions:
+---
-### How do I change which GS server to make game in?
-You now have 2 options:
-1. In your profile write the gameserver into the Info tag. DO NOT USE QUOTES!
-
-2. In \d2bs\kolbot\libs\OOG.js on line 6 you should see a `gameserver` option. Put your preferred GS there in quotes (Eg. `"gs 1"`).
+## Table of Contents
+1. [Quick Start Guide](#quick-start-guide)
+2. [Installation](#installation)
+3. [First-Time Setup](#first-time-setup)
+4. [Configuration Guide](#configuration-guide)
+5. [Frequently Asked Questions](#frequently-asked-questions)
+6. [Troubleshooting](#troubleshooting)
+7. [Contributing](#contributing)
+---
+## Quick Start Guide
-### What's the skill ID for xxxxxx?
+**New to PD2BS?** Follow these steps in order:
-Check skill ID list here: https://github.com/Borega/pd2bs-scripts/blob/main/kolbot/sdk/skills.txt
+1. [Install Dependencies](#1-install-dependencies)
+2. [Download PD2BS](#2-download-pd2bs)
+3. [Install Kolbot Scripts](#3-install-kolbot-scripts)
+4. [Create Your First Profile](#4-create-your-first-profile)
+5. [Generate Character Config](#5-generate-character-config)
+6. [Configure Your Character](#6-configure-your-character)
+7. [Start Botting](#7-start-botting)
-### How do I make my bot pick up a specific item?
+**Estimated Time:** 30-60 minutes for first-time setup
+
+---
+
+## Installation
+
+### 1. Install Dependencies
+
+PD2BS requires the following Visual C++ Redistributable Packages. Install these **before** continuing:
+
+- **[Microsoft Visual C++ 2010 Redistributable Package (x86)](https://www.microsoft.com/en-us/download/details.aspx?id=5555)**
+- **[Microsoft Visual C++ 2015-2019 Redistributable Package (x86)](https://aka.ms/vs/16/release/vc_redist.x86.exe)**
+
+> **Note:** These are 32-bit (x86) versions, even on 64-bit Windows systems.
+
+### 2. Download PD2BS
+
+Download the latest release of PD2BS from one of these sources:
+
+- **Primary:** [https://shako.org/pd2bs-release.zip](https://shako.org/pd2bs-release.zip)
+- **Discord:** Join [https://discord.gg/jwkm47kX](https://discord.gg/jwkm47kX) and check the `#downloads` channel
+
+**Important:** Add PD2BS files to your antivirus exclusions to prevent false positives:
+- `D2Bot.exe`
+- `D2M.dll`
+- `D2BS.dll`
+
+### 3. Install Kolbot Scripts
+
+1. Download this repository:
+ - Click the green **"Code"** button → **"Download ZIP"**
+ - Or clone with Git: `git clone https://github.com/Borega/pd2bs-scripts.git`
+
+2. Extract the `kolbot` folder from this repository
+
+3. Replace the `kolbot` folder in your PD2BS installation:
+ - Location: `\d2bs\kolbot\`
+ - **Backup the original folder first** (rename to `kolbot_backup`)
+
+4. Verify the structure:
+ ```
+ d2bs/
+ └── kolbot/
+ ├── libs/
+ ├── pickit/
+ ├── sdk/
+ └── ...
+ ```
+
+> **💡 Tip:** Scripts are updated frequently. Update the `kolbot` folder periodically to get the latest fixes and features.
+
+---
+
+## First-Time Setup
+
+### 4. Create Your First Profile
+
+Each profile represents one bot instance. If you want to run multiple characters, create a profile for each.
+
+**Steps:**
+
+1. Open **PD2Bot Manager** (D2Bot.exe)
+
+2. Click **"Add"** to create a new profile
+
+3. Fill in the profile settings:
+
+ | Setting | Description | Example |
+ |---------|-------------|---------|
+ | **Profile Name** | Unique name (no spaces/special chars) | `MySorc` |
+ | **Account** | Your PD2 account name | `MyAccount` |
+ | **Password** | Your PD2 account password | `********` |
+ | **Character** | Character name to use | `MySorcName` |
+ | **Game Info** | Game name/password (use password!) | `game1/pass1` |
+ | **Difficulty** | Game difficulty | `Hell` |
+ | **Game Path** | Path to `Game.exe` | `C:\ProjectD2\Game.exe` |
+ | **Entry Script** | Bot mode (see below) | `D2BotLead.dbj` |
+
+ **Entry Script Options:**
+ - `D2BotLead.dbj` - Automated botting (most common)
+ - `D2BotMap.dbj` - Manual play with bot features
+ - `D2BotFollow.dbj` - Follower bot
+ - `D2BotMule.dbj` - Mule character
+
+4. Click **"Apply"** then **"OK"**
+
+5. Select your profile and click **"Start"**
+
+ - The game should launch and log in automatically
+ - You'll see console messages at the top of the screen
+
+### 5. Generate Character Config
+
+**First-time characters need a configuration file generated:**
+
+1. Once in-game, press **`Home`** key
+2. Then press **`Space`** key
+3. The game window will close (this is normal)
+4. A config file has been created at: `\d2bs\kolbot\libs\config\[Class].[CharacterName].js`
+
+ Example: If your character is a Sorceress named "MySorc", the file will be:
+ `Sorceress.MySorc.js`
+
+5. Try starting the bot again - you'll likely see errors (this is expected for first-time setup)
+
+### 6. Configure Your Character
+
+Open your character config file in **Notepad++** (or any code editor - **NOT regular Notepad**):
+
+**Location:** `\d2bs\kolbot\libs\config\[Class].[CharacterName].js`
+
+#### Essential Configuration Steps:
+
+**Step 1: Disable UserAddon**
+```javascript
+Scripts.UserAddon = false; // MUST be false to run boss/area scripts
+```
+
+**Step 2: Configure Attack Skills** ⚠️ **MOST COMMON FIRST ERROR**
+
+Find the `Config.AttackSkill` section and set at minimum:
+```javascript
+Config.AttackSkill[1] = 37; // Primary skill to bosses (example: 37 = Frozen Orb)
+Config.AttackSkill[3] = 37; // Primary skill to others
+```
+
+**Finding Skill IDs:**
+- Check: [https://github.com/Borega/pd2bs-scripts/blob/main/kolbot/sdk/skills.txt](https://github.com/Borega/pd2bs-scripts/blob/main/kolbot/sdk/skills.txt)
+- Use `CTRL+F` in your config file to search for "AttackSkill"
+
+**Step 3: Configure Inventory**
+
+Find `Config.Inventory` and set up your inventory lock pattern:
+```javascript
+Config.Inventory[0] = [1,1,1,1,1,1,1,1,1,0]; // Row 1: 1 = usable, 0 = locked
+Config.Inventory[1] = [1,1,1,1,1,1,1,1,1,0]; // Row 2
+Config.Inventory[2] = [1,1,1,1,1,1,1,1,1,0]; // Row 3
+Config.Inventory[3] = [1,1,1,1,1,1,1,1,1,0]; // Row 4
+Config.Inventory[4] = [0,0,0,0,0,0,0,0,0,0]; // Row 5: Locked (for charms)
+Config.Inventory[5] = [0,0,0,0,0,0,0,0,0,0]; // Row 6: Locked
+Config.Inventory[6] = [0,0,0,0,0,0,0,0,0,0]; // Row 7: Locked
+Config.Inventory[7] = [0,0,0,0,0,0,0,0,0,0]; // Row 8: Locked
+```
+
+- **`1`** = Bot can use this slot (for items, potions)
+- **`0`** = Bot will never touch this slot (for charms, tomes, keys)
+
+**Step 4: Configure Potions**
+
+Find `Config.BeltColumn` and set up your belt:
+```javascript
+Config.BeltColumn[0] = "hp"; // Column 1: Healing potions
+Config.BeltColumn[1] = "mp"; // Column 2: Mana potions
+Config.BeltColumn[2] = "rv"; // Column 3: Rejuvenation potions
+Config.BeltColumn[3] = "rv"; // Column 4: Rejuvenation potions
+```
+
+**Step 5: Configure Pickit (Item Pickup)**
+
+Find the "Pickit config" section:
+```javascript
+// Pickit config. Default folder is kolbot/pickit.
+Config.PickitFiles.push("redix.nip"); // Recommended for PD2
+Config.PickRange = 40; // Pick radius
+```
+
+Make sure `redix.nip` exists in `\d2bs\kolbot\pickit\` directory.
+
+**Step 6: Enable Scripts**
+
+Find the script section at the top of your config file:
+```javascript
+Scripts.Countess = true; // Enable Countess runs
+Scripts.Andariel = true; // Enable Andariel runs
+Scripts.Mephisto = true; // Enable Mephisto runs
+// etc...
+```
+
+Set `true` for scripts you want to run, `false` for ones you don't.
+
+### 7. Start Botting
+
+1. Save your config file
+2. Start the bot from PD2Bot Manager
+3. Watch the console for errors
+4. If errors occur, check the [Troubleshooting](#troubleshooting) section below
+
+---
+
+## Configuration Guide
+
+### Game Server Configuration
+
+You have **2 options** to set which game server to use:
+
+**Option 1: Profile-Based (Recommended)**
+- In PD2Bot Manager, edit your profile
+- In the **Info** field, enter the game server (e.g., `gs 1`)
+- **DO NOT use quotes**
+
+**Option 2: Global Default**
+- Edit `\d2bs\kolbot\libs\OOG.js`
+- Find line 6: `var gameserver = "";`
+- Set it to: `var gameserver = "gs 1";` (use quotes here)
+- This applies to all profiles unless overridden in Option 1
+
+### Skill ID Reference
+
+Find skill IDs here: [skills.txt](https://github.com/Borega/pd2bs-scripts/blob/main/kolbot/sdk/skills.txt)
-Read the original Kolbot NIP file guide here: https://github.com/blizzhackers/pickits/blob/master/NipGuide.md
-
-### D2BS keeps crashing! What do I do?
-
-There's a wide variety of reasons D2BS crashes, some of the more common fixes are:
-- Make sure your PD2BS is up to date, click `About` in your PD2Bot manager to check for updates
-- Set administrator rights to both `D2Bot.exe` and `game.exe`
-- Set Compatibility for `D2Bot.exe` and `game.exe` to Windows 7
-- Turn off A/V detection for `D2Bot.exe`, `D2M.dll`, and `D2BS.dll`
-- Make sure your profile path is set to the `game.exe` located in your Project D2 folder
-- Check to make sure theres no ghost `game.exe` (Diablo II) processes running in the background
-- Download a fresh copy of PD2BS.
-- Restart your PC and try again.
-
-There might be more solutions that aren't listed here that might be specific to your issue, the ones above are just the most common ones.
-
-
-## Properly Installing PD2BS
-### 1. Install the dependences
-PD2BS requires the following Visual C++ Redistributable Packages to run. If you don't already have these in your system, install them before continuing:
-- https://www.microsoft.com/en-us/download/details.aspx?id=5555 (Microsoft Visual C++ 2010 Redistributable Package x86)
-- https://aka.ms/vs/16/release/vc_redist.x86.exe (Microsoft Visual C++ 2015-2019 Redistributable Package x86)
-### 2. Download the latest release of PD2BS
-You can find the latest release of P2BS at one of the following links:
-- https://shako.org/pd2bs-release.zip
-- https://discord.gg/jwkm47kX in the #downloads channel.
-
-These include the main core files for the bot. Make sure to allow them in your A/V so it doesn't delete any files.
-### 3. Download the `kolbot` folder from this repo and replace it with the one that is packaged in Step 2.
-
-
This folder includes up-to-date script fixes and improvements to properly run on PD2, replace the folder located at \d2bs\kolbot. To download files on Github, click the green "Code" button and then click "Download Zip" as shown here:
-| Setting | -Description | -
| 1. Profile Name | -This is the name of the profile. You can set it to whatever you want as
- long as there's no special characters or white spaces. |
-
| 2. Account | -This will be your in-game PD2 Account name. | -
| 3. Password | -This will be you in-game PD2 Account password. | -
| 4. Character | -The character you'd like the bot to use. | -
| 5. Game Info | -The bot will use this information to create games.
- ALWAYS use a password to avoid creating public games. |
-
| 6. Difficulty | -The game difficulty you'd like your character to create a game in | -
| 7. Game Path | -Set this to the `Game.exe` in your Project D2 folder. Eg. `\ProjectD2\Game.exe` | -
| 8. Entry Script | -The main entry script you'll use is `D2BotLead.dbj`. If you want to play manually, use `D2BotMap.dbj`. |
-