Skip to content

Commit

Permalink
Add SAMs
Browse files Browse the repository at this point in the history
  • Loading branch information
TheCandianVendingMachine committed May 28, 2024
1 parent bcb6ed7 commit 4897eee
Show file tree
Hide file tree
Showing 9 changed files with 327 additions and 0 deletions.
1 change: 1 addition & 0 deletions addons/sam/$PBOPREFIX$
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
z\ace\addons\sam
122 changes: 122 additions & 0 deletions addons/sam/CfgAmmo.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
class CfgAmmo {
class ammo_Missile_mim145;
class GVAR(patriot): ammo_Missile_mim145 {
author = "Dani (TCVM)";
maneuvrability = 0;
class ace_missileguidance {
enabled = 1;

pitchRate = 30; // Minium flap deflection for guidance
yawRate = 30; // Maximum flap deflection for guidance

canVanillaLock = 1; // Can this default vanilla lock? Only applicable to non-cadet mode

// Guidance type for munitions
defaultSeekerType = "DopplerRadar";
seekerTypes[] = { "DopplerRadar" };
lockableTypes[] = {"Air"};

minimumSpeedFilter = 10; // filter out targets that have a closing velocity less than this
minimumTimeFilter = 0.00001; // filter out targets that are this close to the ground (speed of light)
maxTerrainCheck = 16000; // How far we should check for terrain

defaultSeekerLockMode = "LOAL";
seekerLockModes[] = { "LOAL", "LOBL" };

defaultNavigationType = "ZeroEffortMiss";
navigationTypes[] = { "ZeroEffortMiss" };

seekLastTargetPos = 0; // seek last target position [if seeker loses LOS of target, continue to last known pos]
seekerAngle = 50; // Angle from the shooter's view that can track the missile
seekerAccuracy = 1; // seeker accuracy multiplier

seekerMinRange = 75;
seekerMaxRange = 2500; // Range from the missile which the seeker can visually search

// Attack profile type selection
defaultAttackProfile = "DIR";
attackProfiles[] = {"DIR"};
};
};

class ammo_Missile_rim162;
class GVAR(RIM162): ammo_Missile_rim162 {
author = "Dani (TCVM)";
maneuvrability = 0;
class ace_missileguidance {
enabled = 1;

pitchRate = 15; // Minium flap deflection for guidance
yawRate = 15; // Maximum flap deflection for guidance

canVanillaLock = 1; // Can this default vanilla lock? Only applicable to non-cadet mode

// Guidance type for munitions
defaultSeekerType = "DopplerRadar";
seekerTypes[] = { "DopplerRadar" };
lockableTypes[] = {"Air"};

minimumSpeedFilter = 20; // filter out targets that have a closing velocity less than this
minimumTimeFilter = 0.00001; // filter out targets that are this close to the ground (speed of light)
maxTerrainCheck = 16000; // How far we should check for terrain

defaultSeekerLockMode = "LOAL";
seekerLockModes[] = { "LOAL", "LOBL" };

defaultNavigationType = "ZeroEffortMiss";
navigationTypes[] = { "ZeroEffortMiss" };

seekLastTargetPos = 0; // seek last target position [if seeker loses LOS of target, continue to last known pos]
seekerAngle = 50; // Angle from the shooter's view that can track the missile
seekerAccuracy = 1; // seeker accuracy multiplier

seekerMinRange = 75;
seekerMaxRange = 2500; // Range from the missile which the seeker can visually search

// Attack profile type selection
defaultAttackProfile = "DIR";
attackProfiles[] = {"DIR"};
};
};

class ammo_Missile_s750;
class GVAR(s400): ammo_Missile_s750 {
author = "Dani (TCVM)";
maneuvrability = 0;
class ace_missileguidance {
enabled = 1;

pitchRate = 25; // Minium flap deflection for guidance
yawRate = 25; // Maximum flap deflection for guidance

canVanillaLock = 1; // Can this default vanilla lock? Only applicable to non-cadet mode

// Guidance type for munitions
defaultSeekerType = "DopplerRadar";
seekerTypes[] = { "DopplerRadar" };
lockableTypes[] = {"Air"};

minimumSpeedFilter = 5; // filter out targets that have a closing velocity less than this
minimumTimeFilter = 0.000001; // filter out targets that are this close to the ground (speed of light)
maxTerrainCheck = 16000; // How far we should check for terrain

defaultSeekerLockMode = "LOAL";
seekerLockModes[] = { "LOAL", "LOBL" };

defaultNavigationType = "ZeroEffortMiss";
navigationTypes[] = { "ZeroEffortMiss" };

seekLastTargetPos = 0; // seek last target position [if seeker loses LOS of target, continue to last known pos]
seekerAngle = 50; // Angle from the shooter's view that can track the missile
seekerAccuracy = 1; // seeker accuracy multiplier

seekerMinRange = 75;
seekerMaxRange = 2500; // Range from the missile which the seeker can visually search

// Attack profile type selection
defaultAttackProfile = "DIR";
attackProfiles[] = {"DIR"};
};
};
};

