diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/GoldMod.iml b/.idea/GoldMod.iml new file mode 100644 index 00000000..d6ebd480 --- /dev/null +++ b/.idea/GoldMod.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..3a37236a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..518ab85d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bundles/bundle.properties b/bundles/bundle.properties index 50fb844e..75600c2e 100644 --- a/bundles/bundle.properties +++ b/bundles/bundle.properties @@ -255,6 +255,32 @@ sector.goldmod-smalldefence.description = Defend. Die. Try again.\n\nCreated by sector.goldmod-scrap-wasteland.name = Scrap Wasteland sector.goldmod-scrap-wasteland.description = Beyond the caves lies an exit towards an open desert area, we discovered that these were long abandoned Palladium mining shaft, we could reactivate the drills in the area and reused them to our advantage, the area is small and the enemy still chasing us, prepare for the onslaught!\n\nCreated by GlitchyShipBoi#0648 #end sectors +#zones +zone.goldmod-goldMountains.name = Gold Mountains +zone.goldmod-goldMountains.description = Behind the Stained Mountains lie gold ore veins. Get as many gold ingots as possible. +zone.goldmod-goldMines.name = Gold Mines +zone.goldmod-goldMines.description = If you go further through Gold Mountains, you'll see even more gold ore veins. But they are occupied by an unknown group.\nProtect yourself from the Golden Daggers. Leave nothing from enemy core.\n\n[#888888]There are two landing points in this map.[] +zone.goldmod-abandonedDesert.name = Abandoned Desert +zone.goldmod-abandonedDesert.description = The unknown group had the gold processing facility here. Now it's your turn to extract the plenty of gold here. Beware of the remaining forces here, they are quite strong. +zone.goldmod-eradLair.name = Eradicator's Lair +zone.goldmod-eradLair.description = [red][ WARNING: BOSS LEVEL ][]\n\nAn unknown signal: 'Do you know who are you dealing with? I guess you don't. Why are you bothering me? Oh nevermind, I'm sending the Golden Eradicator for you.' +zone.goldmod-groundOne.name = Ground One +zone.goldmod-groundOne.description = We managed to move away from the spore lands. Here is plenty of resources, but little space. Enemies are weak here. +zone.goldmod-gold-ridge.name = Gold Ridge +zone.goldmod-gold-ridge.description = On a very remote ridge lies lots of gold ore pockets scattered on the nearest ridge below and also on the mouth of a cave, but be careful, it was heavily occupied by it's still defending occupant, use this to your advantage and mine as many gold as you can +zone.goldmod-cavern-retreat.name = Cavern Retreat +zone.goldmod-cavern-retreat.description = You got chased by hordes of enemies, and thus led you to a cavern filled with many possible ways the enemy's could attack, defend yourselves! +zone.goldmod-frozenPass.name = Frozen Pass +zone.goldmod-frozenPass.description = A place between ice and stone, occupied by our recent enemy. Looks like they actively produce shiny alloy there. You can't go further until you destroy their outpost. +zone.goldmod-derelictLab.name = Derelict Laboratory +zone.goldmod-derelictLab.description = [red][ WARNING: BOSS LEVEL ][]\n\nA long ago, some empire had a unit research facility here. But something went wrong. Two powerful robots were released, and you have to defeat them. +zone.goldmod-pallaCrags.name = Palladium Crags +zone.goldmod-pallaCrags.description = A place with a plenty of palladium. Discover many uses of it, including palladium enrichment. +zone.goldmod-smalldefence.name = Small Defence +zone.goldmod-smalldefence.description = Defend. Die. Try again.\n\nCreated by _LEYN ~ Rias#1092 +zone.goldmod-scrap-wasteland.name = Scrap Wasteland +zone.goldmod-scrap-wasteland.description = Beyond the caves lies an exit towards an open desert area, we discovered that these were long abandoned Palladium mining shaft, we could reactivate the drills in the area and reused them to our advantage, the area is small and the enemy still chasing us, prepare for the onslaught!\n\nCreated by GlitchyShipBoi#0648 +#end zones #planets planet.goldmod-zuila.name = Zuila planet.goldmod-cori.name = Cori diff --git a/content/blocks/goldForeshadow.hjson b/content/blocks/goldForeshadow.hjson index d4cae14f..3a7b70f9 100644 --- a/content/blocks/goldForeshadow.hjson +++ b/content/blocks/goldForeshadow.hjson @@ -18,7 +18,6 @@ ammoTypes: { despawnEffect: instBomb trailSpacing: 20 damage: 3000 - tileDamageMultiplier: 0.6 speed: 500 hitShake: 6 ammoMultiplier: 1 diff --git a/content/blocks/goldMeltdown.hjson b/content/blocks/goldMeltdown.hjson index a298f7a0..f89fedd9 100644 --- a/content/blocks/goldMeltdown.hjson +++ b/content/blocks/goldMeltdown.hjson @@ -13,7 +13,7 @@ shootShake: 2 range: 190 reloadTime: 80 firingMoveFract: 0.5 -shootDuration: 220 +//shootDuration: 220 shootSound: laserbig shootType: { type: ContinuousLaserBulletType diff --git a/content/blocks/goldSalvo.hjson b/content/blocks/goldSalvo.hjson index 14124b78..25672f6c 100644 --- a/content/blocks/goldSalvo.hjson +++ b/content/blocks/goldSalvo.hjson @@ -13,7 +13,6 @@ restitution: 0.03 coolantMultiplier: 20 ammoEjectBack: 3 cooldown: 0.03 -shootShake: 2 burstSpacing: 3 shots: 4 ammoUseEffect: casing4 diff --git a/content/blocks/goldScatter.hjson b/content/blocks/goldScatter.hjson index 62e1881d..7fae8db0 100644 --- a/content/blocks/goldScatter.hjson +++ b/content/blocks/goldScatter.hjson @@ -178,7 +178,6 @@ lifetime: 30 speed: 2 }}} range: 180 -reload: 10 inaccuracy: 15 shots: 2 targetAir: true diff --git a/content/blocks/missileSilo.hjson b/content/blocks/missileSilo.hjson index 1f122e29..2a5d99ed 100644 --- a/content/blocks/missileSilo.hjson +++ b/content/blocks/missileSilo.hjson @@ -2,7 +2,7 @@ health: 900 size: 3 inaccuracy: 0 reloadTime: 600 -recoil: 0 +recoilAmount: 0 range: 540 targetAir: false targetGround: true diff --git a/content/blocks/ore-goldOre.hjson b/content/blocks/ore-goldOre.hjson index a315995e..b3ebe41f 100644 --- a/content/blocks/ore-goldOre.hjson +++ b/content/blocks/ore-goldOre.hjson @@ -1,2 +1,3 @@ type: OreBlock -itemDrop: goldOre \ No newline at end of file +itemDrop: goldOre +oreDefault: true \ No newline at end of file diff --git a/content/blocks/ore-palladium.hjson b/content/blocks/ore-palladium.hjson index eed8f3bf..d0723297 100644 --- a/content/blocks/ore-palladium.hjson +++ b/content/blocks/ore-palladium.hjson @@ -1,2 +1,3 @@ type: OreBlock -itemDrop: palladium \ No newline at end of file +itemDrop: palladium +oreDefault: true \ No newline at end of file diff --git a/content/blocks/pallaWall.hjson b/content/blocks/pallaWall.hjson index 6976944e..24150a29 100644 --- a/content/blocks/pallaWall.hjson +++ b/content/blocks/pallaWall.hjson @@ -1,7 +1,7 @@ type: Wall -maxDamageDeflect: 50 -flashWhite: true -deflect: true +flashHit: true +flashColor: ffffff +chanceDeflect: 50 health: 2000 size: 1 requirements: [ diff --git a/content/blocks/pallaWallLarge.hjson b/content/blocks/pallaWallLarge.hjson index cbaa20f5..21a0cb0e 100644 --- a/content/blocks/pallaWallLarge.hjson +++ b/content/blocks/pallaWallLarge.hjson @@ -1,7 +1,7 @@ type: Wall -flashWhite: true -deflect: true -maxDamageDeflect: 50 +flashHit: true +flashColor: ffffff +chanceDeflect: 50 health: 8000 size: 2 requirements: [ diff --git a/content/blocks/researchBlock.hjson b/content/blocks/researchBlock.hjson index 69066958..cac584c3 100644 --- a/content/blocks/researchBlock.hjson +++ b/content/blocks/researchBlock.hjson @@ -2,5 +2,4 @@ type: MessageBlock requirements: [ researchPoint/81 ] -category: effect -buildVisibility: sandboxOnly +category: effect \ No newline at end of file diff --git a/content/blocks/spread.hjson b/content/blocks/spread.hjson index 10b4b88f..34c09136 100644 --- a/content/blocks/spread.hjson +++ b/content/blocks/spread.hjson @@ -176,7 +176,7 @@ lifetime: 30 speed: 2 }}} range: 180 -reload: 10 +//reload: 10 inaccuracy: 15 shots: 2 targetAir: false diff --git a/content/items/palladium.hjson b/content/items/palladium.hjson index 10eeb4b5..ed2ab121 100644 --- a/content/items/palladium.hjson +++ b/content/items/palladium.hjson @@ -1,4 +1,4 @@ -color: 11a7ed +color: "11a7ed" cost: 10 hardness: 6 -research: shinyAlloy \ No newline at end of file +research: shinyAlloy diff --git a/content/items/researchPoint.hjson b/content/items/researchPoint.hjson index e856cfac..927c10b9 100644 --- a/content/items/researchPoint.hjson +++ b/content/items/researchPoint.hjson @@ -1 +1,2 @@ -color: 0074CD \ No newline at end of file +color: 0074CD +alwaysUnlocked: true \ No newline at end of file diff --git a/content/units/boss2-spectre.hjson b/content/units/boss2-spectre.hjson index e715ee9e..a2c13ad2 100644 --- a/content/units/boss2-spectre.hjson +++ b/content/units/boss2-spectre.hjson @@ -32,5 +32,4 @@ weapons: [ backColor: ff6868 } shootSound: shootBig - shootShake: 2 }] \ No newline at end of file diff --git a/content/units/goldenAntumbra.hjson b/content/units/goldenAntumbra.hjson index 4c483ad3..e12c4c45 100644 --- a/content/units/goldenAntumbra.hjson +++ b/content/units/goldenAntumbra.hjson @@ -7,7 +7,7 @@ range: 80 flying: true engineOffset: 21 engineSize: 5.3 -rotatespeed: 0.1 +rotateSpeed: 0.01 baseRotateSpeed: 0.04 weapons: [{ name: goldAntumbraMissile diff --git a/content/units/goldenArkyid.hjson b/content/units/goldenArkyid.hjson index dc0603fd..8b17b99c 100644 --- a/content/units/goldenArkyid.hjson +++ b/content/units/goldenArkyid.hjson @@ -91,7 +91,6 @@ weapons: [ ejectEffect: casing1 shootSound: shootBig rotate: true - occlusion: 8 recoil: 3 bullet: { type: ArtilleryBulletType @@ -112,9 +111,8 @@ weapons: [ lightning: 3 lightningLength: 15 smokeEffect: shootBigSmoke2 - shake: 5 status: sapped - statusDuraion: 600 + statusDuration: 600 } } ] diff --git a/content/units/goldenDagger.hjson b/content/units/goldenDagger.hjson index de7f7d8a..4cee500f 100644 --- a/content/units/goldenDagger.hjson +++ b/content/units/goldenDagger.hjson @@ -17,8 +17,8 @@ weapons: [ shootEffect: shootSmall smokeEffect: shootSmallSmoke damage: 20 - bulletWidth: 9 - bulletHeight: 12 + width: 9 + height: 12 }} ] research: goldGroundFactory \ No newline at end of file diff --git a/content/units/goldenEclipse.hjson b/content/units/goldenEclipse.hjson index 0e4c11e6..7cb1ea39 100644 --- a/content/units/goldenEclipse.hjson +++ b/content/units/goldenEclipse.hjson @@ -1,15 +1,13 @@ type: flying health: 33000 -hitsize: 56 +hitSize: 56 speed: 0.6 drag: 0.02 range: 80 -shootCone: 30 flying: true -rotateWeapon: true engineOffset: 40 engineSize: 7.3 -rotatespeed: 0.01 +rotateSpeed: 0.01 baseRotateSpeed: 0.04 weapons: [{ name: goldEclipseGun @@ -21,13 +19,14 @@ weapons: [{ shake: 1 inaccuracy: 3 alternate: true + rotate: true ejectEffect: none bullet: { type: BasicBulletType speed: 7 damage: 126 - bulletWidth: 15 - bulletHeight: 21 + width: 15 + height: 21 shootEffect: shootBig } shootSound: shootbig diff --git a/content/units/goldenFlare.hjson b/content/units/goldenFlare.hjson index 3bdf1b95..07dcba8a 100644 --- a/content/units/goldenFlare.hjson +++ b/content/units/goldenFlare.hjson @@ -6,7 +6,6 @@ health: 225 engineOffset: 5.5 range: 140 weapons: [{ - length: 1.5 reload: 21 alternate: true ejectEffect: casing1 diff --git a/content/units/goldenHorizon.hjson b/content/units/goldenHorizon.hjson index a3adfa3d..7cf4a2b5 100644 --- a/content/units/goldenHorizon.hjson +++ b/content/units/goldenHorizon.hjson @@ -24,7 +24,7 @@ bullet: { lifetime: 28 hitEffect: flakExplosion status: blasted - statusDurarion: 60 + statusDuration: 60 } shootSound: none }] diff --git a/content/units/goldenToxopid.hjson b/content/units/goldenToxopid.hjson index 69d804ba..d2934b0d 100644 --- a/content/units/goldenToxopid.hjson +++ b/content/units/goldenToxopid.hjson @@ -33,7 +33,6 @@ weapons: [ ejectEffect: casing1 shootSound: shootBig rotate: true - occlusion: 12 recoil: 3 shots: 2 spacing: 17 @@ -66,7 +65,6 @@ weapons: [ ejectEffect: casing4 shootSound: shootBig rotate: true - occlusion: 30 bullet: { type: ArtilleryBulletType speed: 3 diff --git a/content/units/goldenVela.hjson b/content/units/goldenVela.hjson index 0bcb757e..87f88080 100644 --- a/content/units/goldenVela.hjson +++ b/content/units/goldenVela.hjson @@ -53,8 +53,6 @@ weapons: [ colors: [ f0e4a832, f0e4a888, f0e4a8, ffffff ] - shootStatus: slow - shootStatusDuration: 199 } }] research: goldenQuasar \ No newline at end of file diff --git a/content/units/goldenZenith.hjson b/content/units/goldenZenith.hjson index ec5a2795..d17574a1 100644 --- a/content/units/goldenZenith.hjson +++ b/content/units/goldenZenith.hjson @@ -6,8 +6,7 @@ range: 80 flying: true engineOffset: 12 engineSize: 3 -rotatespeed: 0.01 -attackLength: 90 +rotateSpeed: 0.01 baseRotateSpeed: 0.06 weapons: [{ name: goldenZenith-equip diff --git a/content/zones/abandonedDesert.hjson b/content/zones/abandonedDesert.hjson new file mode 100644 index 00000000..b283d0eb --- /dev/null +++ b/content/zones/abandonedDesert.hjson @@ -0,0 +1,43 @@ +loadout: advancedShard +conditionWave: 10 +launchPeriod: 10 +requirements: [ +{ +type: Launched +zone: saltFlats +} +{ +type: ZoneWave +zone: ruinousShores +wave: 20 +} +{ +type: Unlock +block: goldCrusher +} +{ +type: Unlock +block: laser-drill +} +{ +type: Unlock +block: goldCrucible +} +{ +type: Unlock +block: goldForge +} +{ +type: Unlock +block: goldDuo +} +] +resources: [ +copper +lead +coal +titanium +thorium +sand +goldOre +] diff --git a/content/zones/cavern-retreat.hjson b/content/zones/cavern-retreat.hjson new file mode 100644 index 00000000..cc25250e --- /dev/null +++ b/content/zones/cavern-retreat.hjson @@ -0,0 +1,32 @@ +loadout: basicFoundation +conditionWave: 30 +launchPeriod: 15 +requirements: [ +{ +type: ZoneWave +zone: gold-ridge +wave: 35 +} +{ +type: Unlock +block: goldCrusher +} +{ +type: Unlock +block: goldDuo +} +{ +type: Unlock +block: goldScatter +} +] +resources: [ +copper +lead +coal +titanium +thorium +scrap +sand +goldOre +] diff --git a/content/zones/derelictLab.hjson b/content/zones/derelictLab.hjson new file mode 100644 index 00000000..f5714ee2 --- /dev/null +++ b/content/zones/derelictLab.hjson @@ -0,0 +1,30 @@ +startingItems: [ +copper/500 +lead/500 +goldIngot/250 +shinyAlloy/250 +] +loadout: basicFoundation +conditionWave: 20 +launchPeriod: 1 +configureObjective: { +type: Launched +zone: derelictLab +} +requirements: [{ +type: Launched +zone: frozenPass +} +{ +type: Unlock +block: dart-mk2-pad +}] +resources: [ +copper +lead +coal +sand +titanium +thorium +goldOre +] diff --git a/content/zones/eradLair.hjson b/content/zones/eradLair.hjson new file mode 100644 index 00000000..f626d978 --- /dev/null +++ b/content/zones/eradLair.hjson @@ -0,0 +1,48 @@ +conditionWave: 10 +launchPeriod: 1 +startingItems: [ +copper/500 +lead/500 +graphite/250 +silicon/250 +titanium/250 +] +configureObjective: +{ +type: Launched +zone: eradLair +} +requirements: [ +{ +type: ZoneWave +zone: abandonedDesert +wave: 20 +} +{ +type: ZoneWave +zone: desolateRift +wave: 50 +} +{ +type: Launched +zone: overgrowth +} +{ +type: ZoneWave +zone: nuclearComplex +wave: 50 +} +{ +type: Launched +zone: goldMines +} +] +resources: [ +copper +lead +coal +sand +titanium +thorium +goldOre +] diff --git a/content/zones/frozenPass.hjson b/content/zones/frozenPass.hjson new file mode 100644 index 00000000..58a88856 --- /dev/null +++ b/content/zones/frozenPass.hjson @@ -0,0 +1,51 @@ +loadout: frozenpassLoadout +startingItems: [ +copper/500 +lead/500 +graphite/250 +silicon/250 +metaglass/250 +titanium/250 +goldIngot/100 +] +configureObjective: { +type: Launched +zone: frozenPass +} +requirements: [ +{ +type: ZoneWave +zone: cavern-retreat +wave: 20 +} +{ +type: ZoneWave +zone: groundOne +wave: 30 +} +{ +type: Unlock +block: shinyAlloySmelter +} +{ +type: Unlock +block: apShellFactory1 +} +{ +type: Unlock +block: heShellFactory1 +} +{ +type: Unlock +block: rocketFactory1 +} +] +resources: [ +copper +lead +coal +scrap +titanium +thorium +goldOre +] diff --git a/content/zones/gold-ridge.hjson b/content/zones/gold-ridge.hjson new file mode 100644 index 00000000..fe146420 --- /dev/null +++ b/content/zones/gold-ridge.hjson @@ -0,0 +1,20 @@ +loadout: basicFoundation +conditionWave: 15 +launchPeriod: 20 +requirements: [ +{ +type: ZoneWave +zone: abandonedDesert +wave: 30 +} +] +resources: [ +copper +lead +coal +titanium +thorium +sand +scrap +goldOre +] diff --git a/content/zones/goldMines.hjson b/content/zones/goldMines.hjson new file mode 100644 index 00000000..7d67894a --- /dev/null +++ b/content/zones/goldMines.hjson @@ -0,0 +1,37 @@ +loadout: GMLandingPod +startingItems: [ + copper/500 + lead/500 + graphite/250 + metaglass/250 + silicon/250 + goldIngot/50 +] +conditionWave: 30 +launchPeriod: 10 +configureObjective: +{ +type: Launched +zone: goldMines +} +requirements: [ + { + type: ZoneWave + zone: goldMountains + wave: 30 + } + { + type: Unlock + block: goldenDaggerFactory + } +] +resources: [ + copper + lead + coal + titanium + thorium + sand + scrap + goldOre +] diff --git a/content/zones/goldMountains.hjson b/content/zones/goldMountains.hjson new file mode 100644 index 00000000..1251dc87 --- /dev/null +++ b/content/zones/goldMountains.hjson @@ -0,0 +1,35 @@ +loadout: basicShard +startingItems: [ + copper/100 +] +conditionWave: 10 +launchPeriod: 10 +requirements: [ + { + type: ZoneWave + zone: stainedMountains + wave: 30 + } + { + type: Unlock + block: goldCrucible + } + { + type: Unlock + block: goldForge + } + { + type: Unlock + block: laser-drill + } +] +resources: [ + copper + lead + coal + titanium + thorium + sand + goldOre +] + \ No newline at end of file diff --git a/content/zones/groundOne.hjson b/content/zones/groundOne.hjson new file mode 100644 index 00000000..0b0006fc --- /dev/null +++ b/content/zones/groundOne.hjson @@ -0,0 +1,22 @@ +startingItems: [ +copper/100 +] +conditionWave: 10 +launchPeriod: 5 +requirements: [ +{ +type: Launched +zone: eradLair +} +] +resources: [ +copper +lead +coal +sand +titanium +thorium +scrap +goldOre +researchPoint +] diff --git a/content/zones/pallaCrags.hjson b/content/zones/pallaCrags.hjson new file mode 100644 index 00000000..5690d0d8 --- /dev/null +++ b/content/zones/pallaCrags.hjson @@ -0,0 +1,30 @@ +loadout: basicNucleus +conditionWave: 20 +launchPeriod: 10 +startingItems: [ +copper/500 +lead/500 +graphite/250 +silicon/250 +goldIngot/250 +shinyAlloy/100 +] +requirements: [{ +type: Launched +zone: derelictLab +} +{ +type: Unlock +block: shinyDrill +}] +resources: [ +copper +lead +coal +sand +titanium +thorium +goldOre +researchPoint +palladium +] diff --git a/content/zones/scrap-wasteland.hjson b/content/zones/scrap-wasteland.hjson new file mode 100644 index 00000000..2061240e --- /dev/null +++ b/content/zones/scrap-wasteland.hjson @@ -0,0 +1,28 @@ +loadout: basicShine +conditionWave: 10 +launchPeriod: 10 +startingItems: [ +copper/500 +lead/500 +graphite/250 +silicon/250 +] +requirements: [{ +type: ZoneWave +zone: pallaCrags +wave: 30 +}{ +type: Unlock +block: branch-t3 +}] +resources: [ +copper +lead +coal +sand +scrap +titanium +thorium +goldOre +palladium +] diff --git a/content/zones/smalldefence.hjson b/content/zones/smalldefence.hjson new file mode 100644 index 00000000..8eac3f7b --- /dev/null +++ b/content/zones/smalldefence.hjson @@ -0,0 +1,20 @@ +conditionWave: 20 +launchPeriod: 5 +requirements: [{ +type: ZoneWave +zone: pallaCrags +wave: 30 +}{ +type: Unlock +block: branch-t3 +}] +resources: [ +copper +lead +coal +sand +titanium +thorium +goldOre +palladium +] diff --git a/maps/abandonedDesert.msav b/maps/abandonedDesert.msav index 19f1ce60..c5948419 100644 Binary files a/maps/abandonedDesert.msav and b/maps/abandonedDesert.msav differ diff --git a/maps/cavern-retreat.msav b/maps/cavern-retreat.msav index e979fe30..2ea6314d 100644 Binary files a/maps/cavern-retreat.msav and b/maps/cavern-retreat.msav differ diff --git a/maps/derelictLab.msav b/maps/derelictLab.msav index b00751e7..c450706d 100644 Binary files a/maps/derelictLab.msav and b/maps/derelictLab.msav differ diff --git a/maps/eradLair.msav b/maps/eradLair.msav index 3343f0c9..7b3a975d 100644 Binary files a/maps/eradLair.msav and b/maps/eradLair.msav differ diff --git a/maps/frozenPass.msav b/maps/frozenPass.msav index ec4c8342..4dd36ad3 100644 Binary files a/maps/frozenPass.msav and b/maps/frozenPass.msav differ diff --git a/maps/gold-ridge.msav b/maps/gold-ridge.msav index 526162a4..2e685cfe 100644 Binary files a/maps/gold-ridge.msav and b/maps/gold-ridge.msav differ diff --git a/maps/goldMines.msav b/maps/goldMines.msav index d7d4508d..2cc772d2 100644 Binary files a/maps/goldMines.msav and b/maps/goldMines.msav differ diff --git a/maps/groundOne.msav b/maps/groundOne.msav index 829a1e4b..bf3b5b4a 100644 Binary files a/maps/groundOne.msav and b/maps/groundOne.msav differ diff --git a/maps/pallaCrags.msav b/maps/pallaCrags.msav index e1969994..79b177ac 100644 Binary files a/maps/pallaCrags.msav and b/maps/pallaCrags.msav differ diff --git a/maps/scrap-wasteland.msav b/maps/scrap-wasteland.msav index 5e7fe7d0..d81c0d4e 100644 Binary files a/maps/scrap-wasteland.msav and b/maps/scrap-wasteland.msav differ diff --git a/maps/smalldefence.msav b/maps/smalldefence.msav index 61708e12..0788c922 100644 Binary files a/maps/smalldefence.msav and b/maps/smalldefence.msav differ diff --git a/mod.hjson b/mod.hjson index f245ecc5..edc07c73 100644 --- a/mod.hjson +++ b/mod.hjson @@ -2,5 +2,5 @@ name: "goldmod" displayName: "[gold]Gold[] Mod" author: "[#a00000]The [red]Slaylord[][]" description: "This mod adds new items, blocks, turrets, units and zones to the game. Includes a custom expanding lore!\n\n> [royal]Discord:[] [gray]https://discord.gg/kCvJKyb[]\n> GitHub: [gray]https://github.com/TheSlaylord/GoldMod[]" -version: "2.0 alpha b14" -minGameVersion: 124 \ No newline at end of file +version: "2.1 alpha b15" +minGameVersion: 126.1 \ No newline at end of file diff --git a/scripts/campaign/planets.js b/scripts/campaign/planets.js new file mode 100644 index 00000000..6fdc4ecc --- /dev/null +++ b/scripts/campaign/planets.js @@ -0,0 +1,425 @@ +//serpulo presets +var goldMountains = new SectorPreset("goldMountains", Planets.serpulo, 172); +goldMountains.captureWave = 30; +goldMountains.difficulty = 4; +goldMountains.addStartingItems = true; + +var t = new TechTree.TechNode(TechTree.get(Vars.content.getByName(ContentType.sector,"stainedMountains")),goldMountains, ItemStack.with()); +t.objectives.add(new Objectives.SectorComplete(SectorPresets.stainedMountains)); +//t.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldCrucible"))); +//t.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldForge"))); +t.objectives.add(new Objectives.Research(Blocks.laserDrill)); + +var goldMines = new SectorPreset("goldMines", Planets.serpulo, 205); +goldMines.difficulty = 7; +goldMines.captureWave = 30; +goldMines.addStartingItems = true; + +var gm = new TechTree.TechNode(t,goldMines, ItemStack.with()); +gm.objectives.add(new Objectives.SectorComplete(goldMountains)); +//gm.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldenDaggerFactory"))); + +var abandonedDesert = new SectorPreset("abandonedDesert", Planets.serpulo, 157); +abandonedDesert.captureWave = 10; +abandonedDesert.difficulty = 8; +abandonedDesert.addStartingItems = true; + +var ad = new TechTree.TechNode(TechTree.get(Vars.content.getByName(ContentType.sector,"saltFlats")),abandonedDesert, ItemStack.with()); +ad.objectives.add(new Objectives.SectorComplete(SectorPresets.ruinousShores)); +//ad.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldCrusher"))); +//ad.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldDuo"))); + +var goldRidge = new SectorPreset("gold-ridge", Planets.serpulo, 96); +goldRidge.captureWave = 20; +goldRidge.difficulty = 4; +goldRidge.addStartingItems = true; + +var gr = new TechTree.TechNode(ad,goldRidge, ItemStack.with()); +gr.objectives.add(new Objectives.SectorComplete(abandonedDesert)); +var cavernRetreat = new SectorPreset("cavern-retreat", Planets.serpulo, 120); +cavernRetreat.captureWave = 30; +cavernRetreat.difficulty = 4; +cavernRetreat.addStartingItems = true; + +var cr = new TechTree.TechNode(gr,cavernRetreat, ItemStack.with()); +cr.objectives.add(new Objectives.SectorComplete(abandonedDesert)); +//cr.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldCrusher"))); +//cr.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldDuo"))); +//cr.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "goldScatter"))); + +var reignLair = new SectorPreset("eradLair", Planets.serpulo, 171); +reignLair.captureWave = 10; +reignLair.difficulty = 10; +reignLair.addStartingItems = true; + +var rl = new TechTree.TechNode(ad,reignLair,ItemStack.with()); +rl.objectives.add(new Objectives.SectorComplete(abandonedDesert)); +rl.objectives.add(new Objectives.SectorComplete(SectorPresets.desolateRift)); +rl.objectives.add(new Objectives.SectorComplete(SectorPresets.overgrowth)); +rl.objectives.add(new Objectives.SectorComplete(SectorPresets.nuclearComplex)); +rl.objectives.add(new Objectives.SectorComplete(goldMines)); + +//planet Zuila +const zuilagen = extend(PlanetGenerator, { + rawHeight(position){ + position = Tmp.v33.set(position).scl(this.scl); + return (Mathf.pow(this.noise.octaveNoise3D(7, 0.5, 1 / 3, position.x, position.y, position.z), 2.3) + this.waterOffset) / (1 + this.waterOffset); + }, + + getHeight(position){ + var height = this.rawHeight(position); + return Math.max(height, this.water); + }, + + getColor(position){ + var block = this.getBlock(position); + if(block == null) return Blocks.darksand.mapColor; + Tmp.c1.set(block.mapColor).a = 1 - block.albedo; + + return Tmp.c1; + }, + + genTile(position, tile){ + tile.floor = this.getBlock(position); + tile.block = tile.floor.asFloor().wall; + + if(this.rid.getValue(position.x, position.y, position.z, 22) > 0.32){ + tile.block = Blocks.air; + }; + }, + + getBlock(position){ + var arr = this.arr; + var scl = this.scl; + + var height = this.rawHeight(position); + Tmp.v31.set(position); + + position = Tmp.v33.set(position).scl(scl); + var rad = this.scl; + var temp = Mathf.clamp(Math.abs(position.y * 2) / rad); + var tnoise = this.noise.octaveNoise3D(7, 0.56, 1 / 3, position.x, position.y + 999, position.z); + + temp = Mathf.lerp(temp, tnoise, 0.5); + height *= 1.2; + height = Mathf.clamp(height); + + var res = arr[Mathf.clamp(Math.floor(temp * arr.length), 0, arr[0].length - 1)][Mathf.clamp(Math.floor(height * arr[0].length), 0, arr[0].length - 1)]; + return res; + }, + + noiseOct(x, y, octaves, falloff, scl){ + var v = this.sector.rect.project(x, y).scl(5); + return this.noise.octaveNoise3D(octaves, falloff, 1 / scl, v.x, v.y, v.z); + }, + + generate(tiles, sec){ + this.tiles = tiles; + this.sector = sec; + + const rand = this.rand; + rand.setSeed(sec.id); + + //tile, sector + var gen = new TileGen(); + this.tiles.each((x, y) => { + gen.reset(); + var position = this.sector.rect.project(x / tiles.width, y / tiles.height); + + this.genTile(position, gen); + tiles.set(x, y, new Tile(x, y, gen.floor, gen.overlay, gen.block)); + }); + + const Room = { + x: 0, y: 0, radius: 0, + connected: new ObjectSet(), + + connect(to){ + if(this.connected.contains(to)) return; + + this.connected.add(to); + + var nscl = rand.random(20, 60); + var stroke = rand.random(4, 12); + + zuilagen.brush(zuilagen.pathfind(this.x, this.y, to.x, to.y, tile => (tile.solid() ? 5 : 0) + zuilagen.noiseOct(tile.x, tile.y, 1, 1, 1 / nscl) * 60, Astar.manhattan), stroke); + } + }; + + const setRoom = (x, y, radius) => { + var room = Object.create(Room); + + room.x = x; + room.y = y; + room.radius = radius; + + return room; + }; + + this.cells(4); + this.distort(10, 12); + + this.width = this.tiles.width; + this.height = this.tiles.height; + + var constraint = 1.3; + var radius = this.width / 2 / Mathf.sqrt3; + var rooms = rand.random(2, 5); + var roomseq = new Seq(); + + for(var i = 0; i < rooms; i++){ + Tmp.v1.trns(rand.random(360), rand.random(radius / constraint)); + var rx = Math.floor(this.width / 2 + Tmp.v1.x); + var ry = Math.floor(this.height / 2 + Tmp.v1.y); + var maxrad = radius - Tmp.v1.len(); + var rrad = Math.floor(Math.min(rand.random(9, maxrad / 2), 30)); + + roomseq.add(setRoom(rx, ry, rrad)); + }; + + var spawn = null; + var enemies = new Seq(); + var enemySpawns = rand.random(1, Math.max(Mathf.floor(this.sector.threat * 4), 1)); + + var offset = rand.nextInt(360); + var length = this.width / 2.55 - rand.random(13, 23); + var angleStep = 5; + var waterCheckRad = 5; + + for(var i = 0; i < 360; i += angleStep){ + var angle = offset + i; + var cx = Math.floor(this.width / 2 + Angles.trnsx(angle, length)); + var cy = Math.floor(this.height / 2 + Angles.trnsy(angle, length)); + + var waterTiles = 0; + + for(var rx = -waterCheckRad; rx <= waterCheckRad; rx++){ + for(var ry = -waterCheckRad; ry <= waterCheckRad; ry++){ + var tile = this.tiles.get(cx + rx, cy + ry); + + if(tile == null || tile.floor().liquidDrop != null){ + waterTiles++; + }; + }; + }; + + if(waterTiles <= 4 || (i + angleStep >= 360)){ + spawn = setRoom(cx, cy, rand.random(10, 18)); + roomseq.add(spawn); + + for(var j = 0; j < enemySpawns; j++){ + var enemyOffset = rand.range(60); + + Tmp.v1.set(cx - this.width / 2, cy - this.height / 2).rotate(180 + enemyOffset).add(this.width / 2, this.height / 2); + var espawn = setRoom(Math.floor(Tmp.v1.x), Math.floor(Tmp.v1.y), rand.random(10, 16)); + roomseq.add(espawn); + enemies.add(espawn); + }; + + break; + }; + }; + + roomseq.each(room => this.erase(room.x, room.y, room.radius)); + + var connections = rand.random(Math.max(rooms - 1, 1), rooms + 3); + for(var i = 0; i < connections; i++){ + roomseq.random(rand).connect(roomseq.random(rand)); + }; + + roomseq.each(room => spawn.connect(room)); + + this.cells(1); + this.distort(10, 6); + + this.inverseFloodFill(this.tiles.getn(spawn.x, spawn.y)); + + var ores = Seq.with(Blocks.oreCopper, Blocks.oreLead); + var poles = Math.abs(this.sector.tile.v.y); + var nmag = 0.5; + var scl = 1; + var addscl = 1.3; + + if(this.noise.octaveNoise3D(2, 0.5, scl, this.sector.tile.v.x, this.sector.tile.v.y, this.sector.tile.v.z) * nmag + poles > 0.25 * addscl){ + ores.add(Blocks.oreCoal); + }; + + if(this.noise.octaveNoise3D(2, 0.5, scl, this.sector.tile.v.x + 1, this.sector.tile.v.y, this.sector.tile.v.z) * nmag + poles > 0.5 * addscl){ + ores.add(Blocks.oreTitanium); + }; + + if(this.noise.octaveNoise3D(2, 0.5, scl, this.sector.tile.v.x + 2, this.sector.tile.v.y, this.sector.tile.v.z) * nmag + poles > 0.7 * addscl){ + ores.add(Blocks.oreThorium); + }; + + if(rand.chance(0.25)){ + ores.add(Blocks.oreScrap); + }; + + if(rand.chance(0.7)){ + ores.add(Vars.content.getByName(ContentType.block, "goldmod-ore-goldOre")); + } + + var frequencies = new FloatSeq(); + for(var i = 0; i < ores.size; i++){ + frequencies.add(rand.random(-0.1, 0.01) - i * 0.01 + poles * 0.04); + }; + + this.pass((x, y) => { + if(!this.floor.asFloor().hasSurface()) return; + + var offsetX = x - 4, offsetY = y + 23; + for(var i = ores.size - 1; i >= 0; i--){ + var entry = ores.get(i); + var freq = frequencies.get(i); + + if(Math.abs(0.5 - this.noiseOct(offsetX, offsetY + i * 999, 2, 0.7, (40 + i * 2))) > 0.22 + i * 0.01 && + Math.abs(0.5 - this.noiseOct(offsetX, offsetY - i * 999, 1, 1, (30 + i * 4))) > 0.37 + freq){ + this.ore = entry; + break; + }; + }; + + if(this.ore == Blocks.oreScrap && rand.chance(0.33)){ + this.floor = Blocks.metalFloorDamaged; + }; + }); + + this.trimDark(); + this.median(2); + this.tech(); + this.pass((x, y) => { + //random boulder + if(this.floor == Blocks.stone){ + if(Math.abs(0.5 - this.noiseOct(x - 90, y, 4, 0.8, 65)) > 0.02){ + this.floor = Blocks.boulder; + }; + }; + + if(this.floor != null && this.floor != Blocks.basalt && this.floor != Blocks.grass && this.floor.asFloor().hasSurface()){ + var noise = this.noiseOct(x + 782, y, 5, 0.75, 260); + if(noise > 0.72){ + this.floor = noise > 0.78 ? Blocks.water : (this.floor == Blocks.sand ? Blocks.sandWater : Blocks.darksandWater); + this.ore = Blocks.air; + }else if(noise > 0.67){ + this.floor = (this.floor == Blocks.sand ? this.floor : Blocks.darksand); + this.ore = Blocks.air; + }; + }; + }); + + var difficulty = this.sector.threat; + const ints = this.ints; + + ints.clear(); + ints.ensureCapacity(this.width * this.height / 4); + + Schematics.placeLaunchLoadout(spawn.x, spawn.y); + + enemies.each(espawn => this.tiles.getn(espawn.x, espawn.y).setOverlay(Blocks.spawn)); + + var state = Vars.state; + + if(this.sector.hasEnemyBase()){ + this.basegen.generate(tiles, enemies.map(r => this.tiles.getn(r.x, r.y)), this.tiles.get(spawn.x, spawn.y), state.rules.waveTeam, this.sector, difficulty); + + state.rules.attackMode = this.sector.info.attack = true; + }else{ + state.rules.winWave = this.sector.info.winWave = 10 + 5 * Math.max(difficulty * 10, 1); + }; + + var waveTimeDec = 0.4; + + state.rules.waveSpacing = Mathf.lerp(60 * 65 * 2, 60 * 60 * 1, Math.floor(Math.max(difficulty - waveTimeDec, 0) / 0.8)); + state.rules.waves = this.sector.info.waves = true; + state.rules.enemyCoreBuildRadius = 480; + + state.rules.spawns = Waves.generate(difficulty, new Rand(), state.rules.attackMode); + + //this.generate(tiles); + }, + + postGenerate(tiles){ + if(this.sector.hasEnemyBase()){ + this.basegen.postGenerate(); + }; + } +}); +zuilagen.arr = [ + [Blocks.deepwater, Blocks.darksandWater, Blocks.sandWater, Blocks.sand, Blocks.craters, Blocks.sand, Blocks.sand, Blocks.basalt, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.deepwater, Blocks.darksandWater, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.metalFloorDamaged, Blocks.dacite, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.deepwater, Blocks.sandWater, Blocks.sand, Blocks.sand, Blocks.metalFloorDamaged, Blocks.metalFloorDamaged, Blocks.grass, Blocks.basalt, Blocks.basalt, Blocks.basalt, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.basalt, Blocks.metalFloorDamaged, Blocks.basalt, Blocks.hotrock, Blocks.basalt, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.metalFloorDamaged, Blocks.tar, Blocks.grass, Blocks.basalt, Blocks.basalt, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + + [Blocks.darksandWater, Blocks.craters, Blocks.darksand, Blocks.tar, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.water, Blocks.darksandWater, Blocks.darksand, Blocks.tar, Blocks.tar, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.darksandWater, Blocks.darksandWater, Blocks.darksand, Blocks.tar, Blocks.metalFloorDamaged, Blocks.tar, Blocks.dacite, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + [Blocks.darksandWater, Blocks.darksand, Blocks.grass, Blocks.grass, Blocks.dacite, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass, Blocks.grass], + + [Blocks.darksandWater, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandWater, Blocks.stone, Blocks.stone], + [Blocks.darksandWater, Blocks.darksandWater, Blocks.darksand, Blocks.darksand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandWater, Blocks.stone, Blocks.stone, Blocks.stone], + [Blocks.darksandWater, Blocks.darksandWater, Blocks.darksand, Blocks.sand, Blocks.craters, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.darksandWater, Blocks.stone, Blocks.stone, Blocks.stone], + [Blocks.darksandWater, Blocks.sandWater, Blocks.sand, Blocks.craters, Blocks.craters, Blocks.craters, Blocks.sand, Blocks.stone, Blocks.stone, Blocks.stone, Blocks.grass, Blocks.dacite, Blocks.grass] +]; +zuilagen.rid = new Packages.arc.util.noise.RidgedPerlin(1, 2); +zuilagen.basegen = new BaseGenerator(); +zuilagen.scl = 5; +zuilagen.waterOffset = 0.07; +zuilagen.water = 2 / zuilagen.arr[0].length; + +const zuila = new JavaAdapter(Planet, {}, "zuila", Planets.serpulo, 2, 1); +zuila.generator = zuilagen; +zuila.startSector = 1; +zuila.hasAtmosphere = true; +zuila.atmosphereColor = Color.valueOf("f0e4a8"); +zuila.meshLoader = () => new HexMesh(zuila, 6); +//end planet Zuila + +var groundOne = new SectorPreset("groundOne", zuila, 1); +groundOne.captureWave = 40; + +var g1 = new TechTree.TechNode(rl,groundOne,ItemStack.with()); +g1.objectives.add(new Objectives.SectorComplete(reignLair)); + +var frozenPass = new SectorPreset("frozenPass", Planets.serpulo, 127); +frozenPass.captureWave = 10; +frozenPass.difficulty = 10; +frozenPass.addStartingItems = true; + +var fp = new TechTree.TechNode(g1,frozenPass,ItemStack.with()); +fp.objectives.add(new Objectives.SectorComplete(groundOne)); +fp.objectives.add(new Objectives.SectorComplete(cavernRetreat)); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "shinyAlloySmelter"))); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "apShellFactory1"))); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "heShellFactory1"))); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "rocketFactory1"))); + +var derelictLab = new SectorPreset("derelictLab", zuila, 25); +derelictLab.captureWave = 40; +derelictLab.difficulty = 7; + +var dl = new TechTree.TechNode(fp,derelictLab,ItemStack.with()); +dl.objectives.add(new Objectives.SectorComplete(frozenPass)); + +var pallaCrags = new SectorPreset("pallaCrags", zuila, 7); +pallaCrags.captureWave = 20; +pallaCrags.difficulty = 4; + +var pc = new TechTree.TechNode(dl,pallaCrags,ItemStack.with()); +pc.objectives.add(new Objectives.SectorComplete(derelictLab)); +pc.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "shinyDrill"))); + +var scrapWasteland = new SectorPreset("scrap-wasteland", zuila, 45); +scrapWasteland.captureWave = 40; + +var sw = new TechTree.TechNode(pc,scrapWasteland,ItemStack.with()); +sw.objectives.add(new Objectives.SectorComplete(pallaCrags)); +sw.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "branch-t3"))); + +var smallDefence = new SectorPreset("smalldefence", zuila, 65); +smallDefence.captureWave = 20; + +var sd = new TechTree.TechNode(pc,smallDefence,ItemStack.with()); +sd.objectives.add(new Objectives.SectorComplete(pallaCrags)); +sd.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "branch-t3"))); diff --git a/scripts/campaign/serpulo.js b/scripts/campaign/serpulo.js deleted file mode 100644 index b14915c3..00000000 --- a/scripts/campaign/serpulo.js +++ /dev/null @@ -1,21 +0,0 @@ -//serpulo presets -const goldMountains = new SectorPreset("goldMountains", Planets.serpulo, 172); -goldMountains.captureWave = 30; -goldMountains.difficulty = 4; -/*goldMountains.objectives = Seq.with( - new Objectives.SectorComplete(SectorPresets.stainedMountains), - new Objectives.Research(Vars.content.getByName(ContentType.block, "goldmod-goldCrucible")), - new Objectives.Research(Vars.content.getByName(ContentType.block, "goldmod-goldForge")), - new Objectives.Research(Blocks.laserDrill) -);*/ - -const goldMines = new SectorPreset("goldMines", Planets.serpulo, 205); -goldMines.difficulty = 7; - -const abandonedDesert = new SectorPreset("abandonedDesert", Planets.serpulo, 157); -abandonedDesert.captureWave = 30; -abandonedDesert.difficulty = 8; - -const reignLair = new SectorPreset("eradLair", Planets.serpulo, 122); -reignLair.captureWave = 10; -reignLair.difficulty = 10; \ No newline at end of file diff --git a/scripts/campaign/zuila.js b/scripts/campaign/zuila.js index 95b5f75c..a8b4a066 100644 --- a/scripts/campaign/zuila.js +++ b/scripts/campaign/zuila.js @@ -315,7 +315,51 @@ zuila.atmosphereColor = Color.valueOf("f0e4a8"); zuila.meshLoader = () => new HexMesh(zuila, 6); //end planet Zuila //Zuila sector presets -const gr1 = new SectorPreset("groundOne", zuila, 1); -gr1.captureWave = 40; -gr1.alwaysUnlocked = true; -//end Zuila sector presets \ No newline at end of file + +var groundOne = new SectorPreset("groundOne", zuila, 1); +groundOne.captureWave = 40; + +var g1 = new TechTree.TechNode(serpulo.rl,groundOne,ItemStack.with()); +g1.objectives.add(new Objectives.SectorComplete(serpulo.reignLair)); + +var frozenPass = new SectorPreset("frozenPass", Planets.serpulo, 123); +frozenPass.captureWave = 10; +frozenPass.difficulty = 10; +frozenPass.addStartingItems = true; + +var fp = new TechTree.TechNode(g1,serpulo.reignLair,ItemStack.with()); +fp.objectives.add(new Objectives.SectorComplete(groundOne)); +fp.objectives.add(new Objectives.SectorComplete(serpulo.cavernRetreat)); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "shinyAlloySmelter"))); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "apShellFactory1"))); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "heShellFactory1"))); +fp.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "rocketFactory1"))); + +var derelictLab = new SectorPreset("derelictLab", zuila, 25); +derelictLab.captureWave = 40; +derelictLab.difficulty = 7; + +var dl = new TechTree.TechNode(fp,derelictLab,ItemStack.with()); +dl.objectives.add(new Objectives.SectorComplete(frozenPass)); + +var pallaCrags = new SectorPreset("pallaCrags", zuila, 7); +pallaCrags.captureWave = 20; +pallaCrags.difficulty = 4; + +var pc = new TechTree.TechNode(dl,pallaCrags,ItemStack.with()); +pc.objectives.add(new Objectives.SectorComplete(derelictLab)); +pc.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "shinyDrill"))); + +var scrapWasteland = new SectorPreset("scrap-wasteland", zuila, 45); +scrapWasteland.captureWave = 40; + +var sw = new TechTree.TechNode(pc,scrapWasteland,ItemStack.with()); +sw.objectives.add(new Objectives.SectorComplete(pallaCrags)); +sw.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "branch-t3"))); + +var smallDefence = new SectorPreset("smalldefence", zuila, 65); +smallDefence.captureWave = 20; + +var sd = new TechTree.TechNode(pc,scrapWasteland,ItemStack.with()); +sd.objectives.add(new Objectives.SectorComplete(pallaCrags)); +sd.objectives.add(new Objectives.Research(Vars.content.getByName(ContentType.block, "branch-t3"))); \ No newline at end of file diff --git a/scripts/main.js b/scripts/main.js index 8da08fcb..03d6b4ec 100644 --- a/scripts/main.js +++ b/scripts/main.js @@ -5,7 +5,5 @@ require('gForeshadow'); require('units'); //planets are now quite working, thanks A LOT to Gdeft for scripts, you rock :) -require('campaign/zuila'); -require('campaign/serpulo'); -//require('campaign/cori'); +require('campaign/planets'); require('campaign/techtree'); \ No newline at end of file diff --git a/sprites/zones/abandonedDesert-zone.png b/sprites/zones/abandonedDesert-zone.png index 77201d97..bb9f963a 100644 Binary files a/sprites/zones/abandonedDesert-zone.png and b/sprites/zones/abandonedDesert-zone.png differ diff --git a/sprites/zones/cavern-retreat-zone.png b/sprites/zones/cavern-retreat-zone.png index 3a51b4a1..f0a1f0e5 100644 Binary files a/sprites/zones/cavern-retreat-zone.png and b/sprites/zones/cavern-retreat-zone.png differ diff --git a/sprites/zones/derelictLab-zone.png b/sprites/zones/derelictLab-zone.png index 08af330f..69b5c073 100644 Binary files a/sprites/zones/derelictLab-zone.png and b/sprites/zones/derelictLab-zone.png differ diff --git a/sprites/zones/eradLair-zone.png b/sprites/zones/eradLair-zone.png index f5a91159..29bf026d 100644 Binary files a/sprites/zones/eradLair-zone.png and b/sprites/zones/eradLair-zone.png differ diff --git a/sprites/zones/frozenPass-zone.png b/sprites/zones/frozenPass-zone.png index b9872703..be7341f6 100644 Binary files a/sprites/zones/frozenPass-zone.png and b/sprites/zones/frozenPass-zone.png differ diff --git a/sprites/zones/gold-ridge-zone.png b/sprites/zones/gold-ridge-zone.png index 9a2a5c9f..1d2ca99a 100644 Binary files a/sprites/zones/gold-ridge-zone.png and b/sprites/zones/gold-ridge-zone.png differ diff --git a/sprites/zones/goldMines-zone.png b/sprites/zones/goldMines-zone.png index 784bc401..66b7e2db 100644 Binary files a/sprites/zones/goldMines-zone.png and b/sprites/zones/goldMines-zone.png differ diff --git a/sprites/zones/goldMountains-zone.png b/sprites/zones/goldMountains-zone.png index 54cde48a..32ae2c3d 100644 Binary files a/sprites/zones/goldMountains-zone.png and b/sprites/zones/goldMountains-zone.png differ diff --git a/sprites/zones/groundOne-zone.png b/sprites/zones/groundOne-zone.png index 88b36388..a2791200 100644 Binary files a/sprites/zones/groundOne-zone.png and b/sprites/zones/groundOne-zone.png differ diff --git a/sprites/zones/pallaCrags-zone.png b/sprites/zones/pallaCrags-zone.png index ea639d43..8d6a903a 100644 Binary files a/sprites/zones/pallaCrags-zone.png and b/sprites/zones/pallaCrags-zone.png differ diff --git a/sprites/zones/scrap-wasteland-zone.png b/sprites/zones/scrap-wasteland-zone.png index 44b373c4..1d59a9a8 100644 Binary files a/sprites/zones/scrap-wasteland-zone.png and b/sprites/zones/scrap-wasteland-zone.png differ diff --git a/sprites/zones/smalldefence-zone.png b/sprites/zones/smalldefence-zone.png index 3ffc7971..45d11534 100644 Binary files a/sprites/zones/smalldefence-zone.png and b/sprites/zones/smalldefence-zone.png differ