diff --git a/gamedata/armordefs.lua b/gamedata/armordefs.lua index 1ed2597b3e3..fa88550ce91 100644 --- a/gamedata/armordefs.lua +++ b/gamedata/armordefs.lua @@ -448,6 +448,7 @@ local armorDefs = { "legfhp", "legch", "legeyes", + "legjav", }, mines = { "armfmine3", diff --git a/gamedata/icontypes.lua b/gamedata/icontypes.lua index fa683f073d2..57e9f4ba0bf 100644 --- a/gamedata/icontypes.lua +++ b/gamedata/icontypes.lua @@ -539,6 +539,10 @@ local icontypes = { bitmap = "icons/armmar_t3.png", size = 2 }, + legjav = { + bitmap = "icons/legjav.png", + size = 2.1 + }, armmark = { bitmap = "icons/bot_t2_radar.png", size = 1.34399986 diff --git a/icons/legjav.png b/icons/legjav.png new file mode 100644 index 00000000000..ea4462f01cc Binary files /dev/null and b/icons/legjav.png differ diff --git a/language/en/units.json b/language/en/units.json index c0e62235cc9..2a372c5e056 100644 --- a/language/en/units.json +++ b/language/en/units.json @@ -862,7 +862,8 @@ "legnanotcbase": "Base Builder", "legrampart": "Rampart", "legabm": "Aegis", - "legrwall": "Dragon's Constitution" + "legrwall": "Dragon's Constitution", + "legjav": "Javelin" }, "descriptions": { "armaak": "Advanced Amphibious Anti-Air Bot", @@ -1719,7 +1720,8 @@ "legnanotcbase": "Assist & Repair in massive radius", "legrampart": "Geothermal Antinuke, Jammer, Radar and Drone Platform", "legabm": "Anti-Nuke System", - "legrwall": "Railgun Defense Wall" + "legrwall": "Railgun Defense Wall", + "legjav": "Amphibious Raider" } } } diff --git a/luarules/configs/gui_soundeffects.lua b/luarules/configs/gui_soundeffects.lua index 94d1d3b9dc4..7f76339ca81 100644 --- a/luarules/configs/gui_soundeffects.lua +++ b/luarules/configs/gui_soundeffects.lua @@ -2983,6 +2983,11 @@ GUIUnitSoundEffects = { BaseSoundMovementType = "cor-bot-large-ok", BaseSoundWeaponType = "plasma-large", }, + legjav = { + BaseSoundSelectType = "arm-bot-huge-sel", + BaseSoundMovementType = "arm-bot-huge-ok", + BaseSoundWeaponType = "fastemg-medium", + }, -- LEGION T1 VEHICLES legcv = { diff --git a/luarules/gadgets/unit_continuous_aim.lua b/luarules/gadgets/unit_continuous_aim.lua index b7b3ee142eb..89ab2e0a697 100644 --- a/luarules/gadgets/unit_continuous_aim.lua +++ b/luarules/gadgets/unit_continuous_aim.lua @@ -123,6 +123,7 @@ local convertedUnitsNames = { ['legmed'] = 5, ['legaheattank'] = 3, ['legrwall'] = 4, + ['legjav'] = 3, } --add entries for scavboss local scavengerBossV4Table = {'scavengerbossv4_veryeasy', 'scavengerbossv4_easy', 'scavengerbossv4_normal', 'scavengerbossv4_hard', 'scavengerbossv4_veryhard', 'scavengerbossv4_epic', diff --git a/luaui/configs/DeferredLightsGL4config.lua b/luaui/configs/DeferredLightsGL4config.lua index 5dcf1dec143..6c41fa03f67 100644 --- a/luaui/configs/DeferredLightsGL4config.lua +++ b/luaui/configs/DeferredLightsGL4config.lua @@ -20250,6 +20250,53 @@ local unitLights = { lifetime = 0, sustain = 0, animtype = 0}, }, }, + ['legjav'] = { + eye1 = { + lightType = 'point', + pieceName = 'torso', + lightConfig = { posx = 0, posy = -2.55, posz = 15, radius = 4, + color2r = 0, color2g = 0, color2b = 0, colortime = 75, + r = 0.3, g = 0.85, b = 0.3, a = 0.6, + modelfactor = 0.15, specular = 0.3, scattering = 0.7, lensflare = 10, + lifetime = 0, sustain = 0, animtype = 0}, + }, + eye2 = { + lightType = 'point', + pieceName = 'torso', + lightConfig = { posx = 0, posy = -4.75, posz = 14.4, radius = 2, + color2r = 0, color2g = 0, color2b = 0, colortime = 80, + r = 0.3, g = 0.85, b = 0.3, a = 0.6, + modelfactor = 0.15, specular = 0.3, scattering = 0.7, lensflare = 10, + lifetime = 0, sustain = 0, animtype = 0}, + }, + eye3 = { + lightType = 'point', + pieceName = 'torso', + lightConfig = { posx = 0, posy = 3.75, posz = 10.3, radius = 3, + color2r = 0, color2g = 0, color2b = 0, colortime = 65, + r = 0.3, g = 0.85, b = 0.3, a = 0.6, + modelfactor = 0.15, specular = 0.3, scattering = 0.7, lensflare = 10, + lifetime = 0, sustain = 0, animtype = 0}, + }, + eye4 = { + lightType = 'point', + pieceName = 'aasleeve', + lightConfig = { posx = -2.75, posy = 1.25, posz = 1.8, radius = 2.5, + color2r = 0, color2g = 0, color2b = 0, colortime = 70, + r = 0.3, g = 0.85, b = 0.3, a = 0.6, + modelfactor = 0.15, specular = 0.3, scattering = 0.7, lensflare = 10, + lifetime = 0, sustain = 0, animtype = 0}, + }, + floodlightglow = { + lightType = 'point', + pieceName = 'torso', + lightConfig = { posx = -4, posy = -6.5, posz = 11.4, radius = 2.5, + color2r = 0, color2g = 0, color2b = 0, colortime = 70, + r = 0.3, g = 0.85, b = 0.3, a = 0.6, + modelfactor = 0.15, specular = 0.3, scattering = 0.7, lensflare = 10, + lifetime = 0, sustain = 0, animtype = 0}, + }, + }, ['cormuskrat'] = { buildlight = { -- this is the lightname lightType = 'cone', @@ -21403,6 +21450,30 @@ local unitEventLightsNames = { lifetime = 200, sustain = 2}, }, }, + ['legjav'] = { + [1] = { --lightIndex as above, MUST BE AN INTEGER, Give it a nice name in a comment, + lightType = 'point', + pieceName = 'lbarrel', + lightName = 'legjavlbarrelglow', + alwaysVisible = true, + lightConfig = { posx = 0, posy = 0, posz = 12, radius = 18, + color2r = 1, color2g = 0.2, color2b = 0, colortime = 200, + r = 0.4, g = 0.06, b = 0, a = 0.6, + modelfactor = 2, specular = 1, scattering = 0.0, lensflare = 0, + lifetime = 200, sustain = 3}, + }, + [2] = { --lightIndex as above, MUST BE AN INTEGER, Give it a nice name in a comment, + lightType = 'point', + pieceName = 'rbarrel', + lightName = 'legjavrbarrelglow', + alwaysVisible = true, + lightConfig = { posx = 0, posy = 0, posz = 12, radius = 18, + color2r = 1, color2g = 0.2, color2b = 0, colortime = 200, + r = 0.3, g = 0.06, b = 0, a = 0.6, + modelfactor = 2, specular = 1, scattering = 0.0, lensflare = 0, + lifetime = 200, sustain = 3}, + }, + }, ['legrwall'] = { [1] = { --lightIndex as above, MUST BE AN INTEGER, Give it a nice name in a comment, diff --git a/luaui/configs/buildmenu_sorting.lua b/luaui/configs/buildmenu_sorting.lua index b68e8964d77..228370ae3de 100644 --- a/luaui/configs/buildmenu_sorting.lua +++ b/luaui/configs/buildmenu_sorting.lua @@ -273,6 +273,7 @@ local unitOrderTable = { --T3 LAND ATTACK ['armmar'] = 007000, + ['legjav'] = 007005, ['corcat'] = 007010, ['armraz'] = 007020, ['corkarg'] = 007030, diff --git a/luaui/configs/gridmenu_layouts.lua b/luaui/configs/gridmenu_layouts.lua index 4bfd3a036a9..1e1fb326a1a 100644 --- a/luaui/configs/gridmenu_layouts.lua +++ b/luaui/configs/gridmenu_layouts.lua @@ -191,7 +191,7 @@ local labGrids = { }, corgant = { - "corcat", "corkarg", "corshiva", "corkorg", + "corcat", "corkarg", "legjav", "corkorg", "corjugg", "corsok" }, leggant = { diff --git a/objects3d/Units/legjav.s3o b/objects3d/Units/legjav.s3o new file mode 100644 index 00000000000..73194e37a1e Binary files /dev/null and b/objects3d/Units/legjav.s3o differ diff --git a/objects3d/Units/legjav_dead.s3o b/objects3d/Units/legjav_dead.s3o new file mode 100644 index 00000000000..14792a70830 Binary files /dev/null and b/objects3d/Units/legjav_dead.s3o differ diff --git a/scripts/Units/legjav.bos b/scripts/Units/legjav.bos new file mode 100644 index 00000000000..ba2fda74ee9 --- /dev/null +++ b/scripts/Units/legjav.bos @@ -0,0 +1,773 @@ + +#include "../recoil_common_includes.h" +#include "../opencloseanim.h" + +piece pelvis, torso, aaturret, aasleeve, aabarrel, lshoulder, rshoulder, larm, rarm, lhand, rhand, lsleeve, rsleeve, lbarrel, rbarrel, lstowed, rstowed, lthigh, rthigh, lknee, rknee, lfoot, rfoot, rkeel, lkeel, ltoes, rtoes, aimy, aimx, aaflare, flarel, flarer; + +static-var isMoving, animSpeed, maxSpeed, animFramesPerKeyframe, restore_delay, gun_left, miniguncount, wpnheading, shotcount; + +// Signal definitions +#define SIGNAL_AIM1 256 +#define SIGNAL_AIM2 512 +#define SIGNAL_MOVE 1024 +#define SIGNAL_FIRE1 2048 + +// this animation uses the static-var animFramesPerKeyframe which contains how many frames each keyframe takes + +Walk() {// For C:\Users\logst\Downloads\BAR\legjav anim.blend Created by https://github.com/Beherith/Skeletor_S3O V((0, 4, 2)) + set-signal-mask SIGNAL_MOVE; + while(isMoving) { + if (isMoving) { //Frame:3 + emit-sfx 1024 + 2 from rtoes; + turn lfoot to x-axis <-18.211357> speed <1825.311536> / animSpeed; + turn lkeel to x-axis <-46.316442> speed <1006.473803> / animSpeed; + turn lkeel to z-axis <-0.702781> speed <3.442841> / animSpeed; + turn lkeel to y-axis <-2.766797> speed <52.114544> / animSpeed; + turn lknee to x-axis <36.498417> speed <1601.241750> / animSpeed; + turn lthigh to x-axis <15.117618> speed <503.398790> / animSpeed; + turn lthigh to z-axis <-1.408778> speed <67.112612> / animSpeed; + turn ltoes to x-axis <21.035437> speed <1038.902944> / animSpeed; + move pelvis to z-axis [-0.216675] speed [32.396539] / animSpeed; + move pelvis to y-axis [-1.460117] speed [69.446297] / animSpeed; + turn pelvis to y-axis <2.292226> speed <79.607942> / animSpeed; + turn rfoot to x-axis <-12.440133> speed <596.162740> / animSpeed; + turn rkeel to x-axis <23.484974> speed <246.110567> / animSpeed; + turn rkeel to z-axis <0.764601> speed <20.033370> / animSpeed; + turn rkeel to y-axis <-2.445486> speed <83.935550> / animSpeed; + turn rknee to x-axis <2.592157> speed <648.014281> / animSpeed; + turn rthigh to x-axis <-13.647560> speed <193.901318> / animSpeed; + turn rthigh to z-axis <0.061712> speed <40.293254> / animSpeed; + turn torso to x-axis <-2.510836> speed <27.107254> / animSpeed; + turn torso to y-axis <-1.719170> speed <58.595986> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <28.749401> speed <312.511327> / animSpeed; + turn larm to x-axis <55.166448> speed <414.953048> / animSpeed; + turn rarm to x-axis <22.129331> speed <414.952843> / animSpeed; + turn rhand to x-axis <32.087221> speed <312.511481> / animSpeed; + turn lshoulder to y-axis <-10.314040> speed <156.255740> / animSpeed; + turn rshoulder to y-axis <1.145119> speed <156.255856> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:6 + turn lfoot to x-axis <-46.603340> speed <851.759492> / animSpeed; + turn lkeel to x-axis <-39.707578> speed <198.265912> / animSpeed; + turn lkeel to z-axis <0.137783> speed <25.216922> / animSpeed; + turn lkeel to y-axis <1.334571> speed <123.041043> / animSpeed; + turn lknee to x-axis <58.813803> speed <669.461572> / animSpeed; + turn lthigh to x-axis <1.378858> speed <412.162800> / animSpeed; + turn lthigh to z-axis <0.190461> speed <47.977171> / animSpeed; + turn ltoes to x-axis <34.381028> speed <400.367709> / animSpeed; + move pelvis to z-axis [-0.995735] speed [23.371793] / animSpeed; + move pelvis to y-axis [-1.747818] speed [8.631020] / animSpeed; + turn pelvis to y-axis <-1.241459> speed <106.010560> / animSpeed; + turn rfoot to x-axis <-9.795793> speed <79.330180> / animSpeed; + turn rkeel to x-axis <3.718027> speed <593.008396> / animSpeed; + turn rkeel to z-axis <-0.202892> speed <29.024808> / animSpeed; + turn rkeel to y-axis <1.250730> speed <110.886470> / animSpeed; + turn rknee to x-axis <9.048526> speed <193.691079> / animSpeed; + turn rthigh to x-axis <-2.974111> speed <320.203460> / animSpeed; + turn rthigh to z-axis <-0.090355> speed <4.562013> / animSpeed; + turn torso to x-axis <-0.416792> speed <62.821314> / animSpeed; + turn torso to y-axis <0.931094> speed <79.507926> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <42.884150> speed <424.042459> / animSpeed; + turn rhand to x-axis <32.952469> speed <424.042562> / animSpeed; + turn larm to x-axis <46.859592> speed <350.794315> / animSpeed; + turn rarm to x-axis <10.436174> speed <350.794725> / animSpeed; + turn lshoulder to y-axis <-3.246665> speed <212.021242> / animSpeed; + turn rshoulder to y-axis <8.212490> speed <212.021127> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:9 + turn lfoot to x-axis <-53.358746> speed <202.662163> / animSpeed; + turn lkeel to x-axis <2.286889> speed <1259.834023> / animSpeed; + turn lkeel to z-axis <-1.477643> speed <48.462792> / animSpeed; + turn lkeel to y-axis <4.136339> speed <84.053025> / animSpeed; + turn lknee to x-axis <42.367817> speed <493.379568> / animSpeed; + turn lthigh to x-axis <-13.412237> speed <443.732841> / animSpeed; + turn lthigh to z-axis <-0.618847> speed <24.279242> / animSpeed; + move pelvis to z-axis [-0.392350] speed [18.101554] / animSpeed; + move pelvis to y-axis [0.391090] speed [64.167252] / animSpeed; + turn pelvis to y-axis <-4.298492> speed <91.711007> / animSpeed; + turn rfoot to x-axis <11.755289> speed <646.532473> / animSpeed; + turn rkeel to x-axis <-9.971215> speed <410.677256> / animSpeed; + turn rkeel to z-axis <0.251575> speed <13.634007> / animSpeed; + turn rkeel to y-axis <4.258118> speed <90.221662> / animSpeed; + turn rknee to x-axis <-6.138516> speed <455.611265> / animSpeed; + turn rthigh to x-axis <12.076526> speed <451.519106> / animSpeed; + turn rthigh to z-axis <1.299561> speed <41.697469> / animSpeed; + turn rtoes to x-axis <-7.757021> speed <232.710632> / animSpeed; + turn torso to x-axis <3.640550> speed <121.720246> / animSpeed; + turn torso to y-axis <3.223870> speed <68.783265> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <55.112291> speed <366.844218> / animSpeed; + turn rhand to x-axis <20.724330> speed <366.844180> / animSpeed; + turn larm to x-axis <51.560449> speed <141.025716> / animSpeed; + turn rarm to x-axis <5.735315> speed <141.025755> / animSpeed; + turn lshoulder to y-axis <2.867406> speed <183.422128> / animSpeed; + turn rshoulder to y-axis <14.326561> speed <183.422135> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:12 + turn lfoot to x-axis <-28.598436> speed <742.809300> / animSpeed; + turn lkeel to x-axis <33.234068> speed <928.415358> / animSpeed; + turn lkeel to z-axis <-3.023672> speed <46.380886> / animSpeed; + turn lkeel to y-axis <6.600236> speed <73.916930> / animSpeed; + turn lknee to x-axis <10.672346> speed <950.864119> / animSpeed; + turn lthigh to x-axis <-23.522294> speed <303.301713> / animSpeed; + turn lthigh to z-axis <-2.004321> speed <41.564209> / animSpeed; + move pelvis to z-axis [0.755761] speed [34.443325] / animSpeed; + move pelvis to y-axis [1.987022] speed [47.877960] / animSpeed; + turn pelvis to y-axis <-5.705141> speed <42.199466> / animSpeed; + turn rfoot to x-axis <21.374312> speed <288.570686> / animSpeed; + turn rkeel to x-axis <17.984267> speed <838.664457> / animSpeed; + turn rkeel to z-axis <0.378115> speed <3.796200> / animSpeed; + turn rkeel to y-axis <4.768688> speed <15.317096> / animSpeed; + turn rknee to x-axis <-33.517938> speed <821.382648> / animSpeed; + turn rthigh to x-axis <33.469337> speed <641.784348> / animSpeed; + turn rthigh to z-axis <2.586744> speed <38.615489> / animSpeed; + turn rtoes to x-axis <-39.438380> speed <950.440759> / animSpeed; + turn torso to x-axis <2.345505> speed <38.851345> / animSpeed; + turn torso to y-axis <4.278857> speed <31.649628> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <60.738881> speed <168.797709> / animSpeed; + turn rhand to x-axis <15.097738> speed <168.797746> / animSpeed; + turn larm to x-axis <47.464153> speed <122.888900> / animSpeed; + turn rarm to x-axis <9.831618> speed <122.889067> / animSpeed; + turn lshoulder to y-axis <5.680711> speed <84.399168> / animSpeed; + turn rshoulder to y-axis <17.139863> speed <84.399060> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:15 + turn lfoot to x-axis <7.093960> speed <1070.771885> / animSpeed; + turn lkeel to x-axis <31.898240> speed <40.074837> / animSpeed; + turn lkeel to z-axis <-1.433427> speed <47.707362> / animSpeed; + turn lkeel to y-axis <5.220856> speed <41.381405> / animSpeed; + turn lknee to x-axis <-18.773040> speed <883.361582> / animSpeed; + turn lthigh to x-axis <-20.164274> speed <100.740595> / animSpeed; + turn lthigh to z-axis <-1.575312> speed <12.870241> / animSpeed; + turn ltoes to x-axis <-0.000000> speed <1031.430828> / animSpeed; + move pelvis to y-axis [0.824238] speed [34.883537] / animSpeed; + turn pelvis to y-axis <-4.921332> speed <23.514271> / animSpeed; + turn rfoot to x-axis <42.632361> speed <637.741456> / animSpeed; + turn rkeel to x-axis <-12.767315> speed <922.547461> / animSpeed; + turn rkeel to z-axis <0.533610> speed <4.664859> / animSpeed; + turn rkeel to y-axis <4.359678> speed <12.270303> / animSpeed; + turn rknee to x-axis <-16.876308> speed <499.248887> / animSpeed; + turn rthigh to x-axis <31.867839> speed <48.044951> / animSpeed; + turn rthigh to z-axis <3.471749> speed <26.550153> / animSpeed; + turn rtoes to x-axis <-25.086240> speed <430.564197> / animSpeed; + turn torso to x-axis <-1.607260> speed <118.582961> / animSpeed; + turn torso to y-axis <3.690999> speed <17.635758> / animSpeed; + + if (IsClosed) + { + + turn lhand to x-axis <57.603633> speed <94.057442> / animSpeed; + turn rhand to x-axis <18.232986> speed <94.057441> / animSpeed; + turn larm to x-axis <36.143435> speed <339.621526> / animSpeed; + turn rarm to x-axis <21.152334> speed <339.621500> / animSpeed; + turn lshoulder to y-axis <4.113090> speed <47.028657> / animSpeed; + turn rshoulder to y-axis <15.572244> speed <47.028567> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:18 + emit-sfx 1024 + 2 from ltoes; + turn lfoot to x-axis <-12.440133> speed <586.022790> / animSpeed; + turn lkeel to x-axis <23.484974> speed <252.397995> / animSpeed; + turn lkeel to z-axis <-0.752540> speed <20.426623> / animSpeed; + turn lkeel to y-axis <2.399417> speed <84.643173> / animSpeed; + turn lknee to x-axis <2.592157> speed <640.955908> / animSpeed; + turn lthigh to x-axis <-13.699964> speed <193.929314> / animSpeed; + turn lthigh to z-axis <-0.203165> speed <41.164412> / animSpeed; + move pelvis to z-axis [-0.233059] speed [32.629737] / animSpeed; + move pelvis to y-axis [-1.482891] speed [69.213867] / animSpeed; + turn pelvis to y-axis <-2.248001> speed <80.199953> / animSpeed; + turn rfoot to x-axis <-18.211357> speed <1825.311536> / animSpeed; + turn rkeel to x-axis <-46.316438> speed <1006.473701> / animSpeed; + turn rkeel to y-axis <2.574013> speed <53.569963> / animSpeed; + turn rknee to x-axis <36.498417> speed <1601.241750> / animSpeed; + turn rthigh to x-axis <15.110904> speed <502.708053> / animSpeed; + turn rthigh to z-axis <1.402773> speed <62.069278> / animSpeed; + turn rtoes to x-axis <12.910848> speed <1139.912631> / animSpeed; + turn torso to x-axis <-2.510836> speed <27.107254> / animSpeed; + turn torso to y-axis <1.686000> speed <60.149955> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <46.910299> speed <320.800018> / animSpeed; + turn rhand to x-axis <27.926318> speed <320.799941> / animSpeed; + turn larm to x-axis <21.944841> speed <425.957815> / animSpeed; + turn rarm to x-axis <35.350932> speed <425.957917> / animSpeed; + turn lshoulder to y-axis <-1.233575> speed <160.399938> / animSpeed; + turn rshoulder to y-axis <10.225585> speed <160.399778> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:21 + turn lfoot to x-axis <-9.795793> speed <79.330180> / animSpeed; + turn lkeel to x-axis <3.718028> speed <593.008370> / animSpeed; + turn lkeel to z-axis <0.210668> speed <28.896214> / animSpeed; + turn lkeel to y-axis <-1.298078> speed <110.924861> / animSpeed; + turn lknee to x-axis <9.048528> speed <193.691117> / animSpeed; + turn lthigh to x-axis <-2.976451> speed <321.705368> / animSpeed; + move pelvis to z-axis [-0.997146] speed [22.922607] / animSpeed; + move pelvis to y-axis [-1.731224] speed [7.449989] / animSpeed; + turn pelvis to y-axis <1.288440> speed <106.093224> / animSpeed; + turn rfoot to x-axis <-46.603340> speed <851.759492> / animSpeed; + turn rkeel to x-axis <-39.707578> speed <198.265809> / animSpeed; + turn rkeel to z-axis <-0.142187> speed <21.742548> / animSpeed; + turn rkeel to y-axis <-1.385055> speed <118.772035> / animSpeed; + turn rknee to x-axis <58.813803> speed <669.461572> / animSpeed; + turn rthigh to x-axis <1.368883> speed <412.260633> / animSpeed; + turn rthigh to z-axis <-0.197623> speed <48.011874> / animSpeed; + turn rtoes to x-axis <34.381028> speed <644.105391> / animSpeed; + turn torso to x-axis <-0.416792> speed <62.821307> / animSpeed; + turn torso to y-axis <-0.966330> speed <79.569907> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <32.764550> speed <424.372460> / animSpeed; + turn rhand to x-axis <43.072069> speed <424.372537> / animSpeed; + turn larm to x-axis <10.319848> speed <348.749792> / animSpeed; + turn rarm to x-axis <46.975927> speed <348.749869> / animSpeed; + turn lshoulder to y-axis <-8.306453> speed <212.186326> / animSpeed; + turn rshoulder to y-axis <3.152702> speed <212.186480> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:24 + turn lfoot to x-axis <11.755289> speed <646.532473> / animSpeed; + turn lkeel to x-axis <-9.971216> speed <410.677333> / animSpeed; + turn lkeel to z-axis <-0.255415> speed <13.982487> / animSpeed; + turn lkeel to y-axis <-4.289143> speed <89.731935> / animSpeed; + turn lknee to x-axis <-6.138516> speed <455.611316> / animSpeed; + turn lthigh to x-axis <12.119958> speed <452.892282> / animSpeed; + turn lthigh to z-axis <-1.495461> speed <41.576451> / animSpeed; + turn ltoes to x-axis <-7.757019> speed <232.710581> / animSpeed; + move pelvis to z-axis [-0.376829] speed [18.609506] / animSpeed; + move pelvis to y-axis [0.424015] speed [64.657173] / animSpeed; + turn pelvis to y-axis <4.330190> speed <91.252495> / animSpeed; + turn rfoot to x-axis <-53.358746> speed <202.662163> / animSpeed; + turn rkeel to x-axis <2.286889> speed <1259.834023> / animSpeed; + turn rkeel to z-axis <1.478224> speed <48.612325> / animSpeed; + turn rkeel to y-axis <-4.063928> speed <80.366186> / animSpeed; + turn rknee to x-axis <42.367817> speed <493.379568> / animSpeed; + turn rthigh to x-axis <-13.386278> speed <442.654816> / animSpeed; + turn rthigh to z-axis <0.609503> speed <24.213776> / animSpeed; + turn torso to x-axis <3.640550> speed <121.720253> / animSpeed; + turn torso to y-axis <-3.247643> speed <68.439382> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <20.597552> speed <365.009954> / animSpeed; + turn rhand to x-axis <55.239069> speed <365.010005> / animSpeed; + turn larm to x-axis <5.731817> speed <137.640918> / animSpeed; + turn rarm to x-axis <51.563960> speed <137.640982> / animSpeed; + turn lshoulder to y-axis <-14.389957> speed <182.505131> / animSpeed; + turn rshoulder to y-axis <-2.930801> speed <182.505092> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:27 + turn lfoot to x-axis <21.374312> speed <288.570686> / animSpeed; + turn lkeel to x-axis <17.984269> speed <838.664559> / animSpeed; + turn lkeel to z-axis <-0.376718> speed <3.639066> / animSpeed; + turn lkeel to y-axis <-4.770471> speed <14.439844> / animSpeed; + turn lknee to x-axis <-33.517938> speed <821.382648> / animSpeed; + turn lthigh to x-axis <33.506323> speed <641.590942> / animSpeed; + turn lthigh to z-axis <-2.774777> speed <38.379470> / animSpeed; + turn ltoes to x-axis <-39.438380> speed <950.440810> / animSpeed; + move pelvis to z-axis [0.766664] speed [34.304783] / animSpeed; + move pelvis to y-axis [1.990566] speed [46.996536] / animSpeed; + turn pelvis to y-axis <5.709385> speed <41.375847> / animSpeed; + turn rfoot to x-axis <-28.598436> speed <742.809300> / animSpeed; + turn rkeel to x-axis <33.234061> speed <928.415153> / animSpeed; + turn rkeel to z-axis <2.842474> speed <40.927488> / animSpeed; + turn rkeel to y-axis <-6.293228> speed <66.879010> / animSpeed; + turn rknee to x-axis <10.672345> speed <950.864171> / animSpeed; + turn rthigh to x-axis <-23.501270> speed <303.449783> / animSpeed; + turn rthigh to z-axis <1.995777> speed <41.588226> / animSpeed; + turn torso to x-axis <2.345505> speed <38.851345> / animSpeed; + turn torso to y-axis <-4.282039> speed <31.031889> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <15.080773> speed <165.503363> / animSpeed; + turn rhand to x-axis <60.755850> speed <165.503441> / animSpeed; + turn larm to x-axis <9.942285> speed <126.314039> / animSpeed; + turn rarm to x-axis <47.353486> speed <126.314206> / animSpeed; + turn lshoulder to y-axis <-17.148351> speed <82.751823> / animSpeed; + turn rshoulder to y-axis <-5.689195> speed <82.751816> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + if (isMoving) { //Frame:30 + turn lfoot to x-axis <42.632361> speed <637.741456> / animSpeed; + turn lkeel to x-axis <-12.767315> speed <922.547513> / animSpeed; + turn lkeel to z-axis <-0.589128> speed <6.372326> / animSpeed; + turn lkeel to y-axis <-4.465012> speed <9.163766> / animSpeed; + turn lknee to x-axis <-16.876308> speed <499.248887> / animSpeed; + turn lthigh to x-axis <31.837680> speed <50.059276> / animSpeed; + turn lthigh to z-axis <-3.649274> speed <26.234938> / animSpeed; + turn ltoes to x-axis <-13.594662> speed <775.311541> / animSpeed; + move pelvis to y-axis [0.793484] speed [35.912476] / animSpeed; + turn pelvis to y-axis <4.896492> speed <24.386785> / animSpeed; + turn rfoot to x-axis <7.093960> speed <1070.771872> / animSpeed; + turn rkeel to x-axis <31.898240> speed <40.074632> / animSpeed; + turn rkeel to z-axis <1.434349> speed <42.243725> / animSpeed; + turn rkeel to y-axis <-5.198006> speed <32.856663> / animSpeed; + turn rknee to x-axis <-18.773041> speed <883.361582> / animSpeed; + turn rthigh to x-axis <-20.218251> speed <98.490577> / animSpeed; + turn rthigh to z-axis <1.404821> speed <17.728695> / animSpeed; + turn rtoes to x-axis <-0.000000> speed <1031.430828> / animSpeed; + turn torso to x-axis <-1.607260> speed <118.582961> / animSpeed; + turn torso to y-axis <-3.672369> speed <18.290098> / animSpeed; + + if (IsClosed) + { + turn lhand to x-axis <27.332356> speed <97.547498> / animSpeed; + turn rhand to x-axis <57.504267> speed <97.547498> / animSpeed; + turn larm to x-axis <21.334682> speed <341.771883> / animSpeed; + turn rarm to x-axis <35.961093> speed <341.771806> / animSpeed; + turn lshoulder to y-axis <-15.522563> speed <48.773647> / animSpeed; + turn rshoulder to y-axis <-4.063409> speed <48.773570> / animSpeed; + } + sleep ((33*animSpeed) -1); + } + } +} + +// Call this from StopMoving()! +StopWalking() { + animSpeed = 10; // tune restore speed here, higher values are slower restore speeds + move pelvis to y-axis [0] speed [231.487656] / animSpeed; + move pelvis to z-axis [0] speed [114.811084] / animSpeed; + turn lfoot to x-axis <0> speed <6084.371786> / animSpeed; + turn lkeel to x-axis <0> speed <4199.446743> / animSpeed; + turn lkeel to y-axis <0> speed <410.136809> / animSpeed; + turn lknee to x-axis <0> speed <5337.472500> / animSpeed; + turn lthigh to x-axis <0> speed <2138.636475> / animSpeed; + turn ltoes to x-axis <0> speed <3463.009813> / animSpeed; + turn pelvis to y-axis <0> speed <353.644079> / animSpeed; + turn rfoot to x-axis <0> speed <6084.371786> / animSpeed; + turn rkeel to x-axis <0> speed <4199.446743> / animSpeed; + turn rkeel to y-axis <0> speed <395.906782> / animSpeed; + turn rknee to x-axis <0> speed <5337.472500> / animSpeed; + turn rthigh to x-axis <0> speed <2139.281159> / animSpeed; + turn rtoes to x-axis <0> speed <3799.708770> / animSpeed; + turn torso to x-axis <0> speed <405.734178> / animSpeed; + turn torso to y-axis <0> speed <265.233022> / animSpeed; + + + if (IsClosed) + { + turn lshoulder to y-axis <15> speed <150>; + turn rshoulder to y-axis <-15> speed <150>; + turn lshoulder to z-axis <-15> speed <100>; + turn rshoulder to z-axis <15> speed <100>; + turn larm to x-axis <15> speed <150>; + turn rarm to x-axis <15> speed <150>; + turn lhand to x-axis <30> speed <200>; + turn rhand to x-axis <30> speed <200>; + } + + turn lthigh to y-axis <15> speed <250>; + turn rthigh to y-axis <-15> speed <250>; + turn lthigh to z-axis <-5> speed <250>; + turn rthigh to z-axis <5> speed <250>; + turn lkeel to z-axis <5> speed <250>; + turn rkeel to z-axis <-5> speed <250>; +} + +// REMEMBER TO animspeed = 4 in Create() !! +UnitSpeed(){ + maxSpeed = get MAX_SPEED; // this returns cob units per frame i think + animFramesPerKeyframe = 4; //we need to calc the frames per keyframe value, from the known animtime + maxSpeed = maxSpeed + (maxSpeed /(2*animFramesPerKeyframe)); // add fudge + var groundheight; + var unitxz; + while(TRUE){ + unitxz = (get UNIT_XZ); + animSpeed = (get CURRENT_SPEED); + if (animSpeed<1) animSpeed=1; + animSpeed = (maxSpeed * 4) / animSpeed; + //get PRINT(maxSpeed, animFramesPerKeyframe, animSpeed); //how to print debug info from bos + if (animSpeed<1) animSpeed=1; + if (animspeed>6) animSpeed = 6; + sleep 98; + + groundheight = (get GROUND_WATER_HEIGHT(unitxz)); + if (groundheight < (((-1) * 66)) AND isMoving) + { + // bubble effect should always play when moving and underwater + emit-sfx 1024 + 1 from lshoulder; + emit-sfx 1024 + 1 from rshoulder; + } + } +} + +StartMoving(){ + signal SIGNAL_MOVE; + isMoving=TRUE; + + turn lthigh to y-axis <0> speed <45>; + turn rthigh to y-axis <0> speed <45>; + turn lthigh to z-axis <0> speed <45>; + turn rthigh to z-axis <0> speed <45>; + turn lkeel to z-axis <0> speed <45>; + turn rkeel to z-axis <0> speed <45>; + + start-script Walk(); +} + +StopMoving(){ + signal SIGNAL_MOVE; + isMoving=FALSE; + call-script StopWalking(); +} + +#define BASEPIECE pelvis +#define HITSPEED <45.0> +//how 'heavy' the unit is, on a scale of 1-10 +#define UNITSIZE 10 +#define MAXTILT 100 + +#include "../unit_hitbyweaponid_and_smoke.h" + +Create() +{ + hide aimx; + hide aimy; + hide lsleeve; + hide rsleeve; + hide lbarrel; + hide rbarrel; + hide flarel; + hide flarer; + + isMoving = FALSE; + wpnheading = 0; + gun_left = 0; + miniguncount = 0; + animSpeed = 4; + shotcount = 0; + + restore_delay = 6000; + call-script StopMoving(); + + SLEEP_UNTIL_UNITFINISHED; + + start-script UnitSpeed(); + call-script CATT1_Init(); +} + +//-------------------------------CONSTANT ACCELERATION TURRET TURNING--------------------------- +// MaxVelocity and acceleration are in degrees per frame (not second!) +// Jerk is the minimum velocity of the turret +// A high precision requirement can result in overshoots if desired +// Author Beherith mysterme@gmail.com. License: GNU GPL v2. + +#define CATT1_PIECE_X aimx +#define CATT1_PIECE_Y aimy + +#define CATT1_MAX_VELOCITY <12.0> +#define CATT1_ACCELERATION <2.0> +#define CATT1_JERK <4> +#define CATT1_PRECISION <1.0> +#define CATT1_PITCH_SPEED <85> +#define CATT1_RESTORE_DELAY 3000 +#define CATT1_RESTORE_SPEED <3.0> + +#include "../constant_acceleration_turret_turning_1.h" + + +RestoreAfterDelay() +{ + set-signal-mask SIGNAL_AIM1 | SIGNAL_AIM2; + sleep restore_delay; + start-script ExecuteRestoreAfterDelay(); +} + +ExecuteRestoreAfterDelay() +{ + start-script CATT1_Restore(); + turn aaturret to y-axis 0 speed <120>; + turn aasleeve to x-axis 0 speed <60>; + call-script OpenCloseAnim(0); + wpnheading = 0; +} + +lua_UnitScriptLight(lightIndex, count) +{ + return 0; +} + +Shot1(zero) //Barrel switcher so each minigun fires at the same time +{ + signal SIGNAL_FIRE1; + set-signal-mask SIGNAL_FIRE1; + + + if(miniguncount == 0) + { + emit-sfx 1024 + 0 from flarer; + ++shotcount; + } + if(miniguncount == 1) + { + emit-sfx 1024 + 0 from flarel; + ++shotcount; + } + sleep 32; + ++miniguncount; + if(miniguncount>=2) + { + miniguncount=0; + } + return(1); +} + + + +// Primary Weapons + +AimFromWeapon1(pieceIndex) +{ + pieceIndex = aimy; +} + +QueryWeapon1(pieceIndex) +{ + if(miniguncount == 0) + { + pieceIndex = flarel; + } + if(miniguncount == 1) + { + pieceIndex = flarer; + } + return (0); +} + +AimWeapon1(heading, pitch) +{ + start-script OpenCloseAnim(1); + signal SIGNAL_AIM1; + set-signal-mask SIGNAL_AIM1; + start-script RestoreAfterDelay(); + + if (!IsOpen) return 0; + + call-script CATT1_Aim(heading,pitch); + + if (ABSOLUTE_GREATER_THAN(WRAPDELTA(wpnheading - heading), <11>)){ + wait-for-turn aimy around y-axis; + wait-for-turn aimx around x-axis; + } + wpnheading = heading; + return (1); +} + +FireWeapon1() +{ + call-script lua_UnitScriptLight(1, shotcount); + call-script lua_UnitScriptLight(2, shotcount); + spin lbarrel around z-axis speed <-1080.0>; + spin rbarrel around z-axis speed <1080.0>; + stop-spin lbarrel around z-axis decelerate <12>; + stop-spin rbarrel around z-axis decelerate <12>; + return (0); +} + + + +// AA Defense +AimFromWeapon2(pieceIndex) +{ + pieceIndex = aasleeve; +} + +QueryWeapon2(pieceIndex) +{ + pieceIndex = aaflare; +} + +AimWeapon2(heading, pitch) +{ + signal SIGNAL_AIM2; + set-signal-mask SIGNAL_AIM2; + + turn aaturret to y-axis (heading - CATT1position) speed <720>; + turn aasleeve to x-axis 0-pitch speed <360>; + + start-script RestoreAfterDelay(); + return (1); +} + +FireWeapon2() +{ + spin aabarrel around z-axis speed <-1080.0>; + emit-sfx 1024 + 0 from aaflare; + sleep 66; + emit-sfx 1024 + 0 from aaflare; + sleep 66; + emit-sfx 1024 + 0 from aaflare; + sleep 66; + emit-sfx 1024 + 0 from aaflare; + sleep 66; + emit-sfx 1024 + 0 from aaflare; + sleep 66; + emit-sfx 1024 + 0 from aaflare; + sleep 66; + stop-spin aabarrel around z-axis decelerate <6>; + return (0); +} + +Open() +{ + turn lshoulder to y-axis <30> speed <60>; + turn rshoulder to y-axis <-30> speed <60>; + turn lshoulder to z-axis <0> speed <20>; + turn rshoulder to z-axis <0> speed <20>; + turn larm to x-axis <60> speed <120>; + turn rarm to x-axis <60> speed <120>; + turn lhand to x-axis <30> speed <60>; + turn rhand to x-axis <30> speed <60>; + turn lstowed to y-axis <-15> speed <30>; + move lstowed to x-axis [-3.2] speed [6.4]; + move lstowed to z-axis [-7.8] speed [15.6]; + turn rstowed to y-axis <15> speed <30>; + move rstowed to x-axis [3.2] speed [6.4]; + move rstowed to z-axis [-7.8] speed [15.6]; + + wait-for-turn larm around x-axis; + wait-for-turn lhand around x-axis; + + // Switch weapon models out + show lsleeve; + show rsleeve; + show lbarrel; + show rbarrel; + hide lstowed; + hide rstowed; + show flarel; + show flarer; + + turn lshoulder to y-axis <-3> speed <90>; + turn rshoulder to y-axis <3> speed <90>; + turn lshoulder to z-axis <-15> speed <60>; + turn rshoulder to z-axis <15> speed <60>; + turn larm to x-axis <20> speed <90>; + turn rarm to x-axis <20> speed <90>; + turn lhand to x-axis <-20> speed <120>; + turn rhand to x-axis <-20> speed <120>; + move lbarrel to z-axis [0] speed [30]; + move rbarrel to z-axis [0] speed [30]; +} + +Close() +{ + turn lshoulder to y-axis <30> speed <40>; + turn rshoulder to y-axis <-30> speed <40>; + turn lshoulder to z-axis <0> speed <20>; + turn rshoulder to z-axis <0> speed <20>; + turn larm to x-axis <60> speed <90>; + turn rarm to x-axis <60> speed <90>; + turn lhand to x-axis <30> speed <45>; + turn rhand to x-axis <30> speed <45>; + move lbarrel to z-axis [-14] speed [30]; + move rbarrel to z-axis [-14] speed [30]; + + wait-for-turn larm around x-axis; + wait-for-turn lhand around x-axis; + + // Switch weapon models out + hide lsleeve; + hide rsleeve; + hide lbarrel; + hide rbarrel; + show lstowed; + show rstowed; + hide flarel; + hide flarer; + + turn lshoulder to y-axis <15> speed <45>; + turn rshoulder to y-axis <-15> speed <45>; + turn lshoulder to z-axis <-15> speed <30>; + turn rshoulder to z-axis <15> speed <30>; + turn larm to x-axis <15> speed <45>; + turn rarm to x-axis <15> speed <45>; + turn lhand to x-axis <30> speed <90>; + turn rhand to x-axis <30> speed <90>; + turn lstowed to y-axis <0> speed <30>; + move lstowed to x-axis [0] speed [6.4]; + move lstowed to z-axis [0] speed [15.6]; + turn rstowed to y-axis <0> speed <30>; + move rstowed to x-axis [0] speed [6.4]; + move rstowed to z-axis [0] speed [15.6]; +} + + + +Killed(severity, corpsetype) +{ + if( severity <= 25 ) + { + corpsetype = 1 ; + explode pelvis type BITMAPONLY | NOHEATCLOUD; + explode rthigh type BITMAPONLY | NOHEATCLOUD; + explode rkeel type BITMAPONLY | NOHEATCLOUD; + explode rfoot type FIRE | SMOKE | FALL | NOHEATCLOUD; + explode lfoot type BITMAPONLY | NOHEATCLOUD; + explode torso type BITMAPONLY | NOHEATCLOUD; + + return(corpsetype); + } + if( severity <= 50 ) + { + corpsetype = 2 ; + explode pelvis type BITMAPONLY | NOHEATCLOUD; + explode rthigh type FALL | NOHEATCLOUD; + explode rkeel type FALL | NOHEATCLOUD; + explode rfoot type FIRE | SMOKE | FALL | NOHEATCLOUD; + explode ltoes type FALL | NOHEATCLOUD; + explode lfoot type FIRE | SMOKE | FALL | NOHEATCLOUD; + return(corpsetype); + } + if( severity <= 99 ) + { + corpsetype = 3 ; + explode pelvis type FIRE | SMOKE | FALL | NOHEATCLOUD; + explode rthigh type SMOKE | FALL | NOHEATCLOUD; + explode rkeel type FIRE | SMOKE | FALL | NOHEATCLOUD; + explode rfoot type FIRE | SMOKE | FALL | NOHEATCLOUD; + explode lthigh type SMOKE | FALL | NOHEATCLOUD; + explode lfoot type EXPLODE_ON_HIT | FIRE | SMOKE | FALL | NOHEATCLOUD; + explode torso type BITMAPONLY | NOHEATCLOUD; + return(corpsetype); + } + corpsetype = 3 ; + explode pelvis type EXPLODE_ON_HIT | FIRE | SMOKE | FALL | NOHEATCLOUD; + explode rthigh type EXPLODE_ON_HIT | FIRE | FALL | NOHEATCLOUD; + explode rkeel type EXPLODE_ON_HIT | FIRE | FALL | NOHEATCLOUD; + explode rfoot type EXPLODE_ON_HIT | FIRE | SMOKE | FALL | NOHEATCLOUD; + explode ltoes type EXPLODE_ON_HIT | FIRE | SMOKE | FALL | NOHEATCLOUD; + explode lfoot type EXPLODE_ON_HIT | FIRE | SMOKE | FALL | NOHEATCLOUD; + explode torso type EXPLODE_ON_HIT | FIRE | FALL | NOHEATCLOUD; + return corpsetype; +} + diff --git a/scripts/Units/legjav.cob b/scripts/Units/legjav.cob new file mode 100644 index 00000000000..aae5ea178bc Binary files /dev/null and b/scripts/Units/legjav.cob differ diff --git a/unitpics/legjav.dds b/unitpics/legjav.dds new file mode 100644 index 00000000000..281359625f4 Binary files /dev/null and b/unitpics/legjav.dds differ diff --git a/units/Legion/Labs/leggant.lua b/units/Legion/Labs/leggant.lua index 9a0f62ab429..81ec805c9fb 100644 --- a/units/Legion/Labs/leggant.lua +++ b/units/Legion/Labs/leggant.lua @@ -35,7 +35,7 @@ return { [1] = "corkorg", [2] = "corkarg", [3] = "corjugg", - [4] = "corshiva", + [4] = "legjav", [5] = "corcat", [6] = "corsok", [7] = "cordemon", diff --git a/units/Legion/T3/legjav.lua b/units/Legion/T3/legjav.lua new file mode 100644 index 00000000000..7c286cf4e61 --- /dev/null +++ b/units/Legion/T3/legjav.lua @@ -0,0 +1,208 @@ +return { + legjav = { + buildpic = "legjav.DDS", + buildtime = 32000, + canmove = true, + cantbetransported = true, + collisionvolumeoffsets = "0 0 0", + collisionvolumescales = "56 72 56", + collisionvolumetype = "CYLY", + corpse = "DEAD", + energycost = 21000, + explodeas = "explosiont3med", + footprintx = 5, + footprintz = 5, + health = 7200, + idleautoheal = 16, + idletime = 1800, + mass = 1200, + maxacc = 0.1750, + maxdec = 0.7500, + maxslope = 17, + maxwaterdepth = 32, + metalcost = 1200, + movementclass = "HABOT4", + nochasecategory = "VTOL", + objectname = "Units/legjav.s3o", + script = "Units/legjav.cob", + seismicsignature = 0, + selfdestructas = "explosiont3", + sightdistance = 455, + speed = 62.0, + turninplace = true, + turninplaceanglelimit = 90, + turninplacespeedlimit = 1.98, + turnrate = 900, + upright = true, + customparams = { + maxrange = "350", + model_author = "Tharsis", + normaltex = "unittextures/leg_normal.dds", + subfolder = "Legion/T3", + techlevel = 3, + unitgroup = "weapon", + weapon1turretx = 90, + weapon1turrety = 150, + }, + featuredefs = { + dead = { + blocking = true, + category = "corpses", + collisionvolumeoffsets = "0 0 0", + collisionvolumescales = "60 30 60", + collisionvolumetype = "Box", + damage = 2400, + featuredead = "HEAP", + footprintx = 5, + footprintz = 5, + height = 20, + metal = 860, + object = "Units/legjav_dead.s3o", + reclaimable = true, + }, + heap = { + blocking = false, + category = "heaps", + collisionvolumescales = "40 40 40", + collisionvolumetype = "Sphere", + damage = 1200, + footprintx = 3, + footprintz = 3, + height = 4, + metal = 280, + object = "Units/arm3X3F.s3o", + reclaimable = true, + resurrectable = 0, + }, + }, + sfxtypes = { + explosiongenerators = { + [1] = "custom:barrelshot-tiny", + [2] = "custom:subbubbles", + [3] = "custom:footstep-medium", + }, + pieceexplosiongenerators = { + [1] = "deathceg2", + [2] = "deathceg3", + [3] = "deathceg4", + }, + }, + sounds = { + canceldestruct = "cancel2", + underattack = "warning1", + cant = { + [1] = "cantdo4", + }, + count = { + [1] = "count6", + [2] = "count5", + [3] = "count4", + [4] = "count3", + [5] = "count2", + [6] = "count1", + }, + ok = { + [1] = "mavbok1", + }, + select = { + [1] = "mavbsel1", + }, + }, + weapondefs = { + mg_guns = { + accuracy = 7, + areaofeffect = 32, + avoidfeature = false, + burst = 12, + burstrate = 0.033, + burnblow = false, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + duration = 0.038, + edgeeffectiveness = 0.5, + explosiongenerator = "custom:plasmahit-sparkonly", + fallOffRate = 0.2, + firestarter = 0, + impulsefactor = 1.5, + intensity = 0.8, + name = "Vulcan Rapid-fire Rotary Guns", + noselfdamage = true, + ownerExpAccWeight = 4.0, + proximitypriority = 1, + range = 450, + reloadtime = 0.4, + rgbcolor = "1 0.95 0.4", + soundhit = "bimpact3", + soundhitwet = "splshbig", + soundstart = "minigun3", + soundstartvolume = 4.5, + sprayangle = 968, + targetmoveerror = 0, + thickness = 0.91, + tolerance = 16000, + turret = true, + weapontype = "LaserCannon", + weaponvelocity = 958, + damage = { + default = 12, + vtol = 8, + }, + }, + aa_gun = { + accuracy = 100, + areaofeffect = 16, + avoidfeature = false, + burst = 6, + burstrate = 0.075, + burnblow = false, + canattackground = false, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + duration = 0.03, + edgeeffectiveness = 0.85, + explosiongenerator = "custom:plasmahit-sparkonly", + fallOffRate = 0.2, + firestarter = 0, + impulsefactor = 1.5, + intensity = 0.8, + name = "Light AA Rotary Gun", + noselfdamage = true, + ownerExpAccWeight = 4.0, + predictboost = 0.5, + proximitypriority = 1, + range = 700, + reloadtime = 0.4, + rgbcolor = "1 0.33 0.7", + soundhit = "bimpact3", + soundhitwet = "splshbig", + soundstart = "minigun3", + soundstartvolume = 3, + sprayangle = 900, + thickness = 0.6, + tolerance = 6000, + turret = true, + weapontype = "LaserCannon", + weaponvelocity = 950, + damage = { + default = 0, + vtol = 10, + }, + }, + }, + weapons = { + [1] = { + badtargetcategory = "VTOL", + burstcontrolwhenoutofarc = 2, + def = "mg_guns", + fastautoretargeting = true, + onlytargetcategory = "SURFACE", + }, + [2] = { + def = "aa_gun", + onlytargetcategory = "VTOL", + }, + }, + }, +}