├── README.md ├── bundles ├── bundle.properties └── bundle_ru.properties ├── icon.png ├── mod.hjson ├── scripts ├── campaign │ └── techtree.js ├── defense │ └── sandy │ │ └── sandboxWalls.js ├── items │ └── progressed │ │ ├── mShell.js │ │ ├── missiles.js │ │ ├── nShell.js │ │ ├── nukes.js │ │ ├── sentries.js │ │ └── techtanite.js ├── libs │ ├── PMfx.js │ ├── blockTypes │ │ ├── strobeNodeType.js │ │ ├── strobeWall.js │ │ └── younggamMultiLib.js │ ├── bulletTypes │ │ ├── bitBulletType.js │ │ ├── blackHoleBulletType.js │ │ ├── critBulletType.js │ │ ├── crossLaserBulletType.js │ │ ├── particleBulletType.js │ │ ├── sentryBulletType.js │ │ └── strikeBulletType.js │ ├── funcLib.js │ ├── statusEffects │ │ ├── paralizeStatus.js │ │ └── teleportStatus.js │ ├── turretTypes │ │ ├── bitTurretType.js │ │ ├── launchTurretType.js │ │ └── missileTurretType.js │ └── unit │ │ ├── ais.js │ │ ├── register.js │ │ └── sentryUnit.js ├── liquids │ └── progressed │ │ └── magma.js ├── main.js ├── power │ └── sandy │ │ └── rainbowPower.js ├── production │ └── progressed │ │ ├── hadron.js │ │ ├── missileCrafter.js │ │ ├── sentryBuilder.js │ │ └── shellPress.js ├── turrets │ ├── progressed │ │ ├── crit │ │ │ └── crit-i.js │ │ ├── eruptor │ │ │ ├── eruptor-i.js │ │ │ ├── eruptor-ii.js │ │ │ └── eruptor-iii.js │ │ ├── minigun │ │ │ ├── minigun-i.js │ │ │ ├── minigun-ii.js │ │ │ └── minigun-iii.js │ │ ├── misc │ │ │ ├── blackhole.js │ │ │ ├── chaos.js │ │ │ ├── excalibur.js │ │ │ └── tinker.js │ │ ├── missile │ │ │ ├── missile-i.js │ │ │ ├── missile-ii.js │ │ │ └── missile-iii.js │ │ ├── pixel │ │ │ └── pixel-i.js │ │ └── tesla │ │ │ ├── tesla-i.js │ │ │ ├── tesla-ii.js │ │ │ └── tesla-iii.js │ └── sandy │ │ └── everythingGun.js └── units │ └── progressed │ ├── sentryBasic.js │ ├── sentryDash.js │ └── sentryStrike.js ├── sounds ├── bitHit.ogg ├── bitShoot.ogg ├── chaosCharge.ogg ├── chaosblast.ogg ├── popeshadowBlast.ogg └── popeshadowCharge.ogg └── sprites ├── blocks ├── defense │ └── sandy │ │ ├── sandbox-everything-wall-color.png │ │ ├── sandbox-everything-wall-large-color.png │ │ ├── sandbox-everything-wall-large.png │ │ ├── sandbox-everything-wall.png │ │ ├── sandbox-phase-wall-color.png │ │ ├── sandbox-phase-wall-large-color.png │ │ ├── sandbox-phase-wall-large.png │ │ ├── sandbox-phase-wall.png │ │ ├── sandbox-plastanium-wall-color.png │ │ ├── sandbox-plastanium-wall-large-color.png │ │ ├── sandbox-plastanium-wall-large.png │ │ ├── sandbox-plastanium-wall.png │ │ ├── sandbox-surge-wall-color.png │ │ ├── sandbox-surge-wall-large-color.png │ │ ├── sandbox-surge-wall-large.png │ │ ├── sandbox-surge-wall.png │ │ ├── sandbox-wall-color.png │ │ ├── sandbox-wall-large-color.png │ │ ├── sandbox-wall-large.png │ │ └── sandbox-wall.png ├── environment │ └── progressed │ │ ├── technetium1.png │ │ ├── technetium2.png │ │ └── technetium3.png ├── power │ └── sandy │ │ ├── rainbow-laser-end.png │ │ ├── rainbow-laser.png │ │ ├── rainbow-power-boost-strobe.png │ │ ├── rainbow-power-boost.png │ │ ├── rainbow-power-node-strobe.png │ │ ├── rainbow-power-node.png │ │ ├── rainbow-power-source-strobe.png │ │ └── rainbow-power-source.png ├── production │ └── progressed │ │ ├── collider │ │ ├── mindron-collider-bottom.png │ │ ├── mindron-collider-collider.png │ │ ├── mindron-collider-glass.png │ │ ├── mindron-collider-heat-0.png │ │ ├── mindron-collider-heat-1.png │ │ ├── mindron-collider-light-0.png │ │ ├── mindron-collider-light-1.png │ │ └── mindron-collider-top.png │ │ ├── missile-crafter.png │ │ ├── sentry-builder-color.png │ │ ├── sentry-builder.png │ │ └── shell-press.png └── turret │ ├── progressed │ ├── bases │ │ ├── block-6.png │ │ └── block-8.png │ ├── eruptor │ │ ├── i │ │ │ ├── eruptor-i-caps-0.png │ │ │ ├── eruptor-i-caps-1.png │ │ │ ├── eruptor-i-caps-2.png │ │ │ ├── eruptor-i-caps-3.png │ │ │ ├── eruptor-i-cells.png │ │ │ ├── eruptor-i-heat-0.png │ │ │ ├── eruptor-i-heat-1.png │ │ │ ├── eruptor-i-icon.png │ │ │ ├── eruptor-i-outline-0.png │ │ │ ├── eruptor-i-outline-1.png │ │ │ ├── eruptor-i-outline-2.png │ │ │ ├── eruptor-i-outline-3.png │ │ │ ├── eruptor-i-outline-4.png │ │ │ └── eruptor-i-turret.png │ │ ├── ii │ │ │ ├── eruptor-ii-caps-0-0.png │ │ │ ├── eruptor-ii-caps-0-1.png │ │ │ ├── eruptor-ii-caps-0-2.png │ │ │ ├── eruptor-ii-caps-0-3.png │ │ │ ├── eruptor-ii-caps-1-0.png │ │ │ ├── eruptor-ii-caps-1-1.png │ │ │ ├── eruptor-ii-caps-1-2.png │ │ │ ├── eruptor-ii-caps-1-3.png │ │ │ ├── eruptor-ii-cells-0.png │ │ │ ├── eruptor-ii-cells-1.png │ │ │ ├── eruptor-ii-heat-0.png │ │ │ ├── eruptor-ii-heat-1.png │ │ │ ├── eruptor-ii-heat-2.png │ │ │ ├── eruptor-ii-icon.png │ │ │ ├── eruptor-ii-outline-0.png │ │ │ ├── eruptor-ii-outline-1.png │ │ │ ├── eruptor-ii-outline-2.png │ │ │ ├── eruptor-ii-outline-3.png │ │ │ ├── eruptor-ii-outline-4.png │ │ │ ├── eruptor-ii-outline-5.png │ │ │ ├── eruptor-ii-outline-6.png │ │ │ ├── eruptor-ii-outline-7.png │ │ │ ├── eruptor-ii-outline-8.png │ │ │ └── eruptor-ii-turret.png │ │ └── iii │ │ │ ├── eruptor-iii-bottom.png │ │ │ ├── eruptor-iii-caps-0.png │ │ │ ├── eruptor-iii-caps-1.png │ │ │ ├── eruptor-iii-caps-2.png │ │ │ ├── eruptor-iii-caps-3.png │ │ │ ├── eruptor-iii-cells-0.png │ │ │ ├── eruptor-iii-cells-1.png │ │ │ ├── eruptor-iii-heat-0.png │ │ │ ├── eruptor-iii-heat-1.png │ │ │ ├── eruptor-iii-heat-2.png │ │ │ ├── eruptor-iii-heat-3.png │ │ │ ├── eruptor-iii-icon.png │ │ │ ├── eruptor-iii-outline-0.png │ │ │ ├── eruptor-iii-outline-1.png │ │ │ ├── eruptor-iii-outline-2.png │ │ │ ├── eruptor-iii-outline-3.png │ │ │ ├── eruptor-iii-outline-4.png │ │ │ ├── eruptor-iii-outline-5.png │ │ │ └── eruptor-iii-side.png │ ├── minigun │ │ ├── i │ │ │ ├── minigun-i-frame-0.png │ │ │ ├── minigun-i-frame-1.png │ │ │ ├── minigun-i-frame-2.png │ │ │ ├── minigun-i-heat-0.png │ │ │ ├── minigun-i-heat-1.png │ │ │ ├── minigun-i-heat-10.png │ │ │ ├── minigun-i-heat-11.png │ │ │ ├── minigun-i-heat-2.png │ │ │ ├── minigun-i-heat-3.png │ │ │ ├── minigun-i-heat-4.png │ │ │ ├── minigun-i-heat-5.png │ │ │ ├── minigun-i-heat-6.png │ │ │ ├── minigun-i-heat-7.png │ │ │ ├── minigun-i-heat-8.png │ │ │ ├── minigun-i-heat-9.png │ │ │ ├── minigun-i-outline-0.png │ │ │ ├── minigun-i-outline-1.png │ │ │ └── minigun-i-outline-2.png │ │ ├── ii │ │ │ ├── minigun-ii-frame-0.png │ │ │ ├── minigun-ii-frame-1.png │ │ │ ├── minigun-ii-frame-2.png │ │ │ ├── minigun-ii-heat-0.png │ │ │ ├── minigun-ii-heat-1.png │ │ │ ├── minigun-ii-heat-10.png │ │ │ ├── minigun-ii-heat-11.png │ │ │ ├── minigun-ii-heat-2.png │ │ │ ├── minigun-ii-heat-3.png │ │ │ ├── minigun-ii-heat-4.png │ │ │ ├── minigun-ii-heat-5.png │ │ │ ├── minigun-ii-heat-6.png │ │ │ ├── minigun-ii-heat-7.png │ │ │ ├── minigun-ii-heat-8.png │ │ │ ├── minigun-ii-heat-9.png │ │ │ ├── minigun-ii-outline-0.png │ │ │ ├── minigun-ii-outline-1.png │ │ │ └── minigun-ii-outline-2.png │ │ └── iii │ │ │ ├── minigun-iii-frame-0.png │ │ │ ├── minigun-iii-frame-1.png │ │ │ ├── minigun-iii-frame-2.png │ │ │ ├── minigun-iii-heat-0.png │ │ │ ├── minigun-iii-heat-1.png │ │ │ ├── minigun-iii-heat-10.png │ │ │ ├── minigun-iii-heat-11.png │ │ │ ├── minigun-iii-heat-2.png │ │ │ ├── minigun-iii-heat-3.png │ │ │ ├── minigun-iii-heat-4.png │ │ │ ├── minigun-iii-heat-5.png │ │ │ ├── minigun-iii-heat-6.png │ │ │ ├── minigun-iii-heat-7.png │ │ │ ├── minigun-iii-heat-8.png │ │ │ ├── minigun-iii-heat-9.png │ │ │ ├── minigun-iii-outline-0.png │ │ │ ├── minigun-iii-outline-1.png │ │ │ └── minigun-iii-outline-2.png │ ├── misc │ │ ├── blackhole-heat.png │ │ ├── blackhole-space.png │ │ ├── blackhole.png │ │ ├── chaos-array-heat.png │ │ ├── chaos-array.png │ │ ├── excalibur │ │ │ ├── excalibur-bottom.png │ │ │ ├── excalibur-cell-0.png │ │ │ ├── excalibur-cell-1.png │ │ │ ├── excalibur-cell-2.png │ │ │ ├── excalibur-cell-3.png │ │ │ ├── excalibur-cell-4.png │ │ │ ├── excalibur-cell-5.png │ │ │ ├── excalibur-cell-6.png │ │ │ ├── excalibur-cell-7.png │ │ │ ├── excalibur-heat.png │ │ │ ├── excalibur-icon.png │ │ │ ├── excalibur-outline-0.png │ │ │ ├── excalibur-outline-1.png │ │ │ ├── excalibur-outline-2.png │ │ │ ├── excalibur-side0.png │ │ │ ├── excalibur-side1.png │ │ │ └── excalibur-top.png │ │ ├── sniper │ │ │ ├── sniper-outline-0.png │ │ │ ├── sniper-outline-1.png │ │ │ ├── sniper-outline-2.png │ │ │ ├── sniper-part-0.png │ │ │ ├── sniper-part-1.png │ │ │ ├── sniper-part-2.png │ │ │ └── sniper.png │ │ └── tinker │ │ │ ├── tinker-arrow-0.png │ │ │ ├── tinker-arrow-1.png │ │ │ ├── tinker-arrow-2.png │ │ │ ├── tinker-arrow-3.png │ │ │ ├── tinker-arrow-4.png │ │ │ ├── tinker-top.png │ │ │ └── tinker.png │ ├── missile │ │ ├── i │ │ │ ├── missile-i-heat-0.png │ │ │ ├── missile-i-heat-1.png │ │ │ ├── missile-i-heat-2.png │ │ │ ├── missile-i-heat-3.png │ │ │ ├── missile-i-heat-4.png │ │ │ ├── missile-i-heat-5.png │ │ │ ├── missile-i-heat-6.png │ │ │ ├── missile-i-heat-7.png │ │ │ ├── missile-i-heat-8.png │ │ │ └── missile-i.png │ │ ├── ii │ │ │ ├── missile-ii-heat.png │ │ │ └── missile-ii.png │ │ └── iii │ │ │ ├── missile-iii-heat.png │ │ │ └── missile-iii.png │ ├── multi │ │ ├── i │ │ │ ├── multi-i-baseIcon.png │ │ │ ├── multi-i-baseTurret.png │ │ │ ├── multi-i-icon.png │ │ │ └── multi-i-outline.png │ │ └── mounts │ │ │ ├── hailM-full.png │ │ │ ├── hailM-heat.png │ │ │ ├── hailM-mask.png │ │ │ ├── hailM-outline.png │ │ │ ├── hailM.png │ │ │ ├── unoM-full.png │ │ │ ├── unoM-mask.png │ │ │ ├── unoM-outline.png │ │ │ ├── unoM.png │ │ │ ├── waveM-full.png │ │ │ ├── waveM-mask.png │ │ │ ├── waveM-outline.png │ │ │ └── waveM.png │ ├── pixel │ │ └── i │ │ │ ├── pixel-i-side-0.png │ │ │ └── pixel-i-side-outline-0.png │ └── tesla │ │ ├── i │ │ ├── tesla-i-heat.png │ │ └── tesla-i.png │ │ ├── ii │ │ ├── tesla-ii-heat.png │ │ └── tesla-ii.png │ │ └── iii │ │ ├── tesla-iii-heat-0.png │ │ ├── tesla-iii-heat-1.png │ │ ├── tesla-iii-heat-2.png │ │ ├── tesla-iii-icon.png │ │ ├── tesla-iii-outline-0.png │ │ ├── tesla-iii-outline-1.png │ │ ├── tesla-iii-outline-2.png │ │ ├── tesla-iii-rotator-0.png │ │ ├── tesla-iii-rotator-1.png │ │ └── tesla-iii-top.png │ └── sandy │ └── everything-gun.png ├── bullets └── progressed │ ├── backhole-0.png │ ├── backhole-1.png │ ├── backhole-2.png │ ├── backhole-back.png │ ├── minigun-ball-back.png │ ├── minigun-ball.png │ ├── nuke │ ├── cluster-nukeb-frag-back.png │ ├── cluster-nukeb.png │ ├── drop-podb.png │ ├── emp-nukeb-back.png │ ├── emp-nukeb.png │ ├── nukeb-back.png │ └── nukeb.png │ ├── storm-back.png │ ├── storm.png │ └── strike │ ├── emp-strikeb-back.png │ ├── emp-strikeb.png │ ├── quantum-strikeb-back.png │ ├── quantum-strikeb.png │ ├── strikeb-back.png │ └── strikeb.png ├── items └── progressed │ ├── missile │ ├── basic-missile.png │ ├── emp-missile.png │ ├── missile-shell.png │ └── quantum-missile.png │ ├── nuke │ ├── basic-nuke.png │ ├── cluster-nuke.png │ ├── emp-nuke.png │ ├── nuke-shell.png │ └── sentry-nuke.png │ ├── sentry │ ├── basic-sentry-box.png │ ├── dash-sentry-box.png │ └── strike-sentry-box.png │ └── techtanite.png ├── liquds └── progressed │ └── magma.png ├── ui └── importpls.png └── units └── progressed ├── sentryBasic ├── basic-sentry-cell.png ├── basic-sentry-full.png ├── basic-sentry-outline.png └── basic-sentry.png ├── sentryDash ├── dash-sentry-cell.png ├── dash-sentry-full.png ├── dash-sentry-laser-outline.png ├── dash-sentry-laser.png ├── dash-sentry-outline.png └── dash-sentry.png └── sentryStrike ├── strike-sentry-cell.png ├── strike-sentry-full.png ├── strike-sentry-hole.png ├── strike-sentry-outline.png └── strike-sentry.png /README.md: -------------------------------------------------------------------------------- 1 | # This is the JS version 2 | ## To get the full experience of Progressed Materials, please install `MEEPofFaith/prog-mats-java` instead. 3 | ## This will no longer remain on the mod browser. 4 | 5 | # Progressed Materials 6 | Adds a bunch of scripted stuff. The name definitely made up of synonyms of "Advance" and "Content." 7 | 8 | ## Content 9 | ### Mindron Collider: 10 | A creatively named particle collider that fuses Techtanite. 11 | ### Techtaninte: 12 | A fused element used for building high tier Progressed things. 13 | ### Eruptor: 14 | Erupts lava from the floor, setting things on fire and dealing massive damage. 15 | ### Minigun: 16 | Longer they fire, faster they fire. 17 | ### Tesla: 18 | Not your average arc. Brings the shock directly to the enemy! 19 | ### Kugelblitz: 20 | **s u c c** 21 | ### Harbinger: 22 | https://www.reddit.com/r/Mindustry/comments/iyelg3/the_true_power_of_the_duo 23 | ### Excalibur 24 | Also known as "Popeshadow." 25 | ### Missiles: 26 | It's just like `MEEPofFaith/ohno-missiles`, just that it's not quite like `MEEPofFaith/ohno-missiles`. 27 | 28 | ## Addons 29 | For VozDuh's Factorio-Styled texture pack, install [Voz-Duh/progressed-factorio](https://github.com/Voz-Duh/progressed-factorio) (Requires [Xeloboyo/Factoriodustry](https://github.com/Xeloboyo/Factoriodustry)) 30 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/icon.png -------------------------------------------------------------------------------- /mod.hjson: -------------------------------------------------------------------------------- 1 | name: prog-mats 2 | displayName: "[accent]Progressed Materials (JS)" 3 | author: 4 | ''' 5 | [accent]Creator: 6 | MEEP of Faith[] 7 | 8 | Contributors: 9 | ThirstyBoi (Eruptor sprite) 10 | Goober (Kugelblitz and Popeshadow sprites) 11 | VozDuh (Missile turret sprites, new icon) 12 | Ilya246 (Luminocity damage ramping) 13 | Younggam (Multi Lib) 14 | Kapzduke (Tinker sprites) 15 | Some sounds from Freesound. 16 | Anyone I stole code from. 17 | ''' 18 | description: 19 | ''' 20 | My main Mindustry mod. Everything is scripted and I'n just experimenting with what I can do with turrets. 21 | 22 | The name definitely isn't made of the synonyms of "Advance" and "Content". 23 | ''' 24 | version: 0.40 FINAL JS UPDATE 25 | minGameVersion: 126.2 26 | repo: MEEPofFaith/prog-mats-js 27 | hideBrowser: true 28 | -------------------------------------------------------------------------------- /scripts/defense/sandy/sandboxWalls.js: -------------------------------------------------------------------------------- 1 | const wall = require("libs/blockTypes/strobeWall"); 2 | 3 | const speed = 1.5; 4 | 5 | const sandboxWall = wall.strobeWall("sandbox-wall", speed, { 6 | health: 150000000 7 | }, {}); 8 | 9 | const sandboxWallLarge = wall.strobeWall("sandbox-wall-large", speed, { 10 | health: 600000000, 11 | size: 2 12 | }, {}); 13 | 14 | const sandboxSurgeWall = wall.strobeWall("sandbox-surge-wall", speed, { 15 | health: 150000000, 16 | lightningChance: 1, 17 | lightningDamage: 5000, 18 | lightningLength: 100 19 | }, {}); 20 | 21 | const sandboxSurgeWallLarge = wall.strobeWall("sandbox-surge-wall-large", speed, { 22 | health: 600000000, 23 | size: 2, 24 | lightningChance: 1, 25 | lightningDamage: 5000, 26 | lightningLength: 100 27 | }, {}); 28 | 29 | const sandboxPhaseWall = wall.strobeWall("sandbox-phase-wall", speed, { 30 | health: 150000000, 31 | chanceDeflect: 100000000, 32 | flashHit: true 33 | }, {}); 34 | 35 | const sandboxPhaseWallLarge = wall.strobeWall("sandbox-phase-wall-large", speed, { 36 | health: 600000000, 37 | size: 2, 38 | chanceDeflect: 100000000, 39 | flashHit: true 40 | }, {}); 41 | 42 | const sandboxPlastaniumWall = wall.strobeWall("sandbox-plastanium-wall", speed, { 43 | health: 150000000, 44 | insulated: true, 45 | absorbLasers: true, 46 | schematicPriority: 10 47 | }, {}); 48 | 49 | const sandboxPlastaniumWallLarge = wall.strobeWall("sandbox-plastanium-wall-large", speed, { 50 | health: 600000000, 51 | size: 2, 52 | insulated: true, 53 | absorbLasers: true, 54 | schematicPriority: 10 55 | }, {}); 56 | 57 | const sandboxEverythingWall = wall.strobeWall("sandbox-everything-wall", speed, { 58 | health: 150000000, 59 | lightningChance: 1, 60 | lightningDamage: 5000, 61 | lightningLength: 100, 62 | chanceDeflect: 100000000, 63 | flashHit: true, 64 | insulated: true, 65 | absorbLasers: true, 66 | schematicPriority: 10 67 | }, {}); 68 | 69 | const sandboxEverythingWallLarge = wall.strobeWall("sandbox-everything-wall-large", speed, { 70 | health: 600000000, 71 | size: 2, 72 | lightningChance: 1, 73 | lightningDamage: 5000, 74 | lightningLength: 100, 75 | chanceDeflect: 100000000, 76 | flashHit: true, 77 | insulated: true, 78 | absorbLasers: true, 79 | schematicPriority: 10 80 | }, {}); -------------------------------------------------------------------------------- /scripts/items/progressed/mShell.js: -------------------------------------------------------------------------------- 1 | const mShell = extendContent(Item, "missile-shell", { 2 | color: Color.valueOf("FEB380") 3 | }); -------------------------------------------------------------------------------- /scripts/items/progressed/missiles.js: -------------------------------------------------------------------------------- 1 | const basicM = extendContent(Item, "basic-missile", { 2 | color: Color.valueOf("EAB678") 3 | }); 4 | 5 | const empM = extendContent(Item, "emp-missile", { 6 | color: Color.valueOf("6974C4") 7 | }); 8 | 9 | const quantumM = extendContent(Item, "quantum-missile", { 10 | color: Color.valueOf("EFCA98") 11 | }); -------------------------------------------------------------------------------- /scripts/items/progressed/nShell.js: -------------------------------------------------------------------------------- 1 | const nShell = extendContent(Item, "nuke-shell", { 2 | color: Color.valueOf("F58859") 3 | }); -------------------------------------------------------------------------------- /scripts/items/progressed/nukes.js: -------------------------------------------------------------------------------- 1 | const basicN = extendContent(Item, "basic-nuke", { 2 | color: Color.valueOf("D4816B") 3 | }); 4 | 5 | const empN = extendContent(Item, "emp-nuke", { 6 | color: Color.valueOf("5757C1") 7 | }); 8 | 9 | const clusterN = extendContent(Item, "cluster-nuke", { 10 | color: Color.valueOf("EDF3A9") 11 | }); 12 | 13 | const sentryN = extendContent(Item, "sentry-nuke", { 14 | color: Color.valueOf("FEB380") 15 | }); -------------------------------------------------------------------------------- /scripts/items/progressed/sentries.js: -------------------------------------------------------------------------------- 1 | const basicSentry = extendContent(Item, "basic-sentry-box", { 2 | color: Color.valueOf("C9A58F") 3 | }); 4 | 5 | const strikeSentry = extendContent(Item, "strike-sentry-box", { 6 | color: Color.valueOf("FFA665") 7 | }); 8 | 9 | const dashSentry = extendContent(Item, "dash-sentry-box", { 10 | color: Color.valueOf("84F491") 11 | }); -------------------------------------------------------------------------------- /scripts/items/progressed/techtanite.js: -------------------------------------------------------------------------------- 1 | const techyStuff = extendContent(Item, "techtanite", { 2 | hardness: 3, 3 | cost: 2.5, 4 | color: Color.valueOf("8C8C8C") 5 | }); -------------------------------------------------------------------------------- /scripts/libs/PMfx.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | scaledBasicHit(scl){ 3 | const basicHit = new Effect(14, e => { 4 | Draw.color(Color.white, Pal.lightOrange, e.fin()); 5 | 6 | e.scaled(7, s => { 7 | Lines.stroke((0.5 + s.fout()) * scl); 8 | Lines.circle(e.x, e.y, s.fin() * 5 * scl); 9 | }); 10 | 11 | Lines.stroke((0.5 + e.fout()) * scl); 12 | 13 | Angles.randLenVectors(e.id, 5, e.fin() * 15 * scl, (x, y) => { 14 | Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), (e.fout() * 3 + 1) * scl); 15 | }); 16 | }); 17 | 18 | return basicHit; 19 | }, 20 | scaledSmallBlast(scl){ 21 | const smallBlast = new Effect(20, e => { 22 | Draw.color(Pal.bulletYellow); 23 | 24 | e.scaled(6, s => { 25 | Lines.stroke(3 * s.fout() * scl); 26 | Lines.circle(e.x, e.y, (3 + s.fin() * 10) * scl); 27 | }); 28 | 29 | Draw.color(Color.gray); 30 | 31 | Angles.randLenVectors(e.id, 5, (2 + 23 * e.finpow()) * scl, (x, y) => { 32 | Fill.circle(e.x + x, e.y + y, (e.fout() * 3 + 0.5) * scl); 33 | }); 34 | 35 | Draw.color(Pal.lighterOrange); 36 | Lines.stroke(e.fout() * scl); 37 | 38 | Angles.randLenVectors(e.id + 1, 4, (1 + 23 * e.finpow()) * scl, (x, y) => { 39 | Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), (1 + e.fout() * 3) * scl); 40 | }); 41 | }); 42 | 43 | return smallBlast; 44 | }, 45 | scaledLargeBlast(scl){ 46 | const bigBlast = new Effect(30, e => { 47 | Draw.color(Pal.missileYellow); 48 | 49 | e.scaled(7, s => { 50 | Lines.stroke(3 * s.fout() * scl); 51 | Lines.circle(e.x, e.y, (4 + s.fin() * 30) * scl); 52 | }); 53 | 54 | Draw.color(Color.gray); 55 | 56 | Angles.randLenVectors(e.id, 8, (2 + 30 * e.finpow()) * scl, (x, y) => { 57 | Fill.circle(e.x + x, e.y + y, (e.fout() * 4 + 0.5) * scl); 58 | }); 59 | 60 | Draw.color(Pal.missileYellowBack); 61 | Lines.stroke(e.fout() * scl); 62 | 63 | Angles.randLenVectors(e.id + 1, 6, (1 + 29 * e.finpow()) * scl, (x, y) => { 64 | Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), (1 + e.fout() * 4) * scl); 65 | }); 66 | }); 67 | 68 | return bigBlast; 69 | }, 70 | scaledNuclearExplosion(scl, cloudScl, clouds, impact){ 71 | const nukeBlast = new Effect(140, e => { 72 | e.scaled(16, s => { 73 | Draw.color(Pal.missileYellow); 74 | Lines.stroke(3 * s.fout() * scl); 75 | Lines.circle(e.x, e.y, (4 + s.fin() * 30) * scl); 76 | }); 77 | e.scaled(60, s => { 78 | Draw.color(Color.gray); 79 | 80 | Angles.randLenVectors(e.id, 8, (2 + 30 * s.finpow()) * scl, (x, y) => { 81 | Fill.circle(e.x + x, e.y + y, (s.fout() * 4 + 0.5) * scl); 82 | }); 83 | 84 | Draw.color(Pal.missileYellowBack); 85 | Lines.stroke(s.fout() * scl); 86 | 87 | Angles.randLenVectors(e.id + 1, 6, (1 + 29 * s.finpow()) * scl, (x, y) => { 88 | Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), (1 + s.fout() * 4) * scl); 89 | }); 90 | }); 91 | Angles.randLenVectors(e.id + 3, clouds, (e.finpow() * 160) * cloudScl, (x, y) => { 92 | var size = (e.fout() * 15) * cloudScl; 93 | if(impact){ 94 | Draw.color(Pal.lighterOrange, Color.lightGray, e.fin()); 95 | }else{ 96 | Draw.color(Color.lime, Color.gray, e.fin()); 97 | } 98 | Fill.circle(e.x + x, e.y + y, size/2); 99 | }); 100 | }); 101 | 102 | return nukeBlast; 103 | }, 104 | trailEffect(lifetime, clip, border){ 105 | let trail = new Effect(lifetime, clip, e => { 106 | if(border > 0){ 107 | Draw.color(Pal.gray); 108 | Fill.circle(e.x, e.y, e.rotation * e.fout() + border); 109 | } 110 | Draw.color(e.color); 111 | Fill.circle(e.x, e.y, e.rotation * e.fout()); 112 | }); 113 | 114 | return trail; 115 | }, 116 | critSparkle(lifetime, clip, amount, dist, length, diameter){ 117 | let sparkle = new Effect(lifetime, clip, e => { 118 | Draw.color(e.color); 119 | Draw.alpha(e.fout()); 120 | 121 | Tmp.v1.trns(e.rotation + 90, 0, length * e.fin(Interp.pow2Out)); 122 | 123 | Angles.randLenVectors(e.id, amount, dist, (x, y) => { 124 | for(let i = 0; i < 2; i++){ 125 | let rot = Mathf.randomSeed(e.id + x + y, 360) + 90 * i; 126 | let tx = x * e.fin(Interp.pow2Out); 127 | let ty = y * e.fin(Interp.pow2Out); 128 | Fill.rect(e.x + tx + Tmp.v1.x, e.y + ty + Tmp.v1.y, 1 * diameter, 0.25 * diameter, rot); 129 | } 130 | }); 131 | Draw.reset(); 132 | }); 133 | 134 | return sparkle; 135 | }, 136 | mushroomCloud(lifetime, clip, size){ 137 | let mush = new Effect(lifetime, clip, e => { 138 | let colorFin = e.fin(Interp.pow2Out); 139 | let slopeFin = e.fin(Interp.pow3Out); 140 | let slopeFout = 1 - e.fin(Interp.pow3In); 141 | 142 | Angles.randLenVectors(e.id, 300, 140 * size * slopeFin, (x, y) => { 143 | Draw.color(Color.white, Color.gray, colorFin); 144 | Fill.circle(e.x + x, e.y + y, 8 * size * slopeFout); 145 | }); 146 | 147 | Draw.color(Color.yellow, Color.lightGray, colorFin); 148 | Lines.stroke(6 * size * e.fout()); 149 | Lines.circle(e.x, e.y, 180 * size * slopeFin); 150 | 151 | Angles.randLenVectors(e.id * 2, 400, 60 * size * slopeFin, (x, y) => { 152 | Draw.color(Color.orange.cpy().lerp([Color.orange, Color.red, Color.crimson, Color.darkGray], colorFin)); 153 | Fill.circle(e.x + x, e.y + y, 8 * size * slopeFout); 154 | }); 155 | }); 156 | 157 | return mush; 158 | } 159 | } -------------------------------------------------------------------------------- /scripts/libs/blockTypes/strobeNodeType.js: -------------------------------------------------------------------------------- 1 | //Haha code steal go brrrr 2 | const clone = obj => { 3 | if(obj === null || typeof(obj) !== 'object') return obj; 4 | var copy = obj.constructor(); 5 | for(var attr in obj) { 6 | if(obj.hasOwnProperty(attr)) { 7 | copy[attr] = obj[attr]; 8 | } 9 | }; 10 | return copy; 11 | } 12 | 13 | module.exports = { 14 | strobeNode(type, build, speed, lerpSpeed, name, obj, objb){ 15 | if(obj == undefined) obj = {}; 16 | if(objb == undefined) objb = {}; 17 | obj = Object.assign({ 18 | load(){ 19 | this.super$load(); 20 | this.colorRegion = Core.atlas.find(this.name + "-strobe"); 21 | this.laser = Core.atlas.find("prog-mats-rainbow-laser"); 22 | this.laserEnd = Core.atlas.find("prog-mats-rainbow-laser-end"); 23 | }, 24 | setupColor(satisfaction){ 25 | let c1 = strobe.laserColor1.cpy().lerp(strobe.laserColor3, Mathf.absin(Time.time * lerpSpeed, 1, 1)); 26 | Draw.color(c1.shiftHue(Time.time * speed), strobe.laserColor2.cpy().shiftHue(Time.time * speed), 1 - satisfaction); 27 | Draw.alpha(Renderer.laserOpacity); 28 | }, 29 | drawPlace(x, y, rot, val){ 30 | Draw.z(Layer.block + 0.01); 31 | Draw.color(strobe.laserColor1.cpy().shiftHue(Time.time * speed)); 32 | Draw.alpha(1); 33 | Draw.rect(strobe.colorRegion, x * Vars.tilesize + strobe.offset, y * Vars.tilesize + strobe.offset); 34 | Draw.reset(); 35 | this.super$drawPlace(x, y, rot, val); 36 | }, 37 | laserColor1: Color.valueOf("FFCCCC"), 38 | laserColor2: Color.valueOf("fb6767"), 39 | laserColor3: Color.red 40 | }, obj); 41 | 42 | objb = Object.assign({ 43 | draw(){ 44 | Draw.z(Layer.block + 0.01); 45 | let c1 = strobe.laserColor1.cpy().lerp(strobe.laserColor3, Mathf.absin(Time.time * lerpSpeed, 1, 1)); 46 | Draw.color(c1.shiftHue(Time.time * speed), strobe.laserColor2.cpy().shiftHue(Time.time * speed), 1 - this.power.graph.getSatisfaction()); 47 | Draw.alpha(1); 48 | Draw.rect(strobe.colorRegion, this.x, this.y); 49 | Draw.reset(); 50 | Draw.z(Layer.block); 51 | this.super$draw(); 52 | } 53 | }, objb); 54 | 55 | const strobe = extend(type, name, obj); 56 | 57 | strobe.buildType = ent => { 58 | ent = extend(build, strobe, clone(objb)); 59 | return ent; 60 | } 61 | 62 | strobe.setupRequirements(Category.power, BuildVisibility.sandboxOnly, ItemStack.empty); 63 | 64 | return strobe; 65 | } 66 | } -------------------------------------------------------------------------------- /scripts/libs/blockTypes/strobeWall.js: -------------------------------------------------------------------------------- 1 | //Haha code steal go brrrr 2 | const clone = obj => { 3 | if(obj === null || typeof(obj) !== 'object') return obj; 4 | var copy = obj.constructor(); 5 | for(var attr in obj) { 6 | if(obj.hasOwnProperty(attr)) { 7 | copy[attr] = obj[attr]; 8 | } 9 | }; 10 | return copy; 11 | } 12 | 13 | module.exports = { 14 | strobeWall(name, speed, obj, objb){ 15 | if(obj == undefined) obj = {}; 16 | if(objb == undefined) objb = {}; 17 | obj = Object.assign({ 18 | load(){ 19 | this.super$load(); 20 | this.colorRegion = Core.atlas.find(this.name + "-color"); 21 | }, 22 | drawPlace(x, y, rot, val){ 23 | Draw.color(Color.red.cpy().shiftHue(Time.time * speed)); 24 | Draw.rect(strobeWall.colorRegion, x * Vars.tilesize + strobeWall.offset, y * Vars.tilesize + strobeWall.offset); 25 | Draw.reset(); 26 | } 27 | }, obj); 28 | 29 | objb = Object.assign({ 30 | draw(){ 31 | let shift = this.id * Mathf.randomSeed(this.id); 32 | Draw.color(Color.red.cpy().shiftHue(shift + Time.time * speed)); 33 | Draw.alpha(1); 34 | Draw.rect(strobeWall.colorRegion, this.x, this.y); 35 | Draw.reset(); 36 | } 37 | }, objb); 38 | 39 | const strobeWall = extend(Wall, name, obj); 40 | 41 | strobeWall.buildType = ent => { 42 | ent = extend(Wall.WallBuild, strobeWall, clone(objb)); 43 | return ent; 44 | } 45 | 46 | strobeWall.setupRequirements(Category.defense, BuildVisibility.sandboxOnly, ItemStack.empty); 47 | 48 | return strobeWall; 49 | } 50 | } -------------------------------------------------------------------------------- /scripts/libs/bulletTypes/bitBulletType.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bitBullet(color1, color2, fadeSpeed, size, hueShift, strokes, stroke, length, burstTime, burstSize, trailTime, trailDelay, obj){ 3 | const burst = new Effect(burstTime, e => { 4 | var set = []; 5 | set[0] = Mathf.curve(e.time, 0, e.lifetime * 2/3); 6 | set[1] = Mathf.curve(e.time, e.lifetime * 1/3, e.lifetime); 7 | 8 | if(hueShift){ 9 | var c = Tmp.c1.set(color1).shiftHue(Time.time * fadeSpeed + Mathf.randomSeed(e.id, 360)); 10 | }else{ 11 | var c = Tmp.c1.set(color1).lerp(color2, Mathf.absin(Time.time * fadeSpeed + Mathf.randomSeed(e.id, 360), 1, 1)); 12 | } 13 | Draw.color(c); 14 | Lines.stroke(stroke); 15 | 16 | for(var i = 0; i < 2; i++){ 17 | if(set[i] > 0 && set[i] < 1){ 18 | for(var j = 0; j < strokes; j++){ 19 | var s = burstSize/2 * set[i]; 20 | var front = Mathf.clamp(s, 0, burstSize/2 - 2 * length); 21 | var back = Mathf.clamp(s - length, 0, burstSize/2 - 2 * length); 22 | 23 | Tmp.v1.trns(j * (360/strokes), 0, front); 24 | Tmp.v1.add(e.x, e.y); 25 | Tmp.v2.trns(j * (360/strokes), 0, back); 26 | Tmp.v2.add(e.x, e.y); 27 | 28 | Lines.line(Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y); 29 | } 30 | } 31 | } 32 | }); 33 | 34 | const trail = new Effect(trailTime, e => { 35 | var offset = Mathf.randomSeed(e.rotation, 0, 360); 36 | if(hueShift){ 37 | var c = Tmp.c1.set(color1).shiftHue(Time.time * fadeSpeed + offset); 38 | }else{ 39 | var c = Tmp.c1.set(color1).lerp(color2, Mathf.absin(Time.time * fadeSpeed + offset, 1, 1)); 40 | } 41 | 42 | Draw.color(c); 43 | Fill.rect(e.x, e.y, size * e.fout(), size * e.fout()); 44 | }); 45 | trail.layer = Layer.bullet; 46 | 47 | if(obj == undefined) obj = {}; 48 | obj = Object.assign({ 49 | update(b){ 50 | if(!b) return; 51 | this.super$update(b); 52 | 53 | var offset = Mathf.randomSeed(b.id, 0, 360); 54 | if(hueShift){ 55 | var c = Tmp.c1.set(color1).shiftHue(Time.time * fadeSpeed + offset); 56 | }else{ 57 | var c = Tmp.c1.set(color1).lerp(color2, Mathf.absin(Time.time * fadeSpeed + offset, 1, 1)); 58 | } 59 | 60 | if(b.timer.get(0, trailDelay)){ 61 | this.trailEffect.at(b.x, b.y, b.id); 62 | } 63 | }, 64 | draw(b){ 65 | if(!b) return; 66 | 67 | var offset = Mathf.randomSeed(b.id, 0, 360); 68 | if(hueShift){ 69 | var c = Tmp.c1.set(color1).shiftHue(Time.time * fadeSpeed + offset); 70 | }else{ 71 | var c = Tmp.c1.set(color1).lerp(color2, Mathf.absin(Time.time * fadeSpeed + offset, 1, 1)); 72 | } 73 | 74 | Draw.color(c); 75 | Draw.z(Layer.bullet + 0.01) 76 | Fill.rect(b.x, b.y, size, size); 77 | }, 78 | hitEffect: burst, 79 | despawnEffect: burst, 80 | trailEffect: trail, 81 | shootEffect: Fx.none, 82 | smokeEffect: Fx.none, 83 | absorbable: false, 84 | hittable: false, 85 | hitSound: loadSound("bitHit") 86 | }, obj); 87 | 88 | const bit = extend(BulletType, obj); 89 | 90 | return bit; 91 | } 92 | } -------------------------------------------------------------------------------- /scripts/libs/bulletTypes/critBulletType.js: -------------------------------------------------------------------------------- 1 | // rAnDoM cRiTs ArE fAiR aNd BaLaNcEd 2 | module.exports = { 3 | critBullet(type, obj){ 4 | if(obj == undefined) obj = {}; 5 | obj = Object.assign({ 6 | init(b){ 7 | if(!b) return; 8 | if(b.data == null){ //If it's not already set, randomise it. 9 | if(Mathf.chance(this.critChance)){ 10 | b.data = true; 11 | }else{ 12 | b.data = false; 13 | } 14 | } 15 | if(b.data) b.damage *= this.critMultiplier; 16 | 17 | this.super$init(b); 18 | }, 19 | update(b){ 20 | if(!b) return; 21 | if(Mathf.chanceDelta(1) && b.data){ 22 | this.critEffect.at(b.x, b.y, b.rotation(), b.team.color); 23 | } 24 | 25 | this.super$update(b); 26 | }, 27 | hit(b, x, y){ 28 | if(!b) return; 29 | let hitX = b.x; 30 | let hitY = b.y; 31 | if(x != null) hitX = x; 32 | if(y != null) hitY = y; 33 | 34 | b.hit = true; 35 | this.hitEffect.at(hitX, hitY, b.rotation(), this.hitColor); 36 | this.hitSound.at(hitX, hitY, this.hitSoundPitch, this.hitSoundVolume); 37 | 38 | Effect.shake(this.hitShake, this.hitShake, b); 39 | 40 | if(this.fragBullet != null){ 41 | for(let i = 0; i < this.fragBullets; i++){ 42 | let len = Mathf.random(1, 7); 43 | let a = b.rotation() + Mathf.range(this.fragCone/2) + this.fragAngle; 44 | //If this is a crit, the frags are also a crit 45 | this.fragBullet.create(b.owner, b.team, hitX + Angles.trnsx(a, len), hitY + Angles.trnsy(a, len), a, -1, Mathf.random(this.fragVelocityMin, this.fragVelocityMax), Mathf.random(this.fragLifeMin, this.fragLifeMax), b.data); 46 | } 47 | } 48 | 49 | if(this.puddleLiquid != null && this.puddles > 0){ 50 | for(let i = 0; i < this.puddles; i++){ 51 | let tile = Vars.world.tileWorld(hitX + Mathf.range(this.puddleRange), hitY + Mathf.range(this.puddleRange)); 52 | Puddles.deposit(tile, this.puddleLiquid, this.puddleAmount); 53 | } 54 | } 55 | 56 | if(Mathf.chance(this.incendChance)){ 57 | Damage.createIncend(hitX, hitY, this.incendSpread, this.incendAmount); 58 | } 59 | 60 | if(this.splashDamageRadius > 0 && !b.absorbed){ 61 | Damage.damage(b.team, hitX, hitY, this.splashDamageRadius, this.splashDamage * b.damageMultiplier() * (b.data ? this.critMultiplier : 1), this.collidesAir, this.collidesGround); 62 | 63 | if(this.status != StatusEffects.none){ 64 | Damage.status(b.team, hitX, hitY, this.splashDamageRadius, this.status, this.statusDuration, this.collidesAir, this.collidesGround); 65 | } 66 | 67 | if(this.healPercent > 0){ 68 | Vars.indexer.eachBlock(b.team, hitX, hitY, this.splashDamageRadius, other => other.damaged, other => { 69 | Fx.healBlockFull.at(other.x, other.y, other.block.size, Pal.heal); 70 | other.heal(this.healPercent / 100 * other.maxHealth()); 71 | }); 72 | } 73 | 74 | if(this.makeFire){ 75 | Vars.indexer.eachBlock(null, hitX, hitY, this.splashDamageRadius, other => other.team != b.team, other => { 76 | Fires.create(other.tile); 77 | }); 78 | } 79 | } 80 | 81 | for(let i = 0; i < this.lightning; i++){ 82 | Lightning.create(b, this.lightningColor, (this.lightningDamage < 0 ? this.damage : this.lightningDamage) * (b.data ? this.critMultiplier : 1), b.x, b.y, b.rotation() + Mathf.range(this.lightningCone/2) + this.lightningAngle, this.lightningLength + Mathf.random(this.lightningLengthRand)); 83 | } 84 | }, 85 | 86 | critChance: 0.25, 87 | critMultiplier: 5, 88 | critEffect: Fx.none 89 | }, obj); 90 | 91 | const crit = extend(type, obj); 92 | 93 | return crit; 94 | } 95 | } -------------------------------------------------------------------------------- /scripts/libs/bulletTypes/crossLaserBulletType.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | crossLaser(midLen, crossSection, border, crossBorder, crossWidth, crossLength, damage, collidesGround, collidesAir, largeHit, obj){ 3 | //Invisble bullet for doing the cross bar damage. 4 | const crossDamage = extend(LaserBulletType, { 5 | draw(b){}, 6 | drawLight(b){}, 7 | length: crossLength, 8 | width: crossWidth, 9 | damage: damage, 10 | collidesGround: collidesGround, 11 | collidesAir: collidesAir, 12 | laserEffect: Fx.none, 13 | largeHit: largeHit 14 | }); 15 | 16 | if(obj == undefined) obj = {}; 17 | obj = Object.assign({ 18 | init(b){ 19 | if(!b) return; 20 | this.super$init(b); 21 | 22 | b.data = [0, 0]; 23 | 24 | const cross = b.fdata * crossSection; 25 | Time.run(this.growTime, () => { 26 | crossSpawn.trns(b.rotation(), cross); 27 | var crossBullets = []; 28 | for(var i = 0; i < 2; i++){ 29 | crossBullets[i] = crossDamage.create(b.owner, b.team, b.x + crossSpawn.x, b.y + crossSpawn.y, b.rotation() + 90 * Mathf.signs[i], 1, 1); 30 | } 31 | b.data = [crossBullets[0].fdata, crossBullets[1].fdata]; 32 | }); 33 | }, 34 | draw(b){ 35 | if(!b) return; 36 | var fin = Mathf.curve(b.fin(), 0, this.growTime / b.lifetime); 37 | var cfin = Mathf.curve(b.fin(), this.growTime / b.lifetime, this.growTime / b.lifetime * 2); 38 | var fout = 1 - Mathf.curve(b.fin(), (b.lifetime - this.fadeTime) / b.lifetime, 1); 39 | 40 | var block = b.fdata / this.length; 41 | var l = b.fdata * fin; 42 | var w = this.width/2 * fin * block; 43 | var mid = l * midLen; 44 | var cross = l * crossSection; 45 | var cblock = (b.data[0] / crossLength + b.data[1] / crossLength) / 2; 46 | var cl = [b.data[0] * cfin, b.data[1] * cfin]; 47 | var cw = [crossWidth/2 * cfin * cblock, crossWidth/2 * cfin * cblock]; 48 | 49 | for(var i = 0; i < this.colors.length; i++){ 50 | var bord = border * i * fin * block; 51 | var cbord = [crossBorder * i * cfin * cblock, crossBorder * i * cfin * cblock]; 52 | Draw.color(this.colors[i], fout); 53 | 54 | // Main 55 | //Start 56 | Tmp.v1.trns(b.rotation(), 0); 57 | Tmp.v1.add(b.x, b.y); 58 | //Mid 59 | Tmp.v2.trns(b.rotation(), mid, -(w - bord)); 60 | Tmp.v2.add(b.x, b.y); 61 | Tmp.v3.trns(b.rotation(), mid, w - bord); 62 | Tmp.v3.add(b.x, b.y); 63 | //End 64 | Tmp.v4.trns(b.rotation(), l); 65 | Tmp.v4.add(b.x, b.y); 66 | 67 | Fill.tri(Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y, Tmp.v3.x, Tmp.v3.y); 68 | Fill.tri(Tmp.v4.x, Tmp.v4.y, Tmp.v2.x, Tmp.v2.y, Tmp.v3.x, Tmp.v3.y); 69 | 70 | // Cross Beam 71 | for(var j = 0; j < 2; j++){ 72 | //Point 73 | Tmp.v1.trns(b.rotation(), cross, cl[j] * Mathf.signs[j]); 74 | Tmp.v1.add(b.x, b.y); 75 | //Base 76 | Tmp.v2.trns(b.rotation(), cross + cw[j] - cbord[j]); 77 | Tmp.v2.add(b.x, b.y); 78 | Tmp.v3.trns(b.rotation(), cross - cw[j] + cbord[j]); 79 | Tmp.v3.add(b.x, b.y); 80 | 81 | Fill.tri(Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y, Tmp.v3.x, Tmp.v3.y); 82 | } 83 | 84 | Draw.reset(); 85 | } 86 | 87 | // Main light 88 | Tmp.v1.trns(b.rotation(), l); 89 | Tmp.v1.add(b.x, b.y); 90 | Drawf.light(b.team, b.x, b.y, Tmp.v1.x, Tmp.v1.y, w * 2 * fin * fout, this.colors[1], 0.6); 91 | 92 | // Cross Beam Light 93 | for(var i = 0; i < 2; i++){ 94 | //Point 95 | Tmp.v1.trns(b.rotation(), cross, cl[i] * Mathf.signs[i]); 96 | Tmp.v1.add(b.x, b.y); 97 | //Base 98 | Tmp.v2.trns(b.rotation(), cross); 99 | Tmp.v2.add(b.x, b.y); 100 | 101 | Drawf.light(b.team, Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y, cw[i] * 2 * fin * fout, this.colors[1], 0.6); 102 | } 103 | }, 104 | growTime: 5, 105 | fadeTime: 5, 106 | lifetime: 24, 107 | damage: damage, 108 | collidesGround: collidesGround, 109 | collidesAir: collidesAir, 110 | laserEffect: Fx.none, 111 | largeHit: largeHit 112 | }, obj); 113 | 114 | const crossSpawn = new Vec2(); 115 | const holyDestruction = extend(LaserBulletType, obj); 116 | 117 | return holyDestruction; 118 | } 119 | } -------------------------------------------------------------------------------- /scripts/libs/bulletTypes/particleBulletType.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | particleBullet(color, uSound, uSoundChance, uSoundMinPitch, uSoundMaxPitch, obj){ 3 | const particleEffect = new Effect(38, e => { 4 | Draw.color(color); 5 | 6 | Angles.randLenVectors(e.id, 2, 1 + 20 * e.fout(), e.rotation, 120, (x, y) => { 7 | Drawf.tri(e.x + x, e.y + y, e.fslope() * 3 + 1, e.fslope() * 3 + 1, Mathf.angle(x, y)); 8 | }); 9 | }); 10 | 11 | if(obj == undefined) obj = {}; 12 | obj = Object.assign({ 13 | hittable: false, 14 | absorbable: false, 15 | reflectable: false, 16 | collidesTiles: false, 17 | pierce: true, 18 | trailEffect: particleEffect, 19 | trailChance: 0.5, 20 | hitColor: color, 21 | damage: 0, 22 | speed: 8, 23 | lifetime: 32, 24 | hitEffect: Fx.none, 25 | despawnEffect: Fx.none, 26 | init(b){ 27 | if(!b) return; 28 | b.fdata = -69420; 29 | this.super$init(b); 30 | }, 31 | update(b){ 32 | if(Mathf.chanceDelta(uSoundChance)) uSound.at(b.x, b.y, Mathf.random(uSoundMinPitch, uSoundMaxPitch), 1); 33 | this.super$update(b); 34 | } 35 | }, obj); 36 | 37 | const particle = extend(BulletType, obj); 38 | 39 | return particle; 40 | } 41 | } -------------------------------------------------------------------------------- /scripts/libs/bulletTypes/sentryBulletType.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | sentryBullet(sentryUnit, addVel, obj){ 3 | if(obj == undefined) obj = {}; 4 | obj = Object.assign({ 5 | load(){ 6 | this.frontRegion = sentryUnit.icon(Cicon.full); 7 | this.backRegion = Core.atlas.find(this.sprite); 8 | }, 9 | despawned(b){ 10 | if(!b) return; 11 | 12 | let sentry = sentryUnit.spawn(b.team, b.x, b.y); 13 | sentry.rotation = b.rotation(); 14 | if(addVel) sentry.vel.add(b.vel); 15 | 16 | this.super$despawned(b); 17 | }, 18 | update(b){ 19 | if(!b) return; 20 | 21 | let scl = b.lifetime / b.type.lifetime; 22 | //let slope = b.fin() * (1 - b.fin()) * 4; It's normally 0 - 0.25 - 0 without the *4 23 | let slope = b.fin() * (1 - b.fin()); 24 | let scale = this.scaleAmount * (slope * 4) * scl + 1; 25 | let trail = this.trailSize * scale; 26 | if(b.timer.get(0, (3 + slope * 2) * this.trailTimeMul)){ 27 | this.trailEffect.at(b.x, b.y, trail, this.backColor); 28 | } 29 | this.super$update(b); 30 | }, 31 | draw(b){ 32 | if(!b) return; 33 | let offset = -90 + (this.spin != 0 ? b.fout() * (this.spin + Mathf.randomSeed(b.id, 360)) : 0); 34 | let scl = b.lifetime / b.type.lifetime; 35 | let slope = b.fin() * (1 - b.fin()); 36 | let shadowScl = (slope * 4) * scl; 37 | let shadowOff = this.shadowStart + this.shadowOffset * shadowScl; 38 | let scale = this.scaleAmount * shadowScl + 1; 39 | 40 | Draw.z(Layer.flyingUnit + 1); 41 | Drawf.shadow(this.backRegion, b.x - shadowOff, b.y - shadowOff, b.rotation() + offset); 42 | 43 | Draw.z(Layer.flyingUnit + 2); 44 | Draw.rect(this.backRegion, b.x, b.y, this.backRegion.width / 4 * scale, this.backRegion.height / 4 * scale, b.rotation() + offset); 45 | 46 | Draw.z(Layer.flyingUnit + 1); 47 | Drawf.shadow(this.frontRegion, b.x - shadowOff, b.y - shadowOff, b.rotation() + offset); 48 | 49 | Draw.z(Layer.flyingUnit + 2); 50 | Draw.rect(this.frontRegion, b.x, b.y, this.frontRegion.width / 4 * scale, this.frontRegion.height / 4 * scale, b.rotation() + offset); 51 | }, 52 | drawSize: 800, 53 | sprite: "clear", 54 | scaleVelocity: true, 55 | scaleAmount: 0.2, 56 | shadowStart: 0, 57 | shadowOffset: 10, 58 | abosrbable: false, 59 | hittable: false, 60 | damage: 0, 61 | splasDamageRadius: -1, 62 | hitEffect: Fx.none, 63 | despawnEffect: Fx.spawn, 64 | trailTimeMul: 1, 65 | trailSize: sentryUnit.hitSize * 0.75, 66 | ammoMultiplier: 1, 67 | backMove: false 68 | }, obj); 69 | 70 | const sentryB = extend(ArtilleryBulletType, obj); 71 | return sentryB; 72 | } 73 | } -------------------------------------------------------------------------------- /scripts/libs/funcLib.js: -------------------------------------------------------------------------------- 1 | const collidedBlocks = new IntSet(1023); 2 | 3 | module.exports = { 4 | //mmm yes, code stolen from Project Unity 5 | //recoded drawer found in UnitType, but without the applyColor function. doesnt draw outlines, only used for certain effects. 6 | simpleUnitDrawerStatic(unit, drawLegs, x, y, scl, rotation, mounts){ 7 | var type = unit.type; 8 | 9 | if(drawLegs){ 10 | //TODO draw legs 11 | if(unit instanceof Mechc){ 12 | 13 | }; 14 | }; 15 | 16 | Draw.rect(type.region, x, y, type.region.width * scl / 4, type.region.height * scl / 4, rotation); 17 | 18 | for(var i = 0; i < mounts.length; i++){ 19 | var mount = mounts[i]; 20 | var weapon = mount.weapon; 21 | 22 | var weaponRotation = rotation + (weapon.rotate ? mount.rotation : 0); 23 | var recoil = -((mount.reload) / weapon.reload * weapon.recoil); 24 | var wx = x + Angles.trnsx(rotation, weapon.x, weapon.y) * scl + Angles.trnsx(weaponRotation, 0, recoil) * scl; 25 | var wy = y + Angles.trnsy(rotation, weapon.x, weapon.y) * scl + Angles.trnsy(weaponRotation, 0, recoil) * scl; 26 | 27 | Draw.rect(weapon.region, wx, wy, 28 | weapon.region.width * scl * -Mathf.sign(weapon.flipSprite) / 4, 29 | weapon.region.height * scl / 4, 30 | weaponRotation); 31 | }; 32 | }, 33 | trueEachBlock(wx, wy, range, conss){ 34 | collidedBlocks.clear(); 35 | var tx = Vars.world.toTile(wx); 36 | var ty = Vars.world.toTile(wy); 37 | 38 | var tileRange = Mathf.floorPositive(range / Vars.tilesize + 1); 39 | var isCons = (conss instanceof Cons); 40 | 41 | for(var x = -tileRange + tx; x <= tileRange + tx; x++){ 42 | yGroup: 43 | for(var y = -tileRange + ty; y <= tileRange + ty; y++){ 44 | if(!Mathf.within(x * Vars.tilesize, y * Vars.tilesize, wx, wy, range)) continue yGroup; 45 | var other = Vars.world.build(x, y); 46 | if(other == null) continue yGroup; 47 | if(!collidedBlocks.contains(other.pos())){ 48 | if(isCons){ 49 | conss.get(other); 50 | }else{ 51 | conss(other); 52 | }; 53 | collidedBlocks.add(other.pos()); 54 | }; 55 | }; 56 | }; 57 | }, 58 | trueEachTile(wx, wy, range, conss){ 59 | collidedBlocks.clear(); 60 | var tx = Vars.world.toTile(wx); 61 | var ty = Vars.world.toTile(wy); 62 | 63 | var tileRange = Mathf.floorPositive(range / Vars.tilesize + 1); 64 | var isCons = (conss instanceof Cons); 65 | 66 | for(var x = -tileRange + tx; x <= tileRange + tx; x++){ 67 | yGroup: 68 | for(var y = -tileRange + ty; y <= tileRange + ty; y++){ 69 | if(!Mathf.within(x * Vars.tilesize, y * Vars.tilesize, wx, wy, range)) continue yGroup; 70 | var other = Vars.world.tile(x, y); 71 | if(other == null) continue yGroup; 72 | if(!collidedBlocks.contains(other.pos())){ 73 | if(isCons){ 74 | conss.get(other); 75 | }else{ 76 | conss(other); 77 | }; 78 | collidedBlocks.add(other.pos()); 79 | }; 80 | }; 81 | }; 82 | }, 83 | bulletDamage(type){ 84 | var trueDamage = type instanceof ContinuousLaserBulletType ? type.damage * 12 : type.damage; 85 | return trueDamage + type.splashDamage + (Math.max(type.lightningDamage, 0) * type.lightning * type.lightningLength); 86 | //return type.damage + type.splashDamage + (Math.max(type.lightningDamage, 0) * type.lightning * type.lightningLength); 87 | } 88 | }; -------------------------------------------------------------------------------- /scripts/libs/statusEffects/paralizeStatus.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | paralizeStatus(statusName, dmgMult, healthMult, speedMult, reloadMult, dmgTick, rotScl, flyingInstakill, cooldown){ 3 | const paralyze = extend(StatusEffect, statusName, { 4 | damageMultipler: dmgMult, 5 | healthMultiplier: healthMult, 6 | speedMultiplier: speedMult, 7 | reloadMultiplier: reloadMult, 8 | damage: dmgTick, 9 | color: Pal.lancerLaser, 10 | effect: Fx.lightningCharge, 11 | update(unit, time){ 12 | unit.apply(StatusEffects.shocked, 10); 13 | var strength = Mathf.clamp(time / cooldown); //mmm yes steal 14 | for(var i = 0; i < unit.mounts.length; i++){ 15 | var mount = unit.mounts[i]; 16 | var weapon = mount.weapon; 17 | if(weapon.rotate){ 18 | mount.rotation += Mathf.range(weapon.rotateSpeed * rotScl * strength); 19 | } 20 | } 21 | if(unit.type.flying == true && !unit.dead && flyingInstakill){ 22 | unit.kill(); //Cut the engines. This can't possibly be op in any way. 23 | } 24 | if(!unit.dead) this.super$update(unit, time); 25 | } 26 | }); 27 | return paralyze; 28 | } 29 | } -------------------------------------------------------------------------------- /scripts/libs/statusEffects/teleportStatus.js: -------------------------------------------------------------------------------- 1 | const fLib = this.global.pm.funcLib; 2 | 3 | module.exports = { 4 | teleportStatus(statusName, dmgMult, healthMult, speedMult, reloadMult, dmgTick, tpRnd, tpDamageScl, cooldown){ 5 | const effLifetime = 60; 6 | const teleportEffect = new Effect(effLifetime, tpRnd * 10, e => { 7 | Draw.mixcol(Color.valueOf("EFE4CA"), 1); 8 | Draw.color(1, 1, 1, e.fout()); 9 | 10 | Lines.stroke(4 * e.fout()); 11 | Lines.line(e.x, e.y, e.data[1], e.data[2]); 12 | fLib.simpleUnitDrawerStatic(e.data[0], false, e.x, e.y, e.fout(), e.rotation - 90, e.data[0].mounts); 13 | 14 | Draw.color(); 15 | Draw.mixcol(); 16 | }); 17 | const teleportAfterEffect = new Effect(effLifetime, tpRnd * 10, e => { 18 | Draw.mixcol(Color.valueOf("EFE4CA"), 1); 19 | Draw.color(1, 1, 1, e.fout()); 20 | 21 | fLib.simpleUnitDrawerStatic(e.data, false, e.x, e.y, e.fout(), e.rotation - 90, e.data.mounts); 22 | 23 | Draw.color(); 24 | Draw.mixcol(); 25 | }); 26 | 27 | const suffer = extend(StatusEffect, statusName, { 28 | damageMultipler: dmgMult, 29 | healthMultiplier: healthMult, 30 | speedMultiplier: speedMult, 31 | reloadMultiplier: reloadMult, 32 | damage: dmgTick, 33 | color: Pal.lancerLaser, 34 | effect: Fx.overdriven, 35 | update(unit, time){ 36 | var strength = Mathf.clamp(time / cooldown); //mmm yes steal 37 | if(strength > 0.001){ 38 | Tmp.v1.rnd(Mathf.random(tpRnd * strength / 2, tpRnd * strength)); 39 | Tmp.v1.add(unit.x, unit.y); 40 | teleportEffect.at(unit.x, unit.y, unit.rotation, [unit, Tmp.v1.x, Tmp.v1.y]); 41 | unit.set(Tmp.v1.x, Tmp.v1.y); 42 | unit.rotation += Mathf.range(180 * strength); 43 | let hit = Mathf.clamp(unit.type.hitSize * tpDamageScl * strength, 0.1, unit.maxHealth); 44 | unit.damagePierce(hit); 45 | unit.maxHealth -= hit; 46 | if(unit.maxHealth < 0 || unit.health < 0){ 47 | unit.killed(); 48 | } 49 | teleportAfterEffect.at(unit.x, unit.y, unit.rotation, unit); 50 | for(var i = 0; i < unit.mounts.length; i++){ 51 | var mount = unit.mounts[i]; 52 | var weapon = mount.weapon; 53 | if(weapon.rotate){ 54 | mount.rotation += Mathf.range(180 * strength); 55 | mount.reload = Mathf.random(0, weapon.reload); 56 | } 57 | } 58 | } 59 | if(!unit.dead) this.super$update(unit, time); 60 | } 61 | }); 62 | return suffer; 63 | } 64 | } -------------------------------------------------------------------------------- /scripts/libs/turretTypes/bitTurretType.js: -------------------------------------------------------------------------------- 1 | //Haha code steal go brrrr 2 | const clone = obj => { 3 | if(obj === null || typeof(obj) !== 'object') return obj; 4 | var copy = obj.constructor(); 5 | for(var attr in obj) { 6 | if(obj.hasOwnProperty(attr)) { 7 | copy[attr] = obj[attr]; 8 | } 9 | }; 10 | return copy; 11 | } 12 | 13 | const tr = new Vec2(); 14 | module.exports = { 15 | new8BitTurret(name, sides, type, build, perRot, obj, objb){ 16 | if(obj == undefined) obj = {}; 17 | if(objb == undefined) objb = {}; 18 | obj = Object.assign({ 19 | load(){ 20 | this.super$load(); 21 | this.bits = []; 22 | this.heats = []; 23 | this.outlines = []; 24 | for(var i = 0; i < (perRot ? sides : 1); i++){ 25 | //Starts at 0*, goes counter-clockwise 26 | this.bits[i] = Core.atlas.find(this.name + "-side-" + i); //Turret 27 | this.heats[i] = Core.atlas.find(this.name + "-side-heat-" + i); //Heats 28 | this.outlines[i] = Core.atlas.find(this.name + "-side-outline-" + i); //Outlines 29 | } 30 | }, 31 | icons(){ 32 | /*return[ 33 | this.baseRegion, 34 | Core.atlas.find(this.name + "-side-outline-0"), 35 | Core.atlas.find(this.name + "-side-0") 36 | ];*/ 37 | return[ 38 | this.baseRegion, 39 | Core.atlas.find(this.name + "-side-0") 40 | ]; 41 | } 42 | }, obj); 43 | 44 | objb = Object.assign({ 45 | draw(){ 46 | Draw.rect(bit.baseRegion, this.x, this.y); 47 | Draw.color(); 48 | 49 | Draw.z(Layer.turret); 50 | 51 | if(perRot){ 52 | var drawRot = this.rotation - 90; 53 | drawRot = drawRot >= 360 ? drawRot - 360 : drawRot < 0 ? drawRot + 360 : drawRot; 54 | var rot = Mathf.round(drawRot + (360 / sides / 2), 360 / sides); 55 | rot = rot >= 360 ? rot - 360 : rot < 0 ? rot + 360 : rot; 56 | var curRot = Mathf.round(rot / (360 / sides)); 57 | tr.trns(rot + 90, -this.recoil); 58 | tr.add(this.x, this.y); 59 | 60 | //Debug 61 | /*for(var i = 0; i < sides; i++){ 62 | Lines.lineAngle(this.x, this.y, i * (360 / sides) + 90 + (360 / sides / 2), 80); 63 | }*/ 64 | //End Debug 65 | 66 | Drawf.shadow(bit.outlines[curRot], tr.x - (bit.size / 2), tr.y - (bit.size / 2), 0); 67 | Draw.rect(bit.outlines[curRot], tr.x, tr.y, 0); 68 | Draw.rect(bit.bits[curRot], tr.x, tr.y, 0); 69 | 70 | if(bit.heats[curRot] != Core.atlas.find("error") && this.heat > 0.0001){ 71 | Draw.color(bit.heatColor, this.heat); 72 | Draw.blend(Blending.additive); 73 | Draw.rect(bit.heats[curRot], tr.x, tr.y, 0); 74 | Draw.blend(); 75 | Draw.color(); 76 | } 77 | }else{ 78 | var drawRot = this.rotation - 90; 79 | drawRot = drawRot >= 360 ? drawRot - 360 : drawRot < 0 ? drawRot + 360 : drawRot; 80 | var rot = Mathf.round(drawRot + (360 / sides / 2), 360 / sides); 81 | rot = rot >= 360 ? rot - 360 : rot < 0 ? rot + 360 : rot; 82 | tr.trns(rot + 90, -this.recoil); 83 | tr.add(this.x, this.y); 84 | 85 | Drawf.shadow(bit.outlines[0], tr.x - (bit.size / 2), tr.y - (bit.size / 2), rot); 86 | Draw.rect(bit.outlines[0], tr.x, tr.y, rot); 87 | Draw.rect(bit.bits[0], tr.x, tr.y, rot); 88 | 89 | if(bit.heats[0] != Core.atlas.find("error") && this.heat > 0.0001){ 90 | Draw.color(bit.heatColor, this.heat); 91 | Draw.blend(Blending.additive); 92 | Draw.rect(bit.heats[0], tr.x, tr.y, rot); 93 | Draw.blend(); 94 | Draw.color(); 95 | } 96 | } 97 | } 98 | }, objb); 99 | 100 | const bit = extend(type, name, obj); 101 | 102 | bit.buildType = ent => { 103 | ent = extend(build, bit, clone(objb)); 104 | return ent; 105 | } 106 | bit.shootSound = loadSound("bitShoot"); 107 | 108 | return bit; 109 | } 110 | } -------------------------------------------------------------------------------- /scripts/libs/turretTypes/missileTurretType.js: -------------------------------------------------------------------------------- 1 | //Haha code steal go brrrr 2 | const clone = obj => { 3 | if(obj === null || typeof(obj) !== 'object') return obj; 4 | var copy = obj.constructor(); 5 | for(var attr in obj) { 6 | if(obj.hasOwnProperty(attr)) { 7 | copy[attr] = obj[attr]; 8 | } 9 | }; 10 | return copy; 11 | } 12 | 13 | module.exports = { 14 | missileTurret(drawBase, type, build, name, obj, objb){ 15 | if(obj == undefined) obj = {}; 16 | if(objb == undefined) objb = {}; 17 | obj = Object.assign({ 18 | icons(){ 19 | return drawBase ? [this.baseRegion, this.region] : [this.region]; 20 | } 21 | }, obj); 22 | 23 | objb = Object.assign({ 24 | draw(){ 25 | if(drawBase) Draw.rect(missileSilo.baseRegion, this.x, this.y); 26 | Draw.rect(missileSilo.region, this.x, this.y); 27 | 28 | if(this.hasAmmo() && this.peekAmmo() != null){ 29 | Draw.draw(Draw.z(), () => { 30 | let missileRegion = Core.atlas.find(this.peekAmmo().sprite); 31 | Drawf.construct(this.x, this.y, missileRegion, this.team.color, 0, this.reload / missileSilo.reloadTime, this._speedScl, this.reload); 32 | }); 33 | } 34 | 35 | if(Core.atlas.isFound(missileSilo.heatRegion) && this.heat > 0.001){ 36 | Draw.color(missileSilo.heatColor, this.heat); 37 | Draw.blend(Blending.additive); 38 | Draw.rect(missileSilo.heatRegion, this.x, this.y); 39 | Draw.blend(); 40 | Draw.color(); 41 | } 42 | }, 43 | updateTile(){ 44 | this.super$updateTile(); 45 | 46 | if(this.reload < missileSilo.reloadTime && this.hasAmmo() && this.consValid()){ 47 | this._speedScl = Mathf.lerpDelta(this._speedScl, 1, 0.02); 48 | }else{ 49 | this._speedScl = Mathf.lerpDelta(this._speedScl, 0, 0.02); 50 | } 51 | }, 52 | updateShooting(){ 53 | if(this.hasAmmo() && this.consValid()) this.super$updateShooting(); 54 | }, 55 | updateCooling(){ 56 | if(this.hasAmmo() && this.consValid()){ 57 | this.super$updateCooling(); 58 | }else{ 59 | this.reload = 0; 60 | } 61 | }, 62 | handleItem(source, item){ 63 | this.reload = 0; //Sorry, but you can't just turn a half-built missile into a different type of missile. Gotta restart construction. 64 | this.super$handleItem(source, item); 65 | }, 66 | turnToTarget(targetRot){ 67 | this.rotation = targetRot; 68 | } 69 | }, objb); 70 | 71 | const missileSilo = extend(type, name, obj); 72 | 73 | missileSilo.rotateSpeed = 9999; 74 | missileSilo.shootLength = 0; 75 | missileSilo.shootEffect = Fx.none; 76 | missileSilo.smokeEffect = Fx.none; 77 | missileSilo.outlineIcon = false; 78 | 79 | missileSilo.buildType = ent => { 80 | ent = extend(build, missileSilo, clone(objb)); 81 | ent._speedScl = 0; 82 | return ent; 83 | } 84 | 85 | return missileSilo; 86 | } 87 | } -------------------------------------------------------------------------------- /scripts/libs/unit/ais.js: -------------------------------------------------------------------------------- 1 | const sentryAIL = prov(() => { 2 | var ai = extend(AIController, { 3 | updateMovement(){ //Just don't move, but still turn. 4 | if(!Units.invalidateTarget(this.target, this.unit, this.unit.range()) && this.unit.type.rotateShooting){ 5 | if(this.unit.type.hasWeapons()){ 6 | this.unit.lookAt(Predict.intercept(this.unit, this.target, this.unit.type.weapons.first().bullet.speed)); 7 | } 8 | } 9 | }, 10 | retarget(){ 11 | return this.timer.get(this.timerTarget, this.target == null ? 10 : 20); 12 | } 13 | }); 14 | return ai; 15 | }); 16 | 17 | module.exports = { 18 | sentryAI: sentryAIL 19 | } -------------------------------------------------------------------------------- /scripts/libs/unit/register.js: -------------------------------------------------------------------------------- 1 | // Sto- Copied from routorio. 2 | 3 | /* 4 | * Registers a unit's class for I/O stuff (saves and net) 5 | * Requires unit.constructor.get() to have classId: () => unit.classId 6 | */ 7 | module.exports = unit => { 8 | // Register unit's name 9 | EntityMapping.nameMap.put(unit.name, unit.constructor); 10 | 11 | // Find available class id and register it 12 | unit.classId = -1; 13 | for (var i in EntityMapping.idMap) { 14 | if (!EntityMapping.idMap[i]) { 15 | EntityMapping.idMap[i] = unit.constructor; 16 | unit.classId = i; 17 | return; 18 | } 19 | } 20 | 21 | // Incase you used up all 256 class ids; use the same code for ~250 units you idiot. 22 | throw new IllegalArgumentException(unit.name + " has no class ID"); 23 | }; -------------------------------------------------------------------------------- /scripts/libs/unit/sentryUnit.js: -------------------------------------------------------------------------------- 1 | const ais = require("libs/unit/ais"); 2 | const register = require("libs/unit/register"); 3 | 4 | module.exports = { 5 | sentryUnit(name, obj){ 6 | if(obj == undefined) obj = {}; 7 | obj = Object.assign({ 8 | drawEngine(unit){ 9 | if(!unit.isFlying()) return; 10 | 11 | var scl = unit.elevation; 12 | var offset = unit.type.engineOffset / 2 + unit.type.engineOffset / 2 * scl; 13 | 14 | Draw.color(unit.team.color); 15 | for(let i = 0; i < this.engines; i++){ 16 | Fill.circle( 17 | unit.x + Angles.trnsx(unit.rotation + this.engineRotOffset + (i * 360 / this.engines), offset), 18 | unit.y + Angles.trnsy(unit.rotation + this.engineRotOffset + (i * 360 / this.engines), offset), 19 | (unit.type.engineSize + Mathf.absin(Time.time, 2, unit.type.engineSize / 4)) * scl 20 | ); 21 | } 22 | Draw.color(Color.white); 23 | for(let i = 0; i < this.engines; i++){ 24 | Fill.circle( 25 | unit.x + Angles.trnsx(unit.rotation + this.engineRotOffset + (i * 360 / this.engines), offset - 1), 26 | unit.y + Angles.trnsy(unit.rotation + this.engineRotOffset + (i * 360 / this.engines), offset - 1), 27 | (unit.type.engineSize + Mathf.absin(Time.time, 2, unit.type.engineSize / 4)) /2 * scl 28 | ); 29 | } 30 | Draw.color(); 31 | }, 32 | update(unit){ 33 | if(!unit.dead && unit.health > 0) unit.elevation = Mathf.clamp(unit.elevation + this.riseSpeed * Time.delta); 34 | 35 | var sub = (unit.type.health / this.duration) * Time.delta; 36 | unit.health -= sub; 37 | this.super$update(unit); 38 | }, 39 | create(team){ 40 | let unit = sentryU.constructor.get(); 41 | unit.team = team; 42 | unit.setType(this); 43 | unit.ammo = sentryU.ammoCapacity; 44 | unit.elevation = 0; 45 | unit.health = unit.maxHealth; 46 | return unit; 47 | }, 48 | setStats(){ 49 | this.super$setStats(); 50 | const dur = new StatValue({ 51 | display(table){ 52 | let durSec = sentryU.duration / 60; 53 | let val = durSec + " " + StatUnit.seconds.localized(); 54 | table.add("(" + Core.bundle.get("stat.prog-mats.sentry-lifetime") + ": " + val + ")"); 55 | } 56 | }); 57 | this.stats.add(Stat.health, dur); 58 | this.stats.remove(Stat.speed); 59 | this.stats.remove(Stat.itemCapacity); 60 | }, 61 | 62 | accel: 0, 63 | speed: 0, 64 | drag: 0.025, 65 | flying: true, 66 | lowAltitude: true, 67 | engineSize: 2, 68 | engines: 4, 69 | engineOffset: 6, 70 | engineRotOffset: 45, 71 | duration: 60 * 10, 72 | isCounted: false, 73 | riseSpeed: 0.016, 74 | itemCapacity: 10, 75 | health: 200, 76 | commandLimit: 2 77 | }, obj); 78 | 79 | let sentryU = extend(UnitType, name, obj); 80 | 81 | sentryU.constructor = () => extend(UnitEntity, { 82 | damaged(){ 83 | return false; 84 | }, 85 | heal(amount){}, 86 | healFract(amount){}, 87 | cap(){ 88 | return Infinity; 89 | }, 90 | prefRotation(){ 91 | return this.rotation; //Don't turn to velocity, just turn and shoot emediately. 92 | }, 93 | classId: () => sentryU.classId 94 | }); 95 | sentryU.defaultController = ais.sentryAI; 96 | 97 | register(sentryU); 98 | 99 | return sentryU; 100 | } 101 | } -------------------------------------------------------------------------------- /scripts/liquids/progressed/magma.js: -------------------------------------------------------------------------------- 1 | const moltenRock = extend(Liquid, "magma", { 2 | flammability: 1000, 3 | temperature: 1000, 4 | heatCapacity: 0, 5 | viscosity: 0.8, 6 | color: Color.valueOf("F58859"), 7 | barColor: Color.valueOf("F58859"), 8 | lightColor: Color.valueOf("F58859"), 9 | 10 | isHidden(){ 11 | return true; 12 | } 13 | }); -------------------------------------------------------------------------------- /scripts/main.js: -------------------------------------------------------------------------------- 1 | //mmm yes script loader stolen from Project Unity 2 | global.pm = {}; 3 | const loadFile = (prev, array) => { 4 | var results = []; 5 | var names = []; 6 | 7 | var p = prev; 8 | 9 | for(var i = 0; i < array.length; i++){ 10 | var file = array[i]; 11 | 12 | if(typeof(file) === "object"){ 13 | p.push(file.name); 14 | var temp = loadFile(p, file.childs); 15 | 16 | results = results.concat(temp.res); 17 | names = names.concat(temp.fileNames); 18 | 19 | p.pop(); 20 | }else{ 21 | var temp = p.join("/") + "/" + file; 22 | 23 | results.push(temp); 24 | names.push(file); 25 | }; 26 | }; 27 | 28 | return { 29 | res: results, 30 | fileNames: names 31 | }; 32 | }; 33 | 34 | //Basically just folders and the stuff inside those folders. 35 | //First load libraries, then items, then stuff that may or may not need those items. 36 | const script = [ 37 | { 38 | name: "libs", 39 | childs: ["funcLib"] 40 | }, 41 | { 42 | name: "items", 43 | childs: [ 44 | { 45 | name: "progressed", 46 | childs: ["techtanite", 47 | "mShell", 48 | "missiles", 49 | "nShell", 50 | "nukes", 51 | "sentries" 52 | ] 53 | } 54 | ] 55 | }, 56 | { 57 | name: "liquids", 58 | childs: [ 59 | { 60 | name: "progressed", 61 | childs: ["magma"] //Should I make magma accesable? Incendiary missiles? 62 | } 63 | ] 64 | }, 65 | { 66 | name: "units", 67 | childs: [ 68 | { 69 | name: "progressed", 70 | childs: ["sentryBasic", "sentryStrike", "sentryDash"] 71 | } 72 | ] 73 | }, 74 | { 75 | name: "defense", 76 | childs: [ 77 | { 78 | name: "sandy", 79 | childs: ["sandboxWalls"] 80 | } 81 | ] 82 | }, 83 | { 84 | name: "production", 85 | childs: [ 86 | { 87 | name: "progressed", 88 | childs: ["hadron", "shellPress", "missileCrafter", "sentryBuilder"] 89 | } 90 | ] 91 | }, 92 | { 93 | name: "power", 94 | childs: [ 95 | { 96 | name: "sandy", 97 | childs: ["rainbowPower"] 98 | } 99 | ] 100 | }, 101 | { 102 | name: "turrets", 103 | childs: [ 104 | { 105 | name: "progressed", 106 | childs: [ 107 | { 108 | name: "crit", 109 | childs: ["crit-i"] 110 | }, 111 | { 112 | name: "eruptor", 113 | childs: ["eruptor-i", "eruptor-ii", "eruptor-iii"] 114 | }, 115 | { 116 | name: "minigun", 117 | childs: ["minigun-i", "minigun-ii", "minigun-iii"] 118 | }, 119 | { 120 | name: "tesla", 121 | childs: ["tesla-i", "tesla-ii", "tesla-iii"] 122 | }, 123 | { 124 | name: "misc", 125 | childs: ["blackhole", "chaos", "excalibur", "tinker"] 126 | }, 127 | { 128 | name: "missile", 129 | childs: ["missile-i", "missile-ii", "missile-iii"] 130 | }, 131 | { 132 | name: "pixel", 133 | childs: ["pixel-i"] 134 | } 135 | ] 136 | }, 137 | { 138 | name: "sandy", 139 | childs: ["everythingGun"] 140 | } 141 | ] 142 | }, 143 | { 144 | name: "campaign", 145 | childs: ["techtree"] //Put this last. Make sure everything is loaded. 146 | } 147 | ]; 148 | 149 | const loadedScript = loadFile([], script); 150 | for(var i = 0; i < loadedScript.res.length; i++){ 151 | var res = loadedScript.res[i]; 152 | var name = loadedScript.fileNames[i]; 153 | try{ 154 | var content = require("prog-mats/" + res); 155 | if(typeof(content) !== "undefined"){ 156 | global.pm[name] = content; 157 | }; 158 | }catch(e){ 159 | print(e); 160 | }; 161 | }; 162 | 163 | if(!Vars.headless){ 164 | Events.on(ClientLoadEvent, () => { 165 | Core.app.post(() => { 166 | var mod = Vars.mods.locateMod("prog-mats"); 167 | var change = "mod."+ mod.meta.name + "."; 168 | mod.meta.displayName = Core.bundle.get(change + "name"); 169 | mod.meta.author = Core.bundle.get(change + "author"); 170 | mod.meta.version = Core.bundle.get(change + "version"); 171 | mod.meta.description = Core.bundle.get(change + "description"); 172 | 173 | const yes = new BaseDialog("$multi.title"); 174 | yes.cont.add("$multi.text").width(500).wrap().pad(4).get().setAlignment(Align.center, Align.center); 175 | yes.cont.image(Core.atlas.find("prog-mats-importpls")).pad(4).get(); 176 | yes.row(); 177 | yes.buttons.defaults().size(64, 64).pad(2); 178 | yes.setFillParent(false); 179 | for(var i = 0; i < 45; i++){ 180 | yes.buttons.button("[#" + Color.red.cpy().shiftHue(Time.time * 3 + i * 8).toString() + "]" + Core.bundle.get("yes"), () => { 181 | yes.hide(); 182 | Vars.ui.mods.show(); 183 | Vars.ui.mods.children.get(1).children.get(1).children.get(0).fireClick(); 184 | Core.scene.dialog.children.get(1).children.get(0).children.get(1).fireClick(); 185 | Core.scene.dialog.children.get(2).children.get(0).remove(); 186 | Core.settings.put("lastmod", "younggam/multi-lib"); 187 | }); 188 | } 189 | 190 | /*if(Vars.mods.locateMod("multi-lib") == null){ 191 | yes.show(); 192 | }*/ 193 | }); 194 | }); 195 | } -------------------------------------------------------------------------------- /scripts/power/sandy/rainbowPower.js: -------------------------------------------------------------------------------- 1 | const node = require("libs/blockTypes/strobeNodeType"); 2 | 3 | const speed = 1.5; 4 | const lerpSpeed = 0.005; 5 | 6 | const gay = node.strobeNode(PowerNode, PowerNode.PowerNodeBuild, speed, lerpSpeed, "rainbow-power-node", { 7 | health: 10000, 8 | maxNodes: 65535, 9 | laserRange: 200, 10 | alwaysUnlocked: true 11 | }, {}); 12 | 13 | const infiniteGay = node.strobeNode(PowerSource, PowerSource.PowerSourceBuild, speed, lerpSpeed, "rainbow-power-source", { 14 | health: 10000, 15 | powerProduction: 2000000000/60, 16 | maxNodes: 65535, 17 | laserRange: 200, 18 | alwaysUnlocked: true 19 | }, {}); 20 | 21 | const uberInfiniteGay = node.strobeNode(PowerSource, PowerSource.PowerSourceBuild, speed, lerpSpeed, "rainbow-power-boost", { 22 | health: 10000, 23 | powerProduction: 2000000000/60, 24 | size: 2, 25 | maxNodes: 65535, 26 | laserRange: 200, 27 | alwaysUnlocked: true, 28 | speedBoost: 100, 29 | setStats(){ 30 | this.stats.add(Stat.speedIncrease, (100 * this.speedBoost), StatUnit.percent); 31 | this.super$setStats(); 32 | }, 33 | setBars(){ 34 | this.super$setBars(); 35 | this.bars.add("boost", () => new Bar(() => Core.bundle.get("stat.prog-mats.gay") + " " + (this.speedBoost * 100) + "%", () => this.laserColor1.cpy().lerp(this.laserColor3, Mathf.absin(Time.time * lerpSpeed, 1, 1)).shiftHue(Time.time * speed), () => 100)); 36 | } 37 | }, { 38 | updateTile(){ 39 | let l = this.power.links; 40 | for(let i = 0; i < l.size; i++){ 41 | let b = Vars.world.tile(l.items[i]).build; 42 | if(b != null) b.applyBoost(uberInfiniteGay.speedBoost, 2 * Time.delta); 43 | } 44 | this.super$updateTile(); 45 | } 46 | }); -------------------------------------------------------------------------------- /scripts/production/progressed/missileCrafter.js: -------------------------------------------------------------------------------- 1 | const multiLib = require("libs/blockTypes/younggamMultiLib"); 2 | 3 | const missileAssembly = multiLib.MultiCrafter(GenericCrafter, GenericCrafter.GenericCrafterBuild, "missile-crafter", [ 4 | /*default form for each recipes. You can change values. 5 | { 6 | input: { 7 | items: [], Modded Item: "mod-name-item-name/amount", Vanilla Item: "item-name/amount" 8 | liquids: [], Modded Liquid: "mod-name-liquid-name/amount", Vanilla liquid: "liquid-name/amount" 9 | power:0, 10 | }, 11 | output: { 12 | items: [], 13 | liquids: [], 14 | power: 0, 15 | }, 16 | craftTime: 80, 17 | },*/ 18 | 19 | //region missiles 20 | 21 | {//1 (Basic Missile) 22 | input: { 23 | items: ["prog-mats-missile-shell/1", "thorium/3", "blast-compound/6"], 24 | power: 3 25 | }, 26 | output:{ 27 | items: ["prog-mats-basic-missile/1"] 28 | }, 29 | craftTime: 60 30 | }, 31 | {//2 (Emp Missile) 32 | input: { 33 | items: ["prog-mats-missile-shell/1", "lead/12", "titanium/10", "silicon/10"], 34 | power: 4 35 | }, 36 | output:{ 37 | items: ["prog-mats-emp-missile/1"] 38 | }, 39 | craftTime: 75 40 | }, 41 | {//2 (Quantum Missile) (Missile Exclusive) 42 | input: { 43 | items: ["prog-mats-missile-shell/1", "thorium/8", "phase-fabric/15", "silicon/13"], 44 | liquids: ["water/20"], 45 | power: 7 46 | }, 47 | output:{ 48 | items: ["prog-mats-quantum-missile/1"] 49 | }, 50 | craftTime: 120 51 | }, 52 | 53 | //endregion 54 | //region nukes 55 | 56 | {//1 (Basic Nuke) 57 | input: { 58 | items: ["prog-mats-nuke-shell/1", "thorium/35", "titanium/25", "blast-compound/25", "prog-mats-techtanite/30"], 59 | power: 6 60 | }, 61 | output:{ 62 | items: ["prog-mats-basic-nuke/1"] 63 | }, 64 | craftTime: 90 65 | }, 66 | {//2 (Emp Nuke) 67 | input: { 68 | items: ["prog-mats-nuke-shell/1", "silicon/30", "surge-alloy/20", "prog-mats-techtanite/40"], 69 | power: 8 70 | }, 71 | output:{ 72 | items: ["prog-mats-emp-nuke/1"] 73 | }, 74 | craftTime: 105 75 | }, 76 | {//3 (Cluster Nuke) (Nuke Exclusive) 77 | input: { 78 | items: ["prog-mats-nuke-shell/1", "prog-mats-basic-missile/5", "copper/30", "plastanium/15", "prog-mats-techtanite/25"], 79 | power: 6.25 80 | }, 81 | output:{ 82 | items: ["prog-mats-cluster-nuke/1"] 83 | }, 84 | craftTime: 120 85 | }, 86 | {//4 (Drop Pod Nuke) (Nuke Exclusive) 87 | input: { 88 | items: ["prog-mats-nuke-shell/1", "prog-mats-basic-sentry-box/3", "prog-mats-strike-sentry-box/3", "prog-mats-dash-sentry-box/3", "pyratite/10", "blast-compound/5"], 89 | power: 5.5 90 | }, 91 | output:{ 92 | items: ["prog-mats-sentry-nuke/1"] 93 | }, 94 | craftTime: 150 95 | } 96 | ], { 97 | load(){ 98 | this.super$load(); 99 | this.colorRegion = Core.atlas.find(this.name + "-color"); 100 | } 101 | }, 102 | /*this is Object constructor. This way is much better than literal way{a:123} 103 | you can replace this with {} if you don't want to modify entity*/ 104 | function Extra(){ 105 | /*you can use customUpdate = function(){}. this function excuted before update() 106 | also this.draw = function(){} 107 | you can customize entity here. 108 | ex) 109 | this._myProp=0; 110 | this.getMyProp=function(){ 111 | return this._myProp; 112 | }; 113 | this.setMyProp=function(a){ 114 | this._myProp=a; 115 | };*/ 116 | 117 | this.draw = function(){ 118 | this.super$draw(); 119 | let current = this._toggle; 120 | if(current >= 0){ 121 | let recs = this.block.getRecipes(); 122 | let outputItems = recs[current].output.items; 123 | Draw.color(outputItems[0].item.color); 124 | Draw.rect(missileAssembly.colorRegion, this.x, this.y); 125 | } 126 | } 127 | }); 128 | /* 129 | YOU MUST NOT MODIFY VALUE OF THESE 130 | configurable 131 | outputsPower 132 | hasItems 133 | hasLiquids 134 | hasPower 135 | */ 136 | 137 | missileAssembly.itemCapacity = 50; 138 | missileAssembly.liquidCapacity = 50; 139 | missileAssembly.size = 4; 140 | missileAssembly.health = 100; 141 | missileAssembly.craftEffect = Fx.pulverizeMedium; 142 | missileAssembly.updateEffect = Fx.none; 143 | /*true: dump items and liquids of output according to button 144 | false: dump items and liquids of output unconditionally*/ 145 | missileAssembly.dumpToggle = true; 146 | missileAssembly.setupRequirements(Category.crafting, ItemStack.with( 147 | Items.copper, 300, 148 | Items.lead, 200, 149 | Items.silicon, 200, 150 | Items.plastanium, 150, 151 | Items.thorium, 100, 152 | Items.surgeAlloy, 110 153 | )); -------------------------------------------------------------------------------- /scripts/production/progressed/sentryBuilder.js: -------------------------------------------------------------------------------- 1 | const multiLib = require("libs/blockTypes/younggamMultiLib"); 2 | 3 | const cunit = name => Vars.content.getByName(ContentType.unit, "prog-mats-" + name); 4 | const sprite = sentryUnit => cunit(sentryUnit + "-sentry").icon(Cicon.full); 5 | const spriteNames = ["basic", "strike", "dash"] 6 | 7 | const sFac = multiLib.MultiCrafter(GenericCrafter, GenericCrafter.GenericCrafterBuild, "sentry-builder", [ 8 | /*default form for each recipes. You can change values. 9 | { 10 | input: { 11 | items: [], Modded Item: "mod-name-item-name/amount", Vanilla Item: "item-name/amount" 12 | liquids: [], Modded Liquid: "mod-name-liquid-name/amount", Vanilla liquid: "liquid-name/amount" 13 | power:0, 14 | }, 15 | output: { 16 | items: [], 17 | liquids: [], 18 | power: 0, 19 | }, 20 | craftTime: 80, 21 | },*/ 22 | {//1 (Basic Sentry) 23 | input: { 24 | items: ["copper/30", "lead/35", "titanium/15", "silicon/25"], 25 | power: 4 26 | }, 27 | output:{ 28 | items: ["prog-mats-basic-sentry-box/3"] 29 | }, 30 | craftTime: 90 31 | }, 32 | {//2 (Strike Sentry) 33 | input: { 34 | items: ["copper/40", "lead/40", "titanium/20", "silicon/30", "blast-compound/10"], 35 | power: 4.5 36 | }, 37 | output:{ 38 | items: ["prog-mats-strike-sentry-box/3"] 39 | }, 40 | craftTime: 120 41 | }, 42 | {//2 (Dash Sentry) 43 | input: { 44 | items: ["copper/30", "lead/30", "titanium/30", "graphite/15", "silicon/35"], 45 | power: 4.5 46 | }, 47 | output:{ 48 | items: ["prog-mats-dash-sentry-box/3"] 49 | }, 50 | craftTime: 105 51 | } 52 | ], { 53 | load(){ 54 | this.super$load(); 55 | this.colorRegion = Core.atlas.find(this.name + "-color"); 56 | this.sentrySprites = []; 57 | for(let i = 0; i < spriteNames.length; i++){ 58 | this.sentrySprites[i] = sprite(spriteNames[i]); 59 | } 60 | } 61 | }, 62 | /*this is Object constructor. This way is much better than literal way{a:123} 63 | you can replace this with {} if you don't want to modify entity*/ 64 | function Extra(){ 65 | /*you can use customUpdate = function(){}. this function excuted before update() 66 | also this.draw = function(){} 67 | you can customize entity here. 68 | ex) 69 | this._myProp=0; 70 | this.getMyProp=function(){ 71 | return this._myProp; 72 | }; 73 | this.setMyProp=function(a){ 74 | this._myProp=a; 75 | };*/ 76 | 77 | this.draw = function(){ 78 | this.super$draw(); 79 | let current = this._toggle; 80 | if(current >= 0){ 81 | let recs = this.block.getRecipes(); 82 | let sentryItem = recs[current].output.items[0]; 83 | Draw.color(sentryItem.item.color); 84 | Draw.rect(sFac.colorRegion, this.x, this.y); 85 | Draw.color(); 86 | 87 | Draw.draw(Draw.z(), () => { 88 | Drawf.construct(this.x, this.y, sFac.sentrySprites[current], this.team.color, 0, this.progress, this.warmup, this.totalProgress); 89 | }); 90 | } 91 | } 92 | }); 93 | /* 94 | YOU MUST NOT MODIFY VALUE OF THESE 95 | configurable 96 | outputsPower 97 | hasItems 98 | hasLiquids 99 | hasPower 100 | */ 101 | 102 | sFac.itemCapacity = 100; 103 | sFac.liquidCapacity = 40; 104 | sFac.size = 4; 105 | sFac.health = 100; 106 | sFac.craftEffect = Fx.pulverizeMedium; 107 | sFac.updateEffect = Fx.none; 108 | /*true: dump items and liquids of output according to button 109 | false: dump items and liquids of output unconditionally*/ 110 | sFac.dumpToggle = true; 111 | sFac.craftEffect = Fx.none; 112 | sFac.setupRequirements(Category.crafting, ItemStack.with( 113 | Items.copper, 90, 114 | Items.silicon, 150, 115 | Items.titanium, 50 116 | )); -------------------------------------------------------------------------------- /scripts/production/progressed/shellPress.js: -------------------------------------------------------------------------------- 1 | const multiLib = require("libs/blockTypes/younggamMultiLib"); 2 | 3 | const shellPress = multiLib.MultiCrafter(GenericCrafter, GenericCrafter.GenericCrafterBuild, "shell-press", [ 4 | /*default form for each recipes. You can change values. 5 | { 6 | input: { 7 | items: [], Modded Item: "mod-name-item-name/amount", Vanilla Item: "item-name/amount" 8 | liquids: [], Modded Liquid: "mod-name-liquid-name/amount", Vanilla liquid: "liquid-name/amount" 9 | power:0, 10 | }, 11 | output: { 12 | items: [], 13 | liquids: [], 14 | power: 0, 15 | }, 16 | craftTime: 80, 17 | },*/ 18 | {//1 (Missile) 19 | input: { 20 | items: ["titanium/5", "copper/5", "lead/5"], 21 | power: 3 22 | }, 23 | output:{ 24 | items: ["prog-mats-missile-shell/2"] 25 | }, 26 | craftTime: 60 27 | }, 28 | {//2 (Nuke) 29 | input: { 30 | items: ["titanium/10", "surge-alloy/10", "prog-mats-techtanite/10"], 31 | power: 5 32 | }, 33 | output:{ 34 | items: ["prog-mats-nuke-shell/1"] 35 | }, 36 | craftTime: 90 37 | } 38 | ], { 39 | /*you can customize block here. ex) load()*/ 40 | }, 41 | /*this is Object constructor. This way is much better than literal way{a:123} 42 | you can replace this with {} if you don't want to modify entity*/ 43 | function Extra(){ 44 | /*you can use customUpdate = function(){}. this function excuted before update() 45 | also this.draw = function(){} 46 | you can customize entity here. 47 | ex) 48 | this._myProp=0; 49 | this.getMyProp=function(){ 50 | return this._myProp; 51 | }; 52 | this.setMyProp=function(a){ 53 | this._myProp=a; 54 | };*/ 55 | }); 56 | /* 57 | YOU MUST NOT MODIFY VALUE OF THESE 58 | configurable 59 | outputsPower 60 | hasItems 61 | hasLiquids 62 | hasPower 63 | */ 64 | 65 | shellPress.itemCapacity = 30; 66 | shellPress.liquidCapacity = 20; 67 | shellPress.size = 3; 68 | shellPress.health = 100; 69 | shellPress.craftEffect = Fx.pulverizeMedium; 70 | shellPress.updateEffect = Fx.none; 71 | /*true: dump items and liquids of output according to button 72 | false: dump items and liquids of output unconditionally*/ 73 | shellPress.dumpToggle = true; 74 | shellPress.setupRequirements(Category.crafting, ItemStack.with( 75 | Items.copper, 75, 76 | Items.lead, 100, 77 | Items.titanium, 100, 78 | Items.silicon, 80 79 | )); -------------------------------------------------------------------------------- /scripts/turrets/progressed/crit/crit-i.js: -------------------------------------------------------------------------------- 1 | const bul = require("libs/bulletTypes/critBulletType"); 2 | const eff = require("libs/PMfx"); 3 | 4 | const sparkle = eff.critSparkle(120, 240, 12, 24, 48, 4); 5 | 6 | const crit = bul.critBullet(BasicBulletType, { 7 | critEffect: sparkle, 8 | damage: 1000, 9 | speed: 20, 10 | lifetime: 30, 11 | pierce: true, 12 | pierceBuilding: true 13 | }); 14 | 15 | const sniper = extend(ItemTurret, "sniper", { 16 | reloadTime: 450, 17 | inaccuracy: 0, 18 | size: 3, 19 | range: 544, 20 | split: 3, 21 | chargeTime: 300, 22 | shootLength: 12 + 6, 23 | chargeMoveFract: 0.9, 24 | 25 | load(){ 26 | this.super$load(); 27 | this.outlines = []; 28 | this.parts = []; 29 | 30 | for(let i = 0; i < 3; i++){ 31 | this.outlines[i] = Core.atlas.find(this.name + "-outline-" + i); 32 | this.parts[i] = Core.atlas.find(this.name + "-part-" + i); 33 | } 34 | } 35 | }); 36 | 37 | sniper.buildType = ent => { 38 | ent = extend(ItemTurret.ItemTurretBuild, sniper, { 39 | draw(){ 40 | Draw.rect(sniper.baseRegion, this.x, this.y); 41 | 42 | Draw.z(Layer.turret); 43 | 44 | sniper.tr2.trns(this.rotation, -this.recoil); 45 | 46 | for(let i = 0; i < 3; i++){ 47 | let tx = Angles.trnsx(this.rotation, sniper.split * this.charge * i); 48 | let ty = Angles.trnsy(this.rotation, sniper.split * this.charge * i); 49 | Drawf.shadow(sniper.outlines[i], this.x + sniper.tr2.x + tx - sniper.elevation, this.y + sniper.tr2.y + ty - sniper.elevation, this.rotation - 90); 50 | } 51 | 52 | for(let i = 0; i < 3; i++){ 53 | let tx = Angles.trnsx(this.rotation, sniper.split * this.charge * i); 54 | let ty = Angles.trnsy(this.rotation, sniper.split * this.charge * i); 55 | Draw.rect(sniper.outlines[i], this.x + sniper.tr2.x + tx, this.y + sniper.tr2.y + ty, this.rotation - 90); 56 | } 57 | 58 | for(let i = 0; i < 3; i++){ 59 | let tx = Angles.trnsx(this.rotation, sniper.split * this.charge * i); 60 | let ty = Angles.trnsy(this.rotation, sniper.split * this.charge * i); 61 | Draw.rect(sniper.parts[i], this.x + sniper.tr2.x + tx, this.y + sniper.tr2.y + ty, this.rotation - 90); 62 | } 63 | }, 64 | updateTile(){ 65 | if(this.charging && this.hasAmmo()){ 66 | this.charge = Mathf.clamp(this.charge + Time.delta / sniper.chargeTime); 67 | }else{ 68 | this.charge = 0; 69 | } 70 | 71 | this.super$updateTile(); 72 | }, 73 | updateShooting(){ 74 | if(this.consValid()){ 75 | if(this.reload >= sniper.reloadTime && !this.charging){ 76 | let type = this.peekAmmo(); 77 | 78 | this.shoot(type); 79 | 80 | this.reload = 0; 81 | }else if(this.hasAmmo()){ 82 | this.reload += this.delta() * this.peekAmmo().reloadMultiplier * this.baseReloadSpeed(); 83 | } 84 | } 85 | }, 86 | updateCooling(){ 87 | if(this.hasAmmo() && this.consValid()){ 88 | this.super$updateCooling(); 89 | }else{ 90 | this.reload = 0; 91 | } 92 | }, 93 | turnToTarget(targetRot){ 94 | this.rotation = Angles.moveToward(this.rotation, targetRot, this.efficiency() * sniper.rotateSpeed * this.delta() * (this.charging ? (1 - sniper.chargeMoveFract * this.charge) : 1)); 95 | }, 96 | shouldTurn(){ 97 | return true; 98 | } 99 | }); 100 | 101 | ent.charge = 0; 102 | return ent; 103 | }; 104 | 105 | sniper.ammo(Items.thorium, crit); 106 | sniper.setupRequirements(Category.turret, BuildVisibility.sandboxOnly, ItemStack.empty); -------------------------------------------------------------------------------- /scripts/turrets/progressed/misc/blackhole.js: -------------------------------------------------------------------------------- 1 | const horizonColor = Color.valueOf("bd5200"); 2 | const horizonRad = 5; 3 | 4 | const chargeBegin = new Effect(50, e => { 5 | Draw.color(Color.valueOf("000000")); 6 | Fill.circle(e.x, e.y, e.fin() * (e.data / 2)); 7 | Draw.color(); 8 | 9 | Drawf.light(e.x , e.y, e.fin() * (e.data / 2 + horizonRad), horizonColor, 0.7); 10 | Draw.reset(); 11 | }); 12 | 13 | const charge = new Effect(38, e => { 14 | Draw.color(Color.valueOf("000000")); 15 | 16 | Angles.randLenVectors(e.id, 2, 1 + 40 * e.fout(), e.rotation, 180, (x, y) => { 17 | Lines.lineAngle(e.x + x, e.y + y, Mathf.angle(x, y), e.fslope() * 3 + 1); 18 | }); 19 | }); 20 | 21 | const bh = require("libs/bulletTypes/blackHoleBulletType"); 22 | const ballOfSucc = bh.blackHole(6, horizonColor, horizonRad, 25, {}); 23 | 24 | const kugelblitz = extend(PowerTurret, "blackhole", { 25 | setStats(){ 26 | this.super$setStats(); 27 | }, 28 | load(){ 29 | this.super$load(); 30 | 31 | this.spaceRegion = Core.atlas.find(this.name + "-space"); 32 | }, 33 | size: 4, 34 | range: 128, 35 | health: 800, 36 | reloadTime: 520, 37 | shootEffect: Fx.none, 38 | smokeEffect: Fx.none, 39 | rotateSpeed: 1.25, 40 | shootSound: Sounds.release, 41 | shootType: ballOfSucc, 42 | chargeEffect: charge, 43 | chargeBeginEffect: chargeBegin, 44 | chargeTime: 50, 45 | chargeMaxDelay: 30, 46 | chargeEffects: 16, 47 | recoilAmount: 2, 48 | heatColor: Color.valueOf("000000"), 49 | restitution: 0.015, 50 | cooldown: 0.005, 51 | shootLength: 0 52 | }); 53 | 54 | kugelblitz.setupRequirements(Category.turret, ItemStack.with( 55 | Items.titanium, 100, 56 | Items.thorium, 150, 57 | Items.plastanium, 250, 58 | Items.surgeAlloy, 250, 59 | Items.silicon, 800, 60 | Items.phaseFabric, 500, 61 | Vars.content.getByName(ContentType.item, "prog-mats-techtanite"), 500 62 | )); 63 | 64 | const tmpCol = new Color(); 65 | const pow6In = new Interp.PowIn(6); 66 | 67 | //More stolen code :D 68 | kugelblitz.heatDrawer = tile => { 69 | if(tile.heat <= 0.00001) return; 70 | var r = pow6In.apply(tile.heat); 71 | var g = (Interp.pow3In.apply(tile.heat) + ((1 - Interp.pow3In.apply(tile.heat)) * 0.12)) / 2; 72 | var b = Interp.pow2Out.apply(tile.heat); 73 | var a = Interp.pow2Out.apply(tile.heat); 74 | tmpCol.set(r, g, b, a); 75 | Draw.color(tmpCol); 76 | 77 | Draw.blend(Blending.additive); 78 | Draw.rect(kugelblitz.heatRegion, tile.x + kugelblitz.tr2.x, tile.y + kugelblitz.tr2.y, tile.rotation - 90); 79 | Draw.blend(); 80 | Draw.color(); 81 | }; 82 | 83 | const spaceColor = new Color.valueOf("140017"); 84 | 85 | kugelblitz.buildType = ent => { 86 | ent = extend(PowerTurret.PowerTurretBuild, kugelblitz, { 87 | setEff(){ 88 | this._spaceAlpha = 0; 89 | }, 90 | draw(){ 91 | this.super$draw(); 92 | 93 | Tmp.v1.trns(this.rotation - 90, 0, -this.recoil); 94 | Tmp.v1.add(this.x, this.y); 95 | 96 | Draw.color(spaceColor.cpy().shiftHue(Time.time / 2).shiftValue(Mathf.absin(Time.time, 4, 0.15))); 97 | Draw.alpha(this._spaceAlpha); 98 | Draw.rect(kugelblitz.spaceRegion, Tmp.v1.x, Tmp.v1.y, this.rotation - 90); 99 | Draw.reset(); 100 | }, 101 | updateTile(){ 102 | this.super$updateTile(); 103 | 104 | this._spaceAlpha = Mathf.lerpDelta(this._spaceAlpha, Mathf.num(this.cons.valid()), 0.1); 105 | } 106 | }); 107 | ent.shootLoc = new Vec2(); 108 | ent.setEff(); 109 | 110 | return ent; 111 | }; -------------------------------------------------------------------------------- /scripts/turrets/progressed/misc/tinker.js: -------------------------------------------------------------------------------- 1 | const sBul = require("libs/bulletTypes/sentryBulletType"); 2 | const launch = require("libs/turretTypes/launchTurretType"); 3 | const eff = require("libs/PMfx"); 4 | const citem = name => Vars.content.getByName(ContentType.item, "prog-mats-" + name + "-sentry-box"); 5 | const cunit = name => Vars.content.getByName(ContentType.unit, "prog-mats-" + name); 6 | 7 | const trail = eff.trailEffect(150, 240, -1); 8 | trail.layer = Layer.effect + 0.001; 9 | 10 | const engi = launch.launchTurret(ItemTurret, ItemTurret.ItemTurretBuild, "tinker", { 11 | size: 3, 12 | reloadTime: 60 * 10, 13 | minRange: 5 * Vars.tilesize, 14 | range: 40 * Vars.tilesize, 15 | velocityInaccuracy: 0.2, 16 | maxAmmo: 3, 17 | cooldown: 0.03, 18 | recoilAmount: 6, 19 | restitution: 0.02, 20 | shootShake: 2, 21 | shootLength: 16 22 | }, {}); 23 | 24 | engi.setupRequirements(Category.turret, ItemStack.with( 25 | Items.copper, 125, 26 | Items.lead, 75, 27 | Items.silicon, 30, 28 | Items.titanium, 50 29 | )); 30 | 31 | const sentryBasic = sBul.sentryBullet(cunit("basic-sentry"), true, { 32 | lifetime: 120, 33 | speed: 2, 34 | trailEffect: trail 35 | }); 36 | 37 | const sentryStrike = sBul.sentryBullet(cunit("strike-sentry"), true, { 38 | lifetime: 120, 39 | speed: 2, 40 | trailEffect: trail 41 | }); 42 | 43 | const sentryDash = sBul.sentryBullet(cunit("dash-sentry"), true, { 44 | lifetime: 120, 45 | speed: 2, 46 | trailEffect: trail 47 | }); 48 | 49 | engi.ammo(citem("basic"), sentryBasic, citem("strike"), sentryStrike, citem("dash"), sentryDash); -------------------------------------------------------------------------------- /scripts/turrets/progressed/missile/missile-i.js: -------------------------------------------------------------------------------- 1 | const bul = require("libs/bulletTypes/strikeBulletType"); 2 | const eff = require("libs/PMfx"); 3 | 4 | const trail = eff.trailEffect(50, 100, -1); 5 | trail.layer = Layer.bullet; 6 | 7 | const boom = eff.scaledLargeBlast(0.5); 8 | 9 | //(drop radius, stop radius, unstop?, start on owner, given data, snap rot, extra stuff); 10 | 11 | const missile = bul.strikeBullet(0, 8, false, true, true, false, { 12 | sprite: "prog-mats-storm", 13 | riseEngineSize: 5, 14 | fallEngineSize: 5, 15 | trailSize: 0.2, 16 | damage: 28, 17 | splashDamage: 72, 18 | splashDamageRadius: 30, 19 | speed: 2.4, 20 | homingPower: 0.035, 21 | homingRange: 200, 22 | cooldown: 0.001, 23 | lifetime: 90, 24 | elevation: 150, 25 | riseTime: 30, 26 | fallTime: 20, 27 | ammmoMultiplier: 4, 28 | targetRad: 0.5, 29 | hitSound: Sounds.explosion, 30 | collidesAir: false, 31 | hitShake: 3, 32 | weaveWidth: 12, 33 | weaveSpeed: 0.5, 34 | trailParam: 3, 35 | trailEffect: trail, 36 | despawnEffect: boom 37 | }); 38 | 39 | const actualSwarmer = extend(ItemTurret, "missile-i", { 40 | load(){ 41 | this.super$load(); 42 | this.heatRegions = []; 43 | for(var i = 0; i < 9; i++){ 44 | this.heatRegions[i] = Core.atlas.find(this.name + "-heat-" + i); 45 | } 46 | }, 47 | health: 1430, 48 | size: 3, 49 | range: 160, 50 | reloadTime: 75, 51 | shootSound: Sounds.missile, 52 | cooldown: 0.005, 53 | shootShake: 1, 54 | targetAir: false, 55 | burstSpacing: 7, 56 | shots: 9, 57 | inaccuracy: 15, 58 | shootEffect: Fx.none, 59 | smokeEffect: Fx.none, 60 | maxAmmo: 36, 61 | ammoPerShot: 9, 62 | xOffsets: [-31/4, 0, 31/4, -29/4, 0, 29/4, -31/4, 0, 31/4], 63 | yOffsets: [31/4, 29/4, 31/4, 0, 0, 0, -31/4, -29/4, -31/4], 64 | }); 65 | actualSwarmer.setupRequirements(Category.turret, ItemStack.with( 66 | Items.copper, 180, 67 | Items.graphite, 140, 68 | Items.silicon, 65, 69 | Items.titanium, 70 70 | )); 71 | 72 | actualSwarmer.ammo(Items.blastCompound, missile); 73 | 74 | actualSwarmer.buildType = ent => { 75 | ent = extend(ItemTurret.ItemTurretBuild, actualSwarmer, { 76 | setEffs(){ 77 | this.heats = []; 78 | this.shot = []; 79 | for(var i = 0; i < 9; i++){ 80 | this.heats[i] = 0; 81 | this.shot[i] = false; 82 | } 83 | this.firing = false; 84 | this._speedScl = 0; 85 | }, 86 | draw(){ 87 | Draw.rect(actualSwarmer.baseRegion, this.x, this.y); 88 | Draw.rect(actualSwarmer.region, this.x, this.y); 89 | 90 | if(this.hasAmmo() && this.peekAmmo() != null){ 91 | Draw.draw(Draw.z(), () => { 92 | for(var i = 0; i < actualSwarmer.shots; i++){ 93 | if(!this.shot[i]){ 94 | let x = actualSwarmer.xOffsets[i] + this.x; 95 | let y = actualSwarmer.yOffsets[i] + this.y; 96 | let missileRegion = Core.atlas.find(this.peekAmmo().sprite); 97 | Drawf.construct(x, y, missileRegion, this.team.color, 0, this.reload / actualSwarmer.reloadTime, this._speedScl, this.reload); 98 | } 99 | } 100 | }); 101 | } 102 | 103 | for(var i = 0; i < actualSwarmer.shots; i++){ 104 | if(actualSwarmer.heatRegions[i] != Core.atlas.find("error") && this.heats[i] > 0.001){ 105 | Draw.color(actualSwarmer.heatColor, this.heats[i]); 106 | Draw.blend(Blending.additive); 107 | Draw.rect(actualSwarmer.heatRegions[i], this.x, this.y); 108 | Draw.blend(); 109 | Draw.color(); 110 | } 111 | } 112 | }, 113 | updateTile(){ 114 | this.super$updateTile(); 115 | for(var i = 0; i < 9; i++){ 116 | this.heats[i] = Mathf.lerpDelta(this.heats[i], 0, actualSwarmer.cooldown); 117 | } 118 | 119 | if(this.reload < actualSwarmer.reloadTime && this.hasAmmo() && this.consValid() && !this.firing){ 120 | this._speedScl = Mathf.lerpDelta(this._speedScl, 1, 0.05); 121 | }else{ 122 | this._speedScl = Mathf.lerpDelta(this._speedScl, 0, 0.05); 123 | } 124 | }, 125 | updateCooling(){ 126 | if(!this.firing && this.hasAmmo() && this.consValid()){ 127 | const liquid = this.liquids.current(); 128 | var maxUsed = actualSwarmer.consumes.get(ConsumeType.liquid).amount; 129 | 130 | var used = Math.min(Math.min(this.liquids.get(liquid), maxUsed * Time.delta), Math.max(0, ((actualSwarmer.reloadTime - this.reload) / actualSwarmer.coolantMultiplier) / liquid.heatCapacity)) * this.baseReloadSpeed(); 131 | this.reload += used * liquid.heatCapacity * actualSwarmer.coolantMultiplier; 132 | this.liquids.remove(liquid, used); 133 | 134 | if(Mathf.chance(0.06 * used)){ 135 | actualSwarmer.coolEffect.at(this.x + Mathf.range(actualSwarmer.size * Vars.tilesize / 2), this.y + Mathf.range(actualSwarmer.size * Vars.tilesize / 2)); 136 | } 137 | } 138 | }, 139 | updateShooting(){ 140 | if(this.hasAmmo() && this.consValid()){ 141 | if(this.reload > actualSwarmer.reloadTime && !this.firing){ 142 | var type = this.peekAmmo(); 143 | 144 | this.shoot(type); 145 | }else if(!this.firing){ 146 | this.reload += Time.delta * this.peekAmmo().reloadMultiplier * this.baseReloadSpeed(); 147 | } 148 | } 149 | }, 150 | shoot(type){ 151 | this.firing = true; 152 | 153 | for(var i = 0; i < actualSwarmer.shots; i++){ 154 | const sel = i; 155 | Time.run(actualSwarmer.burstSpacing * i, () => { 156 | if(!this.isValid() || !this.hasAmmo()) return; 157 | var x = actualSwarmer.xOffsets[sel] + this.x; 158 | var y = actualSwarmer.yOffsets[sel] + this.y; 159 | 160 | type.create(this, this.team, x, y, this.rotation + Mathf.range(actualSwarmer.inaccuracy), -1, 1 + Mathf.range(actualSwarmer.velocityInaccuracy), 1, [x, y, 0, false]); 161 | this.effects(); 162 | this.heats[sel] = 1; 163 | this.shot[sel] = true; 164 | }); 165 | } 166 | this.useAmmo(); 167 | 168 | Time.run(actualSwarmer.burstSpacing * actualSwarmer.shots, () => { 169 | this.reload = 0; 170 | this.firing = false; 171 | for(var i = 0; i < actualSwarmer.shots; i++){ 172 | this.shot[i] = false; 173 | } 174 | }); 175 | }, 176 | turnToTarget(targetRot){ 177 | this.rotation = targetRot; 178 | } 179 | }); 180 | ent.setEffs(); 181 | return ent; 182 | }; -------------------------------------------------------------------------------- /scripts/turrets/progressed/missile/missile-ii.js: -------------------------------------------------------------------------------- 1 | const bul = require("libs/bulletTypes/strikeBulletType"); 2 | const particle = require("libs/bulletTypes/particleBulletType"); 3 | const paralyze = require("libs/statusEffects/paralizeStatus"); 4 | const suffering = require("libs/statusEffects/teleportStatus"); 5 | const type = require("libs/turretTypes/missileTurretType"); 6 | const eff = require("libs/PMfx"); 7 | 8 | const citem = name => Vars.content.getByName(ContentType.item, "prog-mats-" + name); 9 | 10 | const trail = eff.trailEffect(120, 300, -1); 11 | trail.layer = Layer.bullet; 12 | 13 | const boom = eff.scaledNuclearExplosion(1.5, 0.25, 50, true); 14 | 15 | //(drop radius, stop radius, unstop?, start on owner, given data, snap rot, extra stuff); 16 | 17 | const missile = bul.strikeBullet(15, 10, true, true, false, false, { 18 | sprite: "prog-mats-strikeb", 19 | riseEngineSize: 16, 20 | fallEngineSize: 8, 21 | trailSize: 0.7, 22 | damage: 80, 23 | splashDamage: 750, 24 | splashDamageRadius: 64, 25 | speed: 2, 26 | homingPower: 0.05, 27 | homingRange: 330, 28 | lifetime: 180, 29 | elevation: 300, 30 | riseTime: 45, 31 | fallTime: 25, 32 | hitSound: Sounds.bang, 33 | hitShake: 8, 34 | trailParam: 5, 35 | trailChance: 0.2, 36 | trailEffect: trail, 37 | despawnEffect: boom, 38 | riseSpin: 360, 39 | fallSpin: 135 40 | }); 41 | missile.unitSort = (u, x, y) => -u.maxHealth + Mathf.dst2(x, y, u.x, u.y)/1000; 42 | 43 | const emp = bul.strikeBullet(35, 10, true, true, false, false, { 44 | sprite: "prog-mats-emp-strikeb", 45 | reloadMultiplier: 0.75, 46 | riseEngineSize: 16, 47 | fallEngineSize: 8, 48 | trailSize: 0.7, 49 | damage: 80, 50 | splashDamage: 150, 51 | splashDamageRadius: 48, 52 | speed: 3, 53 | homingPower: 0.075, 54 | homingRange: 330, 55 | lifetime: 120, 56 | elevation: 300, 57 | riseTime: 35, 58 | fallTime: 15, 59 | hitSound: Sounds.bang, 60 | hitShake: 8, 61 | trailParam: 5, 62 | trailChance: 0.2, 63 | trailEffect: trail, 64 | despawnEffect: boom, 65 | riseSpin: 270, 66 | fallSpin: 90, 67 | fragBullets: 360, 68 | fragVelocityMin: 0.5 69 | }); 70 | // (name, dmgMult, healthMult, speedMult, reloadMult, dmgTick, rotRnd) 71 | emp.fragBullet = particle.particleBullet(Pal.lancerLaser, Sounds.spark, 0.5, 0.7, 1, {}); 72 | emp.fragBullet.status = paralyze.paralizeStatus("prog-mats-no", 0.9, 1, 0.04, 0.55, 3, 8, false, 60 * 10 / 2); 73 | emp.fragBullet.statusDuration = 60 * 10; 74 | 75 | const quantum = bul.strikeBullet(25, 10, true, true, false, false, { 76 | sprite: "prog-mats-quantum-strikeb", 77 | reloadMultiplier: 0.5, 78 | riseEngineSize: 16, 79 | fallEngineSize: 8, 80 | trailSize: 0.7, 81 | damage: 80, 82 | splashDamage: 60, 83 | splashDamageRadius: 48, 84 | speed: 1.8, 85 | homingPower: 0.075, 86 | homingRange: 330, 87 | lifetime: 200, 88 | elevation: 300, 89 | riseTime: 30, 90 | fallTime: 25, 91 | hitSound: Sounds.bang, 92 | hitShake: 8, 93 | trailParam: 5, 94 | trailChance: 0.2, 95 | trailEffect: trail, 96 | despawnEffect: boom, 97 | riseSpin: 270, 98 | fallSpin: 90, 99 | fragBullets: 360, 100 | fragVelocityMin: 0.5 101 | }); 102 | // (name, dmgMult, healthMult, speedMult, reloadMult, dmgTick, rotRnd) 103 | quantum.fragBullet = particle.particleBullet(Color.valueOf("EFE4CA"), Sounds.sap, 0.25, 0.7, 1, {}); 104 | quantum.fragBullet.status = suffering.teleportStatus("prog-mats-yeeteth", 1, 1, 1, 1, 0, 40, 0.5, 60 * 10 / 2); 105 | quantum.fragBullet.statusDuration = 60 * 10; 106 | quantum.fragBullet.speed = 3; 107 | quantum.fragBullet.lifetime = 48; 108 | 109 | const ohnoMissilesReturns = type.missileTurret(false, ItemTurret, ItemTurret.ItemTurretBuild, "missile-ii", { 110 | health: 2870, 111 | size: 4, 112 | range: 330, 113 | reloadTime: 180, 114 | shootSound: Sounds.explosionbig, 115 | cooldown: 0.001, 116 | shootShake: 5, 117 | inaccuracy: 5, 118 | 119 | maxAmmo: 5, 120 | unitSort: (u, x, y) => -u.maxHealth 121 | }, {}); 122 | 123 | ohnoMissilesReturns.setupRequirements(Category.turret, ItemStack.with( 124 | Items.copper, 700, 125 | Items.lead, 350, 126 | Items.graphite, 300, 127 | Items.silicon, 300, 128 | Items.titanium, 250, 129 | citem("techtanite"), 120 130 | )); 131 | 132 | ohnoMissilesReturns.ammo(citem("basic-missile"), missile, citem("emp-missile"), emp, citem("quantum-missile"), quantum); -------------------------------------------------------------------------------- /scripts/turrets/progressed/pixel/pixel-i.js: -------------------------------------------------------------------------------- 1 | const bitLib = require("libs/turretTypes/bitTurretType"); 2 | const bitBLib = require("libs/bulletTypes/bitBulletType"); 3 | 4 | var size = 8; 5 | var radius = 40; 6 | var w = 2.5; 7 | var l = 3; 8 | const pew = bitBLib.bitBullet(Color.valueOf("FF84C1"), Color.valueOf("EF4A9D"), 0.05, size, false, 8, w, l, 30, radius + 2 * l, 75, 7.5, { 9 | speed: 2, 10 | lifetime: 90, 11 | damage: 5, 12 | splashDamage: 27, 13 | splashDamageRadius: radius, 14 | hitSize: size, 15 | homingPower: 0.01, 16 | homingRange: 160, 17 | knockback: 3, 18 | weaveScale: 10, 19 | weaveMag: 2 20 | }); 21 | 22 | const bit = bitLib.new8BitTurret("pixel-i", 8, PowerTurret, PowerTurret.PowerTurretBuild, false, { 23 | reloadTime: 70, 24 | recoilAmount: 4, 25 | inaccuracy: 15, 26 | range: 140, 27 | powerUse: 1.35, 28 | size: 2, 29 | shootType: pew 30 | }, {}); 31 | 32 | bit.setupRequirements(Category.turret, ItemStack.with( 33 | Items.copper, 50, 34 | Items.lead, 60, 35 | Items.silicon, 40, 36 | Items.titanium, 30 37 | )); -------------------------------------------------------------------------------- /scripts/turrets/progressed/tesla/tesla-i.js: -------------------------------------------------------------------------------- 1 | const tV = new Vec2(); 2 | const tV2 = new Vec2(); 3 | 4 | //Stolen effect from [redacted] from [redacted/redacted] 5 | //Why do I keep stealing things. 6 | const targetLightning = new Effect(10, 500, e => { 7 | var length = e.data[0]; 8 | var tileLength = Mathf.round(length / 8); 9 | 10 | Lines.stroke(e.data[1] * e.fout()); 11 | Draw.color(e.color, Color.white, e.fin()); 12 | 13 | for(var i = 0; i < tileLength; i++){ 14 | var offsetXA = (i == 0) ? 0 : Mathf.randomSeed(e.id + (i * 6413), -4.5, 4.5); 15 | var offsetYA = (length / tileLength) * i; 16 | 17 | var f = i + 1; 18 | 19 | var offsetXB = (f == tileLength) ? 0 : Mathf.randomSeed(e.id + (f * 6413), -4.5, 4.5); 20 | var offsetYB = (length / tileLength) * f; 21 | 22 | tV.trns(e.rotation, offsetYA, offsetXA); 23 | tV.add(e.x, e.y); 24 | 25 | tV2.trns(e.rotation, offsetYB, offsetXB); 26 | tV2.add(e.x, e.y); 27 | 28 | Lines.line(tV.x, tV.y, tV2.x, tV2.y, false); 29 | Fill.circle(tV.x, tV.y, Lines.getStroke() / 2); 30 | Drawf.light(e.data[2], tV.x, tV.y, tV2.x, tV2.y, e.data[1] * 3, e.color, 0.4); 31 | }; 32 | Fill.circle(tV2.x, tV2.y, Lines.getStroke() / 2); 33 | }); 34 | targetLightning.layer = Layer.bullet + 0.01; 35 | 36 | const lightningLine = new Vec2(); 37 | const lightningCol = Pal.surge; 38 | 39 | const ringZap = extend(LightningBulletType, { 40 | damage: 8, 41 | lightningLength: 5, 42 | lightningLengthRand: 3, 43 | lightningAngle: 0, 44 | lightningColor: lightningCol, 45 | lightRadius: 24, 46 | lightOpcaity: 0.7, 47 | hittable: false 48 | }); 49 | 50 | const teslaRing = extend(PowerTurret, "tesla-i", { 51 | setStats(){ 52 | this.super$setStats(); 53 | 54 | this.stats.remove(Stat.inaccuracy); 55 | this.stats.add(Stat.inaccuracy, teslaRing.inaccuracy / 8, StatUnit.blocks); 56 | }, 57 | size: 1, 58 | health: 260, 59 | powerUse: 3.6, 60 | reloadTime: 60, 61 | shootCone: 360, 62 | heatColor: Color.valueOf("fff694"), 63 | shootType: ringZap, 64 | range: 72, 65 | shots: 2, 66 | zaps: 4, 67 | inaccuracy: 32, 68 | angleRand: 27, 69 | lightningColor: lightningCol, 70 | shootSound: Sounds.spark, 71 | shootEffect: Fx.sparkShoot 72 | }); 73 | 74 | teslaRing.setupRequirements(Category.turret, ItemStack.with( 75 | Items.copper, 45, 76 | Items.lead, 60, 77 | Items.silicon, 25, 78 | Items.titanium, 25 79 | )); 80 | 81 | const shootLoc = new Vec2(); 82 | const inacc = new Vec2(); 83 | 84 | teslaRing.buildType = ent => { 85 | ent = extend(PowerTurret.PowerTurretBuild, teslaRing, { 86 | setEff(){ 87 | this._currentTarget = 0; 88 | this._shootAngle = 0; 89 | this._dist = 0; 90 | }, 91 | shoot(type){ 92 | //I have ascended to stealing code from myself. 93 | this._targetX.clear(); 94 | this._targetY.clear(); 95 | 96 | Units.nearbyEnemies(this.team, this.x - teslaRing.range, this.y - teslaRing.range, teslaRing.range * 2, teslaRing.range * 2, e => { 97 | if(Mathf.within(this.x, this.y, e.x, e.y, teslaRing.range) && !e.dead){ 98 | if(this._targetX.size <= 127){ 99 | this._targetX.add(e.x); 100 | this._targetY.add(e.y); 101 | } 102 | }; 103 | }); 104 | 105 | var tx = Vars.world.toTile(this.x); 106 | var ty = Vars.world.toTile(this.y); 107 | 108 | var tileRange = Mathf.floorPositive(teslaRing.range / Vars.tilesize + 1); 109 | 110 | this._targetBlocks.clear(); 111 | 112 | for(var x = -tileRange + tx; x <= tileRange + tx; x++){ 113 | yGroup: 114 | for(var y = -tileRange + ty; y <= tileRange + ty; y++){ 115 | if(!Mathf.within(x * Vars.tilesize, y * Vars.tilesize, this.x, this.y, teslaRing.range)) continue yGroup; 116 | var other = Vars.world.build(x, y); 117 | if(other == null) continue yGroup; 118 | if(!this._targetBlocks.contains(other.pos())){ 119 | if(other.team != this.team && !other.dead){ 120 | if(this._targetX.size <= 127){ 121 | this._targetX.add(other.x); 122 | this._targetY.add(other.y); 123 | } 124 | } 125 | }; 126 | }; 127 | }; 128 | 129 | if(this._targetX.size >= 0){ 130 | for(var i = 0; i < teslaRing.shots; i++){ 131 | this._currentTarget = Mathf.floor(Mathf.random(this._targetX.size - 0.001)); 132 | inacc.trns(Mathf.random(360), 0, Mathf.range(teslaRing.inaccuracy)); 133 | if(this._currentTarget >= 0){ 134 | this.heat = 1; 135 | var targX = this._targetX.get(this._currentTarget) + inacc.x; 136 | var targY = this._targetY.get(this._currentTarget) + inacc.y; 137 | 138 | var shootLocs = [0.75, 2.5]; 139 | shootLoc.trns(Mathf.random(360), shootLocs[Mathf.round(Mathf.random(1))]); 140 | 141 | this._shootAngle = Angles.angle(this.x + shootLoc.x, this.y + shootLoc.y, targX, targY); 142 | this._dist = Mathf.dst(this.x + shootLoc.x, this.y + shootLoc.y, targX, targY); 143 | 144 | targetLightning.at(this.x + shootLoc.x, this.y + shootLoc.y, this._shootAngle, teslaRing.lightningColor, [this._dist, 5, this.team]); 145 | teslaRing.shootSound.at(this.x + shootLoc.x, this.y + shootLoc.y, Mathf.random(0.9, 1.1)); 146 | teslaRing.shootEffect.at(this.x + shootLoc.x, this.y + shootLoc.y, this._shootAngle, teslaRing.lightningColor); 147 | 148 | const shootX = targX; 149 | const shootY = targY; 150 | Time.run(3, () => { 151 | for(var j = 0; j < teslaRing.zaps; j++){ 152 | teslaRing.shootType.create(this, this.team, shootX, shootY, ((360 / teslaRing.zaps) * j) + Mathf.range(teslaRing.angleRand)); 153 | } 154 | }); 155 | } 156 | } 157 | } 158 | }, 159 | shouldTurn(){ 160 | return false; 161 | } 162 | }); 163 | ent._targetX = new Seq(127); 164 | ent._targetY = new Seq(127); 165 | ent._targetBlocks = new Seq(127); 166 | ent.setEff(); 167 | return ent; 168 | }; -------------------------------------------------------------------------------- /scripts/turrets/progressed/tesla/tesla-ii.js: -------------------------------------------------------------------------------- 1 | const tV = new Vec2(); 2 | const tV2 = new Vec2(); 3 | 4 | //Stolen effect from [redacted] from [redacted/redacted] 5 | //Why do I keep stealing things. 6 | const targetLightning = new Effect(10, 500, e => { 7 | var length = e.data[0]; 8 | var tileLength = Mathf.round(length / 8); 9 | 10 | Lines.stroke(e.data[1] * e.fout()); 11 | Draw.color(e.color, Color.white, e.fin()); 12 | 13 | for(var i = 0; i < tileLength; i++){ 14 | var offsetXA = (i == 0) ? 0 : Mathf.randomSeed(e.id + (i * 6413), -4.5, 4.5); 15 | var offsetYA = (length / tileLength) * i; 16 | 17 | var f = i + 1; 18 | 19 | var offsetXB = (f == tileLength) ? 0 : Mathf.randomSeed(e.id + (f * 6413), -4.5, 4.5); 20 | var offsetYB = (length / tileLength) * f; 21 | 22 | tV.trns(e.rotation, offsetYA, offsetXA); 23 | tV.add(e.x, e.y); 24 | 25 | tV2.trns(e.rotation, offsetYB, offsetXB); 26 | tV2.add(e.x, e.y); 27 | 28 | Lines.line(tV.x, tV.y, tV2.x, tV2.y, false); 29 | Fill.circle(tV.x, tV.y, Lines.getStroke() / 2); 30 | Drawf.light(e.data[2], tV.x, tV.y, tV2.x, tV2.y, e.data[1] * 3, e.color, 0.4); 31 | }; 32 | Fill.circle(tV2.x, tV2.y, Lines.getStroke() / 2); 33 | }); 34 | targetLightning.layer = Layer.bullet + 0.01; 35 | 36 | const lightningLine = new Vec2(); 37 | const lightningCol = Pal.surge; 38 | 39 | const coilZap = extend(LightningBulletType, { 40 | damage: 12, 41 | lightningLength: 6, 42 | lightningLengthRand: 4, 43 | lightningAngle: 0, 44 | lightningColor: lightningCol, 45 | lightRadius: 24, 46 | lightOpcaity: 0.7, 47 | hittable: false 48 | }); 49 | 50 | const teslaCoil = extend(PowerTurret, "tesla-ii", { 51 | setStats(){ 52 | this.super$setStats(); 53 | 54 | this.stats.remove(Stat.inaccuracy); 55 | this.stats.add(Stat.inaccuracy, teslaCoil.inaccuracy / 8, StatUnit.blocks); 56 | }, 57 | health: 870, 58 | powerUse: 4.8, 59 | reloadTime: 40, 60 | shootCone: 360, 61 | heatColor: Color.valueOf("fff694"), 62 | size: 2, 63 | shootType: coilZap, 64 | range: 130, 65 | shots: 2, 66 | zaps: 6, 67 | inaccuracy: 28, 68 | angleRand: 19, 69 | lightningColor: lightningCol, 70 | shootSound: Sounds.spark, 71 | shootEffect: Fx.sparkShoot 72 | }); 73 | 74 | teslaCoil.setupRequirements(Category.turret, ItemStack.with( 75 | Items.copper, 60, 76 | Items.lead, 85, 77 | Items.graphite, 40, 78 | Items.silicon, 55, 79 | Items.titanium, 80 80 | )); 81 | 82 | const shootLoc = new Vec2(); 83 | const inacc = new Vec2(); 84 | 85 | teslaCoil.buildType = ent => { 86 | ent = extend(PowerTurret.PowerTurretBuild, teslaCoil, { 87 | setEff(){ 88 | this._currentTarget = 0; 89 | this._shootAngle = 0; 90 | this._dist = 0; 91 | }, 92 | shoot(type){ 93 | //I have ascended to stealing code from myself. 94 | this._targetX.clear(); 95 | this._targetY.clear(); 96 | 97 | Units.nearbyEnemies(this.team, this.x - teslaCoil.range, this.y - teslaCoil.range, teslaCoil.range * 2, teslaCoil.range * 2, e => { 98 | if(Mathf.within(this.x, this.y, e.x, e.y, teslaCoil.range) && !e.dead){ 99 | if(this._targetX.size <= 255){ 100 | this._targetX.add(e.x); 101 | this._targetY.add(e.y); 102 | } 103 | }; 104 | }); 105 | 106 | var tx = Vars.world.toTile(this.x); 107 | var ty = Vars.world.toTile(this.y); 108 | 109 | var tileRange = Mathf.floorPositive(teslaCoil.range / Vars.tilesize + 1); 110 | 111 | this._targetBlocks.clear(); 112 | 113 | for(var x = -tileRange + tx; x <= tileRange + tx; x++){ 114 | yGroup: 115 | for(var y = -tileRange + ty; y <= tileRange + ty; y++){ 116 | if(!Mathf.within(x * Vars.tilesize, y * Vars.tilesize, this.x, this.y, teslaCoil.range)) continue yGroup; 117 | var other = Vars.world.build(x, y); 118 | if(other == null) continue yGroup; 119 | if(!this._targetBlocks.contains(other.pos())){ 120 | if(other.team != this.team && !other.dead){ 121 | if(this._targetX.size <= 255){ 122 | this._targetX.add(other.x); 123 | this._targetY.add(other.y); 124 | } 125 | } 126 | }; 127 | }; 128 | }; 129 | 130 | if(this._targetX.size >= 0){ 131 | for(var i = 0; i < teslaCoil.shots; i++){ 132 | this._currentTarget = Mathf.floor(Mathf.random(this._targetX.size - 0.001)); 133 | inacc.trns(Mathf.random(360), 0, Mathf.range(teslaCoil.inaccuracy)); 134 | if(this._currentTarget >= 0){ 135 | this.heat = 1; 136 | var targX = this._targetX.get(this._currentTarget) + inacc.x; 137 | var targY = this._targetY.get(this._currentTarget) + inacc.y; 138 | 139 | var shootLocs = [2, 6]; 140 | shootLoc.trns(Mathf.random(360), shootLocs[Mathf.round(Mathf.random(1))]); 141 | 142 | this._shootAngle = Angles.angle(this.x + shootLoc.x, this.y + shootLoc.y, targX, targY); 143 | this._dist = Mathf.dst(this.x + shootLoc.x, this.y + shootLoc.y, targX, targY); 144 | 145 | targetLightning.at(this.x + shootLoc.x, this.y + shootLoc.y, this._shootAngle, teslaCoil.lightningColor, [this._dist, 5, this.team]); 146 | teslaCoil.shootSound.at(this.x + shootLoc.x, this.y + shootLoc.y, Mathf.random(0.9, 1.1)); 147 | teslaCoil.shootEffect.at(this.x + shootLoc.x, this.y + shootLoc.y, this._shootAngle, teslaCoil.lightningColor); 148 | 149 | const shootX = targX; 150 | const shootY = targY; 151 | Time.run(3, () => { 152 | for(var j = 0; j < teslaCoil.zaps; j++){ 153 | teslaCoil.shootType.create(this, this.team, shootX, shootY, ((360 / teslaCoil.zaps) * j) + Mathf.range(teslaCoil.angleRand)); 154 | } 155 | }); 156 | } 157 | } 158 | } 159 | }, 160 | shouldTurn(){ 161 | return false; 162 | } 163 | }); 164 | ent._targetX = new Seq(255); 165 | ent._targetY = new Seq(255); 166 | ent._targetBlocks = new Seq(255); 167 | ent.setEff(); 168 | return ent; 169 | }; -------------------------------------------------------------------------------- /scripts/turrets/sandy/everythingGun.js: -------------------------------------------------------------------------------- 1 | const bfrit = (b, lifetime) => { 2 | if(b.fragBullet == null){ 3 | var dmg = b.damage + b.splashDamage + b.lightningDamage * b.lightning * b.lightningLength; 4 | }else{ 5 | var dmg = b.damage + b.splashDamage + b.lightningDamage * b.lightning * b.lightningLength + bfrit(b.fragBullet, b.lifetime) * b.fragBullets; 6 | } 7 | if(b instanceof ContinuousLaserBulletType){ 8 | return dmg * lifetime / 5; 9 | }else{ 10 | return dmg; 11 | } 12 | }; 13 | 14 | const everythingGun = extend(PowerTurret, "everything-gun", { 15 | load(){ 16 | this.super$load(); 17 | this.baseRegion = Core.atlas.find("prog-mats-block-" + this.size); 18 | }, 19 | init(){ 20 | this.super$init(); 21 | 22 | // Bullet Loader 23 | Vars.content.units().each(u => { 24 | u.weapons.each(w => { 25 | if(w.bullet != null){ 26 | if(!w.bullet.killShooter){ 27 | if(this.bullets.indexOf(w.bullet) == -1){ 28 | this.bullets.add([w.bullet, w.shootSound, w.bullet.lifetime, false]); 29 | }; 30 | } 31 | } 32 | }); 33 | }); 34 | Vars.content.blocks().each(b => { 35 | if(b != Vars.content.getByName(ContentType.block, "prog-mats-everything-gun") && b instanceof Turret){ 36 | if(b instanceof LaserTurret){ 37 | if(b.shootType != null){ 38 | if(this.bullets.indexOf(b.shootType) == -1){ 39 | this.bullets.add([b.shootType, b.shootSound, b.shootType.lifetime + b.shootDuration, true]); 40 | } 41 | } 42 | }else if(b instanceof PowerTurret){ 43 | if(b.shootType != null){ 44 | if(this.bullets.indexOf(b.shootType) == -1){ 45 | this.bullets.add([b.shootType, b.shootSound, b.shootType.lifetime, false]); 46 | } 47 | } 48 | }else if(b instanceof ItemTurret){ 49 | Vars.content.items().each(i => { 50 | if(b.ammoTypes.get(i) != null){ 51 | if(this.bullets.indexOf(b.ammoTypes.get(i)) == -1){ 52 | this.bullets.add([b.ammoTypes.get(i), b.shootSound, b.ammoTypes.get(i).lifetime, false]); 53 | } 54 | } 55 | }); 56 | } 57 | } 58 | }); 59 | 60 | this.bullets.sort(floatf(b => {return bfrit(b[0], b[2])})); 61 | 62 | // Random amounts of every item. it's sandboxOnly anyways so it doesn't matter. 63 | let stacks = new Seq(); 64 | Vars.content.items().each(e => { 65 | let rand = Mathf.random(); 66 | let repeats = rand > 0.05 ? 1 : rand > 0.02 ? 2 : 4; 67 | for(let i = 0; i < repeats; i++){ 68 | stacks.add(new ItemStack(e, Mathf.round(Mathf.random(100000)))); 69 | } 70 | }); 71 | stacks.shuffle(); 72 | this.requirements = ItemStack.mult(stacks.toArray(ItemStack), 1); 73 | }, 74 | health: 12345, 75 | reloadTime: 1, 76 | size: 6, 77 | powerUse: 800000000/60, 78 | shootType: Bullets.standardCopper, 79 | range: 4400, 80 | shootLength: 0, 81 | shootCone: 1, 82 | cooldown: 0.01, 83 | scaledowm: 0.03, 84 | inaccuracy: 360, 85 | bullets: new Seq(), 86 | shootEffect: Fx.none, 87 | smokeEffect: Fx.none 88 | }); 89 | 90 | everythingGun.setupRequirements(Category.turret, BuildVisibility.sandboxOnly, ItemStack.empty); 91 | 92 | const swirl = new Effect(120, 1000, e => { 93 | Tmp.v1.trns(Mathf.randomSeed(e.id, 360) + e.rotation * e.fin(), (16 + e.data[1]) * e.fin()); 94 | Tmp.v1.add(e.x, e.y); 95 | 96 | Draw.color(e.color, Color.black, 0.25 + e.fin() * 0.75); 97 | Fill.circle(Tmp.v1.x , Tmp.v1.y, e.data[0] * e.fout()); 98 | }); 99 | swirl.layer = Layer.turret; 100 | 101 | const max = 6000; 102 | 103 | everythingGun.buildType = ent => { 104 | ent = extend(PowerTurret.PowerTurretBuild, everythingGun, { 105 | setEffs(){ 106 | this.drawBias = 0; 107 | this.bias = 0.1; 108 | this.selectedBullet = 0; 109 | this.drawRot = Mathf.random(360); 110 | }, 111 | updateTile(){ 112 | this.super$updateTile(); 113 | 114 | for(var i = 0; i < 1 + this.bias / (max / 100); i++){ 115 | if(Mathf.chanceDelta(1)){ 116 | swirl.at(this.x, this.y, Mathf.random(this.bias / (max / 45), this.bias / (max / 720)), this.team.color, [(4 + (this.bias / (max / 16))) + Mathf.sin((Time.time + Mathf.randomSeed(this.id)) / 30) * (this.bias / (max / 6)), this.bias / (max / 420) + Mathf.sin((Time.time + Mathf.randomSeed(this.id + 1)) / 30) * (this.bias / (max / 80))]); 117 | } 118 | } 119 | 120 | this.drawRot = Mathf.mod(this.drawRot - Time.delta * (this.bias / (max / 110)), 360); 121 | 122 | if(this.isShooting() && this.consValid()){ 123 | this.bias = Mathf.clamp(this.bias * Mathf.pow(1.003, this.edelta()), 0, max); 124 | }else{ 125 | this.bias = Mathf.lerpDelta(this.bias, 0.1, everythingGun.scaledowm); 126 | } 127 | }, 128 | updateShooting(){ 129 | if(this.reload >= everythingGun.reloadTime){ 130 | this.selectedBullet = Mathf.clamp(Mathf.floor(1 / (((1 / Mathf.random()) - 1) / this.bias + 1) * everythingGun.bullets.size), 0, everythingGun.bullets.size - 1); 131 | 132 | let type = this.peekAmmo(); 133 | 134 | this.shoot(type); 135 | 136 | this.reload = 0; 137 | }else{ 138 | this.reload += Time.delta * this.peekAmmo().reloadMultiplier * this.baseReloadSpeed(); 139 | } 140 | }, 141 | effects(){ 142 | everythingGun.shootEffect.at(this.x + everythingGun.tr.x, this.y + everythingGun.tr.y, this.rotation); 143 | everythingGun.smokeEffect.at(this.x + everythingGun.tr.x, this.y + everythingGun.tr.y, this.rotation); 144 | everythingGun.bullets.get(this.selectedBullet)[1].at(this.x + everythingGun.tr.x, this.y + everythingGun.tr.y, Mathf.random(0.9, 1.1)); 145 | 146 | if(everythingGun.shootShake > 0){ 147 | Effect.shake(everythingGun.shootShake, everythingGun.shootShake, this); 148 | } 149 | 150 | this.recoil = everythingGun.recoilAmount; 151 | }, 152 | draw(){ 153 | Draw.rect(everythingGun.baseRegion, this.x, this.y); 154 | Draw.z(Layer.turret); 155 | Drawf.shadow(everythingGun.region, this.x - (everythingGun.size / 2), this.y - (everythingGun.size / 2), this.drawRot); 156 | // Draw.rect(everythingGun.region, this.x, this.y, this.drawRot); 157 | Draw.rect(everythingGun.region, this.x, this.y, this.drawRot); 158 | }, 159 | bullet(type, angle){ 160 | var lifeScl = type.scaleVelocity ? Mathf.clamp(Mathf.dst(this.x + everythingGun.tr.x, this.y + everythingGun.tr.y, this.targetPos.x, this.targetPos.y) / type.range(), everythingGun.minRange / type.range(), everythingGun.range / type.range()) : 1; 161 | var laserScl = everythingGun.bullets.get(this.selectedBullet)[3] ? everythingGun.bullets.get(this.selectedBullet)[2]/this.peekAmmo().lifetime : 1; 162 | 163 | type.create(this, this.team, this.x + everythingGun.tr.x, this.y + everythingGun.tr.y, angle, 1 + Mathf.range(everythingGun.velocityInaccuracy), lifeScl * laserScl); 164 | }, 165 | useAmmo(){ 166 | return everythingGun.bullets.get(this.selectedBullet)[0]; 167 | }, 168 | peekAmmo(){ 169 | return everythingGun.bullets.get(this.selectedBullet)[0]; 170 | }, 171 | turnToTarget(targetRot){ 172 | this.rotation = targetRot; 173 | } 174 | }); 175 | ent.setEffs(); 176 | return ent; 177 | } -------------------------------------------------------------------------------- /scripts/units/progressed/sentryBasic.js: -------------------------------------------------------------------------------- 1 | const sentryUnitType = require("libs/unit/sentryUnit"); 2 | 3 | const sentryBasic = sentryUnitType.sentryUnit("basic-sentry", { 4 | duration: 16 * 60 5 | }); 6 | 7 | const bul = extend(BasicBulletType, { 8 | sprite: "bullet", 9 | damage: 20, 10 | speed: 3, 11 | width: 7, 12 | height: 9, 13 | homingPower: 0.11, 14 | homingRange: 128, 15 | lifetime: 80 16 | }); 17 | 18 | const cannon = extendContent(Weapon, "large-weapon", { 19 | bullet: bul, 20 | rotate: false, 21 | reload: 6, 22 | alternate: true, 23 | x: 16/4, 24 | y: 9/4, 25 | recoil: 7/4, 26 | shootX: -2.5/4, 27 | ejectEffect: Fx.casing1, 28 | top: false 29 | }); 30 | 31 | sentryBasic.weapons.add(cannon); -------------------------------------------------------------------------------- /scripts/units/progressed/sentryDash.js: -------------------------------------------------------------------------------- 1 | const sentryUnitType = require("libs/unit/sentryUnit"); 2 | 3 | const len = 96; 4 | 5 | const sentryDash = sentryUnitType.sentryUnit("dash-sentry", { 6 | health: 450, 7 | rotateSpeed: 30, 8 | range: len * 6, 9 | duration: 12 * 60 10 | }); 11 | 12 | const col = Pal.surge; 13 | 14 | const dash = extend(LaserBulletType, { 15 | damage: 90, 16 | length: len, 17 | recoil: -10, 18 | colors: [Color.valueOf("f3e97966"), col, Color.white], 19 | itemCapacity: 15, 20 | range(){ 21 | return this.length * 6; 22 | } 23 | }); 24 | 25 | const laser = extendContent(Weapon, sentryDash.name + "-laser", { 26 | bullet: dash, 27 | rotate: true, 28 | rotateSpeed: 60, 29 | reload: 20, 30 | x: 0, 31 | y: -8/4, 32 | shootY: 17/4, 33 | mirror: false, 34 | top: true, 35 | shootCone: 2, 36 | shootSound: Sounds.laser 37 | }); 38 | 39 | sentryDash.weapons.add(laser); -------------------------------------------------------------------------------- /scripts/units/progressed/sentryStrike.js: -------------------------------------------------------------------------------- 1 | const sentryUnitType = require("libs/unit/sentryUnit"); 2 | const strike = require("libs/bulletTypes/strikeBulletType"); 3 | const eff = require("libs/PMfx"); 4 | 5 | const sentryStrike = sentryUnitType.sentryUnit("strike-sentry", { 6 | health: 150 7 | }); 8 | 9 | const trail = eff.trailEffect(50, 100, -1); 10 | trail.layer = Layer.bullet; 11 | 12 | const boom = eff.scaledLargeBlast(0.5); 13 | 14 | const mis = strike.strikeBullet(12, 8, true, false, true, false, { 15 | sprite: "prog-mats-storm", 16 | riseEngineSize: 5, 17 | fallEngineSize: 5, 18 | trailSize: 0.2, 19 | damage: 40, 20 | splashDamage: 140, 21 | splashDamageRadius: 42, 22 | speed: 2.4, 23 | homingPower: 0.035, 24 | homingRange: 200, 25 | cooldown: 0.001, 26 | lifetime: 90, 27 | elevation: 150, 28 | riseTime: 30, 29 | fallTime: 20, 30 | ammmoMultiplier: 4, 31 | targetRad: 0.5, 32 | hitSound: Sounds.explosion, 33 | hitShake: 3, 34 | trailParam: 3, 35 | trailEffect: trail, 36 | despawnEffect: boom 37 | }); 38 | 39 | const silo = extendContent(Weapon, sentryStrike.name + "-hole", { 40 | bullet: mis, 41 | rotate: false, 42 | mirror: false, 43 | alternate: false, 44 | top: false, 45 | reload: 20, 46 | x: 0, 47 | y: 0, 48 | recoil: 0, 49 | shootY: 0, 50 | shootCone: 360, 51 | inaccuracy: 15, 52 | shootSound: Sounds.missile 53 | }); 54 | 55 | sentryStrike.weapons.add(silo); -------------------------------------------------------------------------------- /sounds/bitHit.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sounds/bitHit.ogg -------------------------------------------------------------------------------- /sounds/bitShoot.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sounds/bitShoot.ogg -------------------------------------------------------------------------------- /sounds/chaosCharge.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sounds/chaosCharge.ogg -------------------------------------------------------------------------------- /sounds/chaosblast.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sounds/chaosblast.ogg -------------------------------------------------------------------------------- /sounds/popeshadowBlast.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sounds/popeshadowBlast.ogg -------------------------------------------------------------------------------- /sounds/popeshadowCharge.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sounds/popeshadowCharge.ogg -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-everything-wall-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-everything-wall-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-everything-wall-large-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-everything-wall-large-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-everything-wall-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-everything-wall-large.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-everything-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-everything-wall.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-phase-wall-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-phase-wall-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-phase-wall-large-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-phase-wall-large-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-phase-wall-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-phase-wall-large.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-phase-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-phase-wall.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-plastanium-wall-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-plastanium-wall-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-plastanium-wall-large-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-plastanium-wall-large-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-plastanium-wall-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-plastanium-wall-large.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-plastanium-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-plastanium-wall.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-surge-wall-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-surge-wall-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-surge-wall-large-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-surge-wall-large-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-surge-wall-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-surge-wall-large.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-surge-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-surge-wall.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-wall-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-wall-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-wall-large-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-wall-large-color.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-wall-large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-wall-large.png -------------------------------------------------------------------------------- /sprites/blocks/defense/sandy/sandbox-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/defense/sandy/sandbox-wall.png -------------------------------------------------------------------------------- /sprites/blocks/environment/progressed/technetium1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/environment/progressed/technetium1.png -------------------------------------------------------------------------------- /sprites/blocks/environment/progressed/technetium2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/environment/progressed/technetium2.png -------------------------------------------------------------------------------- /sprites/blocks/environment/progressed/technetium3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/environment/progressed/technetium3.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-laser-end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-laser-end.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-laser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-laser.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-power-boost-strobe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-power-boost-strobe.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-power-boost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-power-boost.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-power-node-strobe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-power-node-strobe.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-power-node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-power-node.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-power-source-strobe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-power-source-strobe.png -------------------------------------------------------------------------------- /sprites/blocks/power/sandy/rainbow-power-source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/power/sandy/rainbow-power-source.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-bottom.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-collider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-collider.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-glass.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-light-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-light-0.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-light-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-light-1.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/collider/mindron-collider-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/collider/mindron-collider-top.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/missile-crafter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/missile-crafter.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/sentry-builder-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/sentry-builder-color.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/sentry-builder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/sentry-builder.png -------------------------------------------------------------------------------- /sprites/blocks/production/progressed/shell-press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/production/progressed/shell-press.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/bases/block-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/bases/block-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/bases/block-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/bases/block-8.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-caps-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-cells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-cells.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-icon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-outline-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/i/eruptor-i-turret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/i/eruptor-i-turret.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-0-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-caps-1-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-cells-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-cells-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-cells-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-cells-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-icon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-7.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-outline-8.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-turret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/ii/eruptor-ii-turret.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-bottom.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-caps-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-cells-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-cells-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-cells-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-cells-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-heat-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-icon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-outline-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-side.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/eruptor/iii/eruptor-iii-side.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-frame-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-frame-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-frame-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-frame-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-frame-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-frame-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-10.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-11.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-7.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-8.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-heat-9.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/i/minigun-i-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/i/minigun-i-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-frame-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-frame-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-frame-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-frame-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-frame-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-frame-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-10.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-11.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-7.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-8.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-heat-9.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/ii/minigun-ii-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/ii/minigun-ii-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-frame-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-frame-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-frame-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-frame-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-frame-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-frame-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-10.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-11.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-7.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-8.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-heat-9.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/minigun/iii/minigun-iii-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/minigun/iii/minigun-iii-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/blackhole-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/blackhole-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/blackhole-space.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/blackhole-space.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/blackhole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/blackhole.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/chaos-array-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/chaos-array-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/chaos-array.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/chaos-array.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-bottom.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-cell-7.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-icon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-side0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-side0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-side1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-side1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/excalibur/excalibur-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/excalibur/excalibur-top.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper-part-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper-part-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper-part-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper-part-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper-part-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper-part-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/sniper/sniper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/sniper/sniper.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker-arrow-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker-top.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/misc/tinker/tinker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/misc/tinker/tinker.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-3.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-4.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-5.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-6.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-7.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i-heat-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i-heat-8.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/i/missile-i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/i/missile-i.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/ii/missile-ii-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/ii/missile-ii-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/ii/missile-ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/ii/missile-ii.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/iii/missile-iii-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/iii/missile-iii-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/missile/iii/missile-iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/missile/iii/missile-iii.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/i/multi-i-baseIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/i/multi-i-baseIcon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/i/multi-i-baseTurret.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/i/multi-i-baseTurret.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/i/multi-i-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/i/multi-i-icon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/i/multi-i-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/i/multi-i-outline.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/hailM-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/hailM-full.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/hailM-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/hailM-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/hailM-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/hailM-mask.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/hailM-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/hailM-outline.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/hailM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/hailM.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/unoM-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/unoM-full.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/unoM-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/unoM-mask.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/unoM-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/unoM-outline.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/unoM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/unoM.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/waveM-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/waveM-full.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/waveM-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/waveM-mask.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/waveM-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/waveM-outline.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/multi/mounts/waveM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/multi/mounts/waveM.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/pixel/i/pixel-i-side-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/pixel/i/pixel-i-side-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/pixel/i/pixel-i-side-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/pixel/i/pixel-i-side-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/i/tesla-i-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/i/tesla-i-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/i/tesla-i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/i/tesla-i.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/ii/tesla-ii-heat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/ii/tesla-ii-heat.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/ii/tesla-ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/ii/tesla-ii.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-heat-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-heat-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-heat-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-heat-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-heat-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-heat-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-icon.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-outline-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-outline-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-outline-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-outline-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-outline-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-outline-2.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-rotator-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-rotator-0.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-rotator-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-rotator-1.png -------------------------------------------------------------------------------- /sprites/blocks/turret/progressed/tesla/iii/tesla-iii-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/progressed/tesla/iii/tesla-iii-top.png -------------------------------------------------------------------------------- /sprites/blocks/turret/sandy/everything-gun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/blocks/turret/sandy/everything-gun.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/backhole-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/backhole-0.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/backhole-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/backhole-1.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/backhole-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/backhole-2.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/backhole-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/backhole-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/minigun-ball-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/minigun-ball-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/minigun-ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/minigun-ball.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/cluster-nukeb-frag-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/cluster-nukeb-frag-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/cluster-nukeb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/cluster-nukeb.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/drop-podb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/drop-podb.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/emp-nukeb-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/emp-nukeb-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/emp-nukeb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/emp-nukeb.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/nukeb-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/nukeb-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/nuke/nukeb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/nuke/nukeb.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/storm-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/storm-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/storm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/storm.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/strike/emp-strikeb-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/strike/emp-strikeb-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/strike/emp-strikeb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/strike/emp-strikeb.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/strike/quantum-strikeb-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/strike/quantum-strikeb-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/strike/quantum-strikeb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/strike/quantum-strikeb.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/strike/strikeb-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/strike/strikeb-back.png -------------------------------------------------------------------------------- /sprites/bullets/progressed/strike/strikeb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/bullets/progressed/strike/strikeb.png -------------------------------------------------------------------------------- /sprites/items/progressed/missile/basic-missile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/missile/basic-missile.png -------------------------------------------------------------------------------- /sprites/items/progressed/missile/emp-missile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/missile/emp-missile.png -------------------------------------------------------------------------------- /sprites/items/progressed/missile/missile-shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/missile/missile-shell.png -------------------------------------------------------------------------------- /sprites/items/progressed/missile/quantum-missile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/missile/quantum-missile.png -------------------------------------------------------------------------------- /sprites/items/progressed/nuke/basic-nuke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/nuke/basic-nuke.png -------------------------------------------------------------------------------- /sprites/items/progressed/nuke/cluster-nuke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/nuke/cluster-nuke.png -------------------------------------------------------------------------------- /sprites/items/progressed/nuke/emp-nuke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/nuke/emp-nuke.png -------------------------------------------------------------------------------- /sprites/items/progressed/nuke/nuke-shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/nuke/nuke-shell.png -------------------------------------------------------------------------------- /sprites/items/progressed/nuke/sentry-nuke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/nuke/sentry-nuke.png -------------------------------------------------------------------------------- /sprites/items/progressed/sentry/basic-sentry-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/sentry/basic-sentry-box.png -------------------------------------------------------------------------------- /sprites/items/progressed/sentry/dash-sentry-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/sentry/dash-sentry-box.png -------------------------------------------------------------------------------- /sprites/items/progressed/sentry/strike-sentry-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/sentry/strike-sentry-box.png -------------------------------------------------------------------------------- /sprites/items/progressed/techtanite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/items/progressed/techtanite.png -------------------------------------------------------------------------------- /sprites/liquds/progressed/magma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/liquds/progressed/magma.png -------------------------------------------------------------------------------- /sprites/ui/importpls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/ui/importpls.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryBasic/basic-sentry-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryBasic/basic-sentry-cell.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryBasic/basic-sentry-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryBasic/basic-sentry-full.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryBasic/basic-sentry-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryBasic/basic-sentry-outline.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryBasic/basic-sentry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryBasic/basic-sentry.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryDash/dash-sentry-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryDash/dash-sentry-cell.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryDash/dash-sentry-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryDash/dash-sentry-full.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryDash/dash-sentry-laser-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryDash/dash-sentry-laser-outline.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryDash/dash-sentry-laser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryDash/dash-sentry-laser.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryDash/dash-sentry-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryDash/dash-sentry-outline.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryDash/dash-sentry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryDash/dash-sentry.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryStrike/strike-sentry-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryStrike/strike-sentry-cell.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryStrike/strike-sentry-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryStrike/strike-sentry-full.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryStrike/strike-sentry-hole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryStrike/strike-sentry-hole.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryStrike/strike-sentry-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryStrike/strike-sentry-outline.png -------------------------------------------------------------------------------- /sprites/units/progressed/sentryStrike/strike-sentry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MEEPofFaith/prog-mats-js/bdd3c07e01dc238d0b581dd80037894803ea7482/sprites/units/progressed/sentryStrike/strike-sentry.png --------------------------------------------------------------------------------