
All checks were successful
Build / Build (push) Successful in 28s
This commit introduces a basic framework for mission management. - Includes `CfgMissions.hpp` in `config.cpp`. - Adds `missionManager` to `XEH_PREP.hpp` for event handling preparation. - Adds a placeholder call to `FUNC(missionManager)` in `XEH_postInit.sqf` with a TODO comment for future implementation.
192 lines
7.0 KiB
C++
192 lines
7.0 KiB
C++
// TODO: Move to mission template and provide documentation
|
|
class CfgMissions {
|
|
// Global settings
|
|
maxConcurrentMissions = 3;
|
|
missionInterval = 300; // 5 minutes between mission generation
|
|
|
|
// Mission type weights
|
|
class MissionWeights {
|
|
attack = 0.2;
|
|
defend = 0.2;
|
|
hostage = 0.2;
|
|
hvt = 0.15;
|
|
defuse = 0.15;
|
|
delivery = 0.1;
|
|
};
|
|
|
|
// Mission locations
|
|
class Locations {
|
|
class CityOne {
|
|
position[] = {1000, 1000, 0};
|
|
type = "city";
|
|
radius = 300;
|
|
suitable[] = {"attack", "defend", "hostage"};
|
|
};
|
|
class MilitaryBase {
|
|
position[] = {2000, 2000, 0};
|
|
type = "military";
|
|
radius = 500;
|
|
suitable[] = {"hvt", "defend", "attack"};
|
|
};
|
|
class Industrial {
|
|
position[] = {3000, 3000, 0};
|
|
type = "industrial";
|
|
radius = 200;
|
|
suitable[] = {"delivery", "defuse"};
|
|
};
|
|
};
|
|
|
|
// AI Groups configuration
|
|
class AIGroups {
|
|
class Infantry {
|
|
side = "EAST";
|
|
class Units {
|
|
class Unit0 {
|
|
vehicle = "O_Soldier_TL_F";
|
|
rank = "SERGEANT";
|
|
position[] = {0, 0, 0};
|
|
};
|
|
class Unit1 {
|
|
vehicle = "O_Soldier_AR_F";
|
|
rank = "CORPORAL";
|
|
position[] = {5, -5, 0};
|
|
};
|
|
class Unit2 {
|
|
vehicle = "O_Soldier_LAT_F";
|
|
rank = "PRIVATE";
|
|
position[] = {-5, -5, 0};
|
|
};
|
|
};
|
|
suitable[] = {"attack", "defend", "hostage"};
|
|
};
|
|
class SpecOps {
|
|
side = "EAST";
|
|
class Units {
|
|
class Unit0 {
|
|
vehicle = "O_recon_TL_F";
|
|
rank = "SERGEANT";
|
|
position[] = {0, 0, 0};
|
|
};
|
|
class Unit1 {
|
|
vehicle = "O_recon_M_F";
|
|
rank = "CORPORAL";
|
|
position[] = {5, -5, 0};
|
|
};
|
|
};
|
|
suitable[] = {"hvt", "hostage"};
|
|
};
|
|
};
|
|
|
|
// TODO: Continue to refine mission types and their specific settings
|
|
// Mission type specific settings
|
|
class MissionTypes {
|
|
class Attack {
|
|
minUnits = 4;
|
|
maxUnits = 8;
|
|
class Rewards {
|
|
money[] = {500000, 1500000};
|
|
reputation[] = {100, 500};
|
|
equipment[] = {{"ItemGPS", 0.5}, {"ItemCompass", 0.3}};
|
|
supplies[] = {{"FirstAidKit", 0.2}, {"Medikit", 0.1}};
|
|
weapons[] = {{"arifle_MX_F", 0.3}, {"arifle_Katiba_F", 0.2}};
|
|
vehicles[] = {{"B_MRAP_01_F", 0.1}, {"B_APC_Wheeled_01_cannon_F", 0.05}};
|
|
special[] = {{"B_UAV_01_F", 0.05}, {"B_Heli_Light_01_F", 0.02}};
|
|
};
|
|
penalty[] = {-100, -25};
|
|
timeLimit[] = {900, 1800}; // 15-30 minutes
|
|
};
|
|
|
|
class Defend {
|
|
minWaves = 3;
|
|
maxWaves = 8;
|
|
unitsPerWave[] = {4, 8};
|
|
waveCooldown = 300;
|
|
class Rewards {
|
|
money[] = {750000, 2000000};
|
|
reputation[] = {150, 600};
|
|
equipment[] = {{"ItemGPS", 0.5}, {"ItemCompass", 0.3}};
|
|
supplies[] = {{"FirstAidKit", 0.2}, {"Medikit", 0.1}};
|
|
weapons[] = {{"arifle_MX_F", 0.3}, {"arifle_Katiba_F", 0.2}};
|
|
vehicles[] = {{"B_MRAP_01_F", 0.1}, {"B_APC_Wheeled_01_cannon_F", 0.05}};
|
|
special[] = {{"B_UAV_01_F", 0.05}, {"B_Heli_Light_01_F", 0.02}};
|
|
};
|
|
penalty[] = {-150, -50};
|
|
timeLimit[] = {1800, 3600}; // 30-60 minutes
|
|
};
|
|
|
|
class Hostage {
|
|
class Hostages {
|
|
civilian[] = {"C_man_1", "C_man_polo_1_F"};
|
|
military[] = {"B_Pilot_F", "B_officer_F"};
|
|
};
|
|
class Rewards {
|
|
money[] = {1000000, 2500000};
|
|
reputation[] = {200, 700};
|
|
equipment[] = {{"ItemGPS", 0.5}, {"ItemCompass", 0.3}};
|
|
supplies[] = {{"FirstAidKit", 0.2}, {"Medikit", 0.1}};
|
|
weapons[] = {{"arifle_MX_F", 0.3}, {"arifle_Katiba_F", 0.2}};
|
|
vehicles[] = {{"B_MRAP_01_F", 0.1}, {"B_APC_Wheeled_01_cannon_F", 0.05}};
|
|
special[] = {{"B_UAV_01_F", 0.05}, {"B_Heli_Light_01_F", 0.02}};
|
|
};
|
|
penalty[] = {-200, -75};
|
|
timeLimit[] = {600, 900}; // 10-15 minutes
|
|
};
|
|
|
|
class HVT {
|
|
class Targets {
|
|
officer[] = {"O_officer_F"};
|
|
sniper[] = {"O_sniper_F"};
|
|
};
|
|
escorts = 4;
|
|
class Rewards {
|
|
money[] = {800000, 2000000};
|
|
reputation[] = {175, 650};
|
|
equipment[] = {{"ItemGPS", 0.5}, {"ItemCompass", 0.3}};
|
|
supplies[] = {{"FirstAidKit", 0.2}, {"Medikit", 0.1}};
|
|
weapons[] = {{"arifle_MX_F", 0.3}, {"arifle_Katiba_F", 0.2}};
|
|
vehicles[] = {{"B_MRAP_01_F", 0.1}, {"B_APC_Wheeled_01_cannon_F", 0.05}};
|
|
special[] = {{"B_UAV_01_F", 0.05}, {"B_Heli_Light_01_F", 0.02}};
|
|
};
|
|
penalty[] = {-175, -50};
|
|
timeLimit[] = {900, 1800}; // 15-30 minutes
|
|
};
|
|
|
|
class Defuse {
|
|
class Devices {
|
|
small[] = {"DemoCharge_Remote_Mag"};
|
|
large[] = {"SatchelCharge_Remote_Mag"};
|
|
};
|
|
maxDevices = 3;
|
|
class Rewards {
|
|
money[] = {600000, 1500000};
|
|
reputation[] = {125, 450};
|
|
equipment[] = {{"ItemGPS", 0.5}, {"ItemCompass", 0.3}};
|
|
supplies[] = {{"FirstAidKit", 0.2}, {"Medikit", 0.1}};
|
|
weapons[] = {{"arifle_MX_F", 0.3}, {"arifle_Katiba_F", 0.2}};
|
|
vehicles[] = {{"B_MRAP_01_F", 0.1}, {"B_APC_Wheeled_01_cannon_F", 0.05}};
|
|
special[] = {{"B_UAV_01_F", 0.05}, {"B_Heli_Light_01_F", 0.02}};
|
|
};
|
|
penalty[] = {-125, -40};
|
|
timeLimit[] = {600, 900}; // 10-15 minutes
|
|
};
|
|
|
|
class Delivery {
|
|
class Cargo {
|
|
supplies[] = {"Land_CargoBox_V1_F"};
|
|
vehicles[] = {"B_MRAP_01_F", "B_Truck_01_transport_F"};
|
|
};
|
|
class Rewards {
|
|
money[] = {400000, 1200000};
|
|
reputation[] = {75, 350};
|
|
equipment[] = {{"ItemGPS", 0.5}, {"ItemCompass", 0.3}};
|
|
supplies[] = {{"FirstAidKit", 0.2}, {"Medikit", 0.1}};
|
|
weapons[] = {{"arifle_MX_F", 0.3}, {"arifle_Katiba_F", 0.2}};
|
|
vehicles[] = {{"B_MRAP_01_F", 0.1}, {"B_APC_Wheeled_01_cannon_F", 0.05}};
|
|
special[] = {{"B_UAV_01_F", 0.05}, {"B_Heli_Light_01_F", 0.02}};
|
|
};
|
|
penalty[] = {-75, -25};
|
|
timeLimit[] = {900, 1800}; // 15-30 minutes
|
|
};
|
|
};
|
|
};
|