diff --git a/gamedata/alldefs_post.lua b/gamedata/alldefs_post.lua index e3cf6e32f9e..640884b89e0 100644 --- a/gamedata/alldefs_post.lua +++ b/gamedata/alldefs_post.lua @@ -579,6 +579,7 @@ function UnitDef_Post(name, uDef) uDef.buildoptions[numBuildoptions + 6] = "armannit3" uDef.buildoptions[numBuildoptions + 7] = "armnanotct2" uDef.buildoptions[numBuildoptions + 8] = "armlwall" + uDef.buildoptions[numBuildoptions + 9] = "armgatet3" elseif name == "coraca" or name == "corack" or name == "coracv" then local numBuildoptions = #uDef.buildoptions uDef.buildoptions[numBuildoptions + 1] = "corapt3" @@ -588,6 +589,7 @@ function UnitDef_Post(name, uDef) uDef.buildoptions[numBuildoptions + 6] = "cordoomt3" uDef.buildoptions[numBuildoptions + 7] = "cornanotct2" uDef.buildoptions[numBuildoptions + 8] = "cormwall" + uDef.buildoptions[numBuildoptions + 9] = "corgatet3" elseif name == "legaca" or name == "legack" or name == "legacv" then local numBuildoptions = #uDef.buildoptions uDef.buildoptions[numBuildoptions + 1] = "legapt3" @@ -595,6 +597,7 @@ function UnitDef_Post(name, uDef) uDef.buildoptions[numBuildoptions + 3] = "legwint2" uDef.buildoptions[numBuildoptions + 4] = "legnanotct2" uDef.buildoptions[numBuildoptions + 5] = "legrwall" + uDef.buildoptions[numBuildoptions + 6] = "corgatet3" elseif name == "armasy" then local numBuildoptions = #uDef.buildoptions uDef.buildoptions[numBuildoptions + 1] = "armptt2" @@ -1462,6 +1465,11 @@ function WeaponDef_Post(name, wDef) ---- SHIELD CHANGES local shieldModOption = modOptions.experimentalshields + if wDef.weapontype == "DGun" then + wDef.interceptedbyshieldtype = 512 --make dgun (like behemoth) interceptable by shields, optionally + elseif wDef.weapontype == "StarburstLauncher" and not string.find(name, "raptor") then + wDef.interceptedbyshieldtype = 1024 --separate from combined MissileLauncher, except raptors + end if shieldModOption == "absorbplasma" then if wDef.shield and wDef.shield.repulser and wDef.shield.repulser ~= false then diff --git a/gamedata/scavengers/unitdef_post.lua b/gamedata/scavengers/unitdef_post.lua index 7d3db036523..4ffedcc62d9 100644 --- a/gamedata/scavengers/unitdef_post.lua +++ b/gamedata/scavengers/unitdef_post.lua @@ -322,6 +322,7 @@ local function scavUnitDef_Post(name, uDef) uDef.buildoptions[numBuildoptions + 7] = "armnanotct2_scav" uDef.buildoptions[numBuildoptions + 8] = "armlwall_scav" uDef.buildoptions[numBuildoptions + 9] = "armshockwave_scav" + uDef.buildoptions[numBuildoptions + 10] = "armgatet3_scav" elseif name == "coraca_scav" or name == "corack_scav" or name == "coracv_scav" then local numBuildoptions = #uDef.buildoptions uDef.buildoptions[numBuildoptions + 1] = "corapt3_scav" @@ -331,6 +332,7 @@ local function scavUnitDef_Post(name, uDef) uDef.buildoptions[numBuildoptions + 6] = "cordoomt3_scav" uDef.buildoptions[numBuildoptions + 7] = "cornanotct2_scav" uDef.buildoptions[numBuildoptions + 8] = "cormwall_scav" + uDef.buildoptions[numBuildoptions + 9] = "corgatet3_scav" elseif name == "legaca_scav" or name == "legack_scav" or name == "legacv_scav" then local numBuildoptions = #uDef.buildoptions uDef.buildoptions[numBuildoptions + 1] = "legapt3_scav" @@ -338,6 +340,7 @@ local function scavUnitDef_Post(name, uDef) uDef.buildoptions[numBuildoptions + 3] = "legwint2_scav" uDef.buildoptions[numBuildoptions + 4] = "legnanotct2_scav" uDef.buildoptions[numBuildoptions + 5] = "legrwall_scav" + uDef.buildoptions[numBuildoptions + 6] = "corgatet3_scav" elseif name == "armasy_scav" then local numBuildoptions = #uDef.buildoptions uDef.buildoptions[numBuildoptions + 1] = "armptt2_scav" diff --git a/language/en/units.json b/language/en/units.json index 0de08757c77..70f22ee1d76 100644 --- a/language/en/units.json +++ b/language/en/units.json @@ -131,6 +131,7 @@ "armfrt": "Naval Nettle", "armfus": "Fusion Reactor", "armgate": "Keeper", + "armgatet3": "Asylum", "armgeo": "Geothermal Powerplant", "armuwgeo": "Geothermal Powerplant", "armgmm": "Prude", @@ -486,6 +487,7 @@ "corgantuw": "Experimental Gantry", "corgarp": "Garpike", "corgate": "Overseer", + "corgatet3": "Sanctuary", "corgator": "Incisor", "corgatreap": "Laser Tiger", "corgeo": "Geothermal Powerplant", @@ -985,6 +987,7 @@ "armfrt": "Floating Anti-air Tower", "armfus": "Produces 1000 Energy", "armgate": "Plasma Deflector", + "armgatet3": "Intercepts small weaponry energy signatures of familiar types", "armgeo": "Produces 300 Energy", "armuwgeo": "Produces 300 Energy", "armgmm": "Safe Geothermal Powerplant, produces 750 Energy", @@ -1343,6 +1346,7 @@ "corgantuw": "Produces Large Amphibious Units", "corgarp": "Light Amphibious Tank", "corgate": "Plasma Deflector", + "corgatet3": "Intercepts small weaponry energy signatures of familiar types", "corgator": "Light Tank", "corgatreap": "Heavy Assault Tank", "corgeo": "Produces 300 Energy", diff --git a/luarules/configs/scav_spawn_defs.lua b/luarules/configs/scav_spawn_defs.lua index 472cfafb3c1..c7b7de29903 100644 --- a/luarules/configs/scav_spawn_defs.lua +++ b/luarules/configs/scav_spawn_defs.lua @@ -1302,6 +1302,9 @@ local Turrets = { ["leggant_scav"] = {type = "normal", surface = "land", spawnedPerWave = 0.1, maxExisting = 1}, ["armshltxuw_scav"] = {type = "normal", surface = "sea", spawnedPerWave = 0.1, maxExisting = 1}, ["corgantuw_scav"] = {type = "normal", surface = "sea", spawnedPerWave = 0.1, maxExisting = 1}, + --misc + ["armgatet3_scav"] = {type = "normal", surface = "land", spawnedPerWave = 0.1, maxExisting = 2}, + ["corgatet3_scav"] = {type = "normal", surface = "land", spawnedPerWave = 0.1, maxExisting = 2}, }, [7] = { --Epic Bulwark and Pulsar/rag/cal diff --git a/luaui/Widgets/gfx_lupsgl4_orbs.lua b/luaui/Widgets/gfx_lupsgl4_orbs.lua index 2c95725ac48..e1c5c84cc55 100644 --- a/luaui/Widgets/gfx_lupsgl4_orbs.lua +++ b/luaui/Widgets/gfx_lupsgl4_orbs.lua @@ -86,6 +86,14 @@ local corgateShieldSphere = table.merge(defaults, { isShield = true, }) +local corgatet3ShieldSphere = table.merge(defaults, { + pos = { 0, 75, -1 }, + size = 18, + colormap1 = { { 0.9, 0.9, 1, 0.75 }, { 0.9, 0.9, 1, 1.0 }, { 0.9, 0.9, 1, 1.0 }, { 0.9, 0.9, 1, 0.75 } }, + colormap2 = { { 0.2, 0.6, 0.2, 0.4 }, { 0.2, 0.6, 0.2, 0.45 }, { 0.2, 0.6, 0.2, 0.45 }, { 0.2, 0.6, 0.2, 0.4 } }, + isShield = true, +}) + local armjunoShieldSphere = table.merge(defaults, { pos = { 0, 72, 0 }, size = 13, @@ -107,6 +115,13 @@ local armgateShieldSphere = table.merge(defaults, { colormap2 = { { 0.2, 0.6, 0.2, 0.4 }, { 0.2, 0.6, 0.2, 0.45 }, { 0.2, 0.6, 0.2, 0.45 }, { 0.2, 0.6, 0.2, 0.4 } }, isShield = true, }) +local armgatet3ShieldSphere = table.merge(defaults, { + pos = { 0, 42, -6 }, + size = 20, + colormap1 = { { 0.9, 0.9, 1, 0.75 }, { 0.9, 0.9, 1, 1.0 }, { 0.9, 0.9, 1, 1.0 }, { 0.9, 0.9, 1, 0.75 } }, + colormap2 = { { 0.2, 0.6, 0.2, 0.4 }, { 0.2, 0.6, 0.2, 0.45 }, { 0.2, 0.6, 0.2, 0.45 }, { 0.2, 0.6, 0.2, 0.4 } }, + isShield = true, +}) local UnitEffects = { ["armjuno"] = { @@ -141,6 +156,12 @@ local UnitEffects = { --{class='ShieldJitter', options={delay=0,life=math.huge, pos={0,42,0.0}, size=555, precision=0, strength= 0.001, repeatEffect=true}}, --{class='ShieldJitter',options={life=math.huge, pos={0,42,0}, size=20, precision=2, repeatEffect=true}}, }, + ["corgatet3"] = { + { class = 'ShieldJitter', options = { delay = 0, life = math.huge, pos = { 0, 75, 0 }, size = 18, precision = 22, repeatEffect = true , isShiedl } }, + { class = 'ShieldSphere', options = corgatet3ShieldSphere }, + --{class='ShieldJitter', options={delay=0,life=math.huge, pos={0,42,0.0}, size=555, precision=0, strength= 0.001, repeatEffect=true}}, + --{class='ShieldJitter',options={life=math.huge, pos={0,42,0}, size=20, precision=2, repeatEffect=true}}, + }, ["corfgate"] = { { class = 'ShieldJitter', options = { delay = 0, life = math.huge, pos = { 0, 42, 0 }, size = 12, precision = 22, repeatEffect = true } }, { class = 'ShieldSphere', options = corgateShieldSphere }, @@ -152,6 +173,11 @@ local UnitEffects = { { class = 'ShieldSphere', options = armgateShieldSphere }, --{class='ShieldJitter', options={delay=0,life=math.huge, pos={0,23.5,-5}, size=555, precision=0, strength=0.001, repeatEffect=true}}, }, + ["armgatet3"] = { + { class = 'ShieldJitter', options = { delay = 0, life = math.huge, pos = { 0, 37, -5 }, size = 21, precision = 22, repeatEffect = true } }, + { class = 'ShieldSphere', options = armgatet3ShieldSphere }, + --{class='ShieldJitter', options={delay=0,life=math.huge, pos={0,23.5,-5}, size=555, precision=0, strength=0.001, repeatEffect=true}}, + }, ["armfgate"] = { { class = 'ShieldJitter', options = { delay = 0, life = math.huge, pos = { 0, 25, 0 }, size = 15, precision = 22, repeatEffect = true } }, { class = 'ShieldSphere', options = table.merge(armgateShieldSphere, { pos = { 0, 25, 0 } }) }, diff --git a/luaui/configs/DeferredLightsGL4config.lua b/luaui/configs/DeferredLightsGL4config.lua index 02b48265c63..fa22b1d669c 100644 --- a/luaui/configs/DeferredLightsGL4config.lua +++ b/luaui/configs/DeferredLightsGL4config.lua @@ -21420,6 +21420,44 @@ local unitLights = { lifetime = 0, sustain = 0, animtype = 0}, }, }, + ['armgatet3'] = { + shieldglow = { + lightType = 'point', + pieceName = 'base', + lightConfig = { posx = 0, posy = 66, posz = -5, radius = 68, + color2r = 0.1, color2g = 0.45, color2b = 0.15, colortime = 70, + r = 0.2, g = 0.9, b = 0.3, a = 0.25, + modelfactor = 0.4, specular = 1.0, scattering = 1.3, lensflare = 0, + lifetime = 0, sustain = 0, animtype = 0}, + }, + bottom1 = { + lightType = 'point', + pieceName = 'base', + lightConfig = { posx = 0, posy = 20, posz = 26, radius = 28, + color2r = 1, color2g = 1, color2b = 0.2, colortime = 0, + r = 1, g = 1, b = 0.2, a = 0.07, + modelfactor = 0.4, specular = 0, scattering = 0.7, lensflare = 0, + lifetime = 0, sustain = 0, animtype = 0}, + }, + bottom2 = { + lightType = 'point', + pieceName = 'base', + lightConfig = { posx = -6.2, posy = 20, posz = 26, radius = 28, + color2r = 1, color2g = 1, color2b = 0.2, colortime = 0, + r = 1, g = 1, b = 0.2, a = 0.07, + modelfactor = 0.4, specular = 0, scattering = 0.7, lensflare = 0, + lifetime = 0, sustain = 0, animtype = 0}, + }, + bottom3 = { + lightType = 'point', + pieceName = 'base', + lightConfig = { posx = 6.2, posy = 20, posz = 26, radius = 28, + color2r = 1, color2g = 1, color2b = 0.2, colortime = 0, + r = 1, g = 1, b = 0.2, a = 0.07, + modelfactor = 0.4, specular = 0, scattering = 0.7, lensflare = 0, + lifetime = 0, sustain = 0, animtype = 0}, + }, + }, ['corgate'] = { shieldglow = { lightType = 'point', @@ -21431,6 +21469,17 @@ local unitLights = { lifetime = 0, sustain = 0, animtype = 0}, }, }, + ['corgatet3'] = { + shieldglow = { + lightType = 'point', + pieceName = 'base', + lightConfig = { posx = 0, posy = 42, posz = 0, radius = 55, + color2r = 0.15, color2g = 0.45, color2b = 0.15, colortime = 70, + r = 0.2, g = 0.9, b = 0.3, a = 0.25, + modelfactor = 0.4, specular = 1.0, scattering = 1.3, lensflare = 0, + lifetime = 0, sustain = 0, animtype = 0}, + }, + }, ['legrad'] = { greenblobA = { lightType = 'point', diff --git a/modoptions.lua b/modoptions.lua index 19f1a598ab3..492e1e1283f 100644 --- a/modoptions.lua +++ b/modoptions.lua @@ -1782,6 +1782,7 @@ local options = { type = "list", section = "options_cheats", def = "unchanged", + hidden = true, items = { { key = "unchanged", name = "Unchanged", desc = "Unchanged" }, { key = "absorbplasma", name = "Absorb Plasma", desc = "Collisions Disabled" }, diff --git a/objects3d/Units/armgatet3.s3o b/objects3d/Units/armgatet3.s3o new file mode 100644 index 00000000000..1ab13ae9353 Binary files /dev/null and b/objects3d/Units/armgatet3.s3o differ diff --git a/objects3d/Units/armgatet3_dead.s3o b/objects3d/Units/armgatet3_dead.s3o new file mode 100644 index 00000000000..5e34bd24a4a Binary files /dev/null and b/objects3d/Units/armgatet3_dead.s3o differ diff --git a/objects3d/Units/corgatet3.s3o b/objects3d/Units/corgatet3.s3o new file mode 100644 index 00000000000..8c9312b9740 Binary files /dev/null and b/objects3d/Units/corgatet3.s3o differ diff --git a/objects3d/Units/corgatet3_dead.s3o b/objects3d/Units/corgatet3_dead.s3o new file mode 100644 index 00000000000..556b00a8297 Binary files /dev/null and b/objects3d/Units/corgatet3_dead.s3o differ diff --git a/scripts/Units/armgatet3.bos b/scripts/Units/armgatet3.bos new file mode 100644 index 00000000000..d4dc743fa66 --- /dev/null +++ b/scripts/Units/armgatet3.bos @@ -0,0 +1,148 @@ +#define TA // This is a TA script + +#include "sfxtype.h" +#include "exptype.h" + +piece base, shield; + +static-var Static_Var_1, statechg_DesiredState, statechg_StateChanging; + + +ShieldOn() +{ + Static_Var_1 = 1; +} + +ShieldOff() +{ + Static_Var_1 = 0; +} + +InitState() +{ + statechg_DesiredState = TRUE; + statechg_StateChanging = FALSE; +} + +RequestState(requestedstate, currentstate) +{ + if( statechg_StateChanging ) + { + statechg_DesiredState = requestedstate; + return (0); + } + statechg_StateChanging = TRUE; + currentstate = statechg_DesiredState; + statechg_DesiredState = requestedstate; + while( statechg_DesiredState != currentstate ) + { + if( statechg_DesiredState == 0 ) + { + call-script ShieldOn(); + currentstate = 0; + } + if( statechg_DesiredState == 1 ) + { + call-script ShieldOff(); + currentstate = 1; + } + } + statechg_StateChanging = FALSE; +} + +Create() +{ + hide shield; + + Static_Var_1 = 1; + call-script InitState(); +} + +#define SMOKEPIECE base +#include "smokeunit_thread_nohit.h" + +Activate() +{ + start-script RequestState(0); +} + +Deactivate() +{ + start-script RequestState(1); +} + +AimPrimary(heading, pitch) +{ + sleep 100; + return (Static_Var_1); +} + +FirePrimary() +{ + sleep 100; +} + +QueryPrimary(piecenum) +{ + piecenum = shield; +} + +AimFromPrimary(piecenum) +{ + piecenum = base; +} + +AimSecondary(heading, pitch) +{ + sleep 100; + return (Static_Var_1); +} + +FireSecondary() +{ + sleep 100; +} + +QuerySecondary(piecenum) +{ + piecenum = base; +} + +AimFromSecondary(piecenum) +{ + piecenum = base; +} + +SweetSpot(piecenum) +{ + piecenum = base; +} + +Killed(severity, corpsetype) +{ + if( severity <= 25 ) + { + corpsetype = 1 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode shield type BITMAPONLY | NOHEATCLOUD; + return(corpsetype); + } + if( severity <= 50 ) + { + corpsetype = 2 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode shield type FIRE | SMOKE | FALL | NOHEATCLOUD; + return(corpsetype); + } + if( severity <= 99 ) + { + corpsetype = 3 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode shield type EXPLODE_ON_HIT | SMOKE | FALL | NOHEATCLOUD; + return(corpsetype); + } + corpsetype = 3 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode shield type EXPLODE_ON_HIT | FIRE | FALL | NOHEATCLOUD; + return corpsetype; +} diff --git a/scripts/Units/armgatet3.cob b/scripts/Units/armgatet3.cob new file mode 100644 index 00000000000..95635c391c8 Binary files /dev/null and b/scripts/Units/armgatet3.cob differ diff --git a/scripts/Units/corgatet3.bos b/scripts/Units/corgatet3.bos new file mode 100644 index 00000000000..bcc25225ab3 --- /dev/null +++ b/scripts/Units/corgatet3.bos @@ -0,0 +1,165 @@ +#define TA // This is a TA script + +#include "sfxtype.h" +#include "exptype.h" + +piece base, dish; + +static-var Static_Var_1, statechg_DesiredState, statechg_StateChanging; +static-var Stunned; + + +ShieldOn() +{ + Static_Var_1 = 1; +} + +ShieldOff() +{ + Static_Var_1 = 0; +} + +InitState() +{ + statechg_DesiredState = TRUE; + statechg_StateChanging = FALSE; +} + +RequestState(requestedstate, currentstate) +{ + if( statechg_StateChanging ) + { + statechg_DesiredState = requestedstate; + return (0); + } + statechg_StateChanging = TRUE; + currentstate = statechg_DesiredState; + statechg_DesiredState = requestedstate; + while( statechg_DesiredState != currentstate ) + { + if( statechg_DesiredState == 0 ) + { + call-script ShieldOn(); + currentstate = 0; + } + if( statechg_DesiredState == 1 ) + { + call-script ShieldOff(); + currentstate = 1; + } + } + statechg_StateChanging = FALSE; +} + +Go() +{ + spin dish around y-axis speed <15.000000>; +} +Stop() +{ + spin dish around y-axis speed <0.000000>; +} +Create() +{ + call-script Go(); + call-script InitState(); +} +SetStunned(State) +{ + Stunned = State; + if (Stunned) { + call-script Stop(); + } else { + call-script Go(); + } +} + +#define SMOKEPIECE base +#include "smokeunit_thread_nohit.h" + + +Activate() +{ + start-script RequestState(0); +} + +Deactivate() +{ + start-script RequestState(1); +} + +AimPrimary(heading, pitch) +{ + sleep 100; + return (Static_Var_1); +} + +FirePrimary() +{ + sleep 100; +} + +QueryPrimary(piecenum) +{ + piecenum = base; +} + +AimFromPrimary(piecenum) +{ + piecenum = base; +} + +SweetSpot(piecenum) +{ + piecenum = base; +} + +AimSecondary(heading, pitch) +{ + sleep 100; + return (Static_Var_1); +} + +FireSecondary() +{ + sleep 100; +} + +QuerySecondary(piecenum) +{ + piecenum = base; +} + +AimFromSecondary(piecenum) +{ + piecenum = base; +} + +Killed(severity, corpsetype) +{ + if( severity <= 25 ) + { + corpsetype = 1 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode dish type FIRE | SMOKE | FALL | NOHEATCLOUD; + return(corpsetype); + } + if( severity <= 50 ) + { + corpsetype = 2 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode dish type FIRE | SMOKE | FALL | NOHEATCLOUD; + return(corpsetype); + } + if( severity <= 99 ) + { + corpsetype = 3 ; + explode base type BITMAPONLY | NOHEATCLOUD; + explode dish type SMOKE | FALL | NOHEATCLOUD; + return(corpsetype); + } + corpsetype = 3 ; + explode base type EXPLODE_ON_HIT | FIRE | SMOKE | FALL | NOHEATCLOUD; + explode dish type EXPLODE_ON_HIT | FIRE | FALL | NOHEATCLOUD; + return corpsetype; +} diff --git a/scripts/Units/corgatet3.cob b/scripts/Units/corgatet3.cob new file mode 100644 index 00000000000..f64f47adfdb Binary files /dev/null and b/scripts/Units/corgatet3.cob differ diff --git a/unitpics/armgatet3.dds b/unitpics/armgatet3.dds new file mode 100644 index 00000000000..c5003728170 Binary files /dev/null and b/unitpics/armgatet3.dds differ diff --git a/unitpics/corgatet3.dds b/unitpics/corgatet3.dds new file mode 100644 index 00000000000..6b56eb8396e Binary files /dev/null and b/unitpics/corgatet3.dds differ diff --git a/units/Scavengers/Buildings/Utility/armgatet3.lua b/units/Scavengers/Buildings/Utility/armgatet3.lua new file mode 100644 index 00000000000..169aade29fa --- /dev/null +++ b/units/Scavengers/Buildings/Utility/armgatet3.lua @@ -0,0 +1,161 @@ +return { + armgatet3 = { + activatewhenbuilt = true, + buildangle = 2048, + buildpic = "ARMGATET3.DDS", + buildtime = 220000, + canattack = false, + canrepeat = false, + category = "NOWEAPON", + collisionvolumeoffsets = "0 0 3", + collisionvolumescales = "91 85 91", + collisionvolumetype = "CylY", + corpse = "DEAD", + energycost = 216000, + energystorage = 4000, + exemptcategory = "WEAPON", + explodeas = "fusionExplosion", + footprintx = 5, + footprintz = 6, + health = 10250, + idleautoheal = 5, + idletime = 1800, + maxacc = 0, + maxdec = 0, + maxslope = 10, + maxwaterdepth = 0, + metalcost = 12000, + noautofire = true, + objectname = "Units/ARMGATET3.s3o", + onoffable = false, + script = "Units/ARMGATET3.cob", + seismicsignature = 0, + selfdestructas = "fusionExplosionSelfd", + sightdistance = 350, + customparams = { + buildinggrounddecaldecayspeed = 30, + buildinggrounddecalsizex = 9, + buildinggrounddecalsizey = 9, + buildinggrounddecaltype = "decals/armgate_aoplane.dds", + model_author = "Beherith/Protar", + normaltex = "unittextures/Arm_normal.dds", + removestop = true, + removewait = true, + shield_color_mult = 25, + shield_power = 13000, + shield_radius = 710, + subfolder = "ArmBuildings/LandUtil", + techlevel = 3, + unitgroup = "util", + usebuildinggrounddecal = true, + }, + featuredefs = { + dead = { + blocking = true, + category = "corpses", + collisionvolumeoffsets = "0 0 3", + collisionvolumescales = "91 67 91", + collisionvolumetype = "CylY", + damage = 7500, + featuredead = "HEAP", + footprintx = 5, + footprintz = 6, + height = 20, + metal = 7500, + object = "Units/armgatet3_dead.s3o", + reclaimable = true, + }, + heap = { + blocking = false, + category = "heaps", + collisionvolumescales = "35.0 4.0 6.0", + collisionvolumetype = "cylY", + damage = 3750, + footprintx = 4, + footprintz = 4, + height = 4, + metal = 3200, + object = "Units/arm4X4A.s3o", + reclaimable = true, + resurrectable = 0, + }, + }, + sfxtypes = { + 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] = "drone1", + }, + select = { + [1] = "drone1", + }, + }, + weapondefs = { + repulsor = { + avoidfeature = false, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + edgeeffectiveness = 0.15, + name = "PlasmaRepulsor", + range = 710, + soundhitwet = "sizzle", + weapontype = "Shield", + damage = { + default = 100, + }, + shield = { + alpha = 0.17, + armortype = "shields", + energyupkeep = 0, + force = 2.5, + intercepttype = 999, + power = 26000, + powerregen = 208, + powerregenenergy = 1968, + radius = 710, + repulser = true, + smart = true, + startingpower = 8125, + visiblerepulse = true, + badcolor = { + [1] = 1, + [2] = 0.2, + [3] = 0.2, + [4] = 0.2, + }, + goodcolor = { + [1] = 0.2, + [2] = 1, + [3] = 0.2, + [4] = 0.17, + }, + }, + }, + }, + weapons = { + [1] = { + def = "REPULSOR", + onlytargetcategory = "NOTSUB", + }, + }, + }, +} diff --git a/units/Scavengers/Buildings/Utility/corgatet3.lua b/units/Scavengers/Buildings/Utility/corgatet3.lua new file mode 100644 index 00000000000..08565b743d9 --- /dev/null +++ b/units/Scavengers/Buildings/Utility/corgatet3.lua @@ -0,0 +1,161 @@ +return { + corgatet3 = { + activatewhenbuilt = true, + buildangle = 4096, + buildpic = "CORGATET3.DDS", + buildtime = 275000, + canattack = false, + canrepeat = false, + category = "NOWEAPON", + collisionvolumeoffsets = "0 -4 0", + collisionvolumescales = "96 143 96", + collisionvolumetype = "CylY", + corpse = "DEAD", + energycost = 275000, + energystorage = 5000, + exemptcategory = "WEAPON", + explodeas = "advancedFusionExplosion", + footprintx = 6, + footprintz = 6, + health = 12500, + idleautoheal = 5, + idletime = 1800, + maxacc = 0, + maxdec = 0, + maxslope = 10, + maxwaterdepth = 0, + metalcost = 16000, + noautofire = true, + objectname = "Units/CORGATET3.s3o", + onoffable = false, + script = "Units/CORGATET3.cob", + seismicsignature = 0, + selfdestructas = "advancedFusionExplosionSelfd", + sightdistance = 350, + customparams = { + buildinggrounddecaldecayspeed = 30, + buildinggrounddecalsizex = 9, + buildinggrounddecalsizey = 9, + buildinggrounddecaltype = "decals/corgate_aoplane.dds", + model_author = "Mr Bob/Protar", + normaltex = "unittextures/cor_normal.dds", + removestop = true, + removewait = true, + shield_color_mult = 25, + shield_power = 35000, + shield_radius = 825, + subfolder = "CorBuildings/LandUtil", + techlevel = 3, + unitgroup = "util", + usebuildinggrounddecal = true, + }, + featuredefs = { + dead = { + blocking = true, + category = "corpses", + collisionvolumeoffsets = "0 -4 0", + collisionvolumescales = "96 115 96", + collisionvolumetype = "CylY", + damage = 8500, + featuredead = "HEAP", + footprintx = 6, + footprintz = 6, + height = 20, + metal = 10000, + object = "Units/corgatet3_dead.s3o", + reclaimable = true, + }, + heap = { + blocking = false, + category = "heaps", + collisionvolumescales = "35.0 4.0 6.0", + collisionvolumetype = "cylY", + damage = 4250, + footprintx = 5, + footprintz = 5, + height = 4, + metal = 4000, + object = "Units/cor5X5D.s3o", + reclaimable = true, + resurrectable = 0, + }, + }, + sfxtypes = { + 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] = "drone1", + }, + select = { + [1] = "drone1", + }, + }, + weapondefs = { + repulsor = { + avoidfeature = false, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + edgeeffectiveness = 0.15, + name = "PlasmaRepulsor", + range = 825, + soundhitwet = "sizzle", + weapontype = "Shield", + damage = { + default = 100, + }, + shield = { + alpha = 0.17, + armortype = "shields", + energyupkeep = 0, + force = 2.5, + intercepttype = 951, + power = 35000, + powerregen = 260, + powerregenenergy = 2812.5, + radius = 825, + repulser = true, + smart = true, + startingpower = 11000, + visiblerepulse = true, + badcolor = { + [1] = 1, + [2] = 0.2, + [3] = 0.2, + [4] = 0.2, + }, + goodcolor = { + [1] = 0.2, + [2] = 1, + [3] = 0.2, + [4] = 0.17, + }, + }, + }, + }, + weapons = { + [1] = { + def = "REPULSOR", + onlytargetcategory = "NOTSUB", + }, + }, + }, +}