This commit is the equivalent of a atomic bomb

This commit is contained in:
2026-02-15 08:08:56 -03:00
commit e4ac56b038
6934 changed files with 916278 additions and 0 deletions

216
.clang-format Normal file
View File

@@ -0,0 +1,216 @@
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
AttributeMacros:
- __capability
BinPackArguments: false
ColumnLimit: 80
BraceWrapping:
AfterArrayComma: false
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: false
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentExternBlock: AfterExternBlock
IndentRequiresClause: true
IndentWidth: 2
IndentWrappedFunctionNames: false
InsertBraces: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Right
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
RequiresClausePosition: OwnLine
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 8
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...

16
.gitattributes vendored Normal file
View File

@@ -0,0 +1,16 @@
*.p3d filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.paa filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.wss filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.blende filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.blend1 filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.rtm filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text

7
.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
**/thing.obf
*.bin
braf_factions/
__pycache__
env*

35
LICENSE.md Normal file
View File

@@ -0,0 +1,35 @@
# License
## Installation
The [Steam Workshop](https://steamcommunity.com/workshop/filedetails/?id=450814997) is the only way to download the BRAF Mod, Subscribe to the add-on and it will be kept up to date by the Steam Workshop updater.
## Requirements
NOTE: Brazilian Armed Forces A3 requires only [CBA: Community Based Addons](https://steamcommunity.com/workshop/filedetails/?id=450814997) for Arma 3 to run properly.
## Usage
All the contents of the add-on can be found in the Mission editor.
## Disclaimer and License
All the computer programs and software are provided "as is" without warranty of any kind. We make no warranties, express or implied, that they are free of error, or are consistent with any particular standard of merchant ability, or that they will meet your requirements for any particular application. They should not be relied on for solving a problem whose incorrect solution could result in injury to a person or loss of property. If you do use them in such a manner, it is at your own risk.
**THE AUTHOR AND PUBLISHER DISCLAIM ALL LIABILITY FOR DIRECT, INDIRECT, OR
CONSEQUENTIAL DAMAGES RESULTING FROM YOUR USE OF THE PROGRAMS.**
By downloading and using the Brazilian Armed Forces A3, you hereby agree to the following license agreement.
## End User License Agreement
The work contained in this distribution is licensed under the Arma Public License No Derivatives (APL-ND).
![APL-ND](https://data.bistudio.com/images/license/APL-ND.png)
Please note that the above mentioned agreement gives the right to Project BRAF Team to waiver any of the conditions, thus feel free to contact us to obtain permission to modify our work.
It is forbidden the distribution of the content of this package by itself, part of it, or as part of another distribution, using the Steam Workshop foe example, by anyone other than Project BRAF Team itself. Right now, the only exception, agreed by the BRAF Team, is the BRAF Factions mod, avaliable on [Steam Workshop - BRAF Factions](https://steamcommunity.com/sharedfiles/filedetails/?id=2951736528), being the only authorized mod.
You may not use the material for commercial purposes. This includes running this package on server instances that employ any monetization schemes, including, but not limited to, donate-reward systems. Bohemia Interactive's
approval of your monetization scheme does not grant you rights to wave this clause of the EULA.
This add-on is provided for Arma 3 only and is not to be used with VBS or any of its derivatives built for the purpose of military training.
It is strictly forbidden for the content provided and/or any derivatives to be use in the DayZ game.
![License Chart](https://www.bohemia.net/assets/img/licenses/images/license_chart.jpg?4)

26
LICENSE_PT-BR.md Normal file
View File

@@ -0,0 +1,26 @@
## Instalação
A [Steam Workshop](https://steamcommunity.com/workshop/filedetails/?id=450814997) é a única maneira de baixar o Mod BRAF, Inscreva-se no add-on e ele será mantido atualizado pelo atualizador da Steam Workshop.
## Requisitos
NOTA: O BRAF requer apenas [CBA: Community Based Addons](https://steamcommunity.com/workshop/filedetails/?id=450814997) para Arma 3 para funcionar corretamente.
## Uso
Todo o conteúdo do add-on pode ser encontrado no editor de missões.
## Aviso Legal e Licença
Todos o software é fornecidos "como está", sem garantia de qualquer tipo. Não oferecemos garantias, expressas ou implícitas, de que estão livres de erros ou são consistentes com qualquer padrão particular de comerciabilidade, ou que atenderão aos seus requisitos para qualquer aplicativo específico. Eles não devem ser confiados para resolver um problema cuja solução incorreta possa resultar em lesão a uma pessoa ou perda de propriedade. Se você os usar dessa maneira, será por sua conta e risco.
**O AUTOR E O EDITOR NÃO ASSUMEM NENHUMA RESPONSABILIDADE POR DANOS DIRETOS, INDIRETOS OU CONSEQUENTES RESULTANTES DO USO DOS PROGRAMAS.**
Ao baixar e usar o BRAF, você concorda com o seguinte contrato de licença.
## Contrato de Licença de Usuário Final
O trabalho contido nesta distribuição está licenciado sob a Licença Pública Arma No Derivatives (APL-ND).
![APL-ND](https://data.bistudio.com/images/license/APL-ND.png)
Observe que o acordo acima mencionado dá o direito ao BRAF Team de renunciar a qualquer uma das condições, portanto, sinta-se à vontade para entrar em contato conosco para obter permissão para modificar nosso trabalho.
É proibida a distribuição do conteúdo deste pacote por si só, parte dele ou como parte de outra distribuição, usando o Steam Workshop, por exemplo, por qualquer pessoa que não seja o próprio BRAF Team. Atualmente a única exceção, conforme livre iniciativa da Equipe de desenvolvimento é o Mod BRAF Factions, que pode ser encontrado no [Steam Workshop](https://steamcommunity.com/sharedfiles/filedetails/?id=2951736528), sendo o único mod com modificações em cima do BRAF autorizado.
Você não pode usar o material para fins comerciais. Isso inclui executar este pacote em instâncias de servidor que empregam quaisquer esquemas de monetização, incluindo, mas não se limitando a, sistemas de recompensa por doação. A aprovação da Bohemia Interactive do seu esquema de monetização não lhe concede direitos para renunciar a esta cláusula do EULA.
Este complemento é fornecido apenas para Arma 3 e não deve ser usado com o VBS ou qualquer um de seus derivados construídos para fins de treinamento militar.
É estritamente proibido o uso do conteúdo fornecido e / ou de quaisquer derivados no jogo DayZ.
![License Chart](https://www.bohemia.net/assets/img/licenses/images/license_chart.jpg?4)

159
README.md Normal file
View File

@@ -0,0 +1,159 @@
# **Brazilian Armed Forces (BRAF) Mod**
![BRAF Mod](https://i.imgur.com/Fe7obui.png "BRAF Mod")
Aqui consta o repositório do BRAF Mod, modificação para a plataforma Arma 3 inspiranda nas Forças Armadas Brasileiras, a ser utilizado por seus desenvolvedores procurando seguir boas práticas de programação. o versionamento do repositório é feito através do GIT utilizando o seguinte repositório:
> <http://dev.brafmod.com.br/projectbraf/braf>
## Checklist de Asset por LODs
### LODs de distância
- LOD 1..n
QUALQUER ASSET DEVE TER LODs DE DISTÂNCIA
- Usar modificador decimate (Blender) em 0.5 como fator entre um LOD e outro além de retirar partes pequenas de acordo com cada LOD de distância
- Utilizar somente um mapa UV, checar no Blender E no Object Builder o nº de mapas UV.
- Deve possuir as seguintes *Named Properties:* (Object Builder):
- *lodnoshadow = 1*;
Caso o modelo não possua LOD de sombra, seu valor deve ser 0 e devemos usar a seguinte named property no Geometry LOD:
- *sbsource = visualex*
- Utilizável somente em props e prédios em geral, nada que tenha View Pilot.
### View Pilot
- O que é visto por piloto/motorista quando se trata de veículos
- O que é visto em primeira pessoa quando se trata de uniformes, peças de vestuário ou armas.
### View Gunner
- O que é visto por atirador em veículos ou lançadores estáticos.
### View Commander
- O que é visto por comandante em veículos.
### View Cargo
- O que é visto por tripulação que não seja FFV (Firing from Vehicles), esta última vira ViewGunner.
### Geometry
- É usado para ter colisão na engine do arma entre personagens e veículos contra objetos estáticos como árvore, casa e outras props de cenário.
- O modelo deve ser fechado, com geometria convexa, triangulado e com sharp edges.
- Uma vez importado para o Object Builder, selecione o objeto todo, vá em Structures -> Topology -> Find Components, em seguida adicione uma massa em kilogramas, condizente com o objeto real e no mínimo de 10kg.
- O nº de componentes criado no passo anterior não deve ultrapassar 400 componentes, e cada componente não pode ter mais de 255 triângulos.
- Não pode ter um segundo mapa UV.
- Pressupondo que o objeto esta no centro da cena, deve ter no máximo 200x200 metros, mais do que isso ele não calcula colisão, não existe limite para altura.
- Deve possuir as seguintes *Named Properties:*, todas em letras mínuscula (Object Builder):
- *autocenter = 1*;
- Caso você queira centralizar o objeto na cena.
- *reversed = 1*;
- Caso você queira mudar a orientação do objeto.
- *map = ????*;
- [Variados valores disponíveis aqui](https://community.bistudio.com/wiki/Arma_3:_Named_Properties#map), essa propriedade só é relevante para assets que irão em um mapa, permite que sejam mostrados os ícones no mapa 2D do jogo.
- *buoyancy = 1*;
- 1 -> objeto boiará.
- 0 -> objeto não boiará.
- *aicovers = 1*;
- 1 -> IA vai usar o objeto como cobertura;
- 0 -> Não vai usar;
- *canbeoccluded = 1*;
- 1 -> O objeto não será renderizado quando estiver atrás de objetosmaiores;
- 0 -> Será renderizado;
- *canocclude = 1*
- 1 -> O objeto irá impedir o que estiver atrás de ser renderizado,conforme propriedade acima;
- 0 -> Não impedirá;
- *damage/dammage = ???*
- engine -> O objeto explode quando destruído.
- building -> O objeto irá afundar no solo e ser substituído por ummodelo em ruínas.
- wreck -> O objeto será substituído por um modelo destruído,referenciado no LOD wreck.
- tree -> O objeto irá tombar numa direção aleatória.
- tent -> O objeto irá colapsar, chapado no chão.
- wall -> O objeto irá tombar na direção do choque.
- *sbsource = shadowvolume*
- shadowvolume -> O objeto irá gerar sombra utilizando o LOD ShadowVolume.
- visualex -> O objeto irá gerar sombra utilizando os LOD visuais, muito mais pesados, portanto utilizado somente em objetos estáticos.
### Fire Geometry
- Utilizado para detectar colisão e efeitos de colisão entre projetis e qualquer tipo de objeto.
- Segue as mesmas regras gerais do LOD de Geometry, com a exceção de que não precisa ter massa e precisa ter o material de penetração (RVMAT) localizado em /a3/data_f/penetration/ aplicado a fim de calcular a balística intermediária do objeto quando atingido.
- precisam ter os proxies dos ocupantes do veículo, do contrário, não irão sofrer dano.
### View Geometry
- Utilizado para cálculo de oclusão (a engine não renderizará o que estiver atrás do objeto), além disso é utilizado para fazer com que a IA do jogo enxergue ou não outras entidades em jogo.
- precisam ter os proxies dos ocupantes do veículo, do contrário, não serão atacados pela IA.
- Precisa ter menos de 3500 vértices em cada objeto.
### Geometry PhysX
- Tipo de geometria especial utilizado para detecção e cálculo de colisão entre veículos em geral.
- Também seguem as regras gerais do Geometry, porém devem ser o mais simples possível, e com o menor nº de componentes possível (max 3 em geral) e sem massa.
### Geometry Buoyancy
- Tipo de geometria especial utilizada para cálculo de volume de deslocamento em veículos aquáticos ou objetos que boiam na água.
- Também segue as regras gerais do Geometry e caso tenha mais de um componente, os mesmos não devem se intersectar.
- É relacionado com a massa definida no Geometry (e que também pode ser alterada via script).
### Roadway
- É um tipo de superfície que permite que unidades caminhem sobre os objetos, sejam estáticos ou não.
- É representado por planos sobrepostos ao LOD de Geometry do objeto e utiliza uma textura localizada em /a3/data_f/surfaces/ para o efeito visual e sonoro ao caminhar sobre o objeto.
- Pressupondo que o objeto esta no centro da cena, pode ter no máximo 72x72 metros.
### Memory
- Define pontos de luz, direção de armas de fogo, direção de faróis, direção de escapamento, direção de efeitos de fumaça, pivôs de rotação, eixos de translação, e demais pontos de controle em geral.
### Shadow Volume
- Modelo 3D utilizado para o cast de sombra caso o sbsource do LOD Geometry seja diferente de visualex, e também possui n LODs de distância.
- O modelo deve ser fechado e triangulado, e deve ter sharp edges.
### Hitpoints
- Define onde certas partes destrutíveis do objeto estão, como rodas, vidros, motor, etc.
- Referência: [Arma 3 - Hitpoints](https://community.bistudio.com/wiki/Arma_3:_Hitpoints)
### Wreck
- Modelo 3D utilizado para representar o objeto destruído quando o LOD Geometry possui a named property damage = wreck.
### Path
- LOD importante para a IA definir o caminho em seu interior (prédios), não requerido em objetos que a IA não precise desviar de obstáculos.
- Vértices onde a IA pode parar precisam ser definidos por uma named selection do tipo "posXX" (XX é um número de 00 a 99).
- Os paths funcionam melhor quando posicionados 10 cm acima da superfície do Roadway.
### Display Picture
- Imagem com fundo transparente e tamanho em potência de 2 (como qualquer arquivo .paa, Ex: 128x128px ou 64x128px) que será utilizada para representar o objeto na lista do editor de missões.
- Veículos também devem produzir uma displaypicture em tamanho 1x2 (128x256px por exemplo) para ser utilizado no arsenal ou na ORBAT.
## Config de Assets
Os Mods no Arma 3 são um conjunto de PBO's (Public Bank of Files), que são nada mais do que pastas compactadas, que contém os arquivos de configuração e os assets do mod centralizadas no arquivo config.cpp na raíz da pasta em questão, todos os PBOs do BRAF comelam com o prefixo "braf_" para facilitar a identificação.
## Padronização de Nomenclaturas
Todas as classes do mod e nomes de arquivos deverão ser precedidas pelo prefixo "braf" e seguir o padrão [snake_case](https://en.wikipedia.org/wiki/Snake_case), onde todas as letras são em minúsculo e as palavras, não poderão haver carateres especiais como "ç" ou acentos como "í", mantendo de preferência em inglês, separadas por subtraços (" _ "), o motivo é que a engine/mikero por si só já transforma todas as classnames para este padrão, os nomes dos pbos também seguirão este padrão.
**Exemplo:**
> "braf_uniform_rolledup_gloves"
- Classname da farda com manga dobrada e luvas
> "braf_static"
- Classname do PBO de armamentos estáticos
## Fechando o PBO
- Existem 2 maneiras de compactar uma pasta em um arquivo PBO, a primeira é pelo Addon Builder, disponível pelo Arma 3 Tools, que cumpre a missão de gerar um PBO a partir de uma pasta, porém testa o código muito grosseiramente. A segunda é pelo PBOProject ([Mikero's Tools](https://mikero.bytex.digital/)), que além de compactar a pasta em um PBO, também testa o código e o obfusca, garantindo mais segurança e testagem ao mod, o BRAF utiliza o Mikero e sempre que possível, obfusca o PBO.
- Um maior número de PBOs facilita a correção de bugs porém pode tornar o modo confuso, portanto tenta-se manter uma organização quanto ao tipo e juntar os assets que se relacionam em um mesmo PBO.
- ### Obfuscado x Não Obfuscado
- A obfuscação do PBOProject (Mikero), garante mais uma camada de segurança e de testagem ao mod, porém implica limitações, nenhum arquivo poderá conter acentos ou caracteres especiais em seu nome e todas as texturas que forem chamadas após a criação do asset, como via script ou texturas de dado, deverão ficar em um pbo a parte. Mesmo quando não obfuscado, é recomendando usar o Mikero pois ele testa o código e aponta erros de sintaxe queo Addon Builder deixa passar, o que facilita a correção de bugs. **Todos os PBOs do BRAF são binarizados, independente de serem ou não obfuscados**.

BIN
Samples_F/TemplateRTM/Male.p3d LFS Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Samples_F/TemplateRTM/bust.p3d LFS Normal file

Binary file not shown.

26
braf.code-workspace Normal file
View File

@@ -0,0 +1,26 @@
{
"folders": [
{
"path": "."
}
],
"settings": {
"C_Cpp.clang_format_style": "file",
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false
},
"extensions": {
"recommendations": [
"ms-vscode.cpptools",
"twxs.cmake",
"ms-vscode.cmake-tools",
"HkonRRydland.a3cfgfunctions",
"mhutchie.git-graph",
"th3-sh0w3r.sqf-arma3-formatter",
"Armitxes.sqf",
"tal7aouy.theme",
"Gruntfuggly.todo-tree"
]
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,39 @@
class BRAF_PylonPod_50_cal: 100Rnd_127x99_mag_Tracer_Red
{
displayName="FN M3M .50 cal";
model="\braf\braf_air\braf_air_weap\braf_gunpod.p3d";
ammo="Braf_B_127x99_Ball_Red_Tracer_Splash";
tracersEvery=1;
count=400;
hardpoints[]={"BRAF_50cal_PYLON"};
pylonWeapon="BRAF_50Cal_weapon";
muzzlePos="muzzlepos";
muzzleEnd="muzzleend";
};
class BRAF_PylonPod_rocket_ap: PylonRack_7Rnd_Rocket_04_AP_F
{
displayName="SBAT 70 Rocket AP";
model="\braf\braf_air\braf_air_weap\braf_rocket.p3d";
ammo="Braf_Rocket_04_AP_F";
hardpoints[]=
{
"BRAF_rocket_ap_PYLON"
};
pylonWeapon="BRAF_rocket_ap_weapon";
count=7;
mass=88.300003;
};
class BRAF_PylonPod_rocket_he: PylonRack_7Rnd_Rocket_04_HE_F
{
displayName="SBAT 70 Rocket HE";
count=7;
model="\braf\braf_air\braf_air_weap\braf_rocket.p3d";
ammo="Braf_Rocket_04_HE_F";
hardpoints[]=
{
"BRAF_rocket_he_PYLON"
};
pylonWeapon="BRAF_rocket_he_weapon";
mass=88.300003;
};

View File

@@ -0,0 +1,382 @@
class BRAF_50Cal_weapon: HMG_127
{
magazines[]=
{
"BRAF_PylonPod_50_cal"
};
scope=1;
displayName="FN M3M .50 cal";
autoFire=1;
class GunParticles
{
class FirstEffect
{
effectName="MachineGun1";
positionName="muzzlepos";
directionName="muzzleend";
};
};
class manual: MGun
{
displayName="FN M3M .50 cal";
reloadTime=0.07;
dispersion=0.015;
sounds[]=
{
"M3MSound"
};
class M3MSound
{
begin1[]=
{
"braf\braf_air\Braf_Air_Weap\data\M2",
1.5848932,
1,
2100
};
begin2[]=
{
"braf\braf_air\Braf_Air_Weap\data\m2_single_1",
1.5848932,
1,
2100
};
begin3[]=
{
"braf\braf_air\Braf_Air_Weap\data\m2_single_2",
1.5848932,
1,
2100
};
soundBegin[]=
{
"begin1",
0.33000001,
"begin2",
0.33000001,
"begin3",
0.34
};
closure1[]=
{
"A3\Sounds_F\weapons\Closure\sfx10",
0.63095737,
1,
20
};
closure2[]=
{
"A3\sounds_f\weapons\closure\sfx11",
0.63095737,
1.2,
20
};
soundClosure[]=
{
"closure1",
0.5,
"closure2",
0.5
};
};
soundContinuous=0;
soundBurst=0;
aiRateOfFire=1;
aiRateOfFireDistance=10;
minRange=0;
minRangeProbab=0.0099999998;
midRange=1;
midRangeProbab=0.0099999998;
maxRange=2;
maxRangeProbab=0.0099999998;
};
class close: manual
{
aiBurstTerminable=1;
showToPlayer=0;
burst=8;
burstRangeMax=16;
aiRateOfFire=0.5;
aiRateOfFireDispersion=1.5;
aiRateOfFireDistance=50;
minRange=0;
minRangeProbab=0.69999999;
midRange=100;
midRangeProbab=0.69999999;
maxRange=200;
maxRangeProbab=0.2;
};
class short: close
{
aiBurstTerminable=1;
showToPlayer=0;
burst=6;
burstRangeMax=16;
aiRateOfFire=1;
aiRateOfFireDispersion=2;
aiRateOfFireDistance=150;
minRange=100;
minRangeProbab=0.69999999;
midRange=400;
midRangeProbab=0.75;
maxRange=800;
maxRangeProbab=0.2;
};
class medium: close
{
aiBurstTerminable=1;
showToPlayer=0;
burst=4;
burstRangeMax=12;
aiRateOfFire=2;
aiRateOfFireDispersion=2;
aiRateOfFireDistance=400;
minRange=400;
minRangeProbab=0.75;
midRange=800;
midRangeProbab=0.69999999;
maxRange=1500;
maxRangeProbab=0.1;
};
class far: close
{
aiBurstTerminable=1;
showToPlayer=0;
burst=3;
burstRangeMax=12;
aiRateOfFire=4;
aiRateOfFireDispersion=4;
aiRateOfFireDistance=800;
minRange=800;
minRangeProbab=0.60000002;
midRange=1500;
midRangeProbab=0.25;
maxRange=2000;
maxRangeProbab=0.050000001;
};
reloadMagazineSound[]=
{
"braf\braf_air\Braf_Air_Weap\data\reload-belt-1",
10,
1,
20
};
};
class BRAF_rocket_ap_weapon: missiles_DAR
{
magazines[]={"BRAF_PylonPod_rocket_ap"};
displayName="SBAT 70 Rocket AP";
modes[]=
{
"Far_AI",
"Medium_AI",
"Burst"
};
canLock=0;
weaponLockDelay=0;
cursor="EmptyCursor";
cursorAim="rocket";
holdsterAnimValue=1;
weight=80;
class Far_AI: missiles_DAR
{
displayName="$STR_A3_missiles_dar0";
sounds[]=
{
"StandardSound"
};
class StandardSound
{
begin1[]=
{
"A3\Sounds_F\weapons\Rockets\new_rocket_8",
1.7782794,
1.2,
1600
};
soundBegin[]=
{
"begin1",
1
};
};
autoFire=0;
reloadTime=0.5;
dispersion=0.015;
aiBurstTerminable=1;
showToPlayer=0;
burst=1;
burstRangeMax=4;
aiRateOfFire=4;
aiRateOfFireDispersion=4;
aiRateOfFireDistance=1000;
minRange=1000;
minRangeProbab=0.69999999;
midRange=1500;
midRangeProbab=0.69999999;
maxRange=3200;
maxRangeProbab=0.1;
};
class Medium_AI: Far_AI
{
aiBurstTerminable=1;
showToPlayer=0;
burst=1;
burstRangeMax=6;
aiRateOfFire=3;
aiRateOfFireDispersion=3;
aiRateOfFireDistance=1000;
minRange=400;
minRangeProbab=0.1;
midRange=800;
midRangeProbab=0.69999999;
maxRange=1200;
maxRangeProbab=0.75;
};
class Burst: missiles_DAR
{
displayName="$STR_A3_missiles_dar0";
burst=1;
soundContinuous=0;
autoFire=1;
reloadTime=0.5;
dispersion=0.015;
aiRateOfFire=1;
aiRateOfFireDistance=10;
minRange=0;
minRangeProbab=0.0099999998;
midRange=1;
midRangeProbab=0.0099999998;
maxRange=2;
maxRangeProbab=0.0099999998;
sounds[]=
{
"StandardSound"
};
class StandardSound
{
begin1[]=
{
"A3\Sounds_F\weapons\Rockets\new_rocket_8",
1.7782794,
1.2,
1600
};
soundBegin[]=
{
"begin1",
1
};
};
textureType="fullAuto";
};
};
class BRAF_rocket_he_weapon: missiles_DAR
{
magazines[]={"BRAF_PylonPod_rocket_he"};
displayName="SBAT 70 Rocket HE";
modes[]=
{
"Far_AI",
"Medium_AI",
"Burst"
};
canLock=0;
weaponLockDelay=0;
cursor="EmptyCursor";
cursorAim="rocket";
holdsterAnimValue=1;
weight=80;
class Far_AI: missiles_DAR
{
displayName="$STR_A3_missiles_dar0";
sounds[]=
{
"StandardSound"
};
class StandardSound
{
begin1[]=
{
"A3\Sounds_F\weapons\Rockets\new_rocket_8",
1.7782794,
1.2,
1600
};
soundBegin[]=
{
"begin1",
1
};
};
autoFire=0;
reloadTime=0.5;
dispersion=0.015;
aiBurstTerminable=1;
showToPlayer=0;
burst=1;
burstRangeMax=4;
aiRateOfFire=4;
aiRateOfFireDispersion=4;
aiRateOfFireDistance=1000;
minRange=1000;
minRangeProbab=0.69999999;
midRange=1500;
midRangeProbab=0.69999999;
maxRange=3200;
maxRangeProbab=0.1;
};
class Medium_AI: Far_AI
{
aiBurstTerminable=1;
showToPlayer=0;
burst=1;
burstRangeMax=6;
aiRateOfFire=3;
aiRateOfFireDispersion=3;
aiRateOfFireDistance=1000;
minRange=400;
minRangeProbab=0.1;
midRange=800;
midRangeProbab=0.69999999;
maxRange=1200;
maxRangeProbab=0.75;
};
class Burst: missiles_DAR
{
displayName="$STR_A3_missiles_dar0";
burst=1;
soundContinuous=0;
autoFire=1;
reloadTime=0.5;
dispersion=0.015;
aiRateOfFire=1;
aiRateOfFireDistance=10;
minRange=0;
minRangeProbab=0.0099999998;
midRange=1;
midRangeProbab=0.0099999998;
maxRange=2;
maxRangeProbab=0.0099999998;
sounds[]=
{
"StandardSound"
};
class StandardSound
{
begin1[]=
{
"A3\Sounds_F\weapons\Rockets\new_rocket_8",
1.7782794,
1.2,
1600
};
soundBegin[]=
{
"begin1",
1
};
};
textureType="fullAuto";
};
};

View File

@@ -0,0 +1,122 @@
class BRAF_Rocket_04_HE_F: Rocket_04_HE_F
{
model="\braf\braf_air\braf_air_weap\BRAF_SBAT_70.p3d";
proxyShape="\braf\braf_air\braf_air_weap\BRAF_SBAT_70.p3d";
maverickWeaponIndexOffset=12;
maverickweapon=1;
cost=100;
hit=210;
indirectHit=55;
indirectHitRange=15;
warheadName="HE";
manualControl=0;
maxControlRange=0;
airLock=0;
irLock=0;
laserLock=0;
nvLock=0;
weaponLockSystem=0;
aiAmmoUsageFlags="64 + 128";
missileLockMinDistance=500;
missileLockMaxDistance=3000;
initTime=0.0020000001;
thrust=1060;
thrustTime=0.69;
airFriction=0.090000004;
sideAirFriction=0.0049999999;
maxSpeed=590;
maneuvrability=0;
fuseDistance=50;
timeToLive=60;
effectsMissileInit="PylonBackEffectsFFAR";
muzzleEffect="";
soundFly[]=
{
"A3\Sounds_F\weapons\Rockets\rocket_fly_1",
0.63095737,
1.2,
1700
};
whistleDist=30;
class CamShakeExplode
{
power=16;
duration=1.8;
frequency=20;
distance=191.554;
};
class CamShakeHit
{
power=80;
duration=0.60000002;
frequency=20;
distance=1;
};
class CamShakeFire
{
power=2.9907;
duration=1.8;
frequency=20;
distance=71.554199;
};
class CamShakePlayerFire
{
power=2;
duration=0.1;
frequency=20;
distance=1;
};
};
class BRAF_Rocket_04_AP_F: Rocket_04_AP_F
{
model="\braf\braf_air\braf_air_weap\BRAF_SBAT_70.p3d";
proxyShape="\braf\braf_air\braf_air_weap\BRAF_SBAT_70.p3d";
maverickWeaponIndexOffset=19;
submunitionAmmo="ammo_Penetrator_Rocket_04_AP";
submunitionDirectionType="SubmunitionModelDirection";
submunitionInitSpeed=1000;
submunitionParentSpeedCoef=0;
submunitionInitialOffset[]={0,0,-0.2};
triggerOnImpact=1;
deleteParentWhenTriggered=0;
hit=95;
indirectHit=25;
indirectHitRange=2.5;
warheadName="HE";
aiAmmoUsageFlags=128;
};
class Braf_B_127x99_Ball_Red_Tracer: B_127x99_Ball
{
model="\A3\Weapons_f\Data\bullettracer\tracer_red";
lightcolor[] = {0.25,0.25,0.5};
effectflare = "FlareShell";
effectfly = "Braf_tracer_red";
flaresize = 5;
tracerScale=1.2;
tracerStartTime=0.075000003;
airFriction=-0.00057502999;
tracerEndTime=2.3;
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.925598;
ACE_ammoTempMuzzleVelocityShifts[]={-26.549999,-25.469999,-22.85,-20.120001,-16.98,-12.8,-7.6399999,-1.53,5.96,15.17,26.190001};
ACE_ballisticCoefficients[]={0.67000002};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={853};
ACE_barrelLengths[]={736.59998};
};
class Braf_B_127x99_Ball_Red_Tracer_Splash: Braf_B_127x99_Ball_Red_Tracer
{
hit=32;
indirectHit=1.5;
indirectHitRange=1.5;
fuseDistance=12;
deflecting=30;
caliber=3.2;
soundSetSonicCrack[]=
{
"BulletSonicCrack_Gatling_SoundSet"
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,59 @@
class CfgSkeletons
{
class Braf_Pods
{
isDiscrete=0;
skeletonInherit="";
skeletonBones[]=
{
"zasleh",""
};
};
};
class CfgModels
{
class braf_gunpod
{
htMin=60;
htMax=1800;
afMax=200;
mfMax=100;
mFact=0;
tBody=0;
skeletonName="Braf_Pods";
sectionsInherit="";
sections[]={};
class Animations
{
class mainmuzzleflashhide
{
type="hide";
source="reload";
selection="zasleh";
sourceAddress="clamp";
minPhase=0;
maxPhase=1;
minValue=0;
maxValue=1;
memory=0;
hideValue=0;
unHideValue=0.4;
};
};
};
class BRAF_SBAT_70
{
htMin=0;
htMax=0;
afMax=0;
mfMax=0;
mFact=0;
tBody=0;
skeletonName="Braf_Pods";
sectionsInherit="";
sections[]={};
class Animations
{
};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,454 @@
occludeSoundsWhenIn=0.562341;
obstructSoundsWhenIn=0.316228;
attenuationEffectType="HeliAttenuation";
emptySound[]={"",0,1};
soundGeneralCollision1[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_coll_default_int_1",1.0,1,100};
soundGeneralCollision2[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_coll_default_int_2",1.0,1,100};
soundGeneralCollision3[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_coll_default_int_3",1.0,1,100};
soundCrashes[]={"soundGeneralCollision1",0.33,"soundGeneralCollision2",0.33,"soundGeneralCollision3",0.33};
soundLandCrashes[]={"emptySound",0};
soundBuildingCrash[]={"soundGeneralCollision1",1,"soundGeneralCollision2",1,"soundGeneralCollision3",1};
soundArmorCrash[]={"soundGeneralCollision1",1,"soundGeneralCollision2",1,"soundGeneralCollision3",1};
soundWoodCrash[]={"soundGeneralCollision1",1,"soundGeneralCollision2",1,"soundGeneralCollision3",1};
soundBushCollision1[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_coll_bush_int_1",1.0,1,100};
soundBushCollision2[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_coll_bush_int_2",1.0,1,100};
soundBushCollision3[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_coll_bush_int_3",1.0,1,100};
soundBushCrash[]={"soundBushCollision1",0.33,"soundBushCollision2",0.33,"soundBushCollision3",0.33};
soundWaterCollision1[]={"A3\Sounds_F\vehicles\crashes\planes\plane_crash_water_1",1.4125376,1,500};
soundWaterCollision2[]={"A3\Sounds_F\vehicles\crashes\planes\plane_crash_water_2",1.4125376,1,500};
soundWaterCrashes[]={"soundWaterCollision1",0.5,"soundWaterCollision2",0.5};
soundDammage[]={"A3\Sounds_F\vehicles\crashes\helis\Heli_crash_default_ext_1",3.1622777,1};
soundGetIn[]={"A3\Sounds_F\vehicles\air\noises\heli_get_in2",0.56234133,1};
soundGetOut[]={"A3\Sounds_F\vehicles\air\noises\heli_get_out2",0.7943282,1,20};
soundEngineOnInt[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_start.ogg",0.31622776,1.0};
soundEngineOnExt[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_ext_start.ogg",0.7943282,1.0,600};
soundEngineOffInt[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_shut.ogg",0.31622776,1.0};
soundEngineOffExt[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_ext_shut.ogg",0.7943282,1.0,600};
soundLocked[]={"\A3\Sounds_F\weapons\Rockets\opfor_lock_1",1.0,1};
soundIncommingMissile[]={"\A3\Sounds_F\vehicles\air\noises\alarm_locked_by_missile_1",0.31622776,1.0};
rotorDamageInt[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_rotor_int_open_1",1.0,1.0};
rotorDamageOut[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_rotor_ext_1",2.5118864,1.0,150};
rotorDamage[]={"rotorDamageInt","rotorDamageOut"};
tailDamageInt[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_tail",1.0,1.0};
tailDamageOut[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_tail",1.0,1.0,300};
tailDamage[]={"tailDamageInt","tailDamageOut"};
landingSoundInt0[]={"A3\Sounds_F\vehicles\air\noises\landing_skids_int1_open",1.0,1.0,100};
landingSoundInt1[]={"A3\Sounds_F\vehicles\air\noises\landing_skids_int1_open",1.0,1.0,100};
landingSoundInt[]={"landingSoundInt0",0.5,"landingSoundInt1",0.5};
landingSoundOut0[]={"A3\Sounds_F\vehicles\air\noises\landing_skids_ext1",1.7782794,1.0,100};
landingSoundOut1[]={"A3\Sounds_F\vehicles\air\noises\landing_skids_ext1",1.7782794,1.0,100};
landingSoundOut[]={"landingSoundOut0",0.5,"landingSoundOut1",0.5};
slingCargoAttach0[]={"A3\Sounds_F\vehicles\air\noises\SL_engineDownEndINT",1.0,1.0};
slingCargoAttach1[]={"A3\Sounds_F\vehicles\air\noises\SL_1hookLock",1.7782794,1.0,200};
slingCargoAttach[]={"slingCargoAttach0","slingCargoAttach1"};
slingCargoDetach0[]={"A3\Sounds_F\vehicles\air\noises\SL_engineUpEndINT",1.0,1.0};
slingCargoDetach1[]={"A3\Sounds_F\vehicles\air\noises\SL_1hookUnlock",1.7782794,1.0,200};
slingCargoDetach[]={"slingCargoDetach0","slingCargoDetach1"};
slingCargoDetachAir0[]={"A3\Sounds_F\vehicles\air\noises\SL_unhook_air_int",1.0,1.0};
slingCargoDetachAir1[]={"A3\Sounds_F\vehicles\air\noises\SL_unhook_air_ext",1.0,1.0,300};
slingCargoDetachAir[]={"slingCargoDetach0","slingCargoDetach1"};
slingCargoRopeBreak0[]={"A3\Sounds_F\vehicles\air\noises\SL_rope_break_int",1.0,1.0};
slingCargoRopeBreak1[]={"A3\Sounds_F\vehicles\air\noises\SL_rope_break_ext",1.0,1.0,200};
slingCargoRopeBreak[]={"slingCargoDetach0","slingCargoDetach1"};
gearUpExt[]={"A3\Sounds_F\vehicles\air\Heli_Attack_01\blackfoot_gear_up_ext",1,1,1000};
gearUpInt[]={"A3\Sounds_F\vehicles\air\Heli_Attack_01\blackfoot_gear_up_int",1,1,100};
gearUp[]={"gearUpInt","gearUpExt"};
gearDownInt[]={"A3\Sounds_F\vehicles\air\Heli_Attack_01\blackfoot_gear_down_int",1,1,100};
gearDownExt[]={"A3\Sounds_F\vehicles\air\Heli_Attack_01\blackfoot_gear_down_ext",1,1,1000};
gearDown[]={"gearDownInt","gearDownExt"};
class Sounds
{
class EngineExt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_ext_eng.ogg",0.75,1.0,400};
frequency="rotorSpeed";
volume="4 * camPos * (0 max (rotorSpeed-0.4))";
};
class RotorExt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_ext_rotor.ogg",1.5,1.0,1500};
frequency="(rotorSpeed factor [0.3, 0.7]) * (rotorSpeed factor [0.3, 1]) * (1 - rotorThrust/4)";
volume="camPos * (rotorSpeed factor [0.3, 1]) * (1 + rotorThrust)";
};
class RotorSwist
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\rotor_swist",0.70794576,1.0,200};
frequency=1;
volume="camPos * (rotorThrust factor [0.7, 0.9])";
};
class EngineInt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_eng.ogg",0.7943282,1.0};
frequency="rotorSpeed";
volume="(1-camPos)*2*(0 max (rotorSpeed-0.4))";
};
class RotorInt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_rotor.ogg",0.63095737,1.0};
frequency="(rotorSpeed factor [0.3, 0.7]) * (rotorSpeed factor [0.3, 1]) * (1 - rotorThrust/4)";
volume="(1 - camPos) * (rotorSpeed factor [0.3, 0.7]) * (1 + rotorThrust) * 0.7";
};
class RotorBench
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_rotor_bench.ogg",0.5011872,1.0,1000};
frequency="(rotorSpeed factor [0.3, 0.7]) * (rotorSpeed factor [0.3, 1]) * (1 - rotorThrust/4)";
volume="(playerPos factor [3.9, 4]) * (1 - camPos) * (rotorSpeed factor [0.3, 1]) * (1 + rotorThrust) * 0.4";
cone[]={1.6,3.14,1.6,0.95};
};
class EngineBench
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_eng_bench.ogg",0.3548134,1.0,400};
frequency="rotorSpeed";
volume="(playerPos factor [3.9, 4]) * (1 - camPos) * (0 max (rotorSpeed-0.4))";
};
class WindBench
{
sound[]={"A3\Sounds_F\vehicles\air\noises\wind_open_out",0.56234133,1.0,50};
frequency=1;
volume="4 * (playerPos factor [3.9, 4]) * (1 - camPos) * ((speed factor[0, 30]) + (speed factor[0, -30]))";
};
class TransmissionDamageExt_phase1
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_ext_1",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="camPos * (transmissionDamage factor [0.3, 0.35]) * (transmissionDamage factor [0.5, 0.45]) * (rotorSpeed factor [0.2, 0.5])";
};
class TransmissionDamageExt_phase2
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_ext_2",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="camPos * (transmissionDamage factor [0.45, 0.5]) * (rotorSpeed factor [0.2, 0.5])";
};
class TransmissionDamageInt_phase1
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_int_1",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="(1 - camPos) * (transmissionDamage factor [0.3, 0.35]) * (transmissionDamage factor [0.5, 0.45]) * (rotorSpeed factor [0.2, 0.5])";
};
class TransmissionDamageInt_phase2
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_int_2",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="(1 - camPos) * (transmissionDamage factor [0.45, 0.5]) * (rotorSpeed factor [0.2, 0.5])";
};
class damageAlarmInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_bluefor",0.31622776,1.0};
frequency=1;
volume="engineOn * (1 - camPos) * ( 1 - ((transmissionDamage factor [0.61, 0.60]) * (motorDamage factor [0.61, 0.60]) * (rotorDamage factor [0.51, 0.50]))) * (rotorSpeed factor [0.0, 0.001])";
};
class damageAlarmExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_bluefor",0.22387211,1.0,20};
frequency=1;
volume="engineOn * camPos * ( 1 - ((transmissionDamage factor [0.61, 0.60]) * (motorDamage factor [0.61, 0.60]) * (rotorDamage factor [0.51, 0.50]))) * (rotorSpeed factor [0, 0.001])";
};
class rotorLowAlarmInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_rotor_low",0.31622776,1.0};
frequency=1;
volume="engineOn * (1 - camPos) * (rotorSpeed factor [0.9, 0.8999]) * (rotorSpeed factor [-0.5, 1]) * (speed factor [3, 3.01])";
};
class rotorLowAlarmExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_rotor_low",0.22387211,1.0,20};
frequency=1;
volume="engineOn * camPos * (rotorSpeed factor [0.9, 0.8999]) * (rotorSpeed factor [-0.5, 1]) * (speed factor [3, 3.01])";
};
class scrubLandInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubLandInt_open",1.0,1.0,100};
frequency=1;
volume="2 * (1-camPos) * (scrubLand factor[0.02, 0.05])";
};
class scrubLandExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubLandExt",1.0,1.0,100};
frequency=1;
volume="camPos * (scrubLand factor[0.02, 0.05])";
};
class scrubBuildingInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubBuildingInt",1.0,1.0,100};
frequency=1;
volume="2 * (1 - camPos) * (scrubBuilding factor[0.02, 0.05])";
};
class scrubBuildingExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubBuildingExt",1.0,1.0,100};
frequency=1;
volume="camPos * (scrubBuilding factor[0.02, 0.05])";
};
class scrubTreeInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubTreeExt",1.0,1.0,100};
frequency=1;
volume="(1 - camPos) * ((scrubTree) factor [0, 0.01])";
};
class scrubTreeExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubTreeExt",1.0,1.0,100};
frequency=1;
volume="camPos * ((scrubTree) factor [0, 0.01])";
};
class RainExt
{
sound[]={"A3\Sounds_F\vehicles\noises\rain1_ext",1.0,1.0,100};
frequency=1;
volume="camPos * (rain - rotorSpeed/2) * 2";
};
class RainInt
{
sound[]={"A3\Sounds_F\vehicles\noises\rain1_int_open",1.0,1.0,100};
frequency=1;
volume="(1-camPos)*(rain - rotorSpeed/2)*2";
};
class SlingLoadDownExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineDownEXT",1.2589254,1.0,500};
frequency=1;
volume="camPos*(slingLoadActive factor [0,-1])";
};
class SlingLoadUpExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineUpEXT",1.2589254,1.0,500};
frequency=1;
volume="camPos*(slingLoadActive factor [0,1])";
};
class SlingLoadDownInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineDownINT",1.0,1.0,700};
frequency=1;
volume="(1-camPos)*(slingLoadActive factor [0,-1])";
};
class SlingLoadUpInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineUpINT",1.0,1.0,700};
frequency=1;
volume="(1-camPos)*(slingLoadActive factor [0,1])";
};
class WindInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\wind_open_int",1.1220185,1.0,50};
frequency=1;
volume="(1-camPos)*(speed factor[5, 50])*(speed factor[5, 50])";
};
class WindLateralMovementInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\wind_lateral_open_int",1.9952624,1.0,50};
frequency=1;
volume="(1-camPos)*lateralMovement*((speed factor [5,40]) + (speed factor [-5,-40]))";
};
class GStress
{
sound[]={"A3\Sounds_F\vehicles\noises\vehicle_stress2b",0.31622776,1.0,50};
frequency=1;
volume="engineOn * (1-camPos) * ((gmeterZ factor[1.5, 2.5]) + (gmeterZ factor[0.5, -0.5]))";
};
};
class SoundsExt
{
class SoundEvents{};
class Sounds
{
class EngineExt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_ext_eng.ogg",0.75,1.0,400};
frequency="rotorSpeed";
volume="4 * camPos * (0 max (rotorSpeed-0.4))";
};
class RotorExt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_ext_rotor.ogg",1.5,1.0,1500};
frequency="(rotorSpeed factor [0.3, 0.7]) * (rotorSpeed factor [0.3, 1]) * (1 - rotorThrust/4)";
volume="camPos * (rotorSpeed factor [0.3, 1]) * (1 + rotorThrust)";
};
class RotorSwist
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\rotor_swist",0.70794576,1.0,200};
frequency=1;
volume="camPos * (rotorThrust factor [0.7, 0.9])";
};
class EngineInt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_eng.ogg",0.7943282,1.0};
frequency="rotorSpeed";
volume="(1-camPos)*2*(0 max (rotorSpeed-0.4))";
};
class RotorInt
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_rotor.ogg",0.63095737,1.0};
frequency="(rotorSpeed factor [0.3, 0.7]) * (rotorSpeed factor [0.3, 1]) * (1 - rotorThrust/4)";
volume="(1 - camPos) * (rotorSpeed factor [0.3, 0.7]) * (1 + rotorThrust) * 0.7";
};
class RotorBench
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_rotor_bench.ogg",0.5011872,1.0,1000};
frequency="(rotorSpeed factor [0.3, 0.7]) * (rotorSpeed factor [0.3, 1]) * (1 - rotorThrust/4)";
volume="(playerPos factor [3.9, 4]) * (1 - camPos) * (rotorSpeed factor [0.3, 1]) * (1 + rotorThrust) * 0.4";
cone[]={1.6,3.14,1.6,0.95};
};
class EngineBench
{
sound[]={"braf\braf_air\Braf_Helicopters\BRAF_Sounds\caracal\caracal_int_eng_bench.ogg",0.3548134,1.0,400};
frequency="rotorSpeed";
volume="(playerPos factor [3.9, 4]) * (1 - camPos) * (0 max (rotorSpeed-0.4))";
};
class WindBench
{
sound[]={"A3\Sounds_F\vehicles\air\noises\wind_open_out",0.56234133,1.0,50};
frequency=1;
volume="4 * (playerPos factor [3.9, 4]) * (1 - camPos) * ((speed factor[0, 30]) + (speed factor[0, -30]))";
};
class TransmissionDamageExt_phase1
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_ext_1",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="camPos * (transmissionDamage factor [0.3, 0.35]) * (transmissionDamage factor [0.5, 0.45]) * (rotorSpeed factor [0.2, 0.5])";
};
class TransmissionDamageExt_phase2
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_ext_2",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="camPos * (transmissionDamage factor [0.45, 0.5]) * (rotorSpeed factor [0.2, 0.5])";
};
class TransmissionDamageInt_phase1
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_int_1",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="(1 - camPos) * (transmissionDamage factor [0.3, 0.35]) * (transmissionDamage factor [0.5, 0.45]) * (rotorSpeed factor [0.2, 0.5])";
};
class TransmissionDamageInt_phase2
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_damage_transmission_int_2",1.0,1.0,150};
frequency="0.66 + rotorSpeed / 3";
volume="(1 - camPos) * (transmissionDamage factor [0.45, 0.5]) * (rotorSpeed factor [0.2, 0.5])";
};
class damageAlarmInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_bluefor",0.31622776,1.0};
frequency=1;
volume="engineOn * (1 - camPos) * ( 1 - ((transmissionDamage factor [0.61, 0.60]) * (motorDamage factor [0.61, 0.60]) * (rotorDamage factor [0.51, 0.50]))) * (rotorSpeed factor [0.0, 0.001])";
};
class damageAlarmExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_bluefor",0.22387211,1.0,20};
frequency=1;
volume="engineOn * camPos * ( 1 - ((transmissionDamage factor [0.61, 0.60]) * (motorDamage factor [0.61, 0.60]) * (rotorDamage factor [0.51, 0.50]))) * (rotorSpeed factor [0, 0.001])";
};
class rotorLowAlarmInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_rotor_low",0.31622776,1.0};
frequency=1;
volume="engineOn * (1 - camPos) * (rotorSpeed factor [0.9, 0.8999]) * (rotorSpeed factor [-0.5, 1]) * (speed factor [3, 3.01])";
};
class rotorLowAlarmExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\heli_alarm_rotor_low",0.22387211,1.0,20};
frequency=1;
volume="engineOn * camPos * (rotorSpeed factor [0.9, 0.8999]) * (rotorSpeed factor [-0.5, 1]) * (speed factor [3, 3.01])";
};
class scrubLandInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubLandInt_open",1.0,1.0,100};
frequency=1;
volume="2 * (1-camPos) * (scrubLand factor[0.02, 0.05])";
};
class scrubLandExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubLandExt",1.0,1.0,100};
frequency=1;
volume="camPos * (scrubLand factor[0.02, 0.05])";
};
class scrubBuildingInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubBuildingInt",1.0,1.0,100};
frequency=1;
volume="2 * (1 - camPos) * (scrubBuilding factor[0.02, 0.05])";
};
class scrubBuildingExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubBuildingExt",1.0,1.0,100};
frequency=1;
volume="camPos * (scrubBuilding factor[0.02, 0.05])";
};
class scrubTreeInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubTreeExt",1.0,1.0,100};
frequency=1;
volume="(1 - camPos) * ((scrubTree) factor [0, 0.01])";
};
class scrubTreeExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\scrubTreeExt",1.0,1.0,100};
frequency=1;
volume="camPos * ((scrubTree) factor [0, 0.01])";
};
class RainExt
{
sound[]={"A3\Sounds_F\vehicles\noises\rain1_ext",1.0,1.0,100};
frequency=1;
volume="camPos * (rain - rotorSpeed/2) * 2";
};
class RainInt
{
sound[]={"A3\Sounds_F\vehicles\noises\rain1_int_open",1.0,1.0,100};
frequency=1;
volume="(1-camPos)*(rain - rotorSpeed/2)*2";
};
class SlingLoadDownExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineDownEXT",1.0,1.0,500};
frequency=1;
volume="camPos*(slingLoadActive factor [0,-1])";
};
class SlingLoadUpExt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineUpEXT",1.0,1.0,500};
frequency=1;
volume="camPos*(slingLoadActive factor [0,1])";
};
class SlingLoadDownInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineDownINT",1.0,1.0,500};
frequency=1;
volume="(1-camPos)*(slingLoadActive factor [0,-1])";
};
class SlingLoadUpInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\SL_engineUpINT",1.0,1.0,500};
frequency=1;
volume="(1-camPos)*(slingLoadActive factor [0,1])";
};
class WindInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\wind_open_int",1.1220185,1.0,50};
frequency=1;
volume="(1-camPos)*(speed factor[5, 50])*(speed factor[5, 50])";
};
class WindLateralMovementInt
{
sound[]={"A3\Sounds_F\vehicles\air\noises\wind_lateral_open_int",1.9952624,1.0,50};
frequency=1;
volume="(1-camPos)*lateralMovement*((speed factor [5,40]) + (speed factor [-5,-40]))";
};
class GStress
{
sound[]={"A3\Sounds_F\vehicles\noises\vehicle_stress2b",0.31622776,1.0,50};
frequency=1;
volume="engineOn * (1-camPos) * ((gmeterZ factor[1.5, 2.5]) + (gmeterZ factor[0.5, -0.5]))";
};
};
class Waternoise_ext
{
sound[]={"A3\Sounds_F\vehicles\noises\air_driving_in_water",0.70794576,1,300};
frequency="1";
volume="(speed factor[0, 5]) * water * camPos + (speed factor[-0.1, -5]) * water * camPos";
};
class Waternoise_int
{
sound[]={"A3\Sounds_F\vehicles\noises\soft_driving_in_water_int",0.56234133,1,100};
frequency="1";
volume="(speed factor[0, 5]) * water * (1-camPos) + (speed factor[-0.1, -5]) * water * (1-camPos)";
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,55 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_ti_ca.paa";
//};
ambient[]={0.75,0.75,0.75,1.0};
diffuse[]={0.75,0.75,0.75,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,1.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=25;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
useWorldEnvMap="true";
uvSource="tex";
};

View File

@@ -0,0 +1,54 @@
ambient[]={1.0,1.0,1.0,1.0};
diffuse[]={1.0,1.0,1.0,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,0.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=70;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10.0,0.0,0.0};
up[]={0.0,10.0,0.0};
dir[]={0.0,0.0,0.0};
pos[]={0.0,0.0,0.0};
};
};
class Stage3
{
texture="a3\data_f\destruct\damage_metalsheet_mca.paa";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(2.0,0.1)";
uvSource="none";
};
class Stage7
{
texture="a3\data\env_land_co.paa";
uvSource="none";
};
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_ti_ca.paa";
//};

