Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Weapons - Z-8 Rotary Chaingun #252

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
12 changes: 7 additions & 5 deletions addons/factions/rdf/CfgVehicles.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,16 +224,18 @@ class CfgVehicles {
displayName = "SWAT Chaingunner";
editorPreview = EDITOR_PREVIEW(rdfArmor_unit_swat_chaingun);

weapons[] = {QCLASS(WestarM5), QCLASS(DC15SA), "Aux501_Weaps_Z1000", "Throw", "Put"};
respawnWeapons[] = {QCLASS(WestarM5), QCLASS(DC15SA), "Aux501_Weaps_Z1000", "Throw", "Put"};
weapons[] = {QCLASS(WestarM5), QCLASS(DC15SA), QCLASS(Z8), "Throw", "Put"};
respawnWeapons[] = {QCLASS(WestarM5), QCLASS(DC15SA), QCLASS(Z8), "Throw", "Put"};

magazines[] = {
QCLASS(Mag_99Rnd_WestarM5),
QCLASS(Mag_30Rnd_DC15SA)
QCLASS(Mag_30Rnd_DC15SA),
QCLASS(mag_1200rnd_Z8_AI)
};
respawnMagazines[] = {
QCLASS(Mag_99Rnd_WestarM5),
QCLASS(Mag_30Rnd_DC15SA)
QCLASS(Mag_30Rnd_DC15SA),
QCLASS(mag_1200rnd_Z8_AI)
};

linkedItems[] = {QCLASS(rdfArmor_helmet), QCLASS(rdfArmor_vest_swat), RDF_LINKED_ITEMS_RADIO};
Expand Down Expand Up @@ -371,7 +373,7 @@ class CfgVehicles {
MAG_XX(CLASS(Mag_30Rnd_DC15SA),5);
MAG_XX(CLASS(Mag_15Rnd_DC15SA),5);
MAG_XX(CLASS(Mag_7Rnd_DC15SA),5);
MAG_XX(Aux501_Weapons_Mags_z1000_drum3000,1);
MAG_XX(CLASS(mag_1200rnd_Z8),1);
MAG_XX(CLASS(Grenade_EMP),5);
MAG_XX(3AS_SmokeWhite,2);
MAG_XX(3AS_SmokeBlue,2);
Expand Down
2 changes: 2 additions & 0 deletions addons/weapons/CfgMagazines.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class CfgMagazines {
modelSpecial = "";
modelSpecialIsProxy = FALSE;

allowedSlots[] = {TYPE_UNIFORM, TYPE_VEST, TYPE_BACKPACK};

tracersEvery = 1;
count = 1;
mass = 0;
Expand Down
4 changes: 3 additions & 1 deletion addons/weapons/load_order/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ class CfgPatches {
QGVAR(sbb3),
QGVAR(valken38x),
QGVAR(westar_m5),
QGVAR(westar35),
QGVAR(x42),
QGVAR(z6)
QGVAR(z6),
QGVAR(z8)
};
units[] = {};
weapons[] = {};
Expand Down
15 changes: 15 additions & 0 deletions addons/weapons/script_macros.hpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
// Create an "AI" version of a magazine. Mainly intended for heavy magazines
// so that AI can spawn with the weapon already loaded.
#define MAGAZINE_AI(var1) class CLASS(DOUBLES(var1,ai)): CLASS(var1) { \
SCOPE_HIDDEN; \
allowedSlots[] = {TYPE_UNIFORM, TYPE_VEST, TYPE_BACKPACK}; \
mass = 0; \
}

#define AMMO_USAGE_NONE 0
#define AMMO_USAGE_LIGHT 1
#define AMMO_USAGE_MARKING 2
Expand All @@ -10,6 +18,13 @@
#define AMMO_USAGE_AIRCRAFT 256
#define AMMO_USAGE_ARMORED_VEHICLES 512

#define LOCK_TYPE_UNDETECTABLE 0
#define LOCK_TYPE_VISUAL 1
#define LOCK_TYPE_IR 2
#define LOCK_TYPE_LASER 4
#define LOCK_TYPE_RADAR 8
#define LOCK_TYPE_MISSILE 16

#define ATTACHMENTS_OPTIC_SHORT CLASS(Optic_SR_Holosight) = TRUE; \
CLASS(Optic_SR_Holosight2) = TRUE; \
CLASS(Optic_SR_Holosight3) = TRUE
Expand Down
87 changes: 87 additions & 0 deletions addons/weapons/z8/CfgAmmo.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
class CfgAmmo {
class CLASS(missile_base);
class CLASS(bullet_plasma_Z8_yellow): CLASS(missile_base) {
SCOPE_PUBLIC;
// Most of the properties probably aren't needed, but are included to match 3AS_Chaingun_Ammo

aiAmmoUsageFlags = QUOTE(AMMO_USAGE_INFANTRY + AMMO_USAGE_VEHICLES + AMMO_USAGE_ARMORED_VEHICLES + AMMO_USAGE_AIRCRAFT);
allowAgainstInfantry = TRUE;

hit = 18;
indirectHit = 0;
indirectHitRange = 0;
caliber = 2;
ACE_caliber = 0; // ! Must be 0 to not immediately lose your hearing
cost = 500;
coefGravity = 0.01;
explosive = 0.2;
maneuvrability = 4;
airFriction = 0;
cmImmunity = 0.2;
timeToLive = 4;
typicalSpeed = 1050;
maxSpeed = 1050;
airLock = 0;
proximityExplosionDistance = 5;

model = "\MRC\JLTS\weapons\Core\effects\laser_yellow.p3d";
effectfly = "JLTS_plasma_yellow";
effectsMissile = "JLTS_plasma_yellow";
PLASMA_EFFECTS;

soundSetExplosion[] = {};
audibleFire = 80;
whistleDist = 20;
PLASMA_SOUNDS;

deleteParentWhenTriggered = FALSE;
flightProfiles[] = {"Direct"};
fuseDistance = 0;
initTime = 0;
irLock = 0;
maxControlRange = 600;
thrust = 500;
thrustTime = 3.4;

missileKeepLockedCone = 300;
missileLockCone = 5;
missileLockMaxDistance = 800;
missileLockMaxSpeed = 35;
missileLockMinDistance = 20;

simulationStep = 0.02;

trackLead = 1;
triggerDistance = 2.5;
triggerOnImpact = 1;
weaponLockSystem = QUOTE(LOCK_TYPE_VISUAL + LOCK_TYPE_MISSILE);

class CamShakeExplode {
distance = 91.3296;
duration = 1.4;
frequency = 20;
power = 11;
};

class CamShakeHit {
distance = 1;
duration = 0.6;
frequency = 20;
power = 110;
};

class CamShakeFire {
distance = 1;
duration = 1.2;
frequency = 18;
power = 0.8;
};

class CamShakePlayerFire {
distance = 1;
duration = 0.1;
frequency = 20;
power = 2;
};
};
};
23 changes: 23 additions & 0 deletions addons/weapons/z8/CfgMagazines.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class CfgMagazines {
class CLASS(mag_base);
class CLASS(mag_1200rnd_Z8): CLASS(mag_base) {
SCOPE_PUBLIC;
displayName = "[KC] Z-8 Energy Cell";
displayNameShort = "High Energy";
descriptionShort = "Energy Cell Drum Magazine<br/>Rounds: 1,200<br/>Used In: Z-8";

model = "\SWLW_clones\machineguns\Z7\Z7_mag.p3d";
picture = "\SWLW_clones\machineguns\Z7\data\ui\SWLW_Z7_mag_ui.paa";

allowedSlots[] = {TYPE_BACKPACK};

initSpeed = 200;
type = AMMO_USAGE_ARMORED_VEHICLES;

ammo = QCLASS(bullet_plasma_Z8_yellow);
count = 1200;
mass = __EVAL(0.3*1200);
};

MAGAZINE_AI(mag_1200rnd_Z8);
};
6 changes: 6 additions & 0 deletions addons/weapons/z8/CfgSoundSets.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class CfgSoundSets {
class CLASS(soundSet_weaponShot_Base);
class CLASS(soundSet_Z8_shot): CLASS(soundSet_weaponShot_Base) {
soundShaders[] = {QCLASS(soundShader_Z8_shot)};
};
};
9 changes: 9 additions & 0 deletions addons/weapons/z8/CfgSoundShaders.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class CfgSoundShaders {
class CLASS(soundShader_weaponShot_base);
class CLASS(soundShader_Z8_shot): CLASS(soundShader_weaponShot_base) {
samples[] = {
{"\3AS\3AS_Main\Sounds\Z6\Z61.ogg", 1, 1}
};
range = 2000;
};
};
62 changes: 62 additions & 0 deletions addons/weapons/z8/CfgWeapons.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
class CfgWeapons {
class Launcher_base_F;
class 3AS_Chaingun: Launcher_base_F {
class FullAuto;
};
class CLASS(Z8_base): 3AS_Chaingun {
SCOPE_PRIVATE;
author = AUTHOR;

baseWeapon = QCLASS(Z8_base);
picture = QPATHTOF(z8\data\ui\Z8_ca.paa);

modes[] = {"FullAuto", "Overcharge"};
magazines[] = {QCLASS(mag_1200rnd_Z8), QCLASS(mag_1200rnd_Z8_AI)};

JLTS_hasElectronics = TRUE;
JLTS_hasEMPProtection = FALSE;

// Enable "buddy reloading"
ace_reloadLaunchers_enabled = TRUE;

class FullAuto: FullAuto {
minRange = 2;
minRangeProbab = 0.3;
midRange = 300;
midRangeProbab = 0.7;
maxRange = 600;
maxRangeProbab = 0.05;

class StandardSound {
soundSetShot[] = {QCLASS(soundSet_Z8_shot)};
};
};

class Overcharge: FullAuto {
displayName = "Overcharge";
burst = 25;
reloadTime = 0.015;
textureType = "fastAuto";
};
};

class CLASS(Z8): CLASS(Z8_base) {
SCOPE_PUBLIC;

displayName = "[KC] Z-8 Rotary Chaingun";
baseWeapon = QCLASS(Z8);

JLTS_friedItem = QCLASS(Z8_fried);
};

class CLASS(Z8_fried): CLASS(Z8) {
SCOPE_HIDDEN;

displayName = "[KC] Z-8 Rotary Chaingun (Fried)";
descriptionShort = "The circuits of the weapon have<br/>been fried by an EMP blast.";
picture = QPATHTOF(z8\data\ui\Z8_fried_ca.paa);

JLTS_isFried = TRUE;
magazines[] = {};
};
};
28 changes: 28 additions & 0 deletions addons/weapons/z8/config.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#include "script_component.hpp"

class CfgPatches {
class SUBADDON {
author = AUTHOR;
name = COMPONENT_NAME;
addonRootClass = QUOTE(ADDON);
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {
QUOTE(ADDON),
QGVAR(accessories),
"3AS_Weapons_Chaingun"
};
units[] = {};
weapons[] = {
QCLASS(Z8_base),
QCLASS(Z8),
QCLASS(Z8_fried)
};
VERSION_CONFIG;
};
};

#include "CfgWeapons.hpp"
#include "CfgMagazines.hpp"
#include "CfgAmmo.hpp"
#include "CfgSoundShaders.hpp"
#include "CfgSoundSets.hpp"
Binary file added addons/weapons/z8/data/ui/Z8_ca.paa
Binary file not shown.
Binary file added addons/weapons/z8/data/ui/Z8_fried_ca.paa
Binary file not shown.
4 changes: 4 additions & 0 deletions addons/weapons/z8/script_component.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#define SUBCOMPONENT z8
#define SUBCOMPONENT_BEAUTIFIED Z-8

#include "..\script_component.hpp"