# Forge Organization Module

## Overview
The Organization module provides a comprehensive system for managing player-created organizations in the Forge client. It enables players to create, join, and manage organizations with features including member management, asset tracking, financial operations, and reputation systems.

## Dependencies
- forge_client_main
- ArmaDragonflyClient

## Authors
- J. Schmidt
- Creedcoder
- IDSolutions

## Features

### Organization Management
1. **Creation & Disbanding**
   - Create new organizations with custom names
   - Set initial funds and reputation
   - Disband organizations (owner only)
   - Automatic database persistence

2. **Member Management**
   - Add and remove members
   - Role-based permissions
   - Member status tracking
   - Join date tracking
   - Leave organization option

3. **Asset Management**
   - Track organization-owned assets
   - Categorize assets by type
   - Store custom properties
   - Asset value tracking
   - Asset history logging

### Financial System
1. **Fund Management**
   - Add and remove funds
   - Transaction history
   - Balance tracking
   - Financial logging
   - Real-time updates

2. **Reputation System**
   - Reputation tracking
   - Reputation adjustments
   - Reputation history
   - Impact on gameplay
   - Reputation logging

### Data Management
1. **Database Integration**
   - Persistent storage
   - Automatic synchronization
   - Data validation
   - Error handling
   - Backup support

2. **Logging System**
   - Comprehensive activity logs
   - Transaction history
   - Member changes
   - Asset modifications
   - System events

## 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 organization module:
```sqf
// Create a new organization
[getPlayerUID player, "My Organization", 5000, 100] call forge_client_org_fnc_create;

// Add a member
["76561198012345678", "John Doe"] call forge_client_org_fnc_addMember;

// Add funds
[1000] call forge_client_org_fnc_addFunds;

// Add reputation
[10] call forge_client_org_fnc_addReputation;

// Add an asset
["vehicle", "B_MRAP_01_F"] call forge_client_org_fnc_addAsset;
```

## Integration
The organization module integrates with other Forge client systems:
1. **Bank System**
   - Organization accounts
   - Transaction processing
   - Balance management
   - Financial reporting

2. **Vehicle System**
   - Organization vehicles
   - Vehicle registration
   - Maintenance tracking
   - Usage logging

3. **Property System**
   - Organization properties
   - Property management
   - Value tracking
   - Usage rights

## 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 data synchronization
- Secure data management
- Comprehensive validation
- Error handling
- User feedback
- Cross-module integration
- Event system integration
- State management
- Database persistence
- Transaction logging
- Asset tracking
- Member management