Add GBU-12

This commit is contained in:
Bailey Danyluk 2024-05-27 20:39:00 -06:00
parent bcb6ed7c68
commit 2e49e17765
8 changed files with 274 additions and 0 deletions

1
addons/gbu/$PBOPREFIX$ Normal file
View File

@ -0,0 +1 @@
z\ace\addons\gbu

78
addons/gbu/CfgAmmo.hpp Normal file
View File

@ -0,0 +1,78 @@
class CfgAmmo {
class Bo_GBU12_LGB;
class GVAR(12): Bo_GBU12_LGB {
maneuvrability = 0; // no maneuvrability so that default guidance doesnt work
airFriction = 0.25; // bombs have high drag who woulda thunk
class ace_missileguidance {
enabled = 1;
pitchRate = 5;
yawRate = 5;
bangBangGuidance = 1;
stabilityCoefficient = 0.4; // how much this projectile likes to "weathervane" (keep direction toward velocity)
canVanillaLock = 0; // Can this default vanilla lock? Only applicable to non-cadet mode
// Guidance type for munitions
defaultSeekerType = "SALH";
seekerTypes[] = { "SALH" };
defaultSeekerLockMode = "LOAL";
seekerLockModes[] = { "LOAL" };
defaultNavigationType = "ProportionalNavigation";
navigationTypes[] = { "ProportionalNavigation" };
seekLastTargetPos = 0; // seek last target position [if seeker loses LOS of target, continue to last known pos]
seekerAngle = 60; // Angle from the shooter's view that can track the missile
seekerAccuracy = 1; // seeker accuracy multiplier
seekerMinRange = 5;
seekerMaxRange = 4000; // Range from the missile which the seeker can visually search
// Attack profile type selection
defaultAttackProfile = "DIR";
attackProfiles[] = {"DIR"};
};
};
class Bomb_03_F;
class GVAR(FAB250): Bomb_03_F {
maneuvrability = 0; // no maneuvrability so that default guidance doesnt work
airFriction = 0.25; // bombs have high drag who woulda thunk
class ace_missileguidance {
enabled = 1;
pitchRate = 8;
yawRate = 8;
bangBangGuidance = 1;
stabilityCoefficient = 0.4; // how much this projectile likes to "weathervane" (keep direction toward velocity)
canVanillaLock = 0; // Can this default vanilla lock? Only applicable to non-cadet mode
// Guidance type for munitions
defaultSeekerType = "SALH";
seekerTypes[] = { "SALH" };
defaultSeekerLockMode = "LOAL";
seekerLockModes[] = { "LOAL" };
defaultNavigationType = "ProportionalNavigation";
navigationTypes[] = { "ProportionalNavigation" };
seekLastTargetPos = 0; // seek last target position [if seeker loses LOS of target, continue to last known pos]
seekerAngle = 60; // Angle from the shooter's view that can track the missile
seekerAccuracy = 1; // seeker accuracy multiplier
seekerMinRange = 5;
seekerMaxRange = 4000; // Range from the missile which the seeker can visually search
// Attack profile type selection
defaultAttackProfile = "DIR";
attackProfiles[] = {"DIR"};
};
};
};

View File