20 changes: 20 additions & 0 deletions addons/sam/CfgMagazines.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class CfgMagazines {
class magazine_Missile_mim145_x4;
class GVAR(patriot): magazine_Missile_mim145_x4 {
displayName = CSTRING(patriot_missile);
ammo = QGVAR(patriot);
};

class magazine_Missile_rim162_x8;
class GVAR(RIM162): magazine_Missile_rim162_x8 {
displayName = CSTRING(essm_missile);
ammo = QGVAR(RIM162);
};

class magazine_Missile_s750_x4;
class GVAR(s400): magazine_Missile_s750_x4 {
displayName = CSTRING(s400_missile);
ammo = QGVAR(s400);
};
};

75 changes: 75 additions & 0 deletions addons/sam/CfgVehicles.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
class CfgVehicles {
class LandVehicle;
class StaticWeapon: LandVehicle {
class Turrets;
};
class StaticMGWeapon: StaticWeapon {
class Turrets: Turrets {
class MainTurret;
};
};

// RIM-162
class SAM_System_02_base_F: StaticMGWeapon {
displayName = CSTRING(essm);
class AnimationSources {
class Missiles_revolving {
source = "revolving";
weapon = QGVAR(RIM162);
};
};
class Turrets: Turrets {
class MainTurret: MainTurret {
gunnerName = CSTRING(essm_operator);
weapons[] = {
QGVAR(RIM162)
};
magazines[] = {
QGVAR(RIM162)
};
};
};
};
// Patriot
class SAM_System_03_base_F: StaticMGWeapon {
displayName = CSTRING(patriot);
class AnimationSources {
class Missiles_revolving {
source = "revolving";
weapon = QGVAR(patriot);
};
};
class Turrets: Turrets {
class MainTurret: MainTurret {
gunnerName = CSTRING(patriot_operator);
weapons[] = {
QGVAR(patriot)
};
magazines[] = {
QGVAR(patriot)
};
};
};
};
// S-400
class SAM_System_04_base_F: StaticMGWeapon {
displayName = CSTRING(s400);
class AnimationSources {
class Missiles_revolving {
source = "revolving";
weapon = QGVAR(s400);
};
};
class Turrets: Turrets {
class MainTurret: MainTurret {
gunnerName = CSTRING(s400_operator);
weapons[] = {
QGVAR(s400)
};
magazines[] = {
QGVAR(s400)
};
};
};
};
};
26 changes: 26 additions & 0 deletions addons/sam/CfgWeapons.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
class CfgWeapons {
class weapon_mim145Launcher;
class GVAR(patriot): weapon_mim145Launcher {
author = "Dani (TCVM)";
displayName = CSTRING(patriot);
magazines[] = { QGVAR(patriot) };
weaponLockDelay = 0.5;
};

class weapon_rim162Launcher;
class GVAR(RIM162): weapon_rim162Launcher {
author = "Dani (TCVM)";
displayName = CSTRING(essm);
magazines[] = { QGVAR(RIM162) };
weaponLockDelay = 0.5;
};

class weapon_s750Launcher;
class GVAR(s400): weapon_s750Launcher {
author = "Dani (TCVM)";
displayName = CSTRING(s400);
magazines[] = { QGVAR(s400) };
weaponLockDelay = 0.5;
};
};

12 changes: 12 additions & 0 deletions addons/sam/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ace_sam
===================

Adds MIM-104 Patriot, S-400, and RIM-162 missiles


## Maintainers

The people responsible for merging changes to this component or answering potential questions.

- [Dani-TCVM](https://github.com/TheCandianVendingMachine)

21 changes: 21 additions & 0 deletions addons/sam/config.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#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"
#include "CfgVehicles.hpp"

18 changes: 18 additions & 0 deletions addons/sam/script_component.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#define COMPONENT sam
#define COMPONENT_BEAUTIFIED SAM
#include "\z\ace\addons\main\script_mod.hpp"

// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS

#ifdef DEBUG_ENABLED_SAM
#define DEBUG_MODE_FULL
#endif

#ifdef DEBUG_SETTINGS_SAM
#define DEBUG_SETTINGS DEBUG_SETTINGS_SAM
#endif

#include "\z\ace\addons\main\script_macros.hpp"

32 changes: 32 additions & 0 deletions addons/sam/stringtable.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="SAM">
<Key ID="STR_ACE_SAM_patriot">
<English>MIM-104 Patriot</English>
</Key>
<Key ID="STR_ACE_SAM_patriot_operator">
<English>MIM-104 Operator</English>
</Key>
<Key ID="STR_ACE_SAM_patriot_missile">
<English>Patriot Missile</English>
</Key>
<Key ID="STR_ACE_SAM_essm">
<English>Mk-29 ESSM</English>
</Key>
<Key ID="STR_ACE_SAM_essm_operator">
<English>Mk-29 Operator</English>
</Key>
<Key ID="STR_ACE_SAM_essm_missile">
<English>RIM-162 ESSM</English>
</Key>
<Key ID="STR_ACE_SAM_s400">
<English>S-400</English>
</Key>
<Key ID="STR_ACE_SAM_s400_operator">
<English>S-400 Operator</English>
</Key>
<Key ID="STR_ACE_SAM_s400_missile">
<English>S-400 Missile</English>
</Key>
</Package>
</Project>

0 comments on commit 4897eee

Please sign in to comment.