| .claude | ||
| MosswartMassacre | ||
| Shared | ||
| Unused | ||
| .gitattributes | ||
| .gitignore | ||
| CLAUDE.md | ||
| mossy.sln | ||
| README.md | ||
MosswartMassacre - Advanced DECAL Plugin for Asheron's Call
Status: Production Ready | VVS Direct Integration | Navigation Visualization Complete
A comprehensive DECAL plugin for Asheron's Call that tracks monster kills, rare item discoveries, and provides advanced navigation route visualization with 3D rendering.
🚀 Features
Core Functionality
- Kill Tracking: Real-time monster kill counting with rate calculations (kills/5min, kills/hour)
- Rare Item Discovery: Automatic rare detection and counter with optional meta state control
- Statistics Dashboard: Detailed session statistics with best hourly performance tracking
- Multi-System Integration: WebSocket streaming, HTTP command server, and telemetry support
🗺️ Navigation Visualization
Advanced VTank route visualization with 3D rendering capabilities
- 3D Route Display: Renders VTank .nav files as red lines in the game world
- Route Comparison: Side-by-side visualization with UtilityBelt's active navigation
- Full Format Support: All VTank nav types (Circular, Linear, Target, Once) and waypoint types
- Auto-Discovery: Automatically detects VTank installation and scans for .nav files
- Performance Optimized: Smart rendering limits and memory management
🎛️ User Interface
Modern tabbed interface using direct VirindiViewService integration
- Main Tab: Live kill stats, rare counts, elapsed time, and status indicators
- Settings Tab: Plugin configuration with real-time updates
- Statistics Tab: Enhanced analytics and session management
- Navigation Tab: Route selection, visualization controls, and status display
📥 Installation
Prerequisites
- Windows with .NET Framework 4.8
- Asheron's Call with DECAL Adapter installed
- VirindiViewService (included in lib/ folder)
Quick Setup
- Download the latest release from the releases page
- Extract to your DECAL plugins directory
- Restart DECAL and enable the plugin
- Configure settings through the in-game UI
Building from Source
# Clone the repository
git clone [repository-url]
cd MosswartMassacre
# Restore packages and build
nuget restore packages.config
msbuild MosswartMassacre.csproj /p:Configuration=Release /p:Platform=AnyCPU
🎮 Usage
Basic Commands
Access all features through the /mm command interface:
/mm help - Show available commands
/mm report - Display current kill statistics
/mm loc - Show current map coordinates
/mm reset - Reset kill counters and timers
/mm meta - Toggle automatic rare meta state
/mm http <on/off> - Control HTTP command server (port 8085)
/mm telemetry <on/off> - Control telemetry streaming
Navigation Visualization
- Enable: Check "Enable Navigation Visualization" in Navigation tab
- Configure: Set VTank profiles path in Settings (auto-detected)
- Select Route: Choose from dropdown and click "Load Route"
- View: Red route lines appear in 3D game world
Configuration
Settings are stored per-character in YAML format at <PluginDir>/<CharacterName>.yaml:
rare_meta_enabled: true
remote_commands_enabled: false
http_server_enabled: false
websocket_enabled: true
telemetry_enabled: false
char_tag: "default"
vtank_profiles_path: "C:\\Games\\VirindiPlugins\\VirindiTank\\"
main_window_x: 100
main_window_y: 100
🏗️ Architecture
Core Components
- PluginCore.cs: Main entry point and event coordination
- PluginSettings.cs: YAML-based per-character configuration
- Views/VVSTabbedMainView.cs: Main tabbed UI with direct VVS integration
- Views/VVSBaseView.cs: Base class for VVS-based views
Navigation System
- NavRoute.cs: VTank .nav file parser and 3D renderer
- NavVisualization.cs: Route management and file discovery
- Registry Integration: Automatic VTank directory detection
Communication Systems
- WebSocket.cs: Real-time data streaming to external services
- HttpCommandServer.cs: Local HTTP API for remote control
- Telemetry.cs: Periodic statistics reporting
Game Integration
- VtankControl.cs: vTank automation interface
- MossyInventory.cs: Inventory monitoring and rare detection
- Utils.cs: Game coordinate systems and utility functions
🔧 Technical Details
Dependencies
- DECAL Framework: Core plugin system (Decal.Adapter, Decal.Interop.Core, Decal.Interop.D3DService)
- VirindiViewService: UI framework for game overlays
- Newtonsoft.Json: JSON serialization for APIs
- YamlDotNet: Configuration file management
Build Configuration
- Target: .NET Framework 4.8, x86 platform
- Architecture: Direct VVS integration (no wrapper abstraction)
- Features: Unsafe blocks enabled for P/Invoke operations
Navigation File Format Support
Complete VTank .nav format compatibility:
- Nav Types: Circular (1), Linear (0/2), Target (3), Once (4)
- Waypoint Types: Point, Portal, Recall, Pause, ChatCommand, OpenVendor, Portal2, UseNPC, Checkpoint, Jump
- Performance: Optimized for routes up to 10,000 waypoints with 500-segment rendering limit
🔌 API Integration
HTTP Command Server
# Enable server
curl -X POST http://localhost:8085/ -d "target=PlayerName&command=report"
# Available endpoints
POST / - Execute command for target player
WebSocket Streaming
Real-time data streaming to wss://overlord.snakedesert.se/websocket/ including:
- Monster spawn/despawn events
- Chat messages and rare discoveries
- Player position and statistics
- Session-based authentication with SharedSecret
Telemetry Data
Periodic JSON snapshots posted to configurable endpoints:
{
"timestamp": "2024-12-19T10:30:00Z",
"character": "PlayerName",
"position": {"x": 59.2, "y": -28.7, "z": 0.05},
"stats": {"kills": 150, "rares": 3, "session_time": "02:15:30"}
}
🛠️ Development
Project Structure
MosswartMassacre/
├── Views/ # VVS-based UI components
│ ├── VVSBaseView.cs # Base view foundation
│ └── VVSTabbedMainView.cs # Main tabbed interface
├── ViewXML/ # UI layout definitions
│ └── mainViewTabbed.xml # Current layout
├── NavRoute.cs # Navigation file parser
├── NavVisualization.cs # Route visualization manager
├── PluginCore.cs # Main plugin logic
├── PluginSettings.cs # Configuration management
└── lib/ # External dependencies
Development Environment
- IDE: Visual Studio 2017+ or VS Code with C# extension
- Tools: MSBuild, NuGet Package Manager
- Testing: In-game with Asheron's Call client and DECAL
Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
📚 Related Documentation
- CLAUDE.md: Claude AI development guidance and build commands
- Development History: Successful VVS migration completed, wrapper system removed
- Architecture Evolution: Migrated from wrapper-based to direct VVS integration
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🎯 Roadmap
Completed ✅
- VVS Direct Integration Migration
- Navigation Visualization System
- Tabbed UI Interface
- WebSocket Streaming
- HTTP Command API
- Telemetry System
- Architecture Cleanup (Phase 3)
Future Enhancements
- Multiple route visualization
- Route analysis and optimization tools
- Enhanced UI controls and themes
- Plugin integration marketplace
- Advanced statistics and reporting
Built with ❤️ for the Asheron's Call community