Minor artwork update
							
								
								
									
										
											BIN
										
									
								
								res/logo.png
									
									
									
									
									
								
							
							
						
						| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 50 KiB | 
| Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 50 KiB | 
| Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 33 KiB | 
| Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 34 KiB | 
| @ -431,6 +431,6 @@ | ||||
| 	"format": "RGBA8888", | ||||
| 	"size": {"w":121,"h":240}, | ||||
| 	"scale": "0.1", | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:e1aa43844bd41a62665cbb0c503ebb65:4482f83c3403490091eed64b07ce6591:f159918d23e5952766c6d23ab52278c6$" | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$" | ||||
| } | ||||
| } | ||||
|  | ||||
| Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB | 
| @ -431,6 +431,6 @@ | ||||
| 	"format": "RGBA8888", | ||||
| 	"size": {"w":1007,"h":1968}, | ||||
| 	"scale": "1", | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:e1aa43844bd41a62665cbb0c503ebb65:4482f83c3403490091eed64b07ce6591:f159918d23e5952766c6d23ab52278c6$" | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$" | ||||
| } | ||||
| } | ||||
|  | ||||
| Before Width: | Height: | Size: 400 KiB After Width: | Height: | Size: 390 KiB | 
| @ -431,6 +431,6 @@ | ||||
| 	"format": "RGBA8888", | ||||
| 	"size": {"w":591,"h":252}, | ||||
| 	"scale": "0.25", | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:e1aa43844bd41a62665cbb0c503ebb65:4482f83c3403490091eed64b07ce6591:f159918d23e5952766c6d23ab52278c6$" | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$" | ||||
| } | ||||
| } | ||||
|  | ||||
| Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 85 KiB | 
| @ -431,6 +431,6 @@ | ||||
| 	"format": "RGBA8888", | ||||
| 	"size": {"w":1023,"h":509}, | ||||
| 	"scale": "0.5", | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:e1aa43844bd41a62665cbb0c503ebb65:4482f83c3403490091eed64b07ce6591:f159918d23e5952766c6d23ab52278c6$" | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$" | ||||
| } | ||||
| } | ||||
|  | ||||
| Before Width: | Height: | Size: 204 KiB After Width: | Height: | Size: 198 KiB | 
| @ -431,6 +431,6 @@ | ||||
| 	"format": "RGBA8888", | ||||
| 	"size": {"w":1125,"h":999}, | ||||
| 	"scale": "0.75", | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:e1aa43844bd41a62665cbb0c503ebb65:4482f83c3403490091eed64b07ce6591:f159918d23e5952766c6d23ab52278c6$" | ||||
| 	"smartupdate": "$TexturePacker:SmartUpdate:6f541b04fa898735b7720261181cc97b:b18d1c683463edcbb86f64fc0c0cfac0:f159918d23e5952766c6d23ab52278c6$" | ||||
| } | ||||
| } | ||||
|  | ||||
| Before Width: | Height: | Size: 413 KiB After Width: | Height: | Size: 402 KiB | 
| Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 50 KiB | 
| @ -10,7 +10,7 @@ | ||||
|     justify-content: center; | ||||
|     align-items: flex-start; | ||||
|     @include S(border-radius, 4px); | ||||
|     background: rgba(#333, 0.5); | ||||
|     background: rgba(#333, 0.9); | ||||
|     @include S(width, 200px); | ||||
| 
 | ||||
|     .buildingLabel { | ||||
|  | ||||
| @ -59,7 +59,7 @@ | ||||
|             } | ||||
| 
 | ||||
|             &.selected { | ||||
|                 background: rgb(140, 229, 140) !important; | ||||
|                 background: rgb(173, 221, 253) !important; | ||||
|                 transform: scale(1.05); | ||||
|                 .keybinding { | ||||
|                     color: #111; | ||||
|  | ||||
| @ -25,12 +25,12 @@ | ||||
|     > .dialogInner { | ||||
|         background: #fff; | ||||
|         @include S(min-width, 500px); | ||||
|         max-width: calc(100vw - #{D(50px)}); | ||||
|         max-height: calc(100vh - #{D(50px)}); | ||||
|         max-width: calc(100vw - #{D(40px)}); | ||||
|         max-height: calc(100vh - #{D(40px)}); | ||||
|         @include S(border-radius, 4px); | ||||
|         display: flex; | ||||
|         flex-direction: column; | ||||
|         @include S(padding, 15px); | ||||
|         @include S(padding, 12px); | ||||
|         pointer-events: all; | ||||
| 
 | ||||
|         > .title { | ||||
| @ -38,6 +38,7 @@ | ||||
|             margin: 0; | ||||
|             text-transform: uppercase; | ||||
|             display: grid; | ||||
|             align-items: center; | ||||
|             grid-template-columns: 1fr auto; | ||||
|             @include S(margin-bottom, 10px); | ||||
| 
 | ||||
| @ -45,7 +46,7 @@ | ||||
|                 opacity: 0.7; | ||||
|                 @include S(width, 20px); | ||||
|                 @include S(height, 20px); | ||||
|                 background: uiResource("icons/close.png") center center / 60% no-repeat; | ||||
|                 background: uiResource("icons/close.png") center center / 80% no-repeat; | ||||
|                 cursor: pointer; | ||||
|                 pointer-events: all; | ||||
|                 transition: opacity 0.2s ease-in-out; | ||||
|  | ||||
| @ -10,8 +10,8 @@ | ||||
|             @include S(border-radius, 3px); | ||||
|             @include S(margin-bottom, 4px); | ||||
|             @include S(padding, 5px, 10px); | ||||
|             @include S(grid-row-gap, 5px); | ||||
|             @include S(height, 95px); | ||||
|             @include S(grid-row-gap, 1px); | ||||
|             @include S(height, 85px); | ||||
|             grid-template-rows: #{D(20px)} auto; | ||||
| 
 | ||||
|             &:last-child { | ||||
| @ -19,38 +19,40 @@ | ||||
|             } | ||||
| 
 | ||||
|             .title { | ||||
|                 grid-column: 2 / 3; | ||||
|                 grid-column: 1 / 3; | ||||
|                 grid-row: 1 / 2; | ||||
|                 @include Heading; | ||||
|                 @include PlainText; | ||||
|                 display: flex; | ||||
|                 align-items: center; | ||||
|                 flex-direction: row-reverse; | ||||
|                 justify-content: flex-end; | ||||
| 
 | ||||
|                 .tier { | ||||
|                     @include S(margin-left, 5px); | ||||
|                     @include S(margin-right, 9px); | ||||
|                     background: $colorGreenBright; | ||||
|                     @include S(border-radius, 4px); | ||||
|                     @include S(border-radius, 2px); | ||||
|                     text-transform: uppercase; | ||||
|                     @include PlainText; | ||||
|                     color: #fff; | ||||
|                     text-align: center; | ||||
|                     font-weight: bold; | ||||
|                     @include S(margin-top, 1px); | ||||
| 
 | ||||
|                     @include S(width, 45px); | ||||
|                     @include S(padding, 0px, 5px); | ||||
| 
 | ||||
|                     &[data-tier="0"] { | ||||
|                         background-color: rgb(73, 186, 190); | ||||
|                     } | ||||
|                     &[data-tier="1"] { | ||||
|                         background-color: rgb(73, 94, 190); | ||||
|                         background-color: rgb(88, 110, 207); | ||||
|                     } | ||||
|                     &[data-tier="2"] { | ||||
|                         background-color: rgb(186, 73, 190); | ||||
|                         background-color: rgb(189, 100, 192); | ||||
|                     } | ||||
|                     &[data-tier="3"] { | ||||
|                         background-color: rgb(96, 190, 73); | ||||
|                         background-color: rgb(117, 192, 98); | ||||
|                     } | ||||
|                     &[data-tier="4"] { | ||||
|                         background-color: rgb(190, 91, 73); | ||||
|                         background-color: rgb(243, 77, 48); | ||||
|                     } | ||||
|                     &[data-tier="5"] { | ||||
|                         background-color: rgb(219, 184, 29); | ||||
| @ -64,13 +66,15 @@ | ||||
|             .icon { | ||||
|                 @include S(width, 40px); | ||||
|                 @include S(height, 40px); | ||||
|                 background: center center / contain no-repeat; | ||||
|                 background: center center / 80% no-repeat; | ||||
|                 align-self: center; | ||||
|                 justify-self: center; | ||||
|                 grid-column: 1 / 2; | ||||
|                 grid-row: 1 / 4; | ||||
|                 @include S(margin-right, 20px); | ||||
|                 opacity: 0.2; | ||||
|                 grid-row: 2 / 4; | ||||
|                 @include S(margin-right, 30px); | ||||
|                 @include S(margin-left, 10px); | ||||
|                 opacity: 0.32; | ||||
|                 display: none; | ||||
|             } | ||||
| 
 | ||||
|             .description { | ||||
| @ -87,7 +91,7 @@ | ||||
|                 grid-row: 3 / 4; | ||||
|                 display: grid; | ||||
|                 grid-auto-flow: column; | ||||
|                 @include S(grid-gap, 15px); | ||||
|                 @include S(grid-gap, 9px); | ||||
|                 justify-content: start; | ||||
| 
 | ||||
|                 .requirement { | ||||
| @ -110,7 +114,7 @@ | ||||
| 
 | ||||
|                         @include S(line-height, 13px); | ||||
|                         @include S(border-radius, 2px); | ||||
|                         @include S(padding, 0, 2px, 3px); | ||||
|                         @include S(padding, 1px, 2px, 2px); | ||||
|                         position: relative; | ||||
|                         text-align: center; | ||||
|                         @include S(min-width, 50px); | ||||
| @ -140,7 +144,7 @@ | ||||
|             button.buy { | ||||
|                 grid-column: 3 / 4; | ||||
|                 grid-row: 3 / 4; | ||||
|                 align-self: end; | ||||
|                 align-self: center; | ||||
|                 justify-self: end; | ||||
|                 // @include S(padding, 4px, 5px); | ||||
|                 // @include PlainText; | ||||
|  | ||||
| @ -41,7 +41,7 @@ | ||||
|         .playButton { | ||||
|             @include SuperHeading; | ||||
|             @include S(width, 130px); | ||||
|             @include S(padding, 15px, 20px, 10px); | ||||
|             @include S(padding, 15px, 20px); | ||||
|             letter-spacing: 0.3em !important; | ||||
|             color: #fff; | ||||
|             background-color: #55585a; | ||||
| @ -64,12 +64,10 @@ | ||||
|             justify-content: center; | ||||
|             background: #fafafa; | ||||
|             @include S(padding, 5px); | ||||
|             @include S(padding-left, 10px); | ||||
|             @include S(border-radius, 4px); | ||||
|             @include S(margin-left, 10px); | ||||
|             @include SuperSmallText(); | ||||
|             border: #{D(1px)} solid #44484a; | ||||
|             border-bottom: #{D(3px)} solid #44484a; | ||||
|             box-shadow: #{D(1px)} #{D(2px)} #{D(3px)} 0 rgba(0, 10, 20, 0.1); | ||||
| 
 | ||||
|             font-weight: bold; | ||||
|             text-transform: uppercase; | ||||
| @ -88,15 +86,15 @@ | ||||
| 
 | ||||
|             .thirdpartyLogo { | ||||
|                 display: inline-block; | ||||
|                 width: 100%; | ||||
|                 height: 100%; | ||||
|                 background: center center / 85% no-repeat; | ||||
|                 width: 80%; | ||||
|                 height: 80%; | ||||
|                 background: center center / 80% no-repeat; | ||||
|                 &.githubLogo { | ||||
|                     background-image: uiResource("main_menu/github.png"); | ||||
|                 } | ||||
|                 &.discordLogo { | ||||
|                     background-image: uiResource("main_menu/discord.png"); | ||||
|                     background-size: 100%; | ||||
|                     background-size: 95%; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -23,7 +23,7 @@ export const globalConfig = { | ||||
|     physicsDeltaSeconds: 0, | ||||
| 
 | ||||
|     // Update physics at N fps, independent of rendering
 | ||||
|     physicsUpdateRate: 60, | ||||
|     physicsUpdateRate: 55, | ||||
| 
 | ||||
|     // Map
 | ||||
|     mapChunkSize: 32, | ||||
| @ -39,8 +39,8 @@ export const globalConfig = { | ||||
|     undergroundBeltMaxTiles: 5, | ||||
| 
 | ||||
|     buildingSpeeds: { | ||||
|         cutter: 1 / 6, | ||||
|         rotater: 1 / 2, | ||||
|         cutter: 1 / 2, | ||||
|         rotater: 1 / 1, | ||||
|         painter: 1 / 3, | ||||
|         mixer: 1 / 2, | ||||
|         stacker: 1 / 5, | ||||
| @ -66,7 +66,7 @@ export const globalConfig = { | ||||
| 
 | ||||
|     debug: { | ||||
|         /* dev:start */ | ||||
|         fastGameEnter: false, | ||||
|         fastGameEnter: true, | ||||
|         noArtificialDelays: true, | ||||
|         disableSavegameWrite: false, | ||||
|         showEntityBounds: false, | ||||
|  | ||||
| @ -24,7 +24,7 @@ export class MetaBeltBaseBuilding extends MetaBuilding { | ||||
|     } | ||||
| 
 | ||||
|     getDescription() { | ||||
|         return "Transports items, hold and drag to place multiple, press 'R' to rotate."; | ||||
|         return "Transports items, hold and drag to place multiple."; | ||||
|     } | ||||
| 
 | ||||
|     getPreviewSprite(rotationVariant) { | ||||
|  | ||||
| @ -18,7 +18,7 @@ export class MetaSplitterBuilding extends MetaBuilding { | ||||
|     } | ||||
| 
 | ||||
|     getName() { | ||||
|         return "Distribute"; | ||||
|         return "Balancer"; | ||||
|     } | ||||
| 
 | ||||
|     getSilhouetteColor() { | ||||
| @ -26,7 +26,7 @@ export class MetaSplitterBuilding extends MetaBuilding { | ||||
|     } | ||||
| 
 | ||||
|     getDescription() { | ||||
|         return "Accepts up to two inputs and evenly distributes them on the outputs. Can also be used to merge two inputs into one output."; | ||||
|         return "Multifunctional - Evenly distributes all inputs onto all outputs."; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
| @ -311,7 +311,7 @@ export class HubGoals extends BasicSerializableObject { | ||||
|             case enumItemProcessorTypes.hub: | ||||
|                 return 1e30; | ||||
|             case enumItemProcessorTypes.splitter: | ||||
|                 return (2 / globalConfig.beltSpeedItemsPerSecond) * this.upgradeImprovements.processors; | ||||
|                 return (2 / globalConfig.beltSpeedItemsPerSecond) * this.upgradeImprovements.belt; | ||||
|             case enumItemProcessorTypes.cutter: | ||||
|             case enumItemProcessorTypes.rotater: | ||||
|             case enumItemProcessorTypes.stacker: | ||||
|  | ||||
| @ -162,15 +162,21 @@ export class MapChunk { | ||||
|         weights = { | ||||
|             [enumSubShape.rect]: 100, | ||||
|             [enumSubShape.circle]: Math_round(50 + clamp(distanceToOriginInChunks * 2, 0, 50)), | ||||
|             [enumSubShape.star]: Math_round(20 + clamp(distanceToOriginInChunks * 2, 0, 30)), | ||||
|             [enumSubShape.windmill]: Math_round(5 + clamp(distanceToOriginInChunks * 2, 0, 20)), | ||||
|             [enumSubShape.star]: Math_round(5 + clamp(distanceToOriginInChunks, 0, 30)), | ||||
|             [enumSubShape.windmill]: Math_round(3 + clamp(distanceToOriginInChunks / 2, 0, 20)), | ||||
|         }; | ||||
| 
 | ||||
|         if (distanceToOriginInChunks < 5) { | ||||
|             // Initial chunks can not spawn the good stuff
 | ||||
|             weights[enumSubShape.star] = 0; | ||||
|             weights[enumSubShape.windmill] = 0; | ||||
|         } | ||||
| 
 | ||||
|         if (distanceToOriginInChunks < 7) { | ||||
|             // Initial chunk patches always have the same shape
 | ||||
|             const subShape = this.internalGenerateRandomSubShape(weights); | ||||
|             subShapes = [subShape, subShape, subShape, subShape]; | ||||
|         } else if (distanceToOriginInChunks < 12) { | ||||
|         } else if (distanceToOriginInChunks < 17) { | ||||
|             // Later patches can also have mixed ones
 | ||||
|             const subShapeA = this.internalGenerateRandomSubShape(weights); | ||||
|             const subShapeB = this.internalGenerateRandomSubShape(weights); | ||||
|  | ||||
| @ -43,7 +43,7 @@ export const UPGRADES = { | ||||
|             }, | ||||
|             { | ||||
|                 required: [{ shape: "RgRgSpSp:CwSwCwSw:Cr--Sw--", amount: 80000 }], | ||||
|                 improvement: 8, | ||||
|                 improvement: 4, | ||||
|             }, | ||||
|         ], | ||||
|     }, | ||||
| @ -66,7 +66,7 @@ export const UPGRADES = { | ||||
|             }, | ||||
|             { | ||||
|                 required: [{ shape: "WyWgWyWg:CbCpCbCp:Rp----Rp", amount: 90000 }], | ||||
|                 improvement: 8, | ||||
|                 improvement: 4, | ||||
|             }, | ||||
|         ], | ||||
|     }, | ||||
| @ -89,7 +89,7 @@ export const UPGRADES = { | ||||
|             }, | ||||
|             { | ||||
|                 required: [{ shape: "WyWgWyWg:CbCpCbCp:Rp----Rp", amount: 90000 }], | ||||
|                 improvement: 8, | ||||
|                 improvement: 4, | ||||
|             }, | ||||
|         ], | ||||
|     }, | ||||
| @ -112,169 +112,10 @@ export const UPGRADES = { | ||||
|             }, | ||||
|             { | ||||
|                 required: [{ shape: "WyWgWyWg:CbCpCbCp:Rp----Rp", amount: 90000 }], | ||||
|                 improvement: 8, | ||||
|                 improvement: 4, | ||||
|             }, | ||||
|         ], | ||||
|     }, | ||||
| 
 | ||||
|     // cutter: {
 | ||||
|     //     label: "Cut Half",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "----CuCu", amount: 450 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CpCpCpCp", amount: 12000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CwRrWbSp:WcWrCpCw", amount: 45000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CwRrWbSp:WcWrCpCw:WpWpWb--", amount: 100000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
|     // splitter: {
 | ||||
|     //     label: "Distribute",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CuCu----", amount: 350 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CrCrCrCr", amount: 7000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "WyWyWyWy", amount: 30000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "WyWyWyWy:CwSpRgRc", amount: 100000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
| 
 | ||||
|     // rotater: {
 | ||||
|     //     label: "Rotate",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "RuRu----", amount: 750 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "ScScScSc", amount: 3000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "ScSpRwRw:Cw----Cw", amount: 15000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "ScSpRwRw:Cw----Cw:CpCpCpCp", amount: 80000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
| 
 | ||||
|     // underground_belt: {
 | ||||
|     //     label: "Tunnel",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "--CuCu--", amount: 1000 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "RbRb----", amount: 9000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "RbRb----:WpWpWpWp", amount: 25000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "RbRb----:WpWpWpWp:RwRwRpRp", amount: 100000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
| 
 | ||||
|     // painter: {
 | ||||
|     //     label: "Dye",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "------Ru", amount: 4000 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CcCcRgRg", amount: 15000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CcCcRgRg:WgWgWgWg", amount: 35000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CcCcRgRg:WgWgWgWg:CpRpCpRp", amount: 100000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
| 
 | ||||
|     // mixer: {
 | ||||
|     //     label: "Mix Colors",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "RgRgRgRg:CcCcCcCc", amount: 11000 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "WyWgWyWg:CbCpCbCp", amount: 15000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CcCcRgRg:WgWgWgWg:CpRpCpRp", amount: 45000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CcCcRgRg:WgWgWgWg:CpRpCpRp:CpCpCpCp", amount: 100000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
|     // stacker: {
 | ||||
|     //     label: "Combine",
 | ||||
|     //     description: improvement => "Speed +" + Math.floor(improvement * 100.0) + "%",
 | ||||
|     //     tiers: [
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CgCgRgRg", amount: 20000 }],
 | ||||
|     //             improvement: 1,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CgCgRgRg:WpRpWpRp", amount: 50000 }],
 | ||||
|     //             improvement: 2,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CgCgRgRg:WpRpWpRp:SpSwSpSw", amount: 70000 }],
 | ||||
|     //             improvement: 4,
 | ||||
|     //         },
 | ||||
|     //         {
 | ||||
|     //             required: [{ shape: "CgCgRgRg:WpRpWpRp:SpSwSpSw:CwCwCwCw", amount: 100000 }],
 | ||||
|     //             improvement: 8,
 | ||||
|     //         },
 | ||||
|     //     ],
 | ||||
|     // },
 | ||||
| }; | ||||
| 
 | ||||
| // Tiers need % of the previous tier as requirement too
 | ||||
|  | ||||
 tobspr
						tobspr