View File

@@ -0,0 +1,55 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_ti_ca.paa";
//};
ambient[]={0.75,0.75,0.75,1.0};
diffuse[]={0.75,0.75,0.75,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,1.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=12.5;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
useWorldEnvMap="true";
uvSource="tex";
};

View File

@@ -0,0 +1,54 @@
ambient[]={1.0,1.0,1.0,1.0};
diffuse[]={1.0,1.0,1.0,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,0.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=70;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10.0,0.0,0.0};
up[]={0.0,10.0,0.0};
dir[]={0.0,0.0,0.0};
pos[]={0.0,0.0,0.0};
};
};
class Stage3
{
texture="a3\data_f\destruct\damage_metalsheet_mca.paa";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(2.0,0.1)";
uvSource="none";
};
class Stage7
{
texture="a3\data\env_land_co.paa";
uvSource="none";
};
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_ti_ca.paa";
//};

View File

@@ -0,0 +1,55 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_ti_ca.paa";
//};
ambient[]={0.75,0.75,0.75,1.0};
diffuse[]={0.75,0.75,0.75,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,1.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=12.5;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
useWorldEnvMap="true";
uvSource="tex";
};

View File

@@ -0,0 +1,54 @@
ambient[]={1.0,1.0,1.0,1.0};
diffuse[]={1.0,1.0,1.0,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,0.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=70;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10.0,0.0,0.0};
up[]={0.0,10.0,0.0};
dir[]={0.0,0.0,0.0};
pos[]={0.0,0.0,0.0};
};
};
class Stage3
{
texture="a3\data_f\destruct\damage_metalsheet_mca.paa";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(2.0,0.1)";
uvSource="none";
};
class Stage7
{
texture="a3\data\env_land_co.paa";
uvSource="none";
};
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_ti_ca.paa";
//};

