diff --git a/.gitignore b/.gitignore index 8bc691d..b09796f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ output/ Cargo.lock target/ blobfox-*.zip +species/custom/ diff --git a/Cargo.toml b/Cargo.toml index b0f2f12..d358b4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,3 +21,4 @@ usvg = "0.23" tiny-skia = "0.6" png = "0.17" css-color-parser = "0.1.2" +wax = "0.5.0" diff --git a/snuggle.toml b/snuggle.toml index 324a5fa..6c3575f 100644 --- a/snuggle.toml +++ b/snuggle.toml @@ -11,6 +11,11 @@ blobfox_blush = "blobfox_blush" blobfox_happy = "blobfox_happy" blobfox_aww = "blobfox_aww" +blobhusky = "blobhusky_snuggle_left" +blobhusky_blush = "blobhusky_blush" +blobhusky_happy = "blobhusky_happy" +blobhusky_aww = "blobhusky_aww" + blobcat = "blobcat_snuggle_left" blobcat_blush = "blobcat_blush" blobcat_happy = "blobcat_happy" @@ -29,3 +34,30 @@ blobarcticfox_aww = "blobarcticfox_aww" [right] blobfox = "blobfox_snuggle_right" blobfox_blush = "blobfox_snuggle_right_blush" +blobfox_heart = "blobfox_snuggle_right_heart" +blobfox_blush_heart = "blobfox_snuggle_right_blush_heart" + +blobarcticfox = "blobarcticfox_snuggle_right" +blobarcticfox_blush = "blobarcticfox_snuggle_right_blush" +blobarcticfox_heart = "blobarcticfox_snuggle_right_heart" +blobarcticfox_blush_heart = "blobarcticfox_snuggle_right_blush_heart" + +blobhusky = "blobhusky_snuggle_right" +blobhusky_blush = "blobhusky_snuggle_right_blush" +blobhusky_heart = "blobhusky_snuggle_right_heart" +blobhusky_blush_heart = "blobhusky_snuggle_right_blush_heart" + +blobcat = "blobcat_snuggle_right" +blobcat_blush = "blobcat_snuggle_right_blush" +blobcat_heart = "blobcat_snuggle_right_heart" +blobcat_blush_heart = "blobcat_snuggle_right_blush_heart" + +blobamber = "blobamber_snuggle_right" +blobamber_blush = "blobamber_snuggle_right_blush" +blobamber_heart = "blobamber_snuggle_right_heart" +blobamber_blush_heart = "blobamber_snuggle_right_blush_heart" + +blobstella = "blobstella_snuggle_right" +blobstella_blush = "blobstella_snuggle_right_blush" +blobstella_heart = "blobstella_snuggle_right_heart" +blobstella_blush_heart = "blobstella_snuggle_right_blush_heart" diff --git a/species/blobamber/templates/body-snuggle.mustache b/species/blobamber/templates/body-snuggle.mustache new file mode 100644 index 0000000..e6540c9 --- /dev/null +++ b/species/blobamber/templates/body-snuggle.mustache @@ -0,0 +1,10 @@ +{{>blobcat.body-snuggle}} + + + + {{#set-fill}} + {{vars.marks_color}} + | {{#base}}#belly{{/base}} + {{/set-fill}} + + diff --git a/species/blobarcticfox/assets/snuggle_right.svg b/species/blobarcticfox/assets/snuggle_right.svg new file mode 100644 index 0000000..d59afe1 --- /dev/null +++ b/species/blobarcticfox/assets/snuggle_right.svg @@ -0,0 +1,51 @@ + + + blobarcticfox_snuggle_right + + + + + + + + + + + + + + + + + + + + + + + + + + Blobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 License + + + blobarcticfox_snuggle_right + + + Feuerfuchs + + + https://git.shadamethyst.xyz/adri326/blobfox + + + Shad Amethyst + + + + + + + diff --git a/species/blobarcticfox/species.toml b/species/blobarcticfox/species.toml index ea6355f..4b4124e 100644 --- a/species/blobarcticfox/species.toml +++ b/species/blobarcticfox/species.toml @@ -9,3 +9,4 @@ hand_color = "#eef2f4" tail_color = "#eef2f4" marks_color = "#eee64e" sheen_color = "#bfdef4" +hand_stroke_color = "#8599ad" diff --git a/species/blobarcticfox/templates/body-snuggle.mustache b/species/blobarcticfox/templates/body-snuggle.mustache new file mode 100644 index 0000000..156a12c --- /dev/null +++ b/species/blobarcticfox/templates/body-snuggle.mustache @@ -0,0 +1,16 @@ +{{! Left ear }} +{{#set-fill}} {{vars.ear_color}} | {{#snuggle_right}}#left-ear{{/snuggle_right}} {{/set-fill}} + +{{! Body }} + + + {{#snuggle_right}}#body{{/snuggle_right}} + + +{{#set-fill}} {{vars.sheen_color}} | {{#snuggle_right}}#body-sheen{{/snuggle_right}} {{/set-fill}} +{{#set-fill}} {{vars.body_color}} | {{#snuggle_right}}#body{{/snuggle_right}} {{/set-fill}} +{{#set-fill}} {{vars.body_color}} | {{#snuggle_right}}#hair{{/snuggle_right}} {{/set-fill}} + +{{! Right ear }} +{{#set-fill}} {{vars.ear_color}} | {{#snuggle_right}}#right-ear{{/snuggle_right}} {{/set-fill}} +{{#set-fill}} {{vars.ear_fluff_color}} | {{#snuggle_right}}#right-ear-fluff{{/snuggle_right}} {{/set-fill}} diff --git a/species/blobcat/assets/snuggle_right.svg b/species/blobcat/assets/snuggle_right.svg new file mode 100644 index 0000000..a76b618 --- /dev/null +++ b/species/blobcat/assets/snuggle_right.svg @@ -0,0 +1,51 @@ + + + blobfox_snuggle_right + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 License + + + blobfox_snuggle_right + + + Feuerfuchs + + + https://git.shadamethyst.xyz/adri326/blobfox + + + Shad Amethyst + + + + + + diff --git a/species/blobcat/templates/body-snuggle.mustache b/species/blobcat/templates/body-snuggle.mustache new file mode 100644 index 0000000..0b204cf --- /dev/null +++ b/species/blobcat/templates/body-snuggle.mustache @@ -0,0 +1,18 @@ +{{! Left ear }} +{{#set-fill}} {{vars.ear_color}} | {{#snuggle_right}}#left-ear{{/snuggle_right}} {{/set-fill}} + +{{! Body }} + + + {{#snuggle_right}}#body{{/snuggle_right}} + + +{{#set-fill}} {{vars.body_color}} | {{#snuggle_right}}#body{{/snuggle_right}} {{/set-fill}} + +{{! Right ear }} +{{#set-fill}} {{vars.ear_color}} | {{#snuggle_right}}#right-ear{{/snuggle_right}} {{/set-fill}} +{{#set-fill}} {{vars.ear_fluff_color}} | {{#snuggle_right}}#right-ear-fluff{{/snuggle_right}} {{/set-fill}} + + + {{>whiskers}} + diff --git a/species/blobfox/assets/coffee.svg b/species/blobfox/assets/coffee.svg new file mode 100644 index 0000000..3844688 --- /dev/null +++ b/species/blobfox/assets/coffee.svg @@ -0,0 +1,44 @@ + + + coffee + + + + + + + + + + + + + + + + + + + + + + + Blobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 License + + + + + Feuerfuchs + + + https://git.shadamethyst.xyz/adri326/blobfox + + + Shad Amethyst + + + coffee + + + + diff --git a/species/blobfox/assets/snuggle_right.svg b/species/blobfox/assets/snuggle_right.svg index 1941986..6a26c88 100644 --- a/species/blobfox/assets/snuggle_right.svg +++ b/species/blobfox/assets/snuggle_right.svg @@ -1,27 +1,28 @@ - - blobfox - - + + blobfox_snuggle_right + + - - - + - - - - - - + + + + + + - - - - - - + + + + + + + @@ -31,7 +32,7 @@ Blobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 License - blobfox + blobfox_snuggle_right Feuerfuchs diff --git a/species/blobfox/species.toml b/species/blobfox/species.toml index 261aacc..c2a2234 100644 --- a/species/blobfox/species.toml +++ b/species/blobfox/species.toml @@ -42,6 +42,7 @@ comfy_boop = ["body-comfy", "boop", "eyes-basic", "mouth-w"] stabby = ["body-basic", "holding", "eyes-evil", "mouth-w", "hand-3c", "left-hand"] gordon = ["body-basic", "holding", "eyes-basic", "mouth-w", "hand-3c", "left-hand"] +coffee = ["body-basic", "holding", "eyes-basic", "mouth-w", "hand-cup", "right-hand"] blush = ["body-basic", "ear-blush", "eyes-closed", "blush", "mouth-hmpf"] diff --git a/species/blobfox/templates/body-snuggle.mustache b/species/blobfox/templates/body-snuggle.mustache index db2c8f7..80811ba 100644 --- a/species/blobfox/templates/body-snuggle.mustache +++ b/species/blobfox/templates/body-snuggle.mustache @@ -3,7 +3,7 @@ {{! Body }} - + {{#snuggle_right}}#body{{/snuggle_right}} diff --git a/species/blobfox/templates/coffee.mustache b/species/blobfox/templates/coffee.mustache new file mode 100644 index 0000000..4e43c60 --- /dev/null +++ b/species/blobfox/templates/coffee.mustache @@ -0,0 +1,6 @@ + + {{#coffee}}#smoke{{/coffee}} + {{#coffee}}#cup{{/coffee}} + {{#coffee}}#cup-handle{{/coffee}} + {{#coffee}}#liquid{{/coffee}} + diff --git a/species/blobfox/templates/hands.mustache b/species/blobfox/templates/hands.mustache index 57317b2..46468e8 100644 --- a/species/blobfox/templates/hands.mustache +++ b/species/blobfox/templates/hands.mustache @@ -15,24 +15,48 @@ {{/set-fill}} {{/set-stroke}} {{/tags.hands-reach}} + {{#tags.hand-3c}} {{#tags.holding}} - {{#set-fill}} {{vars.hand_color}} | {{#knife}}#left-hand{{/knife}} {{/set-fill}} + {{#set-stroke}} + {{vars.hand_stroke_color}} | + {{#set-fill}} {{vars.hand_color}} | {{#knife}}#left-hand{{/knife}} {{/set-fill}} + {{/set-stroke}} {{/tags.holding}} {{^tags.holding}} {{! :3c hand }} - {{#set-fill}} {{vars.hand_color}} | {{#3c_evil}}#left-hand{{/3c_evil}} {{/set-fill}} + + {{#set-stroke}} + {{vars.hand_stroke_color}} | + {{#set-fill}} {{vars.hand_color}} | {{#3c_evil}}#left-hand{{/3c_evil}} {{/set-fill}} + {{/set-stroke}} {{/tags.holding}} {{/tags.hand-3c}} {{^tags.hand-3c}} {{#tags.holding}} {{#tags.left-hand}} - {{#set-fill}} {{vars.hand_color}} | {{#heart}}#left-hand{{/heart}} {{/set-fill}} + {{#set-stroke}} + {{vars.hand_stroke_color}} | + {{#set-fill}} {{vars.hand_color}} | {{#heart}}#left-hand{{/heart}} {{/set-fill}} + {{/set-stroke}} {{/tags.left-hand}} {{#tags.right-hand}} - {{#set-fill}} {{vars.hand_color}} | {{#heart}}#right-hand{{/heart}} {{/set-fill}} + {{#tags.hand-cup}} + {{#set-stroke}} + {{vars.hand_stroke_color}} | + {{#set-fill}} {{vars.hand_color}} | {{#coffee}}#right-hand{{/coffee}} {{/set-fill}} + {{/set-stroke}} + {{/tags.hand-cup}} + {{^tags.hand-cup}} + {{#set-stroke}} + {{vars.hand_stroke_color}} | + {{#set-fill}} {{vars.hand_color}} | {{#heart}}#right-hand{{/heart}} {{/set-fill}} + {{/set-stroke}} + {{/tags.hand-cup}} {{/tags.right-hand}} {{/tags.holding}} {{/tags.hand-3c}} + + diff --git a/species/blobfox/templates/header.mustache b/species/blobfox/templates/header.mustache index b2b7858..4ce388b 100644 --- a/species/blobfox/templates/header.mustache +++ b/species/blobfox/templates/header.mustache @@ -1,5 +1,5 @@ header}} + {{>body}} + + {{>eyes}} + {{>nose}} + {{>mouth}} + + {{>coffee}} + {{>hands}} +{{>footer}} diff --git a/species/blobfox/variants/heart_progress.mustache b/species/blobfox/variants/heart_progress.mustache index 3ffc9f5..ad45bdc 100644 --- a/species/blobfox/variants/heart_progress.mustache +++ b/species/blobfox/variants/heart_progress.mustache @@ -13,6 +13,7 @@ {{#heart}}#heart{{/heart}} + {{! NOTE: The progress flag has a different aspect ratio compared to the other flags }} {{#flag_progress}}{{/flag_progress}} diff --git a/species/blobfox/variants/snuggle_right.mustache b/species/blobfox/variants/snuggle_right.mustache index 6a0a83d..18d23bb 100644 --- a/species/blobfox/variants/snuggle_right.mustache +++ b/species/blobfox/variants/snuggle_right.mustache @@ -6,4 +6,6 @@ {{>nose}} {{>mouth}} + + {{#snuggle_right}}#heart{{/snuggle_right}} {{>footer}} diff --git a/species/blobfox/variants/snuggle_right_blush.mustache b/species/blobfox/variants/snuggle_right_blush.mustache index a6a9544..3b401c5 100644 --- a/species/blobfox/variants/snuggle_right_blush.mustache +++ b/species/blobfox/variants/snuggle_right_blush.mustache @@ -7,4 +7,6 @@ {{>mouth}} {{>blush}} + + {{#snuggle_right}}#heart{{/snuggle_right}} {{>footer}} diff --git a/species/blobhusky/assets/snuggle_right.svg b/species/blobhusky/assets/snuggle_right.svg new file mode 100644 index 0000000..7fddd34 --- /dev/null +++ b/species/blobhusky/assets/snuggle_right.svg @@ -0,0 +1,51 @@ + + + blobhusky_snuggle_right + + + + + + + + + + + + + + + + + + + + + + + + + + + Blobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 License + + + blobhusky_snuggle_right + + + Feuerfuchs + + + https://git.shadamethyst.xyz/adri326/blobfox + + + Shad Amethyst + + + + + + diff --git a/species/blobhusky/templates/body-snuggle.mustache b/species/blobhusky/templates/body-snuggle.mustache new file mode 100644 index 0000000..d10b1fa --- /dev/null +++ b/species/blobhusky/templates/body-snuggle.mustache @@ -0,0 +1,5 @@ +{{>blobfox.body-snuggle}} + + + {{#set-fill}} {{vars.marks_color}} | {{#snuggle_right}}#marks{{/snuggle_right}} {{/set-fill}} + diff --git a/species/blobstella/templates/body-snuggle.mustache b/species/blobstella/templates/body-snuggle.mustache new file mode 100644 index 0000000..9353992 --- /dev/null +++ b/species/blobstella/templates/body-snuggle.mustache @@ -0,0 +1,33 @@ +{{! Left ear }} +{{#set-fill}} {{vars.ear_color}} | {{#snuggle_right}}#left-ear{{/snuggle_right}} {{/set-fill}} + +{{! Body }} + + + {{#snuggle_right}}#body{{/snuggle_right}} + + +{{#set-fill}} {{vars.body_color}} | {{#snuggle_right}}#body{{/snuggle_right}} {{/set-fill}} + +{{! Right ear }} +{{#set-fill}} {{vars.ear_color}} | {{#snuggle_right}}#right-ear{{/snuggle_right}} {{/set-fill}} +{{#set-fill}} {{vars.ear_fluff_color}} | {{#snuggle_right}}#right-ear-fluff{{/snuggle_right}} {{/set-fill}} + + + + {{#set-fill}} + {{vars.marks_color}} + | {{#base}}#left-marks{{/base}} + {{/set-fill}} + + + {{#set-fill}} + {{vars.marks_color}} + | {{#base}}#right-marks{{/base}} + {{/set-fill}} + + + + + {{>whiskers}} + diff --git a/src/bin/snuggle.rs b/src/bin/snuggle.rs index 1a0bc3d..59d9d43 100644 --- a/src/bin/snuggle.rs +++ b/src/bin/snuggle.rs @@ -5,6 +5,7 @@ use std::path::PathBuf; use std::collections::HashMap; use serde::{Serialize, Deserialize}; use xmltree::{Element, XMLNode}; +use wax::{Glob, Pattern}; use blobfox_template::{ parse, @@ -37,6 +38,43 @@ struct Desc { right: HashMap, } +#[derive(Parser, Clone)] +#[clap(author, version, about, long_about = None)] +struct Args { + /// Path to the description + #[clap(short, long, value_parser)] + desc: PathBuf, + + /// Disable automatically resizing the SVG's viewBox, defaults to false + #[clap(short, long, value_parser, default_value = "false")] + no_resize: bool, + + /// Dimension to export the images as; can be specified multiple times + #[clap(long, value_parser)] + dim: Vec, + + /// Input directory, containing the svgs to combine + #[clap(short, long, value_parser)] + input_dir: Option, + + /// Output directory + #[clap(short, long, value_parser)] + output_dir: Option, + + /// A glob to filter which emotes to output; supports wildcards, like `blobfox_snuggle*` + #[clap(value_parser)] + glob: Option, +} + +impl From for export::ExportArgs { + fn from(args: Args) -> export::ExportArgs { + export::ExportArgs { + no_resize: args.no_resize, + dim: args.dim, + } + } +} + fn main() { let args = Args::parse(); let input_dir = args.input_dir.clone().unwrap_or(PathBuf::from("output/vector/")); @@ -45,6 +83,8 @@ fn main() { let files = std::fs::read_dir(&input_dir).unwrap_or_else(|err| { panic!("Couldn't read directory {}: {}", input_dir.display(), err); }).filter_map(|entry| { + std::fs::read_dir(entry.ok()?.path()).ok() + }).flatten().filter_map(|entry| { let entry = entry.ok()?; Some((entry.path().file_stem()?.to_str()?.to_string(), entry.path())) }).collect::>(); @@ -56,6 +96,8 @@ fn main() { let export_args: export::ExportArgs = args.clone().into(); + let glob = args.glob.as_ref().map(|s| Glob::new(s).expect("Invalid parameter glob")); + for (left_name, left_path) in desc.left.iter() { if let Some(left_path) = files.get(left_path) { let left = std::fs::read_to_string(left_path).unwrap_or_else(|err| { @@ -64,6 +106,13 @@ fn main() { for (right_name, right_path) in desc.right.iter() { if let Some(right_path) = files.get(right_path) { + let name = format!("{}_{}_{}", left_name, desc.name, right_name); + if let Some(ref glob) = &glob { + if !glob.is_match(&*name) { + continue // Skip this emote + } + } + let right = std::fs::read_to_string(&right_path).unwrap_or_else(|err| { panic!("Couldn't open {}: {}", right_path.display(), err); }); @@ -71,12 +120,11 @@ fn main() { let snuggle = generate_snuggle(&left, &right, &desc); let snuggle = export::xml_to_str(&snuggle).unwrap(); - let name = format!("{}_{}_{}", left_name, desc.name, right_name); - export::export( snuggle, &output_dir, - name, + &desc.name, + &name, &export_args ).unwrap(); } @@ -156,7 +204,7 @@ fn bolden(amount: f64, xml: &mut Element) { *stroke_width = format!("{}", parsed + amount); } } else if xml.attributes.contains_key("fill") { - xml.attributes.insert("stroke-width", amount.to_string()); + xml.attributes.insert("stroke-width".to_string(), amount.to_string()); } if let Some(style) = xml.attributes.get_mut("style") { @@ -188,36 +236,3 @@ fn bolden(amount: f64, xml: &mut Element) { } } } - -#[derive(Parser, Clone)] -#[clap(author, version, about, long_about = None)] -struct Args { - /// Path to the description - #[clap(short, long, value_parser)] - desc: PathBuf, - - /// Disable automatically resizing the SVG's viewBox, defaults to false - #[clap(short, long, value_parser, default_value = "false")] - no_resize: bool, - - /// Dimension to export the images as; can be specified multiple times - #[clap(long, value_parser)] - dim: Vec, - - /// Input directory, containing the svgs to combine - #[clap(short, long, value_parser)] - input_dir: Option, - - /// Output directory - #[clap(short, long, value_parser)] - output_dir: Option, -} - -impl From for export::ExportArgs { - fn from(args: Args) -> export::ExportArgs { - export::ExportArgs { - no_resize: args.no_resize, - dim: args.dim, - } - } -} diff --git a/src/export.rs b/src/export.rs index 8f730b8..f6442f5 100644 --- a/src/export.rs +++ b/src/export.rs @@ -185,7 +185,8 @@ pub fn combine_defs(svg_str: String) -> Result { pub fn export( mut svg_str: String, output_dir: &PathBuf, - output_name: String, + species_name: &str, + output_name: &str, args: &ExportArgs, ) -> Result<(), ExportError> { if !args.no_resize { @@ -196,15 +197,15 @@ pub fn export( svg_str = combine_defs(svg_str)?; - mkdirp::mkdirp(output_dir.join("vector")).unwrap(); + mkdirp::mkdirp(output_dir.join(format!("vector/{}", species_name))).unwrap(); - let output = output_dir.join(&format!("vector/{}.svg", output_name)); + let output = output_dir.join(&format!("vector/{}/{}.svg", species_name, output_name)); std::fs::write(output.clone(), svg_str.clone()).map_err(|err| ExportError::Io(output, err))?; let svg_usvg = get_usvg(&svg_str)?; for resolution in args.dim.iter().copied().filter(|r| *r != 0).collect::>() { - mkdirp::mkdirp(output_dir.join(&format!("{}", resolution))).unwrap(); - let output = output_dir.join(&format!("{}/{}.png", resolution, output_name)); + mkdirp::mkdirp(output_dir.join(&format!("{}/{}", resolution, species_name))).unwrap(); + let output = output_dir.join(&format!("{}/{}/{}.png", resolution, species_name, output_name)); let mut image = tiny_skia::Pixmap::new(resolution, resolution).unwrap(); diff --git a/src/main.rs b/src/main.rs index f063643..b3bd418 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,7 +37,8 @@ fn generate_variant(context: &RenderingContext, name: &str, output_dir: &PathBuf match export( svg, output_dir, - format!("{}_{}", context.species().name, name), + &context.species().name, + &format!("{}_{}", context.species().name, name), &args ) { Ok(_) => {} diff --git a/vector/blobarcticfox_snuggle_right.svg b/vector/blobarcticfox_snuggle_right.svg new file mode 100644 index 0000000..c0c7cf9 --- /dev/null +++ b/vector/blobarcticfox_snuggle_right.svg @@ -0,0 +1,136 @@ + +blobarcticfox_snuggle_rightBlobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 Licenseblobarcticfox_snuggle_rightFeuerfuchshttps://git.shadamethyst.xyz/adri326/blobfoxShad Amethyst diff --git a/vector/blobcat_snuggle_right.svg b/vector/blobcat_snuggle_right.svg new file mode 100644 index 0000000..3dd1908 --- /dev/null +++ b/vector/blobcat_snuggle_right.svg @@ -0,0 +1,134 @@ + +blobfox_snuggle_rightBlobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 Licenseblobfox_snuggle_rightFeuerfuchshttps://git.shadamethyst.xyz/adri326/blobfoxShad Amethyst diff --git a/vector/blobfox_snuggle_right.svg b/vector/blobfox_snuggle_right.svg index f7a2382..fa633af 100644 --- a/vector/blobfox_snuggle_right.svg +++ b/vector/blobfox_snuggle_right.svg @@ -1,6 +1,6 @@ blobfoxblobfox_snuggle_rightBlobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 LicenseblobfoxFeuerfuchshttps://git.shadamethyst.xyz/adri326/blobfoxShad Amethyst + rdf:about="">Blobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 Licenseblobfox_snuggle_rightFeuerfuchshttps://git.shadamethyst.xyz/adri326/blobfoxShad Amethyst diff --git a/vector/blobhusky_snuggle_right.svg b/vector/blobhusky_snuggle_right.svg new file mode 100644 index 0000000..eabffa0 --- /dev/null +++ b/vector/blobhusky_snuggle_right.svg @@ -0,0 +1,136 @@ + +blobhusky_snuggle_rightBlobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 Licenseblobhusky_snuggle_rightFeuerfuchshttps://git.shadamethyst.xyz/adri326/blobfoxShad Amethyst diff --git a/vector/coffee.svg b/vector/coffee.svg new file mode 100644 index 0000000..5eda2be --- /dev/null +++ b/vector/coffee.svg @@ -0,0 +1,109 @@ + +coffeeBlobfox team (https://git.shadamethyst.xyz/adri326/blobfox), licensed under the Apache 2.0 LicenseFeuerfuchshttps://git.shadamethyst.xyz/adri326/blobfoxShad Amethystcoffee