Compare commits
3 Commits
722699d73e
...
6d001e42fe
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d001e42fe | |||
| 0791b25e57 | |||
| 4512f2c67e |
@@ -14,3 +14,7 @@ docs/superpowers/plans/2026-07-19-caracal-mb-efs.md
|
|||||||
tests/test_caracal_mb_efs.ps1
|
tests/test_caracal_mb_efs.ps1
|
||||||
lfsconfig
|
lfsconfig
|
||||||
docs/superpowers/plans/2026-07-26-a140-geometry-roadway-modularization.md
|
docs/superpowers/plans/2026-07-26-a140-geometry-roadway-modularization.md
|
||||||
|
.agents/skills/arma3-mod-development/SKILL.md
|
||||||
|
AGENTS.md
|
||||||
|
.agents/
|
||||||
|
libs/
|
||||||
|
|||||||
@@ -1,5 +1,31 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-07-31
|
||||||
|
|
||||||
|
### Armamentos navais
|
||||||
|
|
||||||
|
- A fumaça de exaustão dos mísseis ASM passou a utilizar o efeito visual vanilla CruiseMissile, mantendo sua textura, cores e dimensões características.
|
||||||
|
- O emissor de fumaça agora usa o ponto de memória fire_beg como origem e o vetor fire_beg → fire_end como direção da emissão, evitando a geração no centro ou abaixo do míssil.
|
||||||
|
- As funções de efeitos ASM foram reorganizadas na pasta braf_functions, com a função renomeada para fn_ASMEngineSmoke.sqf.
|
||||||
|
- O efeito BRAF_ASM_EngineEffects e o emissor de fumaça foram movidos para as classes-base ASM, permitindo reutilização por futuros mísseis antinavio.
|
||||||
|
|
||||||
|
## 2026-07-30
|
||||||
|
|
||||||
|
### Armamentos navais
|
||||||
|
|
||||||
|
- O AM39 Exocet foi integrado ao pacote de armamentos navais usando a base de míssil de cruzeiro, com modelo de voo próprio, ignição retardada de 1,5 segundo e animações de estágio de lançamento, cruzeiro e estabilizadores.
|
||||||
|
- Criadas as definições de munição, magazine, hardpoint e arma do AM39 para emprego aerotransportado.
|
||||||
|
- Configurada a ejeção do míssil sem velocidade inicial (`initSpeed=0` e `ejectSpeed[]={0,0,0}`), permitindo a queda gravitacional antes da ignição do motor.
|
||||||
|
- Ajustado o ciclo de efeitos do AM39 para usar o atraso de ignição vanilla: queda gravitacional sem partículas, labareda e emissor contínuo de fumaça branca juntos na ignição por 2 segundos e voo posterior sem efeitos.
|
||||||
|
|
||||||
|
### Aeronaves
|
||||||
|
|
||||||
|
- O AH-15B Super Cougar (Caracal) recebeu dois pylons dinâmicos para o AM39, um em cada bordo, com presets `Empty` e `AM39 Exocet 2x`.
|
||||||
|
- O pylon direito foi configurado como posição espelhada do pylon esquerdo e o armamento foi vinculado à estação do Weapons Officer.
|
||||||
|
- Adicionada a estação `BRAF_AM39_Gunner_Turret`, herdada da Crew Chief Turret, sem função de copiloto ou partida do motor, mantendo o emprego do sensor FLIR/laser designator.
|
||||||
|
- Os proxies dinâmicos do Caracal foram ajustados para o sistema de pylons.
|
||||||
|
- O modelo do store do AM39 passou a usar `PylonMissile_1x_Bomb_02_F.p3d`, fazendo o proxy desaparecer corretamente do helicóptero após o disparo.
|
||||||
|
|
||||||
## 2026-07-19
|
## 2026-07-19
|
||||||
|
|
||||||
### Aeronaves
|
### Aeronaves
|
||||||
|
|||||||
LFS
BIN
Binary file not shown.
@@ -2,7 +2,7 @@ class CfgPatches
|
|||||||
{
|
{
|
||||||
class BRAF_SHIPS
|
class BRAF_SHIPS
|
||||||
{
|
{
|
||||||
author = "BRAF Team";
|
author = "BRAF Team";
|
||||||
addonRootClass="A3_Boat_F";
|
addonRootClass="A3_Boat_F";
|
||||||
units[]=
|
units[]=
|
||||||
{
|
{
|
||||||
@@ -16,16 +16,6 @@ class CfgPatches
|
|||||||
weapons[]={};
|
weapons[]={};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class cfgFactionClasses
|
|
||||||
{
|
|
||||||
class BRAF_NAVY
|
|
||||||
{
|
|
||||||
displayName="Brazilian Navy";
|
|
||||||
priority=2;
|
|
||||||
side=2;
|
|
||||||
icon="";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
class CfgVehicles
|
class CfgVehicles
|
||||||
{
|
{
|
||||||
class StaticShip;
|
class StaticShip;
|
||||||
@@ -34,6 +24,7 @@ class CfgVehicles
|
|||||||
model="BRAF\BRAF_SHIPS\BRAF_A140\BRAF_A140.p3d";
|
model="BRAF\BRAF_SHIPS\BRAF_A140\BRAF_A140.p3d";
|
||||||
displayName="NAM A-140 Atlântico";
|
displayName="NAM A-140 Atlântico";
|
||||||
destrType=0;
|
destrType=0;
|
||||||
|
author = "BRAF TEAM";
|
||||||
faction="BRAF_NAVY";
|
faction="BRAF_NAVY";
|
||||||
scope=2;
|
scope=2;
|
||||||
};
|
};
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,85 @@
|
|||||||
|
params [
|
||||||
|
"_unit",
|
||||||
|
"_weapon",
|
||||||
|
"_muzzle",
|
||||||
|
"_mode",
|
||||||
|
"_ammo",
|
||||||
|
"_magazine",
|
||||||
|
"_projectile"
|
||||||
|
];
|
||||||
|
|
||||||
|
private _ammoConfig = configFile >> "CfgAmmo" >> _ammo;
|
||||||
|
if (
|
||||||
|
isNull _projectile ||
|
||||||
|
{!isClass _ammoConfig} ||
|
||||||
|
{getNumber (_ammoConfig >> "braf_asm") != 1}
|
||||||
|
) exitWith {};
|
||||||
|
|
||||||
|
[_projectile] spawn
|
||||||
|
{
|
||||||
|
params ["_projectile"];
|
||||||
|
|
||||||
|
sleep 1.5;
|
||||||
|
if (isNull _projectile) exitWith {};
|
||||||
|
|
||||||
|
private _fireBeg = _projectile selectionPosition ["fire_beg", "Memory"];
|
||||||
|
private _fireEnd = _projectile selectionPosition ["fire_end", "Memory"];
|
||||||
|
private _fireDirectionModel = _fireBeg vectorFromTo _fireEnd;
|
||||||
|
|
||||||
|
if (vectorMagnitude _fireDirectionModel < 0.01) exitWith {};
|
||||||
|
|
||||||
|
private _fireDirectionWorld = _projectile vectorModelToWorld _fireDirectionModel;
|
||||||
|
private _smoke = "#particlesource" createVehicleLocal [0, 0, 0];
|
||||||
|
if (isNull _smoke) exitWith {};
|
||||||
|
|
||||||
|
_smoke setParticleParams
|
||||||
|
[
|
||||||
|
["\A3\data_f\ParticleEffects\Universal\Universal", 16, 12, 8, 0],
|
||||||
|
"",
|
||||||
|
"Billboard",
|
||||||
|
1,
|
||||||
|
0.6,
|
||||||
|
"fire_beg",
|
||||||
|
_fireDirectionWorld vectorMultiply 2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1.2,
|
||||||
|
0.5,
|
||||||
|
[2, 6, 8.8],
|
||||||
|
[
|
||||||
|
[0.5, 0.5, 0.5, 0.1],
|
||||||
|
[0.6, 0.6, 0.6, 0.06],
|
||||||
|
[0.7, 0.7, 0.7, 0.04],
|
||||||
|
[0.8, 0.8, 0.8, 0.005],
|
||||||
|
[0.9, 0.9, 0.9, 0.003]
|
||||||
|
],
|
||||||
|
[5],
|
||||||
|
0.1,
|
||||||
|
0.1,
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
_projectile
|
||||||
|
];
|
||||||
|
_smoke setParticleRandom
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
[0.3, 0.3, 0.3],
|
||||||
|
[0.25, 0.25, 0.25],
|
||||||
|
20,
|
||||||
|
0.15,
|
||||||
|
[0, 0, 0, 0],
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
];
|
||||||
|
_smoke setDropInterval 0.003;
|
||||||
|
_smoke attachTo [_projectile, [0, 0, 0]];
|
||||||
|
|
||||||
|
private _endTime = time + 2;
|
||||||
|
waitUntil
|
||||||
|
{
|
||||||
|
sleep 0.01;
|
||||||
|
isNull _projectile || {time >= _endTime}
|
||||||
|
};
|
||||||
|
|
||||||
|
deleteVehicle _smoke;
|
||||||
|
};
|
||||||
@@ -7,7 +7,9 @@ class CfgPatches
|
|||||||
requiredVersion = 1.82;
|
requiredVersion = 1.82;
|
||||||
requiredAddons[] =
|
requiredAddons[] =
|
||||||
{
|
{
|
||||||
"A3_Weapons_F"
|
"A3_Weapons_F",
|
||||||
|
"A3_Data_F",
|
||||||
|
"A3_Data_F_ParticleEffects"
|
||||||
};
|
};
|
||||||
units[] = {};
|
units[] = {};
|
||||||
weapons[] =
|
weapons[] =
|
||||||
@@ -16,6 +18,29 @@ class CfgPatches
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
class CfgFunctions
|
||||||
|
{
|
||||||
|
class BRAF
|
||||||
|
{
|
||||||
|
class NavalWeapons
|
||||||
|
{
|
||||||
|
class ASMEngineSmoke
|
||||||
|
{
|
||||||
|
file = "\braf\braf_weapons_naval\braf_functions\fn_ASMEngineSmoke.sqf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class BRAF_ASM_EngineEffects
|
||||||
|
{
|
||||||
|
class RocketBackfire1
|
||||||
|
{
|
||||||
|
simulation = "particles";
|
||||||
|
type = "PylonBackfire";
|
||||||
|
start = "(density interpolate [0.019,0.02,1,0])";
|
||||||
|
lifeTime = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
class CfgAmmo
|
class CfgAmmo
|
||||||
{
|
{
|
||||||
class ammo_Missile_CruiseBase;
|
class ammo_Missile_CruiseBase;
|
||||||
@@ -23,7 +48,12 @@ class CfgAmmo
|
|||||||
{
|
{
|
||||||
scope = 0;
|
scope = 0;
|
||||||
cameraViewAvailable = 1;
|
cameraViewAvailable = 1;
|
||||||
initTime = 0.5;
|
initTime = 1.5;
|
||||||
|
coefGravity = 1;
|
||||||
|
braf_asm = 1;
|
||||||
|
effectsMissileInit = "BRAF_ASM_EngineEffects";
|
||||||
|
effectsMissile = "EmptyEffect";
|
||||||
|
muzzleEffect = "";
|
||||||
};
|
};
|
||||||
class braf_ammo_am39_asm: braf_ammo_asm_cruise_base
|
class braf_ammo_am39_asm: braf_ammo_asm_cruise_base
|
||||||
{
|
{
|
||||||
@@ -32,9 +62,6 @@ class CfgAmmo
|
|||||||
author = "BRAF TEAM";
|
author = "BRAF TEAM";
|
||||||
model = "braf\braf_weapons_naval\braf_asm\Exocet\AM39\braf_am39_fly.p3d";
|
model = "braf\braf_weapons_naval\braf_asm\Exocet\AM39\braf_am39_fly.p3d";
|
||||||
proxyShape = "braf\braf_weapons_naval\braf_asm\Exocet\AM39\braf_am39.p3d";
|
proxyShape = "braf\braf_weapons_naval\braf_asm\Exocet\AM39\braf_am39.p3d";
|
||||||
effectsMissileInit = "PylonBackEffects";
|
|
||||||
effectsMissile = "EmptyEffect";
|
|
||||||
muzzleEffect = "";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class CfgMagazines
|
class CfgMagazines
|
||||||
@@ -56,12 +83,12 @@ class CfgMagazines
|
|||||||
displayName = "AM39 Exocet Pylon Store";
|
displayName = "AM39 Exocet Pylon Store";
|
||||||
author = "BRAF TEAM";
|
author = "BRAF TEAM";
|
||||||
count = 1;
|
count = 1;
|
||||||
initSpeed = 12;
|
initSpeed = 0;
|
||||||
model="\A3\Weapons_F\DynamicLoadout\PylonMissile_1x_Bomb_02_F.p3d";
|
model="\A3\Weapons_F\DynamicLoadout\PylonMissile_1x_Bomb_02_F.p3d";
|
||||||
ammo = "braf_ammo_am39_asm";
|
ammo = "braf_ammo_am39_asm";
|
||||||
pylonWeapon = "braf_weapon_am39_asm";
|
pylonWeapon = "braf_weapon_am39_asm";
|
||||||
hardpoints[] = {"BRAF_AM39_PYLON"};
|
hardpoints[] = {"BRAF_AM39_PYLON"};
|
||||||
ejectSpeed[] = {1,0,0};
|
ejectSpeed[] = {0,0,0};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class CfgWeapons
|
class CfgWeapons
|
||||||
@@ -71,6 +98,7 @@ class CfgWeapons
|
|||||||
class braf_weapon_asm_air_base: missiles_SCALPEL
|
class braf_weapon_asm_air_base: missiles_SCALPEL
|
||||||
{
|
{
|
||||||
scope = 0;
|
scope = 0;
|
||||||
|
author = "BRAF TEAM";
|
||||||
magazines[] = {};
|
magazines[] = {};
|
||||||
modes[] = {"Cruise"};
|
modes[] = {"Cruise"};
|
||||||
class Cruise: RocketPods
|
class Cruise: RocketPods
|
||||||
@@ -97,12 +125,16 @@ class CfgWeapons
|
|||||||
maxRange = 32000;
|
maxRange = 32000;
|
||||||
maxRangeProbab = 0.92;
|
maxRangeProbab = 0.92;
|
||||||
};
|
};
|
||||||
|
class EventHandlers
|
||||||
|
{
|
||||||
|
fired = "_this call BRAF_fnc_ASMEngineSmoke";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
class braf_weapon_am39_asm: braf_weapon_asm_air_base
|
class braf_weapon_am39_asm: braf_weapon_asm_air_base
|
||||||
{
|
{
|
||||||
scope = 2;
|
scope = 2;
|
||||||
displayName = "AM39 Exocet";
|
displayName = "AM39 Exocet";
|
||||||
author = "BRAF";
|
author = "BRAF TEAM";
|
||||||
magazines[] =
|
magazines[] =
|
||||||
{
|
{
|
||||||
"braf_mag_am39_1rnd",
|
"braf_mag_am39_1rnd",
|
||||||
|
|||||||
Reference in New Issue
Block a user