View File

@@ -0,0 +1,55 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_ti_ca.paa";
//};
ambient[]={0.75,0.75,0.75,1.0};
diffuse[]={0.75,0.75,0.75,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,1.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=5;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
useWorldEnvMap="true";
uvSource="tex";
};

View File

@@ -0,0 +1,54 @@
ambient[]={1.0,1.0,1.0,1.0};
diffuse[]={1.0,1.0,1.0,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,0.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=70;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10.0,0.0,0.0};
up[]={0.0,10.0,0.0};
dir[]={0.0,0.0,0.0};
pos[]={0.0,0.0,0.0};
};
};
class Stage3
{
texture="a3\data_f\destruct\damage_metalsheet_mca.paa";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(2.0,0.1)";
uvSource="none";
};
class Stage7
{
texture="a3\data\env_land_co.paa";
uvSource="none";
};
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo4_ti_ca.paa";
//};

View File

@@ -0,0 +1,55 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_ti_ca.paa";
//};
ambient[]={0.75,0.75,0.75,1.0};
diffuse[]={0.75,0.75,0.75,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,1.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=25;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
useWorldEnvMap="true";
uvSource="tex";
};

View File

@@ -0,0 +1,54 @@
ambient[]={1.0,1.0,1.0,1.0};
diffuse[]={1.0,1.0,1.0,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,0.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=70;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10.0,0.0,0.0};
up[]={0.0,10.0,0.0};
dir[]={0.0,0.0,0.0};
pos[]={0.0,0.0,0.0};
};
};
class Stage3
{
texture="a3\data_f\destruct\damage_metalsheet_mca.paa";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(2.0,0.1)";
uvSource="none";
};
class Stage7
{
texture="a3\data\env_land_co.paa";
uvSource="none";
};
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo5_ti_ca.paa";
//};

