diff --git a/media/attribution.js b/media/attribution.js index e0915868..5ed792f4 100644 --- a/media/attribution.js +++ b/media/attribution.js @@ -19726,6 +19726,23 @@ const attributionData = { "youira" ] }, + { + prefix: "./media/characters/poptart/", + files: [ + { name: "front.svg", source: null }, + { name: "back.svg", source: null }, + { name: "front-nsfw.svg", source: null, nsfw: true }, + { name: "back-nsfw.svg", source: null, nsfw: true }, + { name: "hand.svg", source: null }, + { name: "foot.svg", source: null }, + ], + authors: [ + "carifoxleopard" + ], + owners: [ + "ovenotter" + ] + }, //characters { prefix: "./media/fiction/halo/halo/", @@ -27447,6 +27464,10 @@ const attributionData = { "name": "youira", "url": "https://www.furaffinity.net/user/youira" }, + "carifoxleopard": { + "name": "CariFoxleopard", + "url": "https://www.furaffinity.net/user/carifoxleopard/" + }, } } diff --git a/media/characters/poptart/back-nsfw.svg b/media/characters/poptart/back-nsfw.svg new file mode 100644 index 00000000..b5496fe3 --- /dev/null +++ b/media/characters/poptart/back-nsfw.svg @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/characters/poptart/back.svg b/media/characters/poptart/back.svg new file mode 100644 index 00000000..f5030009 --- /dev/null +++ b/media/characters/poptart/back.svg @@ -0,0 +1,718 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/characters/poptart/foot.svg b/media/characters/poptart/foot.svg new file mode 100644 index 00000000..f32d3d38 --- /dev/null +++ b/media/characters/poptart/foot.svg @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/characters/poptart/front-nsfw.svg b/media/characters/poptart/front-nsfw.svg new file mode 100644 index 00000000..835ac817 --- /dev/null +++ b/media/characters/poptart/front-nsfw.svg @@ -0,0 +1,1045 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/characters/poptart/front.svg b/media/characters/poptart/front.svg new file mode 100644 index 00000000..0d895ef4 --- /dev/null +++ b/media/characters/poptart/front.svg @@ -0,0 +1,1103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/characters/poptart/hand.svg b/media/characters/poptart/hand.svg new file mode 100644 index 00000000..59a8e9a6 --- /dev/null +++ b/media/characters/poptart/hand.svg @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/presets/characters.js b/presets/characters.js index b0c792b5..9cee3f3e 100644 --- a/presets/characters.js +++ b/presets/characters.js @@ -53899,6 +53899,73 @@ characterMakers.push(() => makeCharacter( ] )) +characterMakers.push(() => makeCharacter( + { name: "Poptart", species: ["red-panda", "husky"], tags: ["anthro"] }, + { + front: { + height: math.unit(6, "feet"), + weight: math.unit(150, "lb"), + name: "Front", + image: { + source: "./media/characters/poptart/front.svg", + extra: 615/583, + bottom: 23/638 + } + }, + back: { + height: math.unit(6, "feet"), + weight: math.unit(150, "lb"), + name: "Back", + image: { + source: "./media/characters/poptart/back.svg", + extra: 617/584, + bottom: 22/639 + } + }, + frontNsfw: { + height: math.unit(6, "feet"), + weight: math.unit(150, "lb"), + name: "Front (NSFW)", + image: { + source: "./media/characters/poptart/front-nsfw.svg", + extra: 615/583, + bottom: 23/638 + } + }, + backNsfw: { + height: math.unit(6, "feet"), + weight: math.unit(150, "lb"), + name: "Back (NSFW)", + image: { + source: "./media/characters/poptart/back-nsfw.svg", + extra: 617/584, + bottom: 22/639 + } + }, + hand: { + height: math.unit(1.14, "feet"), + name: "Hand", + image: { + source: "./media/characters/poptart/hand.svg" + } + }, + foot: { + height: math.unit(1.5, "feet"), + name: "Foot", + image: { + source: "./media/characters/poptart/foot.svg" + } + }, + }, + [ + { + name: "Normal", + height: math.unit(6, "feet"), + default: true + }, + ] +)) + //characters function makeCharacters() { diff --git a/scripts/illustrator.jsx b/scripts/illustrator.jsx new file mode 100644 index 00000000..9271b0c2 --- /dev/null +++ b/scripts/illustrator.jsx @@ -0,0 +1,103 @@ +var doc = app.activeDocument; + +var layers = doc.layers; + +var traces = [] + +settings = [ + { + name: "Light", + color: 0x4d, + threshold: 128 + }, + { + name: "Medium", + color: 0x33, + threshold: 96 + }, + { + name: "Dark", + color: 0x1a, + threshold: 64 + }, + { + name: "Black", + color: 0x00, + threshold: 128 + } +] + +for (var j=0; j= 0) { + candidate.remove() + break + } +} + +for (var i=0; i= 0) { + layer = candidate; + break; + } + } + + var raster = layer.pageItems[0] + var pluginRef = raster.trace() + var trace = pluginRef.tracing + traces.push(trace) + var options = trace.tracingOptions + + options.tracingMode = TracingModeType.TRACINGMODEBLACKANDWHITE + options.threshold = item.threshold + options.ignoreWhite = true + options.noiseFidelity = 10 + options.corderFidelity = 0.5 + options.pathFidelity = 75 + options.tracingMethod = TracingMethodType.TRACINGMETHODABUTTING + options.snapCurvesToLines = false + + traced = trace.expandTracing(); + + traces.push(traced); + + var toSet = [] + + for (var j=0; j < traced.pathItems.length; j++) { + toSet.push(traced.pathItems[j]) + } + + for (var j=0; j < traced.compoundPathItems.length; j++) { + for (var k=0; k < traced.compoundPathItems[j].pathItems.length; k++) + { + toSet.push(traced.compoundPathItems[j].pathItems[k]) + } + } + + for (var j=0; j< toSet.length; j++) { + var thing = toSet[j] + + var color = new RGBColor() + + color.red = item.color + color.green = item.color + color.blue = item.color + + thing.fillColor = color + } +} + +for (var i = 0; i < traces.length; i++) { + traces[i].selected = true +} + +app.executeMenuCommand("group") + +doc.fitArtboardToSelectedArt(0)