From 8b39ab563bac1dd7098ef62f74a4714c74df2e53 Mon Sep 17 00:00:00 2001 From: RandomGuyJunior Date: Sun, 14 Jun 2026 10:16:12 +0200 Subject: [PATCH 1/6] T3Geo+Walls mod addition This commit contains my T3 Geo and Walls mod. As the name says it ats 3 T3 faction unique geos and walls. Originally, geos lose their strategic value in the lategame, since they make little energy vs AFUS stacks. This mod was made to fix it by introducing value outside of just raw energy. It later turned out fun vs raptors and scav, and became more of a PvE mod. That resulted me into adding T3 walls since T2 walls are like paper compared to the waves and annoyed me a lot. ## Implementation - new lua file geo+walls-t3.lua - added new checkbox in UI (T3 Geo + Walls) - The lua file is minified to 11k characters from original 20k ### Unit Summary - I am not sure if you all care about the details, but I would if it was my repo. **Armada:** - T3 wall with ver good but short range emp (its still mainly a wall) - T3 Geo main function is Intelligence. cloak + storage + lots of vision **Cortex:** - T3 Wall is just a tanky wall, which regenarates 1%HP every 4s. It can in fact survive a nuke and block enemies from entering your destroyed base. - T3 Geo is a Long Range Rocket Artillery. Not enough to be an LRPC, more a defense/pressure tool. **Legion:** - T3 wall makes tanky air drones with weak lasers(~120DPS total), protecting land and air from fire. - T3 Geo loses anitnuke(most people disable nukes and then Legion doesnt have a good Geo anymore) but has upgraded drones with railguns, and assist and repair drones applying buildpower to a large radius. --- lua/geo+walls-t3.lua | 5 +++++ src/components/tabs/configurator/sections/extras.tsx | 10 ++++++++++ .../command-generator/data/configuration-mapping.ts | 8 ++++++++ src/lib/command-generator/data/configuration.ts | 1 + 4 files changed, 24 insertions(+) create mode 100644 lua/geo+walls-t3.lua diff --git a/lua/geo+walls-t3.lua b/lua/geo+walls-t3.lua new file mode 100644 index 0000000..5ba992d --- /dev/null +++ b/lua/geo+walls-t3.lua @@ -0,0 +1,5 @@ +-- T3 Geo + Walls +-- Authors: RandomGuy +-- https://github.com/nuttyb-community/nuttyb + +do local a,b=UnitDefs or{},table.merge;local function c(d,e,f)local g=a[d]if g and not a[e]then a[e]=b(g,f or{})end end;local function h(i,j)local k=a[i]local l=j and a[j]if not k or not l then return end;k.buildoptions=k.buildoptions or{}for m=1,#k.buildoptions do if k.buildoptions[m]==j then return end end;k.buildoptions[#k.buildoptions+1]=j end;local n={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local o={badtargetcategory='VTOL',def='lightlaser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}local p={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=true,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local q={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local r={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano default',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=false,dockingHelperSpeed=5,dockingpieces='10, 11 12',dockingradius=80,droneairtime=90,droneammo='0 40'}local s={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local t={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then c('legdrone','legparadrone',{health=2000,weapondefs={lightlaser=n},weapons={[1]=o},customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})c('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',weapondefs={plasma=p},customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})c('legheavydrone','legraildrone',{weapondefs={heat_ray=q},weapons={[1]={def='heat_ray',maxangledif=360,onlytargetcategory='NOTSUB'}},customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})c('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})c('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',weapondefs={plasma={customparams=r}},weapons={[1]={def=''}},customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})end;c('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})c('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',weapondefs={lightning=s},weapons={[1]={def='lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})c('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',weapondefs={corbhmth_weapon=t},weapons={[1]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})c('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local u={'armaca','armack','armacsub','armacv','armoc'}local v={'coraca','corack','coracsub','coracv','coroc'}local w={'legaca','legack','legacv','legoc'}for x,i in pairs(u)do h(i,'armageot3')h(i,'armfirewall')end;for x,i in pairs(v)do h(i,'corageot3')h(i,'cortyrant')end;for x,i in pairs(w)do h(i,'legageot3')h(i,'legparagon')end end \ No newline at end of file diff --git a/src/components/tabs/configurator/sections/extras.tsx b/src/components/tabs/configurator/sections/extras.tsx index c584216..6e9c01d 100644 --- a/src/components/tabs/configurator/sections/extras.tsx +++ b/src/components/tabs/configurator/sections/extras.tsx @@ -77,6 +77,16 @@ export const ExtrasSection: React.FC = () => { ) } /> + + setProperty( + 'isT3GeoWalls', + event.currentTarget.checked + ) + } + /> diff --git a/src/lib/command-generator/data/configuration-mapping.ts b/src/lib/command-generator/data/configuration-mapping.ts index eca8ce0..1fa829c 100644 --- a/src/lib/command-generator/data/configuration-mapping.ts +++ b/src/lib/command-generator/data/configuration-mapping.ts @@ -27,6 +27,7 @@ export const LUA_PRIORITIES: Record = { '~lua/rflrpc-t4.lua': 11, 'lua/air-rework-t4.lua': 12, 'lua/unit-launchers.lua': 13, + 'lua/geo+walls-t3.lua': 14, } as const; /** @@ -336,6 +337,13 @@ export const CONFIGURATION_MAPPING: ValueMapping = { true: { tweakunits: ['~lua/mega-nuke.lua'] }, false: undefined, }, + }, + isT3GeoWalls: { + description: 'T3 Geo and T3 Walls', + values: { + true: { tweakdefs: ['~lua/geo+walls-t3.lua'] }, + false: undefined, + }, }, // Numeric settings - handled via command templates, not value mapping incomeMult: { diff --git a/src/lib/command-generator/data/configuration.ts b/src/lib/command-generator/data/configuration.ts index c45425d..6dc71e2 100644 --- a/src/lib/command-generator/data/configuration.ts +++ b/src/lib/command-generator/data/configuration.ts @@ -58,6 +58,7 @@ export const DEFAULT_CONFIGURATION: Configuration = { isRFLRPCRebalance: true, isRFLRPCT4: true, isMegaNuke: false, + isT3GeoWalls: false, // Numeric multipliers incomeMult: 1, buildDistMult: 1.5, From 32c45812c16f04d3bcd67a5c77497fcd26064b10 Mon Sep 17 00:00:00 2001 From: RandomGuyJunior <42807509+RandomGuyJunior@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:11:32 +0200 Subject: [PATCH 2/6] Refactor T3 Geo + Walls configuration Enabledocking set to 0 from true (true doesnt work anymore) --- lua/geo+walls-t3.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/geo+walls-t3.lua b/lua/geo+walls-t3.lua index 5ba992d..7ea4201 100644 --- a/lua/geo+walls-t3.lua +++ b/lua/geo+walls-t3.lua @@ -2,4 +2,4 @@ -- Authors: RandomGuy -- https://github.com/nuttyb-community/nuttyb -do local a,b=UnitDefs or{},table.merge;local function c(d,e,f)local g=a[d]if g and not a[e]then a[e]=b(g,f or{})end end;local function h(i,j)local k=a[i]local l=j and a[j]if not k or not l then return end;k.buildoptions=k.buildoptions or{}for m=1,#k.buildoptions do if k.buildoptions[m]==j then return end end;k.buildoptions[#k.buildoptions+1]=j end;local n={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local o={badtargetcategory='VTOL',def='lightlaser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}local p={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=true,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local q={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local r={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano default',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=false,dockingHelperSpeed=5,dockingpieces='10, 11 12',dockingradius=80,droneairtime=90,droneammo='0 40'}local s={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local t={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then c('legdrone','legparadrone',{health=2000,weapondefs={lightlaser=n},weapons={[1]=o},customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})c('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',weapondefs={plasma=p},customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})c('legheavydrone','legraildrone',{weapondefs={heat_ray=q},weapons={[1]={def='heat_ray',maxangledif=360,onlytargetcategory='NOTSUB'}},customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})c('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})c('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',weapondefs={plasma={customparams=r}},weapons={[1]={def=''}},customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})end;c('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})c('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',weapondefs={lightning=s},weapons={[1]={def='lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})c('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',weapondefs={corbhmth_weapon=t},weapons={[1]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})c('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local u={'armaca','armack','armacsub','armacv','armoc'}local v={'coraca','corack','coracsub','coracv','coroc'}local w={'legaca','legack','legacv','legoc'}for x,i in pairs(u)do h(i,'armageot3')h(i,'armfirewall')end;for x,i in pairs(v)do h(i,'corageot3')h(i,'cortyrant')end;for x,i in pairs(w)do h(i,'legageot3')h(i,'legparagon')end end \ No newline at end of file +do local a,b=UnitDefs or{},table.merge;local function c(d,e,f)local g=a[d]if g and not a[e]then a[e]=b(g,f or{})end end;local function h(i,j)local k=a[i]local l=j and a[j]if not k or not l then return end;k.buildoptions=k.buildoptions or{}for m=1,#k.buildoptions do if k.buildoptions[m]==j then return end end;k.buildoptions[#k.buildoptions+1]=j end;local n={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local o={badtargetcategory='VTOL',def='lightlaser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}local p={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=0,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local q={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local r={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano default',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=false,dockingHelperSpeed=5,dockingpieces='10, 11 12',dockingradius=80,droneairtime=90,droneammo='0 40'}local s={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local t={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then c('legdrone','legparadrone',{health=2000,weapondefs={lightlaser=n},weapons={[1]=o},customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})c('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',weapondefs={plasma=p},customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})c('legheavydrone','legraildrone',{weapondefs={heat_ray=q},weapons={[1]={def='heat_ray',maxangledif=360,onlytargetcategory='NOTSUB'}},customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})c('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})c('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',weapondefs={plasma={customparams=r}},weapons={[1]={def=''}},customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})end;c('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})c('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',weapondefs={lightning=s},weapons={[1]={def='lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})c('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',weapondefs={corbhmth_weapon=t},weapons={[1]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})c('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local u={'armaca','armack','armacsub','armacv','armoc'}local v={'coraca','corack','coracsub','coracv','coroc'}local w={'legaca','legack','legacv','legoc'}for x,i in pairs(u)do h(i,'armageot3')h(i,'armfirewall')end;for x,i in pairs(v)do h(i,'corageot3')h(i,'cortyrant')end;for x,i in pairs(w)do h(i,'legageot3')h(i,'legparagon')end end From 4786d4aa832a2dc4e57c93407860985cc32218f2 Mon Sep 17 00:00:00 2001 From: RandomGuyJunior <42807509+RandomGuyJunior@users.noreply.github.com> Date: Sun, 14 Jun 2026 22:15:51 +0200 Subject: [PATCH 3/6] Refactor T3 Geo + Walls dockingchange adjusted enabledocking false to 0 --- lua/geo+walls-t3.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/geo+walls-t3.lua b/lua/geo+walls-t3.lua index 7ea4201..bcc21d7 100644 --- a/lua/geo+walls-t3.lua +++ b/lua/geo+walls-t3.lua @@ -2,4 +2,4 @@ -- Authors: RandomGuy -- https://github.com/nuttyb-community/nuttyb -do local a,b=UnitDefs or{},table.merge;local function c(d,e,f)local g=a[d]if g and not a[e]then a[e]=b(g,f or{})end end;local function h(i,j)local k=a[i]local l=j and a[j]if not k or not l then return end;k.buildoptions=k.buildoptions or{}for m=1,#k.buildoptions do if k.buildoptions[m]==j then return end end;k.buildoptions[#k.buildoptions+1]=j end;local n={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local o={badtargetcategory='VTOL',def='lightlaser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}local p={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=0,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local q={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local r={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano default',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=false,dockingHelperSpeed=5,dockingpieces='10, 11 12',dockingradius=80,droneairtime=90,droneammo='0 40'}local s={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local t={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then c('legdrone','legparadrone',{health=2000,weapondefs={lightlaser=n},weapons={[1]=o},customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})c('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',weapondefs={plasma=p},customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})c('legheavydrone','legraildrone',{weapondefs={heat_ray=q},weapons={[1]={def='heat_ray',maxangledif=360,onlytargetcategory='NOTSUB'}},customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})c('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})c('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',weapondefs={plasma={customparams=r}},weapons={[1]={def=''}},customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})end;c('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})c('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',weapondefs={lightning=s},weapons={[1]={def='lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})c('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',weapondefs={corbhmth_weapon=t},weapons={[1]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})c('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local u={'armaca','armack','armacsub','armacv','armoc'}local v={'coraca','corack','coracsub','coracv','coroc'}local w={'legaca','legack','legacv','legoc'}for x,i in pairs(u)do h(i,'armageot3')h(i,'armfirewall')end;for x,i in pairs(v)do h(i,'corageot3')h(i,'cortyrant')end;for x,i in pairs(w)do h(i,'legageot3')h(i,'legparagon')end end +do local a,b=UnitDefs or{},table.merge;local function c(d,e,f)local g=a[d]if g and not a[e]then a[e]=b(g,f or{})end end;local function h(i,j)local k=a[i]local l=j and a[j]if not k or not l then return end;k.buildoptions=k.buildoptions or{}for m=1,#k.buildoptions do if k.buildoptions[m]==j then return end end;k.buildoptions[#k.buildoptions+1]=j end;local n={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local o={badtargetcategory='VTOL',def='lightlaser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}local p={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=true,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local q={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local r={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano default',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=0,dockingHelperSpeed=5,dockingpieces='10, 11 12',dockingradius=80,droneairtime=90,droneammo='0 40'}local s={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local t={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then c('legdrone','legparadrone',{health=2000,weapondefs={lightlaser=n},weapons={[1]=o},customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})c('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',weapondefs={plasma=p},customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})c('legheavydrone','legraildrone',{weapondefs={heat_ray=q},weapons={[1]={def='heat_ray',maxangledif=360,onlytargetcategory='NOTSUB'}},customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})c('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})c('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',weapondefs={plasma={customparams=r}},weapons={[1]={def=''}},customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})end;c('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})c('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',weapondefs={lightning=s},weapons={[1]={def='lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})c('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',weapondefs={corbhmth_weapon=t},weapons={[1]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})c('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local u={'armaca','armack','armacsub','armacv','armoc'}local v={'coraca','corack','coracsub','coracv','coroc'}local w={'legaca','legack','legacv','legoc'}for x,i in pairs(u)do h(i,'armageot3')h(i,'armfirewall')end;for x,i in pairs(v)do h(i,'corageot3')h(i,'cortyrant')end;for x,i in pairs(w)do h(i,'legageot3')h(i,'legparagon')end end From 03061b4b9f69d4c869cb23bba01cca64f738207b Mon Sep 17 00:00:00 2001 From: RandomGuyJunior <42807509+RandomGuyJunior@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:21:34 +0200 Subject: [PATCH 4/6] Adjusted the Docking and fixed a weapon error. I missed an error while testing. a specific drone from the T3 legion geo drone spawner had way to much dps. It shoot several railguns at once because of the fact how the unitcopy function merges table and a parameter from the original heatray wasnt overwritten because I forgot to overwrite it... --- lua/geo+walls-t3.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/geo+walls-t3.lua b/lua/geo+walls-t3.lua index bcc21d7..aa5fa49 100644 --- a/lua/geo+walls-t3.lua +++ b/lua/geo+walls-t3.lua @@ -2,4 +2,4 @@ -- Authors: RandomGuy -- https://github.com/nuttyb-community/nuttyb -do local a,b=UnitDefs or{},table.merge;local function c(d,e,f)local g=a[d]if g and not a[e]then a[e]=b(g,f or{})end end;local function h(i,j)local k=a[i]local l=j and a[j]if not k or not l then return end;k.buildoptions=k.buildoptions or{}for m=1,#k.buildoptions do if k.buildoptions[m]==j then return end end;k.buildoptions[#k.buildoptions+1]=j end;local n={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local o={badtargetcategory='VTOL',def='lightlaser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}local p={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=true,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local q={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local r={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano default',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=0,dockingHelperSpeed=5,dockingpieces='10, 11 12',dockingradius=80,droneairtime=90,droneammo='0 40'}local s={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local t={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then c('legdrone','legparadrone',{health=2000,weapondefs={lightlaser=n},weapons={[1]=o},customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})c('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',weapondefs={plasma=p},customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})c('legheavydrone','legraildrone',{weapondefs={heat_ray=q},weapons={[1]={def='heat_ray',maxangledif=360,onlytargetcategory='NOTSUB'}},customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})c('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})c('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',weapondefs={plasma={customparams=r}},weapons={[1]={def=''}},customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})end;c('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})c('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',weapondefs={lightning=s},weapons={[1]={def='lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})c('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',weapondefs={corbhmth_weapon=t},weapons={[1]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='corbhmth_weapon',onlytargetcategory='NOTAIR',fastautoretargeting=true}},customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})c('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local u={'armaca','armack','armacsub','armacv','armoc'}local v={'coraca','corack','coracsub','coracv','coroc'}local w={'legaca','legack','legacv','legoc'}for x,i in pairs(u)do h(i,'armageot3')h(i,'armfirewall')end;for x,i in pairs(v)do h(i,'corageot3')h(i,'cortyrant')end;for x,i in pairs(w)do h(i,'legageot3')h(i,'legparagon')end end +do local a=UnitDefs or{}local function b(c,d,e)local f=a[c]if f and not a[d]then a[d]=table.copy(f)if e then table.merge(a[d],e)end end end;local function g(h,i,j,k)local l=a[h]if not l then return end;l.weapondefs=l.weapondefs or{}l.weapondefs[i]=j;if k then l.weapons=k end end;local function m(c,n,e)local f=a[c]if not f or not f.weapondefs then return e or{}end;local o=f.weapondefs[n]if not o then return e or{}end;local p=table.copy(o)if e then table.merge(p,e)end;return p end;local function q(r,s)local t=a[r]local u=s and a[s]if not t or not u then return end;t.buildoptions=t.buildoptions or{}for v=1,#t.buildoptions do if t.buildoptions[v]==s then return end end;t.buildoptions[#t.buildoptions+1]=s end;local w={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local x={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=true,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local y={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local z={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano fighter',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=0,dockingHelperSpeed=5,dockingpieces='10 10 10 10 10, 11 12 12',dockingradius=80,droneairtime='90 90',droneammo='0 40'}local A={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local B={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then b('legdrone','legparadrone',{health=2000,customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})g('legparadrone','t3_drone_light_laser',w,{[1]={badtargetcategory='VTOL',def='t3_drone_light_laser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}})b('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})g('legparagon','t3_paragon_drone_spawner',x,{[1]={badtargetcategory='VTOL',def='t3_paragon_drone_spawner',onlytargetcategory='NOTSUB'}})b('legheavydrone','legraildrone',{customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})g('legraildrone','t3_compact_railgun',y,{[1]={def='t3_compact_railgun',maxangledif=360,onlytargetcategory='NOTSUB'}})b('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})b('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})local C=m('legrampart','plasma',{customparams=z})g('legageot3','t3_legethemos_drone_spawner',C,{[1]={badtargetcategory='VTOL',def='t3_legethemos_drone_spawner',onlytargetcategory='NOTSUB'},[2]={def=''}})end;b('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})b('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})g('armfirewall','t3_equalizer_emp_lightning',A,{[1]={def='t3_equalizer_emp_lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}})b('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})g('corageot3','t3_barrage_seeker_rocket',B,{[1]={def='t3_barrage_seeker_rocket',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='t3_barrage_seeker_rocket',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='t3_barrage_seeker_rocket',onlytargetcategory='NOTAIR',fastautoretargeting=true}})b('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local D={'armaca','armack','armacsub','armacv','armoc'}local E={'coraca','corack','coracsub','coracv','coroc'}local F={'legaca','legack','legacv','legoc'}for G,r in pairs(D)do q(r,'armageot3')q(r,'armfirewall')end;for G,r in pairs(E)do q(r,'corageot3')q(r,'cortyrant')end;for G,r in pairs(F)do q(r,'legageot3')q(r,'legparagon')end end From 7408622cda4890144c35098ea865552904af8b9b Mon Sep 17 00:00:00 2001 From: RandomGuyJunior Date: Thu, 25 Jun 2026 23:42:21 +0200 Subject: [PATCH 5/6] T3Geo Review Update Raw tweakdefs removed tabs Added isGeo boolean --- lua/geo+walls-t3.lua | 593 +++++++++++++++++- .../tabs/configurator/sections/extras.tsx | 20 +- .../data/configuration-mapping.ts | 6 +- .../command-generator/data/configuration.ts | 3 +- 4 files changed, 607 insertions(+), 15 deletions(-) diff --git a/lua/geo+walls-t3.lua b/lua/geo+walls-t3.lua index aa5fa49..3df52b7 100644 --- a/lua/geo+walls-t3.lua +++ b/lua/geo+walls-t3.lua @@ -2,4 +2,595 @@ -- Authors: RandomGuy -- https://github.com/nuttyb-community/nuttyb -do local a=UnitDefs or{}local function b(c,d,e)local f=a[c]if f and not a[d]then a[d]=table.copy(f)if e then table.merge(a[d],e)end end end;local function g(h,i,j,k)local l=a[h]if not l then return end;l.weapondefs=l.weapondefs or{}l.weapondefs[i]=j;if k then l.weapons=k end end;local function m(c,n,e)local f=a[c]if not f or not f.weapondefs then return e or{}end;local o=f.weapondefs[n]if not o then return e or{}end;local p=table.copy(o)if e then table.merge(p,e)end;return p end;local function q(r,s)local t=a[r]local u=s and a[s]if not t or not u then return end;t.buildoptions=t.buildoptions or{}for v=1,#t.buildoptions do if t.buildoptions[v]==s then return end end;t.buildoptions[#t.buildoptions+1]=s end;local w={areaofeffect=12,avoidfeature=false,beamtime=0.10,corethickness=0.12,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='custom:laserhit-small-green',firestarter=100,impactonly=1,impulsefactor=0,laserflaresize=5,name='Light Laser',noselfdamage=true,range=300,reloadtime=0.5,rgbcolor='0 1 0',soundhitdry='',soundhitwet='sizzle',soundstart='lasrfir3',soundtrigger=1,thickness=2,tolerance=10000,turret=true,weapontype='BeamLaser',weaponvelocity=2250,damage={default=20}}local x={areaofeffect=4,avoidfeature=false,craterareaofeffect=0,craterboost=0,cratermult=0,edgeeffectiveness=0.15,explosiongenerator='',gravityaffected=true,hightrajectory=1,impulsefactor=0.123,name='Heavy Cannon',noselfdamage=true,metalpershot=15,energypershot=500,range=1100,reloadtime=2.5,size=0,soundhit='',soundhitwet='',soundstart='',stockpile=true,stockpiletime=10,turret=true,weapontype='Cannon',weaponvelocity=1000,damage={default=0},customparams={carried_unit='legparadrone',engagementrange=1100,controlradius=1200,spawns_surface='LAND',startingdronecount=3,energycost=500,metalcost=15,spawnrate=10,maxunits=6,deathdecayrate=20,carrierdeaththroe='release',dockingarmor=0.2,docktohealthreshold=66,dockinghealrate=20,enabledocking=true,dockingHelperSpeed=5,dockingpieces='4 5 6 7 8 9',dockingradius=80,stockpilelimit=6,stockpilemetal=15,stockpileenergy=500,dronesusestockpile=true,cobdockparam=1,cobundockparam=1,dronedocktime=3,droneairtime=60,droneammo=12}}local y={areaofeffect=16,avoidfeature=false,burnblow=false,cegtag='railgun',craterareaofeffect=0,craterboost=0,cratermult=0,duration=0.12,edgeeffectiveness=0.85,energypershot=50,explosiongenerator='custom:plasmahit-sparkonly',fallOffRate=0.2,firestarter=0,hardstop=true,impactonly=true,impulseboost=0.4,impulsefactor=1,intensity=0.8,name='Compact Railgun',noexplode=true,noselfdamage=true,range=650,reloadtime=4,rgbcolor='0.34 0.64 0.94',soundhit='mavgun3',soundhitwet='splshbig',soundstart='lancefire',soundstartvolume=26,thickness=3,tolerance=6000,turret=true,weapontype='LaserCannon',weaponvelocity=3000,damage={commanders=250,default=900}}local z={carried_unit='legbasicassistdrone legraildrone',engagementrange=1600,spawns_surface='LAND',spawnrate=8,dronetype='nano fighter',maxunits='5 3',metalcost='10 90',energycost='600 1000',controlradius=1500,deathdecayrate=50,carrierdeaththroe='release',dockingarmor=0.2,dockinghealrate=256,docktohealthreshold=33,enabledocking=0,dockingHelperSpeed=5,dockingpieces='10 10 10 10 10, 11 12 12',dockingradius=80,droneairtime='90 90',droneammo='0 40'}local A={areaofeffect=8,avoidfeature=false,beamttl=1,burst=4,burstrate=0.02,craterareaofeffect=0,craterboost=0,cratermult=0,duration=1,edgeeffectiveness=0.15,energypershot=5,explosiongenerator='custom:genericshellexplosion-large-lightning2',firestarter=50,impactonly=1,impulsefactor=0,intensity=28,name='EMP Lightning Cannon',noselfdamage=true,range=500,reloadtime=0.1,rgbcolor='0.5 0.5 1',soundhit='lashit',soundhitwet='sizzle',soundstart='lghthvy1',soundtrigger=true,thickness=2.2,turret=true,weapontype='LightningCannon',weaponvelocity=400,paralyzer=true,paralyzetime=8,damage={default=40}}local B={areaofeffect=200,avoidfeature=true,avoidfriendly=false,burnblow=true,canattackground=true,castshadow=false,cegtag='missiletrailaa-large',collidefriendly=false,craterareaofeffect=200,craterboost=0,cratermult=0,edgeeffectiveness=0.6,energypershot=0,explosiongenerator='custom:genericshellexplosion-huge-aa',firestarter=90,flighttime=10,impulsefactor=0,metalpershot=0,model='corscreamermissile.s3o',name='Long Range Seeker Rocket Platform',noselfdamage=true,range=1950,reloadtime=3.3,smokecolor=0.9,smokeperiod=2,smokesize=4,smoketime=24,smoketrail=true,smoketrailcastshadow=false,soundhit='impact',soundhitvolume=8,soundhitwet='splslrg',soundstart='aarocket',soundstartvolume=8,startvelocity=1000,texture1='null',texture2='smoketrailaaflak',tolerance=10000,tracks=true,trajectoryheight=2,turnrate=40000,turret=true,weapontimer=1,weaponacceleration=1000,weapontype='StarburstLauncher',weaponvelocity=1400,damage={commander=412.5,default=825}}if a.legalab then b('legdrone','legparadrone',{health=2000,customparams={i18n_en_humanname='T3 Reinforced Laser Drone',i18n_en_tooltip='T3 laser drone used by the Paragon drone fortification',techlevel=3}})g('legparadrone','t3_drone_light_laser',w,{[1]={badtargetcategory='VTOL',def='t3_drone_light_laser',maindir='0 0 1',maxangledif=90,onlytargetcategory='NOTSUB'}})b('leghive','legparagon',{metalcost=1100,energycost=35000,buildtime=40000,health=20000,sightdistance=500,idleautoheal=50,idletime=800,crushresistance=2000,icontype='leghive',customparams={i18n_en_humanname='T3 Paragon',i18n_en_tooltip='T3 robust laser drone fortification',techlevel=3}})g('legparagon','t3_paragon_drone_spawner',x,{[1]={badtargetcategory='VTOL',def='t3_paragon_drone_spawner',onlytargetcategory='NOTSUB'}})b('legheavydrone','legraildrone',{customparams={armordef='vtol',i18n_en_humanname='T3 Rail Drone',i18n_en_tooltip='T3 compact railgun drone used by Legethemos',techlevel=3}})g('legraildrone','t3_compact_railgun',y,{[1]={def='t3_compact_railgun',maxangledif=360,onlytargetcategory='NOTSUB'}})b('legassistdrone','legbasicassistdrone',{buildtime=2000,workertime=160,buildoptions={},customparams={armordef='vtol',i18n_en_humanname='T3 Assist Drone',i18n_en_tooltip='T3 assist and repair drone used by Legethemos',techlevel=3}})b('legrampart','legageot3',{metalcost=7000,energycost=80000,buildtime=110000,energymake=2200,energystorage=30000,health=16000,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='legrampart',customparams={i18n_en_humanname='T3 Legethemos',i18n_en_tooltip='T3 radar, jammer, geo railgun and assist drone platform',techlevel=3}})local C=m('legrampart','plasma',{customparams=z})g('legageot3','t3_legethemos_drone_spawner',C,{[1]={badtargetcategory='VTOL',def='t3_legethemos_drone_spawner',onlytargetcategory='NOTSUB'},[2]={def=''}})end;b('corfort','cortyrant',{metalcost=1800,energycost=30000,buildtime=60000,health=40000,sightdistance=300,idleautoheal=0,idletime=1000,autoheal=400,crushresistance=2000,icontype='corfort',customparams={i18n_en_humanname='T3 Tyrant',i18n_en_tooltip='T3 regenerating memory alloy fortification',techlevel=3}})b('armlwall','armfirewall',{metalcost=1400,energycost=30000,buildtime=40000,sightdistance=600,health=20000,crushresistance=2000,icontype='armlwall',customparams={i18n_en_humanname='T3 Equalizer',i18n_en_tooltip='T3 lightning EMP fortification',techlevel=3}})g('armfirewall','t3_equalizer_emp_lightning',A,{[1]={def='t3_equalizer_emp_lightning',onlytargetcategory='NOTSUB',fastautoretargeting=true}})b('corbhmth','corageot3',{buildpic='scavengers/CORBHMTH.DDS',metalcost=7400,energycost=50000,buildtime=160000,energymake=1900,energystorage=45000,health=18000,sightdistance=650,explodeas='customfusionexplo',selfdestructas='korgExplosion',icontype='corbhmth',customparams={i18n_en_humanname='T3 Barrage',i18n_en_tooltip='T3 rocket artillery geothermal',techlevel=3}})g('corageot3','t3_barrage_seeker_rocket',B,{[1]={def='t3_barrage_seeker_rocket',onlytargetcategory='NOTAIR',fastautoretargeting=true},[2]={def='t3_barrage_seeker_rocket',onlytargetcategory='NOTAIR',fastautoretargeting=true},[3]={def='t3_barrage_seeker_rocket',onlytargetcategory='NOTAIR',fastautoretargeting=true}})b('armageo','armageot3',{buildpic='scavengers/ARMAGEO.DDS',metalcost=5500,energycost=40000,buildtime=60000,energymake=2000,energystorage=100000,metalstorage=100000,health=10000,seismicdistance=2000,radardistancejam=800,sightdistance=2000,cloakCost=200,minCloakDistance=100,canCloak=true,initCloaked=true,explodeas='customfusionexplo',selfdestructas='customfusionexplo',losEmitHeight=100,icontype='armageo',customparams={i18n_en_humanname='T3 Outpost',i18n_en_tooltip='T3 cloaked, stealthy geo intelligence omnistorage',techlevel=3}})local D={'armaca','armack','armacsub','armacv','armoc'}local E={'coraca','corack','coracsub','coracv','coroc'}local F={'legaca','legack','legacv','legoc'}for G,r in pairs(D)do q(r,'armageot3')q(r,'armfirewall')end;for G,r in pairs(E)do q(r,'corageot3')q(r,'cortyrant')end;for G,r in pairs(F)do q(r,'legageot3')q(r,'legparagon')end end +do + local unitDefs = UnitDefs or {} + + local function cloneUnit(sourceUnitName, newUnitName, overrides) + local sourceUnitDef = unitDefs[sourceUnitName] + if not sourceUnitDef or unitDefs[newUnitName] then + return nil + end + + local newUnitDef = table.copy(sourceUnitDef) + newUnitDef.customparams = table.copy(sourceUnitDef.customparams or {}) + + overrides = overrides or {} + for key, value in pairs(overrides) do + if key ~= 'customparams' then + newUnitDef[key] = value + end + end + + for key, value in pairs(overrides.customparams or {}) do + newUnitDef.customparams[key] = value + end + + unitDefs[newUnitName] = newUnitDef + return newUnitDef + end + + local function replaceWeapons(unitDef, weaponDefs, weapons) + if not unitDef then + return + end + + unitDef.weapondefs = weaponDefs or {} + unitDef.weapons = weapons or {} + end + + local function copyWeaponDef(sourceUnitName, weaponName) + local sourceUnitDef = unitDefs[sourceUnitName] + local sourceWeaponDefs = sourceUnitDef and sourceUnitDef.weapondefs + local sourceWeaponDef = sourceWeaponDefs and sourceWeaponDefs[weaponName] + + if not sourceWeaponDef then + return {} + end + + return table.copy(sourceWeaponDef) + end + + local function ensureBuildOption(builderName, optionName) + local builder = unitDefs[builderName] + local optionDef = optionName and unitDefs[optionName] + if not builder or not optionDef then + return + end + + builder.buildoptions = builder.buildoptions or {} + for i = 1, #builder.buildoptions do + if builder.buildoptions[i] == optionName then + return + end + end + + builder.buildoptions[#builder.buildoptions + 1] = optionName + end + + local droneLaserWeapon = { + areaofeffect = 12, + avoidfeature = false, + beamtime = 0.10, + corethickness = 0.12, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + edgeeffectiveness = 0.15, + explosiongenerator = 'custom:laserhit-small-green', + firestarter = 100, + impactonly = 1, + impulsefactor = 0, + laserflaresize = 5, + name = 'Light laser', + noselfdamage = true, + range = 300, + reloadtime = 0.5, + rgbcolor = '0 1 0', + soundhitdry = '', + soundhitwet = 'sizzle', + soundstart = 'lasrfir3', + soundtrigger = 1, + thickness = 2, + tolerance = 10000, + turret = true, + weapontype = 'BeamLaser', + weaponvelocity = 2250, + damage = { + default = 20, + }, + } + + local droneLaserTargeting = { + badtargetcategory = 'VTOL', + def = 't3_drone_light_laser', + maindir = '0 0 1', + maxangledif = 90, + onlytargetcategory = 'NOTSUB', + } + + local paragonSpawnerWeapon = { + areaofeffect = 4, + avoidfeature = false, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + edgeeffectiveness = 0.15, + explosiongenerator = '', + gravityaffected = 'true', + hightrajectory = 1, + impulsefactor = 0.123, + name = 'HeavyCannon', + noselfdamage = true, + metalpershot = 15, + energypershot = 500, + range = 1100, + reloadtime = 2.5, + size = 0, + soundhit = '', + soundhitwet = '', + soundstart = '', + stockpile = true, + stockpiletime = 10, + turret = true, + weapontype = 'Cannon', + weaponvelocity = 1000, + damage = { + default = 0, + }, + customparams = { + carried_unit = 'legparadrone', + engagementrange = 1100, + controlradius = 1200, + spawns_surface = 'LAND', + startingdronecount = 3, + energycost = 500, + metalcost = 15, + spawnrate = 10, + maxunits = 6, + deathdecayrate = 20, + carrierdeaththroe = 'release', + dockingarmor = 0.2, + docktohealthreshold = 66, + dockinghealrate = 20, + enabledocking = true, + dockingHelperSpeed = 5, + dockingpieces = '4 5 6 7 8 9', + dockingradius = 80, + stockpilelimit = 6, + stockpilemetal = 15, + stockpileenergy = 500, + dronesusestockpile = true, + cobdockparam = 1, + cobundockparam = 1, + dronedocktime = 3, + droneairtime = 60, + droneammo = 12, + }, + } + + local railgunWeapon = { + areaofeffect = 16, + avoidfeature = false, + burnblow = false, + cegtag = 'railgun', + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + duration = 0.12, + edgeeffectiveness = 0.85, + energypershot = 50, + explosiongenerator = 'custom:plasmahit-sparkonly', + fallOffRate = 0.2, + firestarter = 0, + hardstop = true, + impactonly = true, + impulseboost = 0.4, + impulsefactor = 1, + intensity = 0.8, + name = 'Compact Railgun', + noexplode = true, + noselfdamage = true, + range = 650, + reloadtime = 4, + rgbcolor = '0.34 0.64 0.94', + soundhit = 'mavgun3', + soundhitwet = 'splshbig', + soundstart = 'lancefire', + soundstartvolume = 26, + thickness = 3, + tolerance = 6000, + turret = true, + weapontype = 'LaserCannon', + weaponvelocity = 3000, + damage = { + commanders = 250, + default = 900, + }, + } + + local legethemosDroneParams = { + carried_unit = 'legbasicassistdrone legraildrone', + engagementrange = 1600, + spawns_surface = 'LAND', + spawnrate = 8, + dronetype = 'nano default', + maxunits = '5 3', + metalcost = '10 90', + energycost = '600 1000', + controlradius = 1600, + deathdecayrate = 50, + carrierdeaththroe = 'release', + dockingarmor = 0.2, + dockinghealrate = 256, + docktohealthreshold = 33, + enabledocking = false, + dockingHelperSpeed = 5, + dockingpieces = '10 10 10 10 10, 11 12 12', + dockingradius = 80, + droneairtime = '90 90', + droneammo = '0 40', + } + + local empLightningWeapon = { + areaofeffect = 8, + avoidfeature = false, + beamttl = 1, + burst = 4, + burstrate = 0.02, + craterareaofeffect = 0, + craterboost = 0, + cratermult = 0, + duration = 1, + edgeeffectiveness = 0.15, + energypershot = 5, + explosiongenerator = 'custom:genericshellexplosion-large-lightning2', + firestarter = 50, + impactonly = 1, + impulsefactor = 0, + intensity = 28, + name = 'EMP Lightning Cannon', + noselfdamage = true, + range = 500, + reloadtime = 0.1, + rgbcolor = '0.5 0.5 1', + soundhit = 'lashit', + soundhitwet = 'sizzle', + soundstart = 'lghthvy1', + soundtrigger = true, + thickness = 2.2, + turret = true, + weapontype = 'LightningCannon', + weaponvelocity = 400, + paralyzer = true, + paralyzetime = 8, + damage = { + default = 30, + }, + } + + local rocketArtilleryWeapon = { + areaofeffect = 200, + avoidfeature = true, + avoidfriendly = false, + burnblow = true, + canattackground = true, + castshadow = false, + cegtag = 'missiletrailaa-large', + collidefriendly = false, + craterareaofeffect = 200, + craterboost = 0, + cratermult = 0, + edgeeffectiveness = 0.6, + energypershot = 0, + explosiongenerator = 'custom:genericshellexplosion-huge-aa', + firestarter = 90, + flighttime = 10, + impulsefactor = 0, + metalpershot = 0, + model = 'corscreamermissile.s3o', + name = 'Long Range Seeker Rocket Platform', + noselfdamage = true, + range = 1950, + reloadtime = 3.3, + smokecolor = 0.9, + smokeperiod = 2, + smokesize = 4, + smoketime = 24, + smoketrail = true, + smoketrailcastshadow = false, + soundhit = 'impact', + soundhitvolume = 8, + soundhitwet = 'splslrg', + soundstart = 'aarocket', + soundstartvolume = 8, + startvelocity = 1000, + texture1 = 'null', + texture2 = 'smoketrailaaflak', + tolerance = 10000, + tracks = true, + trajectoryheight = 2, + turnrate = 40000, + turret = true, + weapontimer = 1, + weaponacceleration = 1000, + weapontype = 'StarburstLauncher', + weaponvelocity = 1400, + damage = { + commander = 412.5, + default = 825, + }, + } + + if unitDefs.legalab then + local legParadrone = cloneUnit('legdrone', 'legparadrone', { + health = 2000, + customparams = { + i18n_en_humanname = 'Reinforced Laser Drone', + }, + }) + + replaceWeapons( + legParadrone, + { + lightlaser = droneLaserWeapon, + }, + { + [1] = { + badtargetcategory = 'VTOL', + def = 'lightlaser', + maindir = '0 0 1', + maxangledif = 90, + onlytargetcategory = 'NOTSUB', + }, + } + ) + + local legParagon = cloneUnit('leghive', 'legparagon', { + metalcost = 1100, + energycost = 35000, + buildtime = 40000, + health = 20000, + sightdistance = 500, + idleautoheal = 50, + idletime = 800, + crushresistance = 2000, + customparams = { + i18n_en_humanname = 'Paragon', + i18n_en_tooltip = 'Robust Laser Drone Fortification', + techlevel = 3, + }, + }) + + replaceWeapons( + legParagon, + { + plasma = paragonSpawnerWeapon, + }, + { + [1] = { + badtargetcategory = 'VTOL', + def = 'PLASMA', + onlytargetcategory = 'NOTSUB', + }, + } + ) + + local legRailDrone = cloneUnit('legheavydrone', 'legraildrone', { + customparams = { + armordef = 'vtol', + }, + }) + + replaceWeapons( + legRailDrone, + { + heat_ray = railgunWeapon, + }, + { + [1] = { + def = 'heat_ray', + maxangledif = 360, + onlytargetcategory = 'NOTSUB', + }, + } + ) + + cloneUnit('legassistdrone', 'legbasicassistdrone', { + buildtime = 2000, + workertime = '160', + buildoptions = {}, + customparams = { + armordef = 'vtol', + }, + }) + + local legAgeoT3 = cloneUnit('legrampart', 'legageot3', { + metalcost = 7000, + energycost = 80000, + buildtime = 110000, + energymake = 2200, + energystorage = 30000, + health = 16000, + workertime=800, + explodeas = 'customfusionexplo', + selfdestructas = 'korgExplosion', + customparams = { + i18n_en_humanname = 'Legethemos', + i18n_en_tooltip = 'Radar/Jammer, Geo Railgun and Assist & Repair drone platform', + techlevel = 3, + }, + }) + + local legethemosSpawnerWeapon = copyWeaponDef('legrampart', 'plasma') + legethemosSpawnerWeapon.customparams = legethemosDroneParams + + replaceWeapons( + legAgeoT3, + { + plasma = legethemosSpawnerWeapon, + fmd_rocket = {}, + }, + { + [1] = { + badtargetcategory = 'VTOL', + def = 'PLASMA', + onlytargetcategory = 'NOTSUB', + }, + [2] = { + def = '', + }, + } + ) + end + + cloneUnit('corfort', 'cortyrant', { + metalcost = 1300, + energycost = 30000, + buildtime = 60000, + health = 40000, + sightdistance = 300, + idleautoheal = 0, + idletime = 1000, + autoheal = 400, + crushresistance = 2000, + customparams = { + i18n_en_humanname = 'Tyrant', + i18n_en_tooltip = 'Regenerating Memoryalloy Fortification', + techlevel = 3, + }, + }) + + local armFirewall = cloneUnit('armlwall', 'armfirewall', { + metalcost = 1400, + energycost = 30000, + buildtime = 40000, + sightdistance = 600, + health = 20000, + crushresistance = 2000, + customparams = { + i18n_en_humanname = 'Equalizer', + i18n_en_tooltip = 'Lightning EMP Fortification', + techlevel = 3, + }, + }) + + replaceWeapons( + armFirewall, + { + lightning = empLightningWeapon, + }, + { + [1] = { + def = 'lightning', + onlytargetcategory = 'NOTSUB', + fastautoretargeting = true, + }, + } + ) + + local corAgeoT3 = cloneUnit('corbhmth', 'corageot3', { + buildpic = 'scavengers/CORBHMTH.DDS', + metalcost = 7400, + energycost = 50000, + buildtime = 160000, + energymake = 1900, + energystorage = 45000, + health = 18000, + sightdistance = 650, + explodeas = 'customfusionexplo', + selfdestructas = 'korgExplosion', + customparams = { + i18n_en_humanname = 'Barrage', + i18n_en_tooltip = 'Rocket Artillery Geothermal', + techlevel = 3, + }, + }) + + replaceWeapons( + corAgeoT3, + { + corbhmth_weapon = rocketArtilleryWeapon, + }, + { + [1] = { + def = 'corbhmth_weapon', + onlytargetcategory = 'NOTAIR', + fastautoretargeting = true, + }, + [2] = { + def = 'corbhmth_weapon', + onlytargetcategory = 'NOTAIR', + fastautoretargeting = true, + }, + [3] = { + def = 'corbhmth_weapon', + onlytargetcategory = 'NOTAIR', + fastautoretargeting = true, + }, + } + ) + + cloneUnit('armageo', 'armageot3', { + buildpic = 'scavengers/ARMAGEO.DDS', + metalcost = 5500, + energycost = 40000, + buildtime = 60000, + energymake = 2000, + energystorage = 100000, + metalstorage = 100000, + health = 10000, + seismicdistance = 2000, + radardistancejam = 800, + sightdistance = 2000, + cloakCost = 200, + minCloakDistance = 100, + canCloak = true, + initCloaked = true, + explodeas = 'customfusionexplo', + selfdestructas = 'customfusionexplo', + losEmitHeight = 100, + customparams = { + i18n_en_humanname = 'Outpost', + i18n_en_tooltip = 'Cloaked, Stealthy Geo Intelligence Omnistorage', + techlevel = 3, + }, + }) + + local armBuilders = { + 'armaca', + 'armack', + 'armacsub', + 'armacv', + 'armoc', + } + + local corBuilders = { + 'coraca', + 'corack', + 'coracsub', + 'coracv', + 'coroc', + } + + local legBuilders = { + 'legaca', + 'legack', + 'legacv', + 'legoc', + } + + for _, builderName in pairs(armBuilders) do + ensureBuildOption(builderName, 'armageot3') + ensureBuildOption(builderName, 'armfirewall') + end + + for _, builderName in pairs(corBuilders) do + ensureBuildOption(builderName, 'corageot3') + ensureBuildOption(builderName, 'cortyrant') + end + + for _, builderName in pairs(legBuilders) do + ensureBuildOption(builderName, 'legageot3') + ensureBuildOption(builderName, 'legparagon') + end +end diff --git a/src/components/tabs/configurator/sections/extras.tsx b/src/components/tabs/configurator/sections/extras.tsx index 6e9c01d..5d404e8 100644 --- a/src/components/tabs/configurator/sections/extras.tsx +++ b/src/components/tabs/configurator/sections/extras.tsx @@ -77,16 +77,16 @@ export const ExtrasSection: React.FC = () => { ) } /> - - setProperty( - 'isT3GeoWalls', - event.currentTarget.checked - ) - } - /> + + setProperty( + 'isT3GeoWalls', + event.currentTarget.checked + ) + } + /> diff --git a/src/lib/command-generator/data/configuration-mapping.ts b/src/lib/command-generator/data/configuration-mapping.ts index 1fa829c..6237175 100644 --- a/src/lib/command-generator/data/configuration-mapping.ts +++ b/src/lib/command-generator/data/configuration-mapping.ts @@ -27,7 +27,7 @@ export const LUA_PRIORITIES: Record = { '~lua/rflrpc-t4.lua': 11, 'lua/air-rework-t4.lua': 12, 'lua/unit-launchers.lua': 13, - 'lua/geo+walls-t3.lua': 14, + 'lua/geo+walls-t3.lua': 14, } as const; /** @@ -338,9 +338,9 @@ export const CONFIGURATION_MAPPING: ValueMapping = { false: undefined, }, }, - isT3GeoWalls: { + isT3GeoWalls: { description: 'T3 Geo and T3 Walls', - values: { + values: { true: { tweakdefs: ['~lua/geo+walls-t3.lua'] }, false: undefined, }, diff --git a/src/lib/command-generator/data/configuration.ts b/src/lib/command-generator/data/configuration.ts index 6dc71e2..10da229 100644 --- a/src/lib/command-generator/data/configuration.ts +++ b/src/lib/command-generator/data/configuration.ts @@ -41,6 +41,7 @@ export interface Configuration { isRFLRPCRebalance: boolean; isRFLRPCT4: boolean; isMegaNuke: boolean; + isT3GeoWalls: boolean; // Numeric multipliers incomeMult: number; buildDistMult: number; @@ -58,7 +59,7 @@ export const DEFAULT_CONFIGURATION: Configuration = { isRFLRPCRebalance: true, isRFLRPCT4: true, isMegaNuke: false, - isT3GeoWalls: false, + isT3GeoWalls: false, // Numeric multipliers incomeMult: 1, buildDistMult: 1.5, From 0525e0ca757d06fd33ccc3c5832cda8e0bd52696 Mon Sep 17 00:00:00 2001 From: RandomGuyJunior Date: Sat, 27 Jun 2026 13:08:15 +0200 Subject: [PATCH 6/6] Preset-Showcase error fixed + style improvements GeoT3 lua Added isT3GeoWalls to the new preset-showcase.utils file. Fixed style of GeoT3Walls lua. --- lua/geo+walls-t3.lua | 12 ++---------- .../preset-showcase/preset-showcase.utils.tsx | 4 ++++ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/lua/geo+walls-t3.lua b/lua/geo+walls-t3.lua index 3df52b7..fc5d56a 100644 --- a/lua/geo+walls-t3.lua +++ b/lua/geo+walls-t3.lua @@ -70,7 +70,7 @@ do local droneLaserWeapon = { areaofeffect = 12, avoidfeature = false, - beamtime = 0.10, + beamtime = 0.05, corethickness = 0.12, craterareaofeffect = 0, craterboost = 0, @@ -100,14 +100,6 @@ do }, } - local droneLaserTargeting = { - badtargetcategory = 'VTOL', - def = 't3_drone_light_laser', - maindir = '0 0 1', - maxangledif = 90, - onlytargetcategory = 'NOTSUB', - } - local paragonSpawnerWeapon = { areaofeffect = 4, avoidfeature = false, @@ -411,7 +403,7 @@ do energymake = 2200, energystorage = 30000, health = 16000, - workertime=800, + workertime = 800, explodeas = 'customfusionexplo', selfdestructas = 'korgExplosion', customparams = { diff --git a/src/components/tabs/configurator/preset-showcase/preset-showcase.utils.tsx b/src/components/tabs/configurator/preset-showcase/preset-showcase.utils.tsx index 2ae1fe9..c0edf5c 100644 --- a/src/components/tabs/configurator/preset-showcase/preset-showcase.utils.tsx +++ b/src/components/tabs/configurator/preset-showcase/preset-showcase.utils.tsx @@ -110,6 +110,10 @@ const CONFIG_METADATA: Record< label: 'Mega Nuke', tooltip: 'Enable Mega Nuke capability', }, + isT3GeoWalls: { + label: 'T3 Geo and Walls', + tooltip: 'Faction Unique T3 Geos, and Walls that dont die instantly.', + }, }; /**