0x77b35947…cc7dsent to0xc3e1f0dd…9515·#25,613,200·view on Etherscan
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