diff --git a/media/attribution.js b/media/attribution.js
index 2f19e0c5..0e691071 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -11801,6 +11801,36 @@ const attributionData = {
"killer-krow"
]
},
+ {
+ prefix: "./media/characters/joanna/",
+ files: [
+ { name: "front.svg", source: "https://www.furaffinity.net/view/33201834/", nsfw: true },
+ { name: "back.svg", source: "https://www.furaffinity.net/view/33201834/", nsfw: true },
+ { name: "front-shorts.svg", source: "https://www.furaffinity.net/view/33201834/" },
+ { name: "front-biker.svg", source: "https://www.furaffinity.net/view/33201834/" },
+ { name: "back-biker.svg", source: "https://www.furaffinity.net/view/33201834/" },
+ ],
+ authors: [
+ "darsaberclaw",
+ "va0027"
+ ],
+ owners: [
+ "va0027"
+ ]
+ },
+ {
+ prefix: "./media/characters/joanna/",
+ files: [
+ { name: "bike-left.svg", source: "https://www.furaffinity.net/view/33201834/" },
+ { name: "bike-right.svg", source: "https://www.furaffinity.net/view/33201834/" },
+ ],
+ authors: [
+ "pocketcookie"
+ ],
+ owners: [
+ "va0027"
+ ]
+ },
//characters
{
prefix: "./media/dildos/chance/",
@@ -16248,6 +16278,14 @@ const attributionData = {
"name": "KillerKrow",
"url": "https://twitter.com/killer_krow"
},
+ "darsaberclaw": {
+ "name": "DarSaberclaw",
+ "url": "https://www.furaffinity.net/user/darsaberclaw"
+ },
+ "pocketcookie": {
+ "name": "pocketcookie",
+ "url": "https://www.furaffinity.net/user/pocketcookie"
+ },
}
}
diff --git a/media/characters/joanna/back-biker.svg b/media/characters/joanna/back-biker.svg
new file mode 100644
index 00000000..de0633ba
--- /dev/null
+++ b/media/characters/joanna/back-biker.svg
@@ -0,0 +1,1046 @@
+
+
+
diff --git a/media/characters/joanna/back.svg b/media/characters/joanna/back.svg
new file mode 100644
index 00000000..24c10000
--- /dev/null
+++ b/media/characters/joanna/back.svg
@@ -0,0 +1,787 @@
+
+
+
diff --git a/media/characters/joanna/bike-left.svg b/media/characters/joanna/bike-left.svg
new file mode 100644
index 00000000..e42a14ea
--- /dev/null
+++ b/media/characters/joanna/bike-left.svg
@@ -0,0 +1,1106 @@
+
+
+
diff --git a/media/characters/joanna/bike-right.svg b/media/characters/joanna/bike-right.svg
new file mode 100644
index 00000000..e71b2c03
--- /dev/null
+++ b/media/characters/joanna/bike-right.svg
@@ -0,0 +1,1020 @@
+
+
+
diff --git a/media/characters/joanna/front-biker.svg b/media/characters/joanna/front-biker.svg
new file mode 100644
index 00000000..bb8dc036
--- /dev/null
+++ b/media/characters/joanna/front-biker.svg
@@ -0,0 +1,1024 @@
+
+
+
diff --git a/media/characters/joanna/front-shorts.svg b/media/characters/joanna/front-shorts.svg
new file mode 100644
index 00000000..6e119555
--- /dev/null
+++ b/media/characters/joanna/front-shorts.svg
@@ -0,0 +1,1068 @@
+
+
+
diff --git a/media/characters/joanna/front.svg b/media/characters/joanna/front.svg
new file mode 100644
index 00000000..cf2c7a70
--- /dev/null
+++ b/media/characters/joanna/front.svg
@@ -0,0 +1,1166 @@
+
+
+
diff --git a/presets/characters.js b/presets/characters.js
index c5050154..a7b25f48 100644
--- a/presets/characters.js
+++ b/presets/characters.js
@@ -30216,6 +30216,113 @@ characterMakers.push(() => makeCharacter(
]
))
+characterMakers.push(() => makeCharacter(
+ { name: "Joanna", species: ["wolf"], tags: ["anthro"] },
+ {
+ front: {
+ height: math.unit(3.5, "meters"),
+ weight: math.unit(1200, "kg"),
+ name: "Front",
+ image: {
+ source: "./media/characters/joanna/front.svg",
+ extra: 1596/1488,
+ bottom: 29/1625
+ }
+ },
+ back: {
+ height: math.unit(3.5, "meters"),
+ weight: math.unit(1200, "kg"),
+ name: "Back",
+ image: {
+ source: "./media/characters/joanna/back.svg",
+ extra: 1594/1495,
+ bottom: 26/1620
+ }
+ },
+ frontShorts: {
+ height: math.unit(3.5, "meters"),
+ weight: math.unit(1200, "kg"),
+ name: "Front (Shorts)",
+ image: {
+ source: "./media/characters/joanna/front-shorts.svg",
+ extra: 1596/1488,
+ bottom: 29/1625
+ }
+ },
+ frontBiker: {
+ height: math.unit(3.5, "meters"),
+ weight: math.unit(1200, "kg"),
+ name: "Front (Biker)",
+ image: {
+ source: "./media/characters/joanna/front-biker.svg",
+ extra: 1596/1488,
+ bottom: 29/1625
+ }
+ },
+ backBiker: {
+ height: math.unit(3.5, "meters"),
+ weight: math.unit(1200, "kg"),
+ name: "Back (Biker)",
+ image: {
+ source: "./media/characters/joanna/back-biker.svg",
+ extra: 1594/1495,
+ bottom: 88/1682
+ }
+ },
+ bikeLeft: {
+ height: math.unit(2.4, "meters"),
+ weight: math.unit(1600, "kg"),
+ name: "Bike (Left)",
+ image: {
+ source: "./media/characters/joanna/bike-left.svg",
+ extra: 720/720,
+ bottom: 8/728
+ }
+ },
+ bikeRight: {
+ height: math.unit(2.4, "meters"),
+ weight: math.unit(1600, "kg"),
+ name: "Bike (Right)",
+ image: {
+ source: "./media/characters/joanna/bike-right.svg",
+ extra: 720/720,
+ bottom: 8/728
+ }
+ },
+ },
+ [
+ {
+ name: "Incognito",
+ height: math.unit(3.5, "meters")
+ },
+ {
+ name: "Casual Big",
+ height: math.unit(200, "meters")
+ },
+ {
+ name: "Macro",
+ height: math.unit(600, "meters")
+ },
+ {
+ name: "Original",
+ height: math.unit(20, "km"),
+ default: true
+ },
+ {
+ name: "Giga",
+ height: math.unit(400, "km")
+ },
+ {
+ name: "Lounging",
+ height: math.unit(1500, "km")
+ },
+ {
+ name: "Planetary",
+ height: math.unit(200000, "km")
+ },
+ ]
+))
+
//characters
function makeCharacters() {