# Forge Task Module

## Overview
The Task module provides a comprehensive mission and objective system for the Forge client. It includes features for creating, managing, and tracking various types of tasks, with support for rewards, penalties, and mission completion conditions.

## Dependencies
- forge_client_main

## Authors
- J. Schmidt
- Creedcoder
- IDSolutions

## Features

### Task Types
1. **Attack Tasks** (`fnc_attack.sqf`)
   - Eliminate specific targets
   - Time-based objectives
   - Target escape prevention
   - Success/failure conditions
   - Reward system integration

2. **Defend Tasks** (`fnc_defend.sqf`)
   - Hold designated zones
   - Wave-based enemy attacks
   - Minimum force requirements
   - Time-based objectives
   - Zone control monitoring

3. **Hostage Tasks** (`fnc_hostage.sqf`)
   - Rescue hostages
   - Extraction zone management
   - Hostage protection
   - Time-based objectives
   - CBRN zone support

4. **HVT Tasks** (`fnc_hvt.sqf`)
   - Capture or eliminate HVTs
   - Extraction requirements
   - Target tracking
   - Success/failure conditions
   - Reward system integration

5. **Defuse Tasks** (`fnc_defuse.sqf`)
   - Defuse explosive devices
   - Time-based objectives
   - Success/failure conditions
   - Reward system integration
   - Explosive entity management

6. **Delivery Tasks** (`fnc_delivery.sqf`)
   - Transport objectives
   - Route management
   - Time-based delivery
   - Success/failure conditions
   - Reward system integration

### Task Management
1. **Task Configuration**
   - Unique task IDs
   - Success/failure limits
   - Time limits
   - Reward settings
   - Mission end conditions

2. **Reward System** (`fnc_handleTaskRewards.sqf`)
   - Company funds
   - Reputation points
   - Equipment rewards
   - Supply rewards
   - Weapon rewards
   - Vehicle rewards
   - Special rewards

3. **Task Tracking**
   - Progress monitoring
   - State management
   - Objective tracking
   - Time tracking
   - Success/failure detection

### Module System
1. **Attack Module** (`fnc_attackModule.sqf`)
   - Target configuration
   - Success/failure settings
   - Reward configuration
   - Time limit settings
   - Mission end conditions

2. **Defend Module** (`fnc_defendModule.sqf`)
   - Zone configuration
   - Wave settings
   - Force requirements
   - Reward configuration
   - Mission end conditions

3. **Hostage Module** (`fnc_hostageModule.sqf`)
   - Hostage configuration
   - Extraction settings
   - Time limit settings
   - Reward configuration
   - Mission end conditions

4. **HVT Module** (`fnc_hvtModule.sqf`)
   - Target configuration
   - Extraction settings
   - Success/failure settings
   - Reward configuration
   - Mission end conditions

5. **Defuse Module** (`fnc_defuseModule.sqf`)
   - Explosive configuration
   - Time limit settings
   - Success/failure settings
   - Reward configuration
   - Mission end conditions

## Event Handlers
The module uses several event handlers for initialization and execution:
- `XEH_preInit.sqf`: Pre-initialization setup
- `XEH_postInit.sqf`: Post-initialization tasks
- `XEH_preStart.sqf`: Pre-start configuration

## Usage
To use the task module:
```sqf
// Create an attack task
["task_attack_1", 1, 2, 1500000, -75, 375, false, false] spawn forge_client_task_fnc_attack;

// Create a defend task
["task_defend_1", "defend_marker", 900, 500000, -100, 400, false, false, 3, 300, 1] spawn forge_client_task_fnc_defend;

// Create a hostage task
["task_hostage_1", 1, 2, "extract_marker", 1500000, -75, 500, [false, true], false, false] spawn forge_client_task_fnc_hostage;

// Create an HVT task
["task_hvt_1", 1, 2, "extract_marker", 1500000, -75, 500, false, false] spawn forge_client_task_fnc_hvt;
```

## Integration
The task module integrates with other Forge client systems:
1. **Organization System**
   - Fund management
   - Reputation tracking
   - Asset rewards
   - Transaction processing
   - Balance updates

2. **Notification System**
   - Task assignments
   - Progress updates
   - Success/failure alerts
   - Reward notifications
   - Mission end notifications

3. **Mission System**
   - Mission success/failure
   - End conditions
   - State management
   - Progress tracking
   - Objective management

## Debugging
Debug mode can be enabled by uncommenting the following in `script_component.hpp`:
```cpp
#define DEBUG_MODE_FULL
```

## Version Information
Version information is managed through the main Forge client system configuration.

## Technical Details
- Real-time task monitoring
- Multi-objective support
- Reward system integration
- State management
- Progress tracking
- Time management
- Cross-module integration
- Event system integration
- Notification handling
- Error management
- Resource management
- Mission control
- Objective validation 