View File

@@ -0,0 +1,55 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_ti_ca.paa";
//};
ambient[]={0.75,0.75,0.75,1.0};
diffuse[]={0.75,0.75,0.75,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,1.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=25;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.7,1.2)";
uvSource="tex";
};
class Stage7
{
texture="a3\data_f\env_land_co.paa";
useWorldEnvMap="true";
uvSource="tex";
};

View File

@@ -0,0 +1,54 @@
ambient[]={1.0,1.0,1.0,1.0};
diffuse[]={1.0,1.0,1.0,1.0};
forcedDiffuse[]={0.0,0.0,0.0,1.0};
emmisive[]={0.0,0.0,0.0,0.0};
specular[]={0.15,0.15,0.15,1.0};
specularPower=70;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_nohq.paa";
uvSource="tex";
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={10.0,0.0,0.0};
up[]={0.0,10.0,0.0};
dir[]={0.0,0.0,0.0};
pos[]={0.0,0.0,0.0};
};
};
class Stage3
{
texture="a3\data_f\destruct\damage_metalsheet_mca.paa";
uvSource="tex";
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_as.paa";
uvSource="tex";
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_smdi.paa";
uvSource="tex";
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(2.0,0.1)";
uvSource="none";
};
class Stage7
{
texture="a3\data\env_land_co.paa";
uvSource="none";
};
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_ti_ca.paa";
//};

