Files
DayZ-Epoch/SQF/dayz_code/Configs/CfgVehicles/Boat/Submarine.hpp
2021-03-31 17:19:52 +02:00

239 lines
6.5 KiB
C++

class ship;
class Submarine: ship
{
scope = 0;
class HitPoints;
class ViewPilot;
};
class Submarine_DZE_base: Submarine
{
displayName = "Submarine";
model = "\z\addons\dayz_epoch_v\vehicles\sub\epoch_sub_01.p3d";
picture = "\ca\water\data\ico\pbx_CA.paa";
Icon = "\Ca\water\Data\map_ico\icomap_rubber_CA.paa";
mapSize = 6;
vehicleClass = "DayZ Epoch Vehicles";
maxSpeed = 60;
brakeDistance = 20;
armor = 40;
damageResistance = 0.00318;
crewVulnerable = 1;
castDriverShadow = 0;
castCargoShadow = 0;
supplyRadius = 5;
fuelCapacity = 150;
hasGunner = 0;
enableManualFire = 0;
weapons[] = {};
magazines[] = {};
precision = 10;
enableGPS = 0;
memoryPointsGetInDriver = "pos driver";
memoryPointsGetInDriverDir = "pos driver dir";
memoryPointsGetInCargo = "pos cargo";
memoryPointsGetInCargoDir = "pos cargo dir";
//need to remove the spray, submarine is not a speedboat
leftWaterEffect = "subspray";
rightWaterEffect = "subspray";
leftEngineEffect = "subspray";
rightEngineEffect = "subspray";
destrType = DestructWreck;
class DestructionEffects;
//based on fishing boat
transportMaxMagazines = 500;
transportMaxWeapons = 50;
transportMaxBackpacks = 10;
// unitInfoType = UnitInfoCar; //By default no hud information
//crew
getInAction = GetInLow;
getOutAction = GetOutLow;
transportSoldier = 2;
typicalCargo[] = {RU_Soldier,RU_Soldier_AR,RU_Soldier_AR};
driverAction = PBX_Driver;
cargoAction[] = {Truck_Cargo04,Truck_Cargo01,Truck_Cargo01};
cargoGetInAction[] = {"GetInLow"};
cargoGetOutAction[] = {"GetOutLow"};
extCameraPosition[] = {0,4.0,-14.0};
//ensure no turrets active
class turrets{};
//anim sources
class AnimationSources
{
class dive
{
AnimPeriod = 12;
source = "user";
InitPhase = 0;
};
class peri_trans
{
AnimPeriod = 3;
source = "user";
InitPhase = 0;
};
class IndicatorSonar
{
AnimPeriod = 1;
source = "user";
InitPhase = 0;
};
};
//in vehicle actions
class UserActions
{
class dive
{
displayName = "Dive";
displayNameDefault = "";
onlyforplayer = true;
position = "zamerny";
radius = 1;
priority = 99;
condition = "(player == (driver this)) && {(surfaceIsWater position this) && {(((getPosATL this) select 2) > 10) && (this animationphase ""dive"" <= 0.5)}}";
statement = "this animate [""dive"", 1]";
};
class surface : dive
{
displayName = "Surface";
condition = "(player == (driver this)) && {(this animationphase ""dive"" > 0.5)}";
statement = "this animate [""dive"", 0];";
};
};
//damage
class HitPoints: HitPoints
{
class HitBody
{
armor = 0.85;
material = -1;
name = "karoserie";
visual = "zbytek";
passThrough = 1;
};
class HitEngine
{
armor = 1.2;
material = 60;
name = "motor";
visual = "zbytek";
passThrough = 1;
};
class HitFuel
{
armor=0.3;
material = -1;
name="palivo";
visual=""; // no visible fuel tank destruction effects
passThrough =0.5;
};
};
class Damage
{
tex[] = {};
mat[] =
{
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_01.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_01_damage.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_01_destruct.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_02.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_02_damage.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_02_destruct.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_03.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_03_damage.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_03_destruct.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_details.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_details_damage.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_details_destruct.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_int.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_int_damage.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_int_destruct.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_shell.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_shell_damage.rvmat",
"z\addons\dayz_epoch_v\vehicles\sub\data\sub_shell_destruct.rvmat"
};
};
//sounds
insideSoundCoef = 1;
soundEngineOnInt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-start-01", db-20, 1.0};
soundEngineOnExt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-start-01", db0, 1.0, 150};
soundEngineOffInt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-stop-01", db-20, 1.0};
soundEngineOffExt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-stop-01", db0, 1.0, 150};
class Sounds
{
class Engine
{
sound[] = {"ca\sounds\vehicles\water\rhib\ext-boat-engine-low-01", db0, 0.9, 300};
frequency = "(randomizer*0.05+0.95)*rpm";
volume = "engineOn*(rpm factor[0.5, 0.1])";
};
class EngineHighOut
{
sound[] = {"ca\sounds\vehicles\water\rhib\ext-boat-engine-high-01", db0, 0.8, 300};
frequency = "(randomizer*0.05+0.95)*rpm";
volume = "engineOn*(rpm factor[0.4, 1.3])";
};
class IdleOut
{
sound[] = {"ca\sounds\vehicles\water\rhib\ext-boat-engine-idle-03", db-5, 1.0, 150};
frequency = "1";
volume = "engineOn*(rpm factor[0.3, 0])";
};
class WaternoiseOutW0
{
sound[] = {"ca\sounds\vehicles\water\water_sfx\ext-water-noise-nospeed", db-8, 1.0, 100};
frequency = "1";
volume = "(speed factor[7, 0])";
};
class WaternoiseOutW1
{
sound[] = {"ca\sounds\vehicles\water\water_sfx\ext-boat-lospd-noise-02", db-8, 1.0, 100};
frequency = "1";
volume = "((speed factor[2, 12]) min (speed factor[12, 2]))";
};
class WaternoiseOutW2
{
sound[] = {"ca\sounds\vehicles\water\water_sfx\ext-boat-hispd-noise-02", db-8, 1.0, 100};
frequency = "1";
volume = "(speed factor[9, 18.7])";
};
};
class ViewPilot: ViewPilot
{
initFov = 0.7;
minFov = 0.25;
maxFov = 1.4;
initAngleX = 0;
minAngleX = -65;
maxAngleX = 85; //Rg
initAngleY = 0;
minAngleY = -150;
maxAngleY = 150; //Rg
};
//searchlight
class Reflectors
{
class main_reflector
{
color[] = {0.8, 0.8, 0.9, 1.0};
ambient[] = {0.1, 0.1, 0.1, 1.0};
position = "light";
direction = "lightEnd";
hitpoint = "light";
selection = "light";
size = 1.0;
brightness = 5.0;
};
};
};
class Submarine_DZE: Submarine_DZE_base
{
scope = 2;
displayName = $STR_VEH_NAME_SUBMARINE;
transportMaxMagazines = 360;
transportMaxWeapons = 80;
transportMaxBackpacks = 20;
};