diff --git a/media/attribution.js b/media/attribution.js
index 74613ba5..ca70e057 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -2338,6 +2338,20 @@ const attributionData = {
"libragonslvr"
]
},
+ {
+ prefix: "./media/characters/holly/",
+ files: [
+ { name: "front.svg", source: "https://www.furaffinity.net/view/19248385/" },
+ { name: "back.svg", source: "https://www.furaffinity.net/view/19248385/" },
+ { name: "front-working.svg", source: "https://www.furaffinity.net/view/19248385/" },
+ ],
+ authors: [
+ "touchofsnow"
+ ],
+ owners: [
+ "neopuc"
+ ]
+ },
{
prefix: "./media/characters/ilisha-devya/",
files: [
@@ -3050,6 +3064,18 @@ const attributionData = {
"somedaynotsoon"
]
},
+ {
+ prefix: "./media/characters/mira/",
+ files: [
+ { name: "side.svg", source: "https://www.furaffinity.net/view/12856326/" }
+ ],
+ authors: [
+ "modemredpill"
+ ],
+ owners: [
+ "neopuc"
+ ]
+ },
{
prefix: "./media/characters/mira-al-cul/",
files: [
@@ -3416,6 +3442,19 @@ const attributionData = {
"pisces-kelp"
]
},
+ {
+ prefix: "./media/characters/porter/",
+ files: [
+ { name: "front.svg", source: "https://www.furaffinity.net/view/19472014/" },
+ { name: "front-robes.svg", source: "https://www.furaffinity.net/view/19472014/" },
+ ],
+ authors: [
+ "homogeneousrule"
+ ],
+ owners: [
+ "neopuc"
+ ]
+ },
{
prefix: "./media/characters/prodigy/",
files: [
@@ -6365,6 +6404,14 @@ const attributionData = {
"name": "Keedot",
"url": "https://www.furaffinity.net/user/keedot/",
},
+ "modemredpill": {
+ "name": "modem_redpill",
+ "url": "https://www.furaffinity.net/user/modemredpill/",
+ },
+ "touchofsnow": {
+ "name": "touchofsnow",
+ "url": "https://www.furaffinity.net/user/touchofsnow/",
+ },
}
}
diff --git a/media/characters/holly/back.svg b/media/characters/holly/back.svg
new file mode 100644
index 00000000..e93f7f21
--- /dev/null
+++ b/media/characters/holly/back.svg
@@ -0,0 +1,91 @@
+
+
+
diff --git a/media/characters/holly/front-working.svg b/media/characters/holly/front-working.svg
new file mode 100644
index 00000000..774f4438
--- /dev/null
+++ b/media/characters/holly/front-working.svg
@@ -0,0 +1,147 @@
+
+
+
diff --git a/media/characters/holly/front.svg b/media/characters/holly/front.svg
new file mode 100644
index 00000000..e7c1b0d9
--- /dev/null
+++ b/media/characters/holly/front.svg
@@ -0,0 +1,88 @@
+
+
+
diff --git a/media/characters/mira/side.svg b/media/characters/mira/side.svg
new file mode 100644
index 00000000..76f9945c
--- /dev/null
+++ b/media/characters/mira/side.svg
@@ -0,0 +1,119 @@
+
+
+
diff --git a/media/characters/porter/front-robes.svg b/media/characters/porter/front-robes.svg
new file mode 100644
index 00000000..e4c764d5
--- /dev/null
+++ b/media/characters/porter/front-robes.svg
@@ -0,0 +1,228 @@
+
+
+
diff --git a/media/characters/porter/front.svg b/media/characters/porter/front.svg
new file mode 100644
index 00000000..f4f6bc19
--- /dev/null
+++ b/media/characters/porter/front.svg
@@ -0,0 +1,96 @@
+
+
+
diff --git a/presets/characters.js b/presets/characters.js
index 2aada637..87e3d120 100644
--- a/presets/characters.js
+++ b/presets/characters.js
@@ -11226,6 +11226,129 @@ characterMakers["Ilisha Devya"] = () => {
)
};
+characterMakers["Mira"] = () => {
+ return makeCharacter(
+ "Mira",
+ "Neopuc",
+ {
+ Side: {
+ height: math.unit(6, "feet"),
+ weight: math.unit(150, "lb"),
+ name: "Side",
+ image: {
+ source: "./media/characters/mira/side.svg",
+ extra: 900/799 * (1 / (1 - 0.02)),
+ bottom: 0.02
+ }
+ },
+ },
+ [
+ {
+ name: "Human Size",
+ height: math.unit(6, "feet")
+ },
+ {
+ name: "Macro",
+ height: math.unit(100, "feet"),
+ default: true
+ },
+ {
+ name: "Megamacro",
+ height: math.unit(10, "miles")
+ },
+ {
+ name: "Gigamacro",
+ height: math.unit(25000, "miles")
+ },
+ {
+ name: "Teramacro",
+ height: math.unit(300, "AU")
+ },
+ {
+ name: "Full Size",
+ height: math.unit(4.5e10, "lightyears")
+ },
+ ]
+ )
+};
+
+characterMakers["Holly"] = () => {
+ return makeCharacter(
+ "Holly",
+ "Neopuc",
+ {
+ front: {
+ height: math.unit(6, "feet"),
+ weight: math.unit(150, "lb"),
+ name: "Front",
+ image: {
+ source: "./media/characters/holly/front.svg",
+ extra: 639/606
+ }
+ },
+ back: {
+ height: math.unit(6, "feet"),
+ weight: math.unit(150, "lb"),
+ name: "Back",
+ image: {
+ source: "./media/characters/holly/back.svg",
+ extra: 623/598
+ }
+ },
+ frontWorking: {
+ height: math.unit(6, "feet"),
+ weight: math.unit(150, "lb"),
+ name: "Front (Working)",
+ image: {
+ source: "./media/characters/holly/front-working.svg",
+ extra: 607/577 * (1 / (1 - 0.048)),
+ bottom: 0.048
+ }
+ },
+ },
+ [
+ {
+ name: "Normal",
+ height: math.unit(12 + 3/12, "feet")
+ },
+ ]
+ )
+};
+
+characterMakers["Porter"] = () => {
+ return makeCharacter(
+ "Porter",
+ "Neopuc",
+ {
+ front: {
+ height: math.unit(6, "feet"),
+ weight: math.unit(150, "lb"),
+ name: "Front",
+ image: {
+ source: "./media/characters/porter/front.svg",
+ extra: 1 / (1 - 0.01),
+ bottom: 0.01
+ }
+ },
+ frontRobes: {
+ height: math.unit(6, "feet"),
+ weight: math.unit(150, "lb"),
+ name: "Front (Robes)",
+ image: {
+ source: "./media/characters/porter/front-robes.svg",
+ extra: 1.01 * (1 / (1 - 0.01)),
+ bottom: 0.01
+ }
+ },
+ },
+ [
+ {
+ name: "Normal",
+ height: math.unit(11 + 9/12, "feet")
+ },
+ ]
+ )
+};
function makeCharacters() {
const results = [];
diff --git a/presets/scenes.js b/presets/scenes.js
index 8d0e74f0..fc77d254 100644
--- a/presets/scenes.js
+++ b/presets/scenes.js
@@ -67,6 +67,21 @@ scenes["Kurri"] = () => {
arrangeEntities(getSortedEntities());
fitWorld(true);
+}
-
+scenes["Neopuc"] = () => {
+ availableEntities["characters"].filter(x => {
+ const entity = x.constructor();
+ const owners = ownersOf(entity.views[entity.view].image.source);
+ if (owners)
+ return owners.indexOf("neopuc") != -1;
+ else
+ return false;
+ }).forEach(maker => {
+ const entity = maker.constructor();
+ displayEntity(entity, entity.view, 0, 1);
+ });
+
+ arrangeEntities(getSortedEntities());
+ fitWorld(true);
}
\ No newline at end of file