View File

@@ -0,0 +1,96 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_ti_ca.paa";
//};
ambient[]={1,1,1,1};
diffuse[]={0.75,0.75,0.75,1};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,0};
specular[]={0.89999998,0.89999998,0.89999998,1};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo1_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.6,6.5)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage7
{
texture="a3\data_f\env_land_sea_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

View File

@@ -0,0 +1,96 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_ti_ca.paa";
//};
ambient[]={1,1,1,1};
diffuse[]={0.75,0.75,0.75,1};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,0};
specular[]={0.89999998,0.89999998,0.89999998,1};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo2_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.6,6.5)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage7
{
texture="a3\data_f\env_land_sea_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

View File

@@ -0,0 +1,96 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_ti_ca.paa";
//};
ambient[]={1,1,1,1};
diffuse[]={0.75,0.75,0.75,1};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,0};
specular[]={0.89999998,0.89999998,0.89999998,1};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo3_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.6,6.5)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage7
{
texture="a3\data_f\env_land_sea_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

View File

@@ -0,0 +1,96 @@
//class StageTI
//{
// texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_ti_ca.paa";
//};
ambient[]={1,1,1,1};
diffuse[]={0.75,0.75,0.75,1};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,0};
specular[]={0.9,0.9,0.9,1};
specularPower=75;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_as.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="braf\braf_air\Braf_Helicopters\Braf_Caracal\data\camo6_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(4.6,6.5)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,10,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage7
{
texture="a3\data_f\env_land_sea_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

Some files were not shown because too many files have changed in this diff Show More