memoscan
← all memos

Memo 0x3cdecd10…0b4ba7 on Ethereum

nstrainToMaskBounds(x, y, vx, vy) { if (!globalBounds) return { x, y, vx, vy } let newX = x let newY = y let newVx = vx let newVy = vy const bounce = 0.7 if (x < globalBounds.minX) { newX = globalBounds.minX newVx = Math.abs(vx) * bounce } else if (x > globalBounds.maxX) { newX = globalBounds.maxX newVx = -Math.abs(vx) * bounce } if (y < globalBounds.minY) { newY = globalBounds.minY newVy = Math.abs(vy) * bounce } else if (y > globalBounds.maxY) { newY = globalBounds.maxY newVy = -Math.abs(vy) * bounce } return { x: newX, y: newY, vx: newVx, vy: newVy } } function initTopology() { const getConstrainedOrigin = () => { if (maskBoundsCache.length === 0) { return { x: width / 2, y: height / 2 } } return getRandomPointInMasks() } if (TRAITS.originTopology === "Clustered Burst") { originCenters = [getConstrainedOrigin()] } else if (TRAITS.originTopology === "Dual-Core") { if (maskBoundsCache.length >= 2) { const bounds1 = maskBoundsCache[0] const bounds2 = maskBoundsCache[maskBoundsCache.length > 1 ? 1 : 0] originCenters = [ { x: bounds1.centerX + random(-60, 60), y: bounds1.centerY + random(-60, 60) }, { x: bounds2.centerX + random(-60, 60), y: bounds2.centerY + random(-60, 60) } ] } else { const pt = getConstrainedOrigin() originCenters = [ { x: pt.x - 80, y: pt.y }, { x: pt.x + 80, y: pt.y } ] } } else if (TRAITS.originTopology === "Radial Drift") { originCenters = [getConstrainedOrigin()] } else if (TRAITS.originTopology === "Tidal Sweep") { tidalAngle = random(-PI / 9, PI / 9) } else if (TRAITS.originTopology === "Void Edge") { if (maskBoundsCache.length > 0) { const bounds = random(maskBoundsCache) let side = floor(random(4)) if (side === 0) originCenters = [{ x: bounds.centerX, y: bounds.minY }] else if (side === 1) originCenters = [{ x: bounds.maxX, y: bounds.centerY }] else if (side === 2) originCenters = [{ x: bounds.centerX, y: bounds.maxY }] else originCenters = [{ x: bounds.minX, y: bounds.centerY }] } else { originCenters = [{ x: width / 2, y: height / 2 }] } } else { originCenters = [getConstrainedOrigin()] } } function spawner() { const maxCap = min(_tierMaxAnims, PARAMS.maxSupernovas) const activeCount = fillAnimations.filter(a => a.averageOpacity() > 20).length if (activeCount >= maxCap) return if (frameCount >= nextSpawnFrame) { spawnFillAnimation() if (PARAMS.spawnMode === "Clockwork") { nextSpawnFrame = frameCount + PARAMS.baseSpawnEvery } else if (PARAMS.spawnMode === "Poisson") { nextSpawnFrame = frameCount + floor(randomGaussian(PARAMS.baseSpawnEvery, 5)) } else if (PARAMS.spawnMode === "BurstRest") { if (random() < 0.2) { const remaining = maxCap - fillAnimations.filter(a => a.averageOpacity() > 20).length const burstCount = min(3, max(0, remaining)) for (let i = 0; i < burstCount; i++) spawnFillAnimation() nextSpawnFrame = frameCount + PARAMS.baseSpawnEvery * 2 } else { nextSpawnFrame = frameCount + PARAMS.baseSpawnEvery } } else { nextSpawnFrame = frameCount + PARAMS.baseSpawnEvery } } } function spawnFillAnimation() { let sx, sy if (TRAITS.originTopology === "Tidal Sweep") { const sweep = (frameCount / 120.0) % 1.0 const pt = getRandomPointInMasks() sx = lerp(pt.x - 100, pt.x + 100, sweep) sy = pt.y + sin(tidalAngle) * 80 const constrained = constrainToMaskBounds(sx, sy, 0, 0) sx = constrained.x sy = constrained.y } else { const origin = random(originCenters) sx = origin.x + randomGaussian(0, 40) sy = origin.y + randomGaussian(0, 40) const constrained = constrainToMaskBounds(sx, sy, 0, 0) sx = constrained.x sy = constrained.y } const variant = PARAMS.fillVariant let animation if (variant === "Sparkles") { const sparkleCount = fillAnimations.filter(a => a instanceof Sparkles).length if (sparkleCount >= 6) return } if (variant === "Supernova") { const count = floor(random(PARAMS.rectRange[0], PARAMS.rectRange[1])) animation = animationPool.acquire('Supernova', sx, sy, PARAMS.palette, count, PARAMS.sizeRange, TRAITS) } else if (variant === "ExpandingCircles") { animation = animationPool.acquire('ExpandingCircles', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "ExpandingSquares") { animation = animationPool.acquire('ExpandingSquares', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "VerticalStripes") { animation = animationPool.acquire('VerticalStripes', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "Gradient") { animation = animationPool.acquire('GradientFill', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "WavyLines") { animation = animationPool.acquire('WavyLines', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "Sparkles") { animation = animationPool.acquire('Sparkles', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "HorizontalStripes") { animation = animationPool.acquire('HorizontalStripes', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "VoronoiCells") { animation = animationPool.acquire('VoronoiCells', sx, sy, PARAMS.palette, TRAITS) } else if (variant === "Shockwave") { animation = animationPool.acquire('Shockwave', sx, sy, PARAMS.palette, TRAITS) } if (animation) { fillAnimations.push(animation) } } function drawBackground(g, bgType) { g.push() g.noStroke() if (bgType === "Halo") { g.background(0, 0, 75) } else if (bgType === "Aero") { g.background(200, 15, 85) } else if (bgType === "Rose") { g.background(330, 25, 90) } else if (bgType === "Mint") { g.background(150, 20, 88) } else if (bgType === "Mist") { g.background(270, 18, 88) } else if (bgType === "Rise") { g.background(20, 30, 90) } else if (bgType === "Fallen") { g.background(0, 100, 90) } else if (bgType === "Shift") { const colors = PARAMS.palette const c1 = g.color(colors[0]) const c2 = g.color(colors[colors.length - 1]) const ctx = g.drawingContext const grad = ctx.createLinearGradient(0, 0, 0, g.height) grad.addColorStop(0, g.color(colors[0]).toString()) grad.addColorStop(1, g.color(colors[colors.length - 1]).toString()) ctx.fillStyle = grad ctx.fillRect(0, 0, g.width, g.height) } else if (bgType === "Radiant") { const colors = PARAMS.palette const centerX = g.width / 2 const centerY = g.height / 2 const radius = Math.sqrt(centerX * centerX + centerY * centerY) const ctx = g.drawingContext const grad = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius) grad.addColorStop(0, g.color(colors[0]).toString()) grad.addColorStop(1, g.color(colors[colors.length - 1]).toString()) ctx.fillStyle = grad ctx.fillRect(0, 0, g.width, g.height) } else if (bgType === "Facet") { const colors = PARAMS.palette const centerX = g.width / 2 const centerY = g.height / 2 const maxDist = centerX + centerY const stepSize = 4 for (let y = 0; y < g.height; y += stepSize) { for (let x = 0; x < g.width; x += stepSize) { const d = Math.abs(x - centerX) + Math.abs(y - centerY) const inter = constrain(d / maxDist, 0, 1) const c1 = g.color(colors[0]) const c2 = g.color(colors[colors.length - 1]) const gradColor = g.lerpColor(c1, c2, inter) g.fill(gradColor) g.noStroke() g.rect(x, y, stepSize, stepSize) } } } else if (bgType === "Ascend") { const colors = PARAMS.palette const maxDist = g.width + g.height const stepSize = 4 for (let y = 0; y < g.height; y += stepSize) { for (let x = 0; x < g.width; x += stepSize) { const d = x + y const inter = constrain(d / maxDist, 0, 1) const c1 = g.color(colors[0]) const c2 = g.color(colors[colors.length - 1]) const gradColor = g.lerpColor(c1, c2, inter) g.fill(gradColor) g.noStroke() g.rect(x, y, stepSize, stepSize) } } } else if (bgType === "Descend") { const colors = PARAMS.palette const maxDist = g.width + g.height const stepSize = 4 for (let y = 0; y < g.height; y += stepSize) { for (let x = 0; x < g.width; x += stepSize) { const d = (g.width - x) + (g.height - y) const inter = constrain(d / maxDist, 0, 1) const c1 = g.color(colors[0]) const c2 = g.color(colors[colors.length - 1]) const gradColor = g.lerpColor(c1, c2, inter) g.fill(gradColor) g.noStroke() g.rect(x, y, stepSize, stepSize) } } } else { g.background(0, 0, 100) } g.pop() } function drawArchetype(g, maskCount, archetype) { g.push() g.noStroke() g.fill(0, 0, 10) const scaleX = g.width / 1000 const scaleY = g.width / 1000 // v2: width-based to preserve proportions on portrait canvas const styleToUse = TRAITS.displayedArchetype if (styleToUse === "Helios") { drawHeliosArchetype(g, scaleX, scaleY) } else if (styleToUse === "Guard") { drawGuardArchetype(g, scaleX, scaleY) } else if (styleToUse === "Riven") { drawRivenArchetype(g, scaleX, scaleY) } else if (styleToUse === "Rogue") { drawRogueArchetype(g, scaleX, scaleY) } else if (styleToUse === "Apex") { drawApexArchetype(g, scaleX, scaleY) } else if (styleToUse === "Goliath") { drawGoliathArchetype(g, scaleX, scaleY) } else if (styleToUse === "Sentinel") { drawSentinelArchetype(g, scaleX, scaleY) } else if (styleToUse === "Colossus") { drawColossusArchetype(g, scaleX, scaleY) } else if (styleToUse === "Ferox") { drawFeroxArchetype(g, scaleX, scaleY) } else if (styleToUse === "Seeker") { drawSeekerArchetype(g, scaleX, scaleY) } else if (styleToUse === "Arbiter") { drawArbiterArchetype(g, scaleX, scaleY) } else if (styleToUse === "Nomad") { drawNomadArchetype(g, scaleX, scaleY) } else if (styleToUse === "Prime") { drawPrimeArchetype(g, scaleX, scaleY) } else if (styleToUse === "Dux") { drawDuxArchetype(g, scaleX, scaleY) } else if (styleToUse === "Bulwark") { drawBulwarkArchetype(g, scaleX, scaleY) } else if (styleToUse === "Warden") { drawWardenArchetype(g, scaleX, scaleY) } else if (styleToUse === "Shade") { drawShadeArchetype(g, scaleX, scaleY) } else if (styleToUse === "Brute") { drawBruteArchetype(g, scaleX, scaleY) } else if (styleToUse === "Emperor") { drawEmperorArchetype(g, scaleX, scaleY) } else if (styleToUse === "Armatus") { drawArmatusArchetype(g, scaleX, scaleY) } else { drawTitanArchetype(g, scaleX, scaleY, maskCount) } g.noStroke() if (styleToUse === "Apex") { const botY = g.height + 50 const slopeL = (112.2 - 265.6) / (1020 - 233.3) const slopeR = (866.2 - 716.8) / (1020 - 236.9) const topY = 980 const lxTop = 112.2 + (topY - 1020) * slopeL const rxTop = 866.2 + (topY - 1020) * slopeR const lxBot = 112.2 + (botY / scaleY - 1020) * slopeL const rxBot = 866.2 + (botY / scaleY - 1020) * slopeR g.beginShape() g.vertex(lxTop * scaleX, topY * scaleY) g.vertex(rxTop * scaleX, topY * scaleY) g.vertex(rxBot * scaleX, botY) g.vertex(lxBot * scaleX, botY) g.endShape(CLOSE) } else { g.rect(-20, 990 * scaleY, g.width + 40, g.height) } g.pop() } function drawArchetypePart1(g, maskCount, archetype) { g.push() g.noStroke() g.fill(0, 0, 8) const scaleX = g.width / 1000 const scaleY = g.width / 1000 // v2: width-based if (archetype === "Blade") { drawBladePart1(g, scaleX, scaleY) } else if (archetype === "Havoc") { drawHavocPart1(g, scaleX, scaleY) } else if (archetype === "Vanta") { drawVantaPart1(g, scaleX, scaleY) } g.noStroke() g.rect(-20, 990 * scaleY, g.width + 40, g.height) g.pop() } function drawArchetypePart2(g, maskCount, archetype) { g.push() g.noStroke() g.fill(0, 0, 8) const scaleX = g.width / 1000 const scaleY = g.width / 1000 // v2: width-based if (archetype === "Blade") { drawBladePart2(g, scaleX, scaleY) } else if (archetype === "Havoc") { drawHavocPart2(g, scaleX, scaleY) } else if (archetype === "Vanta") { drawVantaPart2(g, scaleX, scaleY) } g.noStroke() g.rect(-20, 990 * scaleY, g.width + 40, g.height) g.pop() } /* ========================= EXISTING ARCHETYPE SHAPES ========================= */ function drawSentinelArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(877.1 * scaleX, 739.2 * scaleY) g.vertex(762.9 * scaleX, 357.1 * scaleY) g.vertex(800.5 * scaleX, 235.7 * scaleY) g.vertex(687 * scaleX, 22.2 * scaleY) g.vertex(687 * scaleX, 224.8 * scaleY) g.vertex(667.1 * scaleX, 177.1 * scaleY) g.vertex(497 * scaleX, 121.3 * scaleY) g.vertex(326.9 * scaleX, 177.1 * scaleY) g.vertex(310.1 * scaleX, 217.5 * scaleY) g.vertex(310.1 * scaleX, 22.2 * scaleY) g.vertex(196.6 * scaleX, 235.7 * scaleY) g.vertex(236.3 * scaleX, 348 * scaleY) g.vertex(144.8 * scaleX, 734.9 * scaleY) g.vertex(-0.6 * scaleX, 838.8 * scaleY) g.vertex(-0.6 * scaleX, 1020 * scaleY) g.vertex(1000.8 * scaleX, 1020 * scaleY) g.vertex(1000.8 * scaleX, 838.8 * scaleY) g.endShape(CLOSE) } function drawColossusArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(976.9 * scaleX, 643.4 * scaleY) g.vertex(976.9 * scaleX, 608.4 * scaleY) g.vertex(950.9 * scaleX, 608.4 * scaleY) g.vertex(950.9 * scaleX, 639.4 * scaleY) g.vertex(922.8 * scaleX, 635 * scaleY) g.vertex(922.8 * scaleX, 578.4 * scaleY) g.vertex(896.8 * scaleX, 578.4 * scaleY) g.vertex(896.8 * scaleX, 631 * scaleY) g.vertex(868.7 * scaleX, 626.7 * scaleY) g.vertex(868.7 * scaleX, 578.4 * scaleY) g.vertex(842.7 * scaleX, 578.4 * scaleY) g.vertex(842.7 * scaleX, 622.6 * scaleY) g.vertex(820.7 * scaleX, 619.2 * scaleY) g.vertex(819 * scaleX, 262.8 * scaleY) g.vertex(709.2 * scaleX, 119.6 * scaleY) g.vertex(696 * scaleX, 119.6 * scaleY) g.vertex(696 * scaleX, 89.3 * scaleY) g.vertex(669.9 * scaleX, 89.3 * scaleY) g.vertex(669.9 * scaleX, 119.6 * scaleY) g.vertex(641.9 * scaleX, 119.6 * scaleY) g.vertex(641.9 * scaleX, 89.3 * scaleY) g.vertex(615.8 * scaleX, 89.3 * scaleY) g.vertex(615.8 * scaleX, 119.6 * scaleY) g.vertex(587.8 * scaleX, 119.6 * scaleY) g.vertex(587.8 * scaleX, 89.3 * scaleY) g.vertex(561.7 * scaleX, 89.3 * scaleY) g.vertex(561.7 * scaleX, 119.6 * scaleY) g.vertex(533.7 * scaleX, 119.6 * scaleY) g.vertex(533.7 * scaleX, 89.3 * scaleY) g.vertex(507.6 * scaleX, 89.3 * scaleY) g.vertex(507.6 * scaleX, 119.6 * scaleY) g.vertex(479.6 * scaleX, 119.6 * scaleY) g.vertex(479.6 * scaleX, 89.3 * scaleY) g.vertex(453.5 * scaleX, 89.3 * scaleY) g.vertex(453.5 * scaleX, 119.6 * scaleY) g.vertex(425.5 * scaleX, 119.6 * scaleY) g.vertex(425.5 * scaleX, 89.3 * scaleY) g.vertex(399.4 * scaleX, 89.3 * scaleY) g.vertex(399.4 * scaleX, 119.6 * scaleY) g.vertex(371.4 * scaleX, 119.6 * scaleY) g.vertex(371.4 * scaleX, 89.3 * scaleY) g.vertex(345.3 * scaleX, 89.3 * scaleY) g.vertex(345.3 * scaleX, 119.6 * scaleY) g.vertex(317.3 * scaleX, 119.6 * scaleY) g.vertex(317.3 * scaleX, 89.3 * scaleY) g.vertex(291.2 * scaleX, 89.3 * scaleY) g.vertex(291.2 * scaleX, 119.6 * scaleY) g.vertex(276.2 * scaleX, 119.6 * scaleY) g.vertex(183.2 * scaleX, 251.3 * scaleY) g.vertex(176.8 * scaleX, 617.3 * scaleY) g.vertex(158.8 * scaleX, 620.4 * scaleY) g.vertex(158.8 * scaleX, 578.4 * scaleY) g.vertex(132.7 * scaleX, 578.4 * scaleY) g.vertex(132.7 * scaleX, 624.9 * scaleY) g.vertex(104.7 * scaleX, 629.7 * scaleY) g.vertex(104.7 * scaleX, 578.4 * scaleY) g.vertex(78.6 * scaleX, 578.4 * scaleY) g.vertex(78.6 * scaleX, 634.1 * scaleY) g.vertex(50.6 * scaleX, 638.9 * scaleY) g.vertex(50.6 * scaleX, 608.4 * scaleY) g.vertex(24.5 * scaleX, 608.4 * scaleY) g.vertex(24.5 * scaleX, 643.4 * scaleY) g.vertex(0.3 * scaleX, 647.5 * scaleY) g.vertex(-0.3 * scaleX, 1020 * scaleY) g.vertex(1001.9 * scaleX, 1020 * scaleY) g.vertex(1003.3 * scaleX, 647.5 * scaleY) g.endShape(CLOSE) } function drawRivenArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(910 * scaleX, 849.7 * scaleY) g.vertex(890 * scaleX, 668.1 * scaleY) g.vertex(781.4 * scaleX, 778.1 * scaleY) g.vertex(801.4 * scaleX, 454.1 * scaleY) g.vertex(731.4 * scaleX, 207.8 * scaleY) g.vertex(650.2 * scaleX, 97.8 * scaleY) g.vertex(501.3 * scaleX, 77.3 * scaleY) g.vertex(343.9 * scaleX, 96.7 * scaleY) g.vertex(262.7 * scaleX, 207.8 * scaleY) g.vertex(192.7 * scaleX, 454.1 * scaleY) g.vertex(212.7 * scaleX, 778.1 * scaleY) g.vertex(104.1 * scaleX, 668.1 * scaleY) g.vertex(84.1 * scaleX, 849.7 * scaleY) g.vertex(1.3 * scaleX, 879.7 * scaleY) g.vertex(1.3 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 879.7 * scaleY) g.endShape(CLOSE) } function drawRogueArchetype(g, scaleX, scaleY) { g.beginShape() let x = 931.5 * scaleX let y = 820.2 * scaleY g.vertex(x, y) x += -68.6 * scaleX y += -18.2 * scaleY g.vertex(x, y) x += -30 * scaleX y += -9.3 * scaleY g.vertex(x, y) let cp1x = x + (-31.3 * scaleX) let cp1y = y + (-9.7 * scaleY) let cp2x = x + (-53.5 * scaleX) let cp2y = y + (-37.4 * scaleY) x += -56.4 * scaleX y += -70 * scaleY g.bezierVertex(cp1x, cp1y, cp2x, cp2y, x, y) x += -33.8 * scaleX y += -385.5 * scaleY g.vertex(x, y) x += 115 * scaleX y += -253.1 * scaleY g.vertex(x, y) x += -146.9 * scaleX y += 91.6 * scaleY g.vertex(x, y) x += -209.7 * scaleX y += -100 * scaleY g.vertex(x, y) x += -210.1 * scaleX y += 105.2 * scaleY g.vertex(x, y) x += -152.7 * scaleX y += -93.8 * scaleY g.vertex(x, y) x += 112.4 * scaleX y += 253.6 * scaleY g.vertex(x, y) x += -33.9 * scaleX y += 386.8 * scaleY g.vertex(x, y) cp1x = x + (-2.6 * scaleX) cp1y = y + (30.1 * scaleY) cp2x = x + (-21.9 * scaleX) cp2y = y + (56.2 * scaleY) x += -49.9 * scaleX y += 67.6 * scaleY g.bezierVertex(cp1x, cp1y, cp2x, cp2y, x, y) x += -26.6 * scaleX y += 10.9 * scaleY g.vertex(x, y) x += -70.6 * scaleX y += 22.2 * scaleY g.vertex(x, y) x = -1 * scaleX y = 878.2 * scaleY g.vertex(x, y) y = 1001 * scaleY g.vertex(x, y) x = 1001 * scaleX g.vertex(x, y) y = 820.2 * scaleY g.vertex(x, y) x = 931.5 * scaleX g.vertex(x, y) g.endShape(CLOSE) } function drawApexArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(112.2 * scaleX, 1020 * scaleY) g.vertex(265.6 * scaleX, 233.3 * scaleY) g.vertex(404.5 * scaleX, 138.3 * scaleY) g.vertex(589.8 * scaleX, 138.3 * scaleY) g.vertex(716.8 * scaleX, 236.9 * scaleY) g.vertex(866.2 * scaleX, 1020 * scaleY) g.endShape(CLOSE) g.beginShape() g.vertex(739.6 * scaleX, 241.2 * scaleY) g.vertex(848.7 * scaleX, 241.2 * scaleY) g.vertex(756.4 * scaleX, 333.5 * scaleY) g.endShape(CLOSE) g.beginShape() g.vertex(222.9 * scaleX, 333.4 * scaleY) g.vertex(243.4 * scaleX, 241.6 * scaleY) g.vertex(122.5 * scaleX, 241.6 * scaleY) g.endShape(CLOSE) g.beginShape() g.vertex(448.4 * scaleX, 64.6 * scaleY) g.vertex(499.5 * scaleX, 115.7 * scaleY) g.vertex(549.6 * scaleX, 65.6 * scaleY) g.endShape(CLOSE) } function drawGoliathArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(892.4 * scaleX, 679.5 * scaleY) g.vertex(882.5 * scaleX, 621.9 * scaleY) g.vertex(906.4 * scaleX, 493.9 * scaleY) g.vertex(852.8 * scaleX, 432.7 * scaleY) g.vertex(810.4 * scaleX, 200.7 * scaleY) g.vertex(489.9 * scaleX, 53.8 * scaleY) g.vertex(180.9 * scaleX, 179.7 * scaleY) g.vertex(145.4 * scaleX, 420.6 * scaleY) g.vertex(87.6 * scaleX, 490 * scaleY) g.vertex(115.6 * scaleX, 623.3 * scaleY) g.vertex(108.4 * scaleX, 671.9 * scaleY) g.vertex(-2.2 * scaleX, 757.7 * scaleY) g.vertex(-0.5 * scaleX, 1020 * scaleY) g.vertex(1001.6 * scaleX, 1020 * scaleY) g.vertex(1003 * scaleX, 757.7 * scaleY) g.endShape(CLOSE) } function drawHeliosArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(927.9 * scaleX, 722.9 * scaleY) g.vertex(950.4 * scaleX, 677.8 * scaleY) g.vertex(899.3 * scaleX, 670.3 * scaleY) g.vertex(892.6 * scaleX, 654.5 * scaleY) g.vertex(920.4 * scaleX, 600.4 * scaleY) g.vertex(858.2 * scaleX, 598.5 * scaleY) g.vertex(850.5 * scaleX, 586.1 * scaleY) g.vertex(868.5 * scaleX, 559.1 * scaleY) g.vertex(834.6 * scaleX, 555.1 * scaleY) g.vertex(824.9 * scaleX, 537.3 * scaleY) g.vertex(771.6 * scaleX, 537.3 * scaleY) g.vertex(771.6 * scaleX, 276.1 * scaleY) g.vertex(961.4 * scaleX, 223.1 * scaleY) g.vertex(741.1 * scaleX, 218.9 * scaleY) g.vertex(724.4 * scaleX, 198.3 * scaleY) g.vertex(847 * scaleX, 114.7 * scaleY) g.vertex(651.7 * scaleX, 157.3 * scaleY) g.vertex(635.9 * scaleX, 148.8 * scaleY) g.vertex(651.9 * scaleX, 77.4 * scaleY) g.vertex(550.2 * scaleX, 137.9 * scaleY) g.vertex(507.9 * scaleX, 41.4 * scaleY) g.vertex(473.6 * scaleX, 137.9 * scaleY) g.vertex(373.9 * scaleX, 78.9 * scaleY) g.vertex(394 * scaleX, 151.3 * scaleY) g.vertex(379 * scaleX, 156.6 * scaleY) g.vertex(174.4 * scaleX, 120.3 * scaleY) g.vertex(298.7 * scaleX, 194.7 * scaleY) g.vertex(279.4 * scaleX, 209.2 * scaleY) g.vertex(40.2 * scaleX, 212.9 * scaleY) g.vertex(234.8 * scaleX, 273.4 * scaleY) g.vertex(234.8 * scaleX, 542.4 * scaleY) g.vertex(179.2 * scaleX, 542.4 * scaleY) g.vertex(164.6 * scaleX, 565.8 * scaleY) g.vertex(132.7 * scaleX, 568.2 * scaleY) g.vertex(145.4 * scaleX, 596.4 * scaleY) g.vertex(135 * scaleX, 612.9 * scaleY) g.vertex(75.7 * scaleX, 609.3 * scaleY) g.vertex(101.8 * scaleX, 665.8 * scaleY) g.vertex(90.9 * scaleX, 679.9 * scaleY) g.vertex(46.4 * scaleX, 678.8 * scaleY) g.vertex(60.5 * scaleX, 727.7 * scaleY) g.vertex(-1.4 * scaleX, 843.6 * scaleY) g.vertex(-.5 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 842.6 * scaleY) g.endShape(CLOSE) } function drawSeekerArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(908 * scaleX, 821.3 * scaleY) g.vertex(824.9 * scaleX, 751.3 * scaleY) g.vertex(744.9 * scaleX, 453.1 * scaleY) g.vertex(871.4 * scaleX, 247.8 * scaleY) g.vertex(871.4 * scaleX, 247.9 * scaleY) g.vertex(896.7 * scaleX, 222.6 * scaleY) g.vertex(871.4 * scaleX, 197.3 * scaleY) g.vertex(846.2 * scaleX, 222.6 * scaleY) g.vertex(864.9 * scaleX, 241.4 * scaleY) g.vertex(826.5 * scaleX, 226 * scaleY) g.vertex(826.5 * scaleX, 201.2 * scaleY) g.vertex(808.5 * scaleX, 201.2 * scaleY) g.vertex(808.5 * scaleX, 218.8 * scaleY) g.vertex(788.5 * scaleX, 210.8 * scaleY) g.vertex(788.5 * scaleX, 185.4 * scaleY) g.vertex(770.5 * scaleX, 185.4 * scaleY) g.vertex(770.5 * scaleX, 203.6 * scaleY) g.vertex(750.5 * scaleX, 195.6 * scaleY) g.vertex(750.5 * scaleX, 167.2 * scaleY) g.vertex(732.5 * scaleX, 167.2 * scaleY) g.vertex(732.5 * scaleX, 188.5 * scaleY) g.vertex(708.5 * scaleX, 178.9 * scaleY) g.vertex(708.5 * scaleX, 148.2 * scaleY) g.vertex(690.5 * scaleX, 148.2 * scaleY) g.vertex(690.5 * scaleX, 171.7 * scaleY) g.vertex(667.3 * scaleX, 162.4 * scaleY) g.vertex(667.3 * scaleX, 132.4 * scaleY) g.vertex(649.3 * scaleX, 132.4 * scaleY) g.vertex(649.3 * scaleX, 155.3 * scaleY) g.vertex(600.6 * scaleX, 135.8 * scaleY) g.vertex(620.1 * scaleX, 116.2 * scaleY) g.vertex(594.8 * scaleX, 91 * scaleY) g.vertex(569.6 * scaleX, 116.2 * scaleY) g.vertex(587.9 * scaleX, 134.6 * scaleY) g.vertex(431.5 * scaleX, 134.6 * scaleY) g.vertex(449.2 * scaleX, 116.9 * scaleY) g.vertex(423.9 * scaleX, 91.7 * scaleY) g.vertex(398.6 * scaleX, 116.9 * scaleY) g.vertex(418.8 * scaleX, 137.2 * scaleY) g.vertex(373 * scaleX, 156.3 * scaleY) g.vertex(373 * scaleX, 137.4 * scaleY) g.vertex(355 * scaleX, 137.4 * scaleY) g.vertex(355 * scaleX, 163.8 * scaleY) g.vertex(330.5 * scaleX, 174 * scaleY) g.vertex(330.5 * scaleX, 156.9 * scaleY) g.vertex(312.5 * scaleX, 156.9 * scaleY) g.vertex(312.5 * scaleX, 181.5 * scaleY) g.vertex(287.9 * scaleX, 191.7 * scaleY) g.vertex(287.9 * scaleX, 171.5 * scaleY) g.vertex(269.9 * scaleX, 171.5 * scaleY) g.vertex(269.9 * scaleX, 199.2 * scaleY) g.vertex(245.3 * scaleX, 209.5 * scaleY) g.vertex(245.3 * scaleX, 186.1 * scaleY) g.vertex(227.3 * scaleX, 186.1 * scaleY) g.vertex(227.3 * scaleX, 217 * scaleY) g.vertex(202.8 * scaleX, 227.2 * scaleY) g.vertex(202.8 * scaleX, 210.7 * scaleY) g.vertex(184.8 * scaleX, 210.7 * scaleY) g.vertex(184.8 * scaleX, 234.7 * scaleY) g.vertex(132.2 * scaleX, 256.6 * scaleY) g.vertex(153.3 * scaleX, 235.6 * scaleY) g.vertex(128 * scaleX, 210.3 * scaleY) g.vertex(102.7 * scaleX, 235.6 * scaleY) g.vertex(126.3 * scaleX, 259.1 * scaleY) g.vertex(126.2 * scaleX, 259.1 * scaleY) g.vertex(252.4 * scaleX, 450.3 * scaleY) g.vertex(155.9 * scaleX, 751.3 * scaleY) g.vertex(84.3 * scaleX, 821.3 * scaleY) g.vertex(-2.7 * scaleX, 921.3 * scaleY) g.vertex(-2.7 * scaleX, 1002.6 * scaleY) g.vertex(1002.8 * scaleX, 1002.6 * scaleY) g.vertex(1002.8 * scaleX, 921.3 * scaleY) g.endShape(CLOSE) } function drawArbiterArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(914.1 * scaleX, 840.2 * scaleY) g.vertex(982 * scaleX, 799.5 * scaleY) g.vertex(982 * scaleX, 731.1 * scaleY) g.vertex(743.6 * scaleX, 731.1 * scaleY) g.vertex(868.6 * scaleX, 646.4 * scaleY) g.vertex(868.6 * scaleX, 582.2 * scaleY) g.vertex(785.3 * scaleX, 582.2 * scaleY) g.vertex(918.6 * scaleX, 491 * scaleY) g.vertex(918.6 * scaleX, 456.8 * scaleY) g.vertex(771.3 * scaleX, 456.8 * scaleY) g.vertex(858.6 * scaleX, 391.1 * scaleY) g.vertex(858.6 * scaleX, 356.9 * scaleY) g.vertex(760.7 * scaleX, 326.9 * scaleY) g.vertex(827.1 * scaleX, 222.3 * scaleY) g.vertex(827.1 * scaleX, 188.1 * scaleY) g.vertex(725.2 * scaleX, 188.1 * scaleY) g.vertex(752.3 * scaleX, 124.9 * scaleY) g.vertex(752.3 * scaleX, 76.1 * scaleY) g.vertex(752 * scaleX, 76.1 * scaleY) g.vertex(752 * scaleX, 56.2 * scaleY) g.vertex(745.4 * scaleX, 56.2 * scaleY) g.vertex(738.7 * scaleX, 62.5 * scaleY) g.vertex(734.1 * scaleX, 68.1 * scaleY) g.vertex(734.1 * scaleX, 69.7 * scaleY) g.vertex(734.1 * scaleX, 71.7 * scaleY) g.vertex(734.1 * scaleX, 73.8 * scaleY) g.vertex(734.1 * scaleX, 76.1 * scaleY) g.vertex(683.5 * scaleX, 76.1 * scaleY) g.vertex(683.5 * scaleX, 56.2 * scaleY) g.vertex(676.9 * scaleX, 56.2 * scaleY) g.vertex(670.3 * scaleX, 62.5 * scaleY) g.vertex(665.6 * scaleX, 68.1 * scaleY) g.vertex(665.6 * scaleX, 69.7 * scaleY) g.vertex(665.6 * scaleX, 71.7 * scaleY) g.vertex(665.6 * scaleX, 73.8 * scaleY) g.vertex(665.6 * scaleX, 76.1 * scaleY) g.vertex(615 * scaleX, 76.1 * scaleY) g.vertex(615 * scaleX, 56.2 * scaleY) g.vertex(608.4 * scaleX, 56.2 * scaleY) g.vertex(601.8 * scaleX, 62.5 * scaleY) g.vertex(597.1 * scaleX, 68.1 * scaleY) g.vertex(597.1 * scaleX, 69.7 * scaleY) g.vertex(597.1 * scaleX, 71.7 * scaleY) g.vertex(597.1 * scaleX, 73.8 * scaleY) g.vertex(597.1 * scaleX, 76.1 * scaleY) g.vertex(546.5 * scaleX, 76.1 * scaleY) g.vertex(546.5 * scaleX, 56.2 * scaleY) g.vertex(539.9 * scaleX, 56.2 * scaleY) g.vertex(533.3 * scaleX, 62.5 * scaleY) g.vertex(528.6 * scaleX, 68.1 * scaleY) g.vertex(528.6 * scaleX, 69.7 * scaleY) g.vertex(528.6 * scaleX, 71.7 * scaleY) g.vertex(528.6 * scaleX, 73.8 * scaleY) g.vertex(528.6 * scaleX, 76.1 * scaleY) g.vertex(478 * scaleX, 76.1 * scaleY) g.vertex(478 * scaleX, 56.2 * scaleY) g.vertex(471.4 * scaleX, 56.2 * scaleY) g.vertex(464.8 * scaleX, 62.5 * scaleY) g.vertex(460.1 * scaleX, 68.1 * scaleY) g.vertex(460.1 * scaleX, 69.7 * scaleY) g.vertex(460.1 * scaleX, 71.7 * scaleY) g.vertex(460.1 * scaleX, 73.8 * scaleY) g.vertex(460.1 * scaleX, 76.1 * scaleY) g.vertex(409.5 * scaleX, 76.1 * scaleY) g.vertex(409.5 * scaleX, 56.2 * scaleY) g.vertex(402.9 * scaleX, 56.2 * scaleY) g.vertex(396.3 * scaleX, 62.5 * scaleY) g.vertex(391.6 * scaleX, 68.1 * scaleY) g.vertex(391.6 * scaleX, 69.7 * scaleY) g.vertex(391.6 * scaleX, 71.7 * scaleY) g.vertex(391.6 * scaleX, 73.8 * scaleY) g.vertex(391.6 * scaleX, 76.1 * scaleY) g.vertex(341 * scaleX, 76.1 * scaleY) g.vertex(341 * scaleX, 56.2 * scaleY) g.vertex(334.4 * scaleX, 56.2 * scaleY) g.vertex(327.8 * scaleX, 62.5 * scaleY) g.vertex(323.1 * scaleX, 68.1 * scaleY) g.vertex(323.1 * scaleX, 69.7 * scaleY) g.vertex(323.1 * scaleX, 71.7 * scaleY) g.vertex(323.1 * scaleX, 73.8 * scaleY) g.vertex(323.1 * scaleX, 76.1 * scaleY) g.vertex(272.5 * scaleX, 76.1 * scaleY) g.vertex(272.5 * scaleX, 56.2 * scaleY) g.vertex(265.9 * scaleX, 56.2 * scaleY) g.vertex(259.3 * scaleX, 62.5 * scaleY) g.vertex(254.6 * scaleX, 68.1 * scaleY) g.vertex(254.6 * scaleX, 69.7 * scaleY) g.vertex(254.6 * scaleX, 71.7 * scaleY) g.vertex(254.6 * scaleX, 73.8 * scaleY) g.vertex(254.6 * scaleX, 84.3 * scaleY) g.vertex(254.6 * scaleX, 86.9 * scaleY) g.vertex(254.6 * scaleX, 89.1 * scaleY) g.vertex(254.6 * scaleX, 92.5 * scaleY) g.vertex(254.8 * scaleX, 92.7 * scaleY) g.vertex(254.8 * scaleX, 124.9 * scaleY) g.vertex(288 * scaleX, 188.1 * scaleY) g.vertex(174 * scaleX, 188.1 * scaleY) g.vertex(174 * scaleX, 222.3 * scaleY) g.vertex(247.1 * scaleX, 326.9 * scaleY) g.vertex(145.5 * scaleX, 356.9 * scaleY) g.vertex(145.5 * scaleX, 391.1 * scaleY) g.vertex(237.9 * scaleX, 456.8 * scaleY) g.vertex(105.5 * scaleX, 456.8 * scaleY) g.vertex(105.5 * scaleX, 491 * scaleY) g.vertex(223.5 * scaleX, 582.2 * scaleY) g.vertex(135.5 * scaleX, 582.2 * scaleY) g.vertex(135.5 * scaleX, 646.4 * scaleY) g.vertex(269.2 * scaleX, 731.1 * scaleY) g.vertex(26.9 * scaleX, 731.1 * scaleY) g.vertex(26.9 * scaleX, 799.5 * scaleY) g.vertex(94.3 * scaleX, 840.2 * scaleY) g.vertex(-1 * scaleX, 840.2 * scaleY) g.vertex(-1 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 840.2 * scaleY) g.endShape(CLOSE) } function drawNomadArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(936.4 * scaleX, 825.3 * scaleY) g.vertex(885 * scaleX, 839.9 * scaleY) g.vertex(748.1 * scaleX, 666 * scaleY) g.vertex(853.7 * scaleX, 728.5 * scaleY) g.vertex(918.3 * scaleX, 621.6 * scaleY) g.vertex(764.8 * scaleX, 552.2 * scaleY) g.vertex(764.2 * scaleX, 531.1 * scaleY) g.vertex(851.4 * scaleX, 549.2 * scaleY) g.vertex(878.6 * scaleX, 494 * scaleY) g.vertex(764.2 * scaleX, 434.5 * scaleY) g.vertex(764.4 * scaleX, 339.5 * scaleY) g.vertex(869.1 * scaleX, 372.6 * scaleY) g.vertex(928.9 * scaleX, 262.8 * scaleY) g.vertex(563.9 * scaleX, 101.2 * scaleY) g.vertex(444.7 * scaleX, 101.2 * scaleY) g.vertex(69.1 * scaleX, 262.8 * scaleY) g.vertex(151.9 * scaleX, 369.5 * scaleY) g.vertex(241.6 * scaleX, 330.7 * scaleY) g.vertex(240.1 * scaleX, 442.1 * scaleY) g.vertex(129.1 * scaleX, 498.7 * scaleY) g.vertex(153.8 * scaleX, 554.8 * scaleY) g.vertex(240.3 * scaleX, 536.9 * scaleY) g.vertex(239.4 * scaleX, 561.5 * scaleY) g.vertex(97.9 * scaleX, 611.4 * scaleY) g.vertex(151.3 * scaleX, 729.4 * scaleY) g.vertex(261.1 * scaleX, 666.4 * scaleY) g.vertex(146.8 * scaleX, 846.6 * scaleY) g.vertex(99.4 * scaleX, 833.8 * scaleY) g.vertex(1.5 * scaleX, 856.5 * scaleY) g.vertex(-1.4 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 845.1 * scaleY) g.endShape(CLOSE) } function drawGuardArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(982.7 * scaleX, 850.9 * scaleY) g.vertex(982.7 * scaleX, 822.2 * scaleY) g.vertex(949.8 * scaleX, 822.2 * scaleY) g.vertex(949.8 * scaleX, 840.5 * scaleY) g.vertex(939.8 * scaleX, 837.3 * scaleY) g.vertex(939.8 * scaleX, 780.2 * scaleY) g.vertex(906.9 * scaleX, 780.2 * scaleY) g.vertex(906.9 * scaleX, 826.9 * scaleY) g.vertex(892.3 * scaleX, 822.3 * scaleY) g.vertex(892.3 * scaleX, 750.2 * scaleY) g.vertex(859.4 * scaleX, 750.2 * scaleY) g.vertex(859.4 * scaleX, 811.9 * scaleY) g.vertex(843 * scaleX, 806.6 * scaleY) g.vertex(843 * scaleX, 723.2 * scaleY) g.vertex(810.1 * scaleX, 723.2 * scaleY) g.vertex(810.1 * scaleX, 796.2 * scaleY) g.vertex(793.6 * scaleX, 791 * scaleY) g.vertex(793.6 * scaleX, 693.2 * scaleY) g.vertex(760.7 * scaleX, 693.2 * scaleY) g.vertex(760.7 * scaleX, 780.6 * scaleY) g.vertex(738.4 * scaleX, 773.5 * scaleY) g.vertex(738.4 * scaleX, 354.6 * scaleY) g.vertex(781.1 * scaleX, 354.6 * scaleY) g.vertex(781.1 * scaleX, 321.7 * scaleY) g.vertex(738.4 * scaleX, 321.7 * scaleY) g.vertex(738.4 * scaleX, 303.6 * scaleY) g.vertex(813.1 * scaleX, 303.6 * scaleY) g.vertex(813.1 * scaleX, 270.7 * scaleY) g.vertex(738.4 * scaleX, 270.7 * scaleY) g.vertex(738.4 * scaleX, 254.3 * scaleY) g.vertex(843.1 * scaleX, 254.3 * scaleY) g.vertex(843.1 * scaleX, 221.4 * scaleY) g.vertex(738.4 * scaleX, 221.4 * scaleY) g.vertex(738.4 * scaleX, 204.9 * scaleY) g.vertex(871.1 * scaleX, 204.9 * scaleY) g.vertex(871.1 * scaleX, 172 * scaleY) g.vertex(738.4 * scaleX, 172 * scaleY) g.vertex(738.4 * scaleX, 155.6 * scaleY) g.vertex(901.1 * scaleX, 155.6 * scaleY) g.vertex(901.1 * scaleX, 122.7 * scaleY) g.vertex(95.5 * scaleX, 122.7 * scaleY) g.vertex(95.5 * scaleX, 155.6 * scaleY) g.vertex(258.3 * scaleX, 155.6 * scaleY) g.vertex(258.3 * scaleX, 172 * scaleY) g.vertex(125.5 * scaleX, 172 * scaleY) g.vertex(125.5 * scaleX, 204.9 * scaleY) g.vertex(258.3 * scaleX, 204.9 * scaleY) g.vertex(258.3 * scaleX, 221.4 * scaleY) g.vertex(153.5 * scaleX, 221.4 * scaleY) g.vertex(153.5 * scaleX, 254.3 * scaleY) g.vertex(258.3 * scaleX, 254.3 * scaleY) g.vertex(258.3 * scaleX, 270.7 * scaleY) g.vertex(183.5 * scaleX, 270.7 * scaleY) g.vertex(183.5 * scaleX, 303.6 * scaleY) g.vertex(258.3 * scaleX, 303.6 * scaleY) g.vertex(258.3 * scaleX, 321.7 * scaleY) g.vertex(215.5 * scaleX, 321.7 * scaleY) g.vertex(215.5 * scaleX, 354.6 * scaleY) g.vertex(258.3 * scaleX, 354.6 * scaleY) g.vertex(258.3 * scaleX, 766 * scaleY) g.vertex(241 * scaleX, 771.7 * scaleY) g.vertex(241 * scaleX, 690.3 * scaleY) g.vertex(208.1 * scaleX, 690.3 * scaleY) g.vertex(208.1 * scaleX, 782.6 * scaleY) g.vertex(191.6 * scaleX, 788 * scaleY) g.vertex(191.6 * scaleX, 720.3 * scaleY) g.vertex(158.7 * scaleX, 720.3 * scaleY) g.vertex(158.7 * scaleX, 798.8 * scaleY) g.vertex(142.3 * scaleX, 804.2 * scaleY) g.vertex(142.3 * scaleX, 749.3 * scaleY) g.vertex(109.4 * scaleX, 749.3 * scaleY) g.vertex(109.4 * scaleX, 815.1 * scaleY) g.vertex(92.9 * scaleX, 820.5 * scaleY) g.vertex(92.9 * scaleX, 779.3 * scaleY) g.vertex(60 * scaleX, 779.3 * scaleY) g.vertex(60 * scaleX, 831.4 * scaleY) g.vertex(47 * scaleX, 835.7 * scaleY) g.vertex(47 * scaleX, 815.2 * scaleY) g.vertex(14.1 * scaleX, 815.2 * scaleY) g.vertex(14.1 * scaleX, 846.5 * scaleY) g.vertex(-1.9 * scaleX, 852.1 * scaleY) g.vertex(-1.7 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 856.4 * scaleY) g.endShape(CLOSE) } function drawBladePart1(g, scaleX, scaleY) { g.beginShape() g.vertex(666.3 * scaleX, 784.6 * scaleY) g.vertex(756.6 * scaleX, 733.6 * scaleY) g.vertex(741.7 * scaleX, 397.7 * scaleY) g.vertex(772.7 * scaleX, 351.3 * scaleY) g.vertex(736.4 * scaleX, 324.8 * scaleY) g.vertex(722.6 * scaleX, 136.6 * scaleY) g.vertex(615.3 * scaleX, 184.5 * scaleY) g.vertex(492.1 * scaleX, 132 * scaleY) g.vertex(353.6 * scaleX, 179.3 * scaleY) g.vertex(269.7 * scaleX, 127.6 * scaleY) g.vertex(257.9 * scaleX, 315 * scaleY) g.vertex(218.5 * scaleX, 342.3 * scaleY) g.vertex(254.2 * scaleX, 387.5 * scaleY) g.vertex(234.3 * scaleX, 721.5 * scaleY) g.vertex(327.2 * scaleX, 780.8 * scaleY) g.vertex(327.1 * scaleX, 873.6 * scaleY) g.vertex(666.7 * scaleX, 875.5 * scaleY) g.endShape(CLOSE) } function drawBladePart2(g, scaleX, scaleY) { g.beginShape() g.vertex(912 * scaleX, 847.9 * scaleY) g.vertex(891.9 * scaleX, 666.3 * scaleY) g.vertex(782.8 * scaleX, 776.3 * scaleY) g.vertex(212 * scaleX, 776.3 * scaleY) g.vertex(102.9 * scaleX, 666.3 * scaleY) g.vertex(82.8 * scaleX, 847.9 * scaleY) g.vertex(-.3 * scaleX, 877.9 * scaleY) g.vertex(-.3 * scaleX, 1020 * scaleY) g.vertex(1001.1 * scaleX, 1020 * scaleY) g.vertex(1001.1 * scaleX, 877.9 * scaleY) g.endShape(CLOSE) } function drawHavocPart1(g, scaleX, scaleY) { g.beginShape() g.vertex(776.4 * scaleX, 394.9 * scaleY) g.vertex(776.4 * scaleX, 328.4 * scaleY) g.vertex(758.9 * scaleX, 307 * scaleY) g.vertex(919.4 * scaleX, 72.7 * scaleY) g.vertex(655.5 * scaleX, 180.1 * scaleY) g.vertex(640.8 * scaleX, 162.1 * scaleY) g.vertex(584.8 * scaleX, 186 * scaleY) g.vertex(527.6 * scaleX, 162.1 * scaleY) g.vertex(497.7 * scaleX, 96.4 * scaleY) g.vertex(469.3 * scaleX, 162.1 * scaleY) g.vertex(412 * scaleX, 184.8 * scaleY) g.vertex(361.7 * scaleX, 162.1 * scaleY) g.vertex(346.9 * scaleX, 180.3 * scaleY) g.vertex(77.2 * scaleX, 75.2 * scaleY) g.vertex(241.9 * scaleX, 309.4 * scaleY) g.vertex(226.8 * scaleX, 327.9 * scaleY) g.vertex(226.8 * scaleX, 387.7 * scaleY) g.vertex(181.9 * scaleX, 432.6 * scaleY) g.vertex(226.8 * scaleX, 507.4 * scaleY) g.vertex(181.9 * scaleX, 552.3 * scaleY) g.bezierVertex( 181.9 * scaleX, 552.3 * scaleY, 228.1 * scaleX, 618 * scaleY, 229.3 * scaleX, 626.4 * scaleY ) g.vertex(228.4 * scaleX, 625.5 * scaleY) g.vertex(182 * scaleX, 671.9 * scaleY) g.vertex(274 * scaleX, 743.5 * scaleY) g.vertex(274 * scaleX, 743.2 * scaleY) g.bezierVertex( 323.4 * scaleX, 816.2 * scaleY, 407 * scaleX, 864.1 * scaleY, 501.8 * scaleX, 864.1 * scaleY ) g.bezierVertex( 590.2 * scaleX, 864.1 * scaleY, 668.8 * scaleX, 822.4 * scaleY, 719.1 * scaleX, 757.6 * scaleY ) g.vertex(819.5 * scaleX, 677 * scaleY) g.vertex(773.5 * scaleX, 631 * scaleY) g.bezierVertex( 775 * scaleX, 621 * scaleY, 819.5 * scaleX, 557.4 * scaleY, 819.5 * scaleX, 557.4 * scaleY ) g.vertex(776.7 * scaleX, 514.6 * scaleY) g.vertex(819.5 * scaleX, 437.8 * scaleY) g.vertex(776.7 * scaleX, 395 * scaleY) g.endShape(CLOSE) } function drawHavocPart2(g, scaleX, scaleY) { g.beginShape() g.vertex(985.3 * scaleX, 881.1 * scaleY) g.vertex(985.3 * scaleX, 880.8 * scaleY) g.bezierVertex( 985.3 * scaleX, 880.8 * scaleY, 921 * scaleX, 844.1 * scaleY, 895.5 * scaleX, 808.7 * scaleY ) g.vertex(952.6 * scaleX, 725.3 * scaleY) g.vertex(811 * scaleX, 782.9 * scaleY) g.vertex(809.9 * scaleX, 782.9 * scaleY) g.vertex(845.2 * scaleX, 731.3 * scaleY) g.vertex(718.5 * scaleX, 782.9 * scaleY) g.vertex(291.8 * scaleX, 782.9 * scaleY) g.vertex(167.3 * scaleX, 734.4 * scaleY) g.vertex(191.6 * scaleX, 769 * scaleY) g.vertex(72 * scaleX, 722.4 * scaleY) g.vertex(128.8 * scaleX, 803.2 * scaleY) g.bezierVertex( 106.4 * scaleX, 840.3 * scaleY, 35.5 * scaleX, 880.9 * scaleY, 35.5 * scaleX, 880.9 * scaleY ) g.bezierVertex( 35.5 * scaleX, 880.9 * scaleY, 0.7 * scaleX, 895.1 * scaleY, 0.7 * scaleX, 895.1 * scaleY ) g.vertex(-1.8 * scaleX, 1020 * scaleY) g.vertex(999.5 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 890.1 * scaleY) g.vertex(985.2 * scaleX, 881.2 * scaleY) g.endShape(CLOSE) } function drawFeroxArchetype(g, scaleX, scaleY) { g.beginShape() g.vertex(820.4 * scaleX, 703.4 * scaleY) g.vertex(793.4 * scaleX, 570.9 * scaleY) g.vertex(809.6 * scaleX, 510.6 * scaleY) g.vertex(878.1 * scaleX, 669.3 * scaleY) g.vertex(883.3 * scaleX, 343.3 * scaleY) g.vertex(790 * scaleX, 316.2 * scaleY) g.vertex(922.5 * scaleX, 297.5 * scaleY) g.vertex(870.4 * scaleX, 234.3 * scaleY) g.vertex(811.9 * scaleX, 219.4 * scaleY) g.vertex(756.8 * scaleX, 112 * scaleY) g.vertex(653.8 * scaleX, 160 * scaleY) g.vertex(620.2 * scaleX, 78.7 * scaleY) g.vertex(543.4 * scaleX, 94.3 * scaleY) g.vertex(495.4 * scaleX, 16.2 * scaleY) g.vertex(460.6 * scaleX, 94.9 * scaleY) g.vertex(389.4 * scaleX, 78.7 * scaleY) g.vertex(363.4 * scaleX, 154.1 * scaleY) g.vertex(260.4 * scaleX, 109.5 * scaleY) g.vertex(206.8 * scaleX, 216 * scaleY) g.vertex(127 * scaleX, 234.3 * scaleY) g.vertex(70.9 * scaleX, 297.5 * scaleY) g.vertex(205.7 * scaleX, 316.2 * scaleY) g.vertex(121.4 * scaleX, 339.3 * scaleY) g.vertex(130.5 * scaleX, 675.3 * scaleY) g.vertex(186.1 * scaleX, 507.6 * scaleY) g.vertex(205.2 * scaleX, 570.9 * scaleY) g.vertex(177 * scaleX, 703.4 * scaleY) g.vertex(0.1 * scaleX, 782.6 * scaleY) g.vertex(-0.2 * scaleX, 1020 * scaleY) g.vertex(1000.2 * scaleX, 1020 * scaleY) g.vertex(1000.2 * scaleX, 781.3 * scaleY) g.endShape(CLOSE) } function drawVantaPart1(g, scaleX, scaleY) { g.beginShape() g.vertex(719.2 * scaleX, 202 * scaleY) g.vertex(719.3 * scaleX, 201.9 * scaleY) g.vertex(719.2 * scaleX, 201.9 * scaleY) g.vertex(717.4 * scaleX, 181 * scaleY) g.vertex(691 * scaleX, 173.7 * scaleY) g.vertex(579.5 * scaleX, 62.1 * scaleY) g.vertex(579.5 * scaleX, 110.1 * scaleY) g.vertex(624.9 * scaleX, 155.6 * scaleY) g.vertex(528.3 * scaleX, 129.1 * scaleY) g.vertex(566.7 * scaleX, 90.6 * scaleY) g.vertex(495 * scaleX, 18.9 * scaleY) g.vertex(423.2 * scaleX, 90.6 * scaleY) g.vertex(459.7 * scaleX, 127.2 * scaleY) g.vertex(371.9 * scaleX, 151.4 * scaleY) g.vertex(413.9 * scaleX, 109.6 * scaleY) g.vertex(413.9 * scaleX, 61.6 * scaleY) g.vertex(305.3 * scaleX, 169.8 * scaleY) g.vertex(265.1 * scaleX, 181 * scaleY) g.vertex(227 * scaleX, 830.8 * scaleY) g.vertex(773 * scaleX, 840.5 * scaleY) g.endShape(CLOSE) } function drawVantaPart2(g, scaleX, scaleY) { g.beginShape() g.vertex(1002 * scaleX, 880 * scaleY) g.vertex(1002 * scaleX, 878.9 * scaleY) g.vertex(1002 * scaleX, 878.3 * scaleY) g.vertex(1002 * scaleX, 878 * scaleY) g.vertex(928.5 * scaleX, 808.2 * scaleY) g.vertex(905.8 * scaleX, 831 * scaleY) g.vertex(866.8 * scaleX, 792 * scaleY) g.vertex(851.6 * scaleX, 807.2 * scaleY) g.vertex(822.2 * scaleX, 777.8 * scaleY) g.vertex(808.5 * scaleX, 791.6 * scaleY) g.vertex(781.2 * scaleX, 776.5 * scaleY) g.vertex(211.1 * scaleX, 776.5 * scaleY) g.vertex(186.6 * scaleX, 790.1 * scaleY) g.vertex(172.4 * scaleX, 775.8 * scaleY) g.vertex(142 * scaleX, 806.2 * scaleY) g.vertex(123.8 * scaleX, 788 * scaleY) g.vertex(89.9 * scaleX, 821.9 * scaleY) g.vertex(72.2 * scaleX, 804.2 * scaleY) g.vertex(0.4 * scaleX, 875.9 * scaleY) g.vertex(1.8 * scaleX, 877.3 * scaleY) g.vertex(-0.9 * scaleX, 878.3 * scaleY) g.vertex(-0.9 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 1020 * scaleY) g.vertex(1002 * scaleX, 881 * scaleY) g.endShape(CLOSE) } function drawPrimeArchetype(g, scaleX, scaleY) { g.beginShape() let x = -2.3 * scaleX let y = 881.6 * scaleY g.vertex(x, y) let cp1x = x + 34.5 * scaleX let cp1y = y - 70 * scaleY let cp2x = x + 80.7 * scaleX