@ -0,0 +1,87 @@
class CfgMagazines {
class 2Rnd_GBU12_LGB;
// GBU
class GVAR(2Rnd_12): 2Rnd_GBU12_LGB {
displayName = CSTRING(12_2x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
};
class 4Rnd_Bomb_04_F;
class GVAR(4Rnd_GBU12): 4Rnd_Bomb_04_F {
displayName = CSTRING(12_4x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
};
class magazine_Bomb_GBU12_x1;
class GVAR(gbu12): magazine_Bomb_GBU12_x1 {
displayName = CSTRING(12_1x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
};
class PylonMissile_1Rnd_Bomb_04_F;
class GVAR(1_PylonMissile_1Rnd_12): PylonMissile_1Rnd_Bomb_04_F {
displayName = CSTRING(12_1x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
pylonWeapon = QGVAR(12);
};
class 2Rnd_GBU12_LGB_MI10;
class GVAR(2Rnd_GBU12_LGB_MI10): 2Rnd_GBU12_LGB_MI10 {
displayName = CSTRING(12_2x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
pylonWeapon = QGVAR(12);
};
class PylonMissile_Bomb_GBU12_x1;
class GVAR(PylonMissile_Bomb_GBU12_x1): PylonMissile_Bomb_GBU12_x1 {
displayName = CSTRING(12_1x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
pylonWeapon = QGVAR(12);
};
class PylonRack_Bomb_GBU12_x2;
class GVAR(PylonRack_Bomb_GBU12_x2): PylonRack_Bomb_GBU12_x2 {
displayName = CSTRING(12_2x);
author = "Dani (TCVM)";
ammo = QGVAR(12);
pylonWeapon = QGVAR(12);
};
// KAB
class magazine_Bomb_KAB250_x1;
class GVAR(1Rnd_FAB250): magazine_Bomb_KAB250_x1 {
displayName = CSTRING(fab250_1x);
author = "Dani (TCVM)";
ammo = QGVAR(FAB250);
};
class PylonMissile_Bomb_KAB250_x1;
class GVAR(1_PylonMissile_1Rnd_FAB250): PylonMissile_Bomb_KAB250_x1 {
displayName = CSTRING(fab250_1x);
author = "Dani (TCVM)";
ammo = QGVAR(FAB250);
pylonWeapon = QGVAR(FAB250);
};
class 2Rnd_Bomb_03_F;
class GVAR(2Rnd_FAB250): 2Rnd_Bomb_03_F {
displayName = CSTRING(fab250_2x);
author = "Dani (TCVM)";
ammo = QGVAR(FAB250);
};
class PylonMissile_1Rnd_Bomb_03_F;
class GVAR(PylonMissile_1Rnd_FAB250): PylonMissile_1Rnd_Bomb_03_F {
displayName = CSTRING(fab250_1x);
author = "Dani (TCVM)";
ammo = QGVAR(FAB250);
pylonWeapon = QGVAR(FAB250);
};
};

32
addons/gbu/CfgWeapons.hpp Normal file
View File

@ -0,0 +1,32 @@
class CfgWeapons {
class weapon_LGBLauncherBase;
class GVAR(12): weapon_LGBLauncherBase {
displayName = CSTRING(12);
magazines[] = {
QGVAR(2Rnd_12),
QGVAR(2Rnd_GBU12_LGB_MI10),
QGVAR(4Rnd_GBU12),
QGVAR(gbu12),
QGVAR(1_PylonMissile_1Rnd_12),
QGVAR(PylonMissile_Bomb_GBU12_x1),
QGVAR(PylonRack_Bomb_GBU12_x2)
};
EGVAR(laser,canSelect) = 1; // can ace_laser lock (allows switching laser code)
EGVAR(laser,showHud) = 1; // show attack profile / lock on hud
};
class GVAR(FAB250): weapon_LGBLauncherBase {
displayName = CSTRING(fab250);
magazines[] = {
QGVAR(1Rnd_FAB250),
QGVAR(2Rnd_FAB250),
QGVAR(1_PylonMissile_1Rnd_FAB250),
QGVAR(PylonMissile_1Rnd_FAB250)
};
EGVAR(laser,canSelect) = 1; // can ace_laser lock (allows switching laser code)
EGVAR(laser,showHud) = 1; // show attack profile / lock on hud
};
};

12
addons/gbu/README.md Normal file
View File

@ -0,0 +1,12 @@
ace_gbu
===================
Adds GBU-12 LGB
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [Dani-TCVM](https://github.com/TheCandianVendingMachine)

20
addons/gbu/config.cpp Normal file
View File

@ -0,0 +1,20 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
name = COMPONENT_NAME;
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common","ace_missileguidance"};
author = ECSTRING(common,ACETeam);
authors[] = {"Dani (TCVM)"};
url = ECSTRING(main,URL);
VERSION_CONFIG;
};
};
#include "CfgAmmo.hpp"
#include "CfgMagazines.hpp"
#include "CfgWeapons.hpp"

View File

@ -0,0 +1,18 @@
#define COMPONENT gbu
#define COMPONENT_BEAUTIFIED Guided Bomb Unit
#include "\z\ace\addons\main\script_mod.hpp"
// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS
#ifdef DEBUG_ENABLED_GBU
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_GBU
#define DEBUG_SETTINGS DEBUG_SETTINGS_GBU
#endif
#include "\z\ace\addons\main\script_macros.hpp"

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="GBU">
<Key ID="STR_ACE_GBU_12">
<English>GBU-12 [ACE]</English>
</Key>
<Key ID="STR_ACE_GBU_fab250">
<English>FAB-250M-54 [ACE]</English>
</Key>
<Key ID="STR_ACE_GBU_12_1x">
<English>1x GBU-12 [ACE]</English>
</Key>
<Key ID="STR_ACE_GBU_12_2x">
<English>2x GBU-12 [ACE]</English>
</Key>
<Key ID="STR_ACE_GBU_12_4x">
<English>4x GBU-12 [ACE]</English>
</Key>
<Key ID="STR_ACE_GBU_fab250_1x">
<English>1x FAB-250M-54 [ACE]</English>
</Key>
<Key ID="STR_ACE_GBU_fab250_2x">
<English>2x FAB-250M-54 [ACE]</English>
</Key>
</Package>
</Project>