diary and entry are functional

small-nav
chimchooree 2 years ago
parent a6c8e13e5f
commit 3d1bb99def

@ -0,0 +1,5 @@
Chim-choo-ree | <a href="https://www.youtube.com/watch?v=vRnikXRJ6hY">means <i>make-believe bird</i></a> | elysian ranger♀ | model | 19yro | 10' | Aion <br>
<br>
<p>She wanted to be an assassin, but she's had to come to terms with her physique being ill-suited for close-range dagger combat. Unfortunately, she's just okay at archery, and that's when she can find equipment that accomodates her long arms. Dreams of standing out as an archer are just as far out-of-reach as assassin work ever was. Nevertheless, she is showered in athletic modeling deals, while her talented friends are overlooked. She gets to travel to all the major archery competitions and practice it in short art films, but she knows in her heart that this is all thanks to her looks, not her skills. She tries to look at her physique as a hidden blessing or backdoor, but it can be pretty humiliating when she gets side-eyed by judgy girls with far better aim than she'll ever have. <br></p>
<br>
<p>She has seafoam green eyes, light brown hair, and freckled medium skin. The left side of her face is decorated with a large floral tattoo made with a dye similar to henna. She's a habitual mascara user and always covers her buns with silks and ribbons. As for her body, she's <i>tall</i>. Basically, I maxxed or minned every slider in Aion - max neck length, max arm length, max height, max leg length, max foot length, min thickness. The meta in Aion is to create the smallest possible character for stealth, so she is a sequoia among men. Also, the animations are the same for all characters, so everything she does is extremely sluggish and premeditated. (It takes a while for neural signals to reach her limbs.) Sanctum couturiers often want her to model postmodern and anti-fashion designs, but she is a natural model and adapts well to anyone who wants to work with her. Her favorites will always be the cute frilly ruffly stuff, though. <br></p>

@ -1,5 +1,5 @@
Lune Marine | means <i>moon</i> | human♀ | persona | age varies | 5'1<br> Lune Marine | means <i>moon</i> | usually human♀ | persona | age varies | 5'1<br>
<br> <br>
<p>My persona! She's gone through tens of redesigns and has been made in about every 00s-early 10s MMO out there. Her trademarks are her cool, almost lavender-toned white hair, golden or citrine eyes, short stature, and cheery disposition. She's also always linked with water and the moon. She has a ton of backstories, usually related to whatever game she's currently in, but my favorite is of her as an Ascalonian girl, training under Munne to become a Necromancer and votive candlemaker. I really miss the heyday of Guild Wars 1. No game area has anything on pre-Searing Ascalon. <br></p> <p>My persona! She's been made in about every 00s-early 10s MMO out there. Her signatures are her cool, almost lavender-toned white hair, golden or citrine eyes, short stature, and cheery disposition. She's linked with water and the moon. She has a ton of backstories, but my favorite is of her as an Ascalonian girl, training under <a href="https://wiki.guildwars.com/wiki/Necromancer_Munne">Munne</a> to become a Necromancer and votive candlemaker. <br></p>
<br> <br>
<p>Her clothes are brown, white, or black, and she's usually dressed very femininely. She wears brown eyeshadow and either brown or gold lipstick, if she wears any makeup at all. She also usually has short, straight hair with peek-a-boo bangs, but everything else is all over the place. She's been freckled, had a scar across her nose, various support classes, an elf girl, and once a dwarf. <br></p> <p>Her favorite colors to wear are brown, white, or black, but she's usually dressed very femininely and chooses plenty of lily pinks and dusty purples. She wears brown eyeshadow and either brown or gold lipstick, if she wears any makeup at all. She also usually has short, straight hair with peek-a-boo bangs, but everything else is all over the place. <br></p>

@ -1,10 +1,10 @@
Tessa Skye St Martin | means <i>to gather</i> | tamer♀ | student | teenager | 5'3 | blessfrey<br> Tessa Skye St Martin | means <i>to gather</i> | tamer♀ | student | teenager | 5'3 | blessfrey<br>
<br> <br>
<p>She moved to Lucrest with her family and white, fluffy cat from France when she was really little. Unfortunately, her father died not too long afterward. She doesn't know much about him or his old country of Haiti, but she visits extended family in Blois with her mom every Christmas. That doesn't mean she's that great at French. In fact, to her mother's immense disappointment, she has a better grade in Spanish. <br></p> <p>She moved to Lucrest with her family and white, fluffy cat from France when she was really little. Unfortunately, her father died not too long afterward. She doesn't know much about him or his old country of Haiti, but she visits extended family in Blois with her <a href="/char/Marie-Agnès">mom</a> every Christmas. That doesn't mean she's that great at French. In fact, to her mother's immense disappointment, she has a better grade in Spanish. <br></p>
<br> <br>
<p>She deeply admires her mother as a strong, loving, successful tradeswoman, so she gives back some of her time to help in her studio. Several days a week, she can be found hand-sewing fabric flowers, or serving as a fit model. <br></p> <p>She deeply admires her mother as a strong, loving, successful tradeswoman, so she gives back some of her time to help in her studio. Several days a week, she can be found hand-sewing fabric flowers, or serving as a fit model. <br></p>
<br> <br>
<p>She would rather spend every moment outside, though, forever hiking, jogging, and poking her nose into her neighbors' business. Her cat is an outside cat and joins in on her adventures most of the time. Tessa's the instigator in her friend group, daring or begging to rope everyone into her wild adventures. She's all fun all the time, so she doesn't always know where the boundary is between playful teasing and outright bullying. <br></p> <p>She would rather spend every moment outside, though, forever hiking, jogging, and poking her nose into her neighbors' business. Her <a href="/char/Choupette">cat</a> is an outside cat and joins in on her adventures most of the time. Tessa's the instigator in her friend group, daring or begging to rope everyone into her wild adventures. She's all fun all the time, so she doesn't always know where the boundary is between playful teasing and outright bullying. <br></p>
<br> <br>
<p>She is a light-skinned black girl of Haitian-French descent with silver eyes and a short, very athletic build. Her hair is dyed with darker streaks, and styled with short, choppy hime bangs. She never leaves the house without eyeliner and loves dressing in athleisure or trying new trends. Her favorite color changes with the season, but gunmetal is a consistent love. Her ears are pierced. <br></p> <p>She is a light-skinned black girl of Haitian-French descent with silver eyes and a short, very athletic build. Her hair is dyed with darker streaks, and styled with short, choppy hime bangs. She never leaves the house without eyeliner and loves dressing in athleisure or trying new trends. Her favorite color changes with the season, but gunmetal is a consistent love. Her ears are pierced. <br></p>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -0,0 +1,33 @@
<!--201217,200903-->
<h1>blessfrey </h1>
june 9, 2022<br>
#blessfrey #game <br>
<br>
<b>Blessfrey</b> is a 2D action RPG developed in Godot Engine for PC by Chimchooree in the USA. Its major inspiration is Guild Wars 1. <br>
<br>
<a target="_blank" href="/static/img/ent/screenshot_June292019.png">
<img src="/static/img/ent/screenshot_June292019.png" alt="(image: Lots of Angels and other characters at a shopping center)" width="500" height="278.66">
</a><br>
<br>
<h2>Mechanics</h2>
Rely on your skill and creativity while exploring a rural southern town, getting involved in local shenanigans, and uncovering the mysteries the downtown dungeon. <br>
<br>
Class progression is free-form, and virtually no decision is permanent. You will pick a permanent job during character creation, but you will be able to choose among 5+ side jobs during gameplay for multiclassing. Find your perfect combination to clear levels and express your playstyle. <br>
<br>
Each class has its own style of skills associated with it. Skills are individual powers gained through gameplay which give specific effects when activated. Your skillbar only has 8 skill slots and can only be edited in safe areas. The challenge comes from discovering effective strategies and synergies against the next area. <br>
<br>
You'll not only manage your own skillbar but also the skillbars of your AI companions. <br>
<br>
Skills are gained during exploration. As you find new areas, encounter enemies, and interact with your surroundings, you will internalize those experiences as new skills. There are multiple paths to learning, so you are free to focus on your favorite parts of the game. <br>
<br>
<h2>Story </h2>
You play as Helia, a girl from the United States who has to live with her uncle in the Confederate States for the summer. Through dare or curiosity, she <br>
<br>
<h2>Setting </h2>
Blessfrey's development has taught me a lot about programming and devops. I hope you enjoy it whenever the demo and full game drop. <br>
<br>
Chimchooree<br>
<br>
Last updated June 4, 2022 <br>
<br>

@ -1,10 +1,35 @@
import datetime, os, re import datetime, os, re
from bottle import error, response, route, run, static_file, template, TEMPLATE_PATH from bottle import error, response, route, run, static_file, template, TEMPLATE_PATH
# Remove links, line breaks from snippet
def clean(result):
result = result.replace('\n','')
result = result.replace('<br>','')
result = re.sub(r'<a href=.*?>', '', result)
result = re.sub(r'<img src=.*?>', '', result)
result = re.sub(r'<a target="_blank" href=.*?>', '', result)
result = result.replace('</a>','')
result = re.sub(r'<h\d>','',result)
result = re.sub(r'</h\d>','',result)
result = result.replace('<center>','')
result = result.replace('</center>','')
result = result.replace('<b>','')
result = result.replace('</b>','')
return result
def clean_tags(raw):
cleanr = re.compile('<.*?>')
cleantext = re.sub(cleanr, '', raw)
return cleantext
def find_year():
now = datetime.datetime.now()
return now.strftime('%Y')
def find_gallery(name): def find_gallery(name):
gal = [name] gal = [name]
if name == "Abbey": if name == "Abbey":
gal.append([["dragon.png","Abbey laying on his back, wrapped in furs"], ["FlightRising.png","Abbey's sprite from FlightRising, wearing Fig Plumes, a Squire's Beret, Chestnut Feathers, and Amber Flourishes"]]) gal.append([["dragon.png","Abbey laying on his back, wrapped in furs"],["BlackReshiram_Artfight.png","2022 Artfight attack by BlackReshiram"], ["FlightRising.png","Abbey's sprite from FlightRising, wearing Fig Plumes, a Squire's Beret, Chestnut Feathers, and Amber Flourishes"]])
if name == "Aloin": if name == "Aloin":
gal.append([["alchemy.png","Morning alchemy before work"],["dream.jpg","Stupid dream bubbles"]]) gal.append([["alchemy.png","Morning alchemy before work"],["dream.jpg","Stupid dream bubbles"]])
if name == "Angel": if name == "Angel":
@ -13,6 +38,8 @@ def find_gallery(name):
gal.append([["menu.jpg","Aristen's fancy set with bright colors and an obi belt"], ["scarf.jpg", "Newbie Aristen with her orange scarf"], ["marine.jpg","Aristen in the Epheria Marine Classic Set, a goofy marine pinup costume."]]) gal.append([["menu.jpg","Aristen's fancy set with bright colors and an obi belt"], ["scarf.jpg", "Newbie Aristen with her orange scarf"], ["marine.jpg","Aristen in the Epheria Marine Classic Set, a goofy marine pinup costume."]])
if name == "Calder": if name == "Calder":
gal.append([["pixelheadshot.png", "Calder's human form headshot"], ["FlightRising.png","Calder\'s sprite in FlightRising. He's wearing Sanguine Roses, Sanguine Plumage, and Pomegranate Plumes over Stonewatch Harpy."]]) gal.append([["pixelheadshot.png", "Calder's human form headshot"], ["FlightRising.png","Calder\'s sprite in FlightRising. He's wearing Sanguine Roses, Sanguine Plumage, and Pomegranate Plumes over Stonewatch Harpy."]])
if name == "Chimchooree":
gal.append([["couture.jpg","Chimchooree in her oyster pink tiered couture dress"],["Headshot.jpg","Her closeup."]])
if name == "Chloe": if name == "Chloe":
gal.append([["girls.png","Angel, Chloe, and Tessa"]]) gal.append([["girls.png","Angel, Chloe, and Tessa"]])
if name == "Fifi": if name == "Fifi":
@ -22,16 +49,15 @@ def find_gallery(name):
if name == "Lune": if name == "Lune":
gal.append([["RingOfFire.jpg","A painting of Lune in the Ring of Fire in her Vabbian"],["HallOfMonuments.png","My Guild Wars Necromancer showing off her Hall of Monuments"],["PhariseeFlying.jpg","My Aion Elysian Spiritmaster with really pretty hair"],["ArcheageGuild.jpg","My ArcheAge dwarf ghost girl with gold-dipped hair and a frilly gown, sitting among her old guildmates"]]) gal.append([["RingOfFire.jpg","A painting of Lune in the Ring of Fire in her Vabbian"],["HallOfMonuments.png","My Guild Wars Necromancer showing off her Hall of Monuments"],["PhariseeFlying.jpg","My Aion Elysian Spiritmaster with really pretty hair"],["ArcheageGuild.jpg","My ArcheAge dwarf ghost girl with gold-dipped hair and a frilly gown, sitting among her old guildmates"]])
if name == "Rune": if name == "Rune":
gal.append([["Bless+Rune.png","Rune and his dinosaur mother"],["Blessfrey.png","I saw the coverart for Elden Gate and tried to make my own coverart like that. It's rough, torn between pencil, digital painting, and pixelart, but I don't feel like working on it anymore."],["RuneHeadshot.png","Rune in the Battle Girl High School style, though there aren't a lot of guys in that game to reference"]]) gal.append([["Bless+Rune.png","Rune and his dinosaur mother"],["Blessfrey.png","I saw the coverart for Elden Gate and tried to make my own coverart like that. It's rough, torn between pencil, digital painting, and pixelart, but I don't feel like working on it anymore."],["RuneHeadshot.png","Rune in the Battle Girl High School style, though there aren't a lot of guys in that game to reference"],["Teriuuuu_Artfight.png","2020 Artfight attack by Teriuuuu"]])
if name == "Silke": if name == "Silke":
gal.append([["Silke.png","Pixelart of Silke on the floor with her clipboard, wearing a striped green silk dress with an oversized pink tulle bow behind her bun. I tried to draw in Yuu Watase's style"],["Verpets.png","Silke's sprite from Verpets"]]) gal.append([["Silke.png","Pixelart of Silke on the floor with her clipboard, wearing a striped green silk dress with an oversized pink tulle bow behind her bun. I tried to draw in Yuu Watase's style"],["Verpets.png","Silke's sprite from Verpets"]])
if name == "Tessa": if name == "Tessa":
gal.append([["Tessa.png","Pixelart of Tessa in athletic wear"],["girls.png","Angel, Chloe, and Tessa"]]) gal.append([["Tessa.png","Pixelart of Tessa in athletic wear"],["ElissaKarminakria_Artfight.png","2020 Artfight attack by ElissaKarminakria"]])
if name == "WISE": if name == "WISE":
gal.append([["WISE.png","WISE processing a query"],["CityOfHeroes.png","I made WISE in City of Heroes, too. She's an Electric/Empathy Controller."]]) gal.append([["WISE.png","WISE processing a query"],["CityOfHeroes.png","I made WISE in City of Heroes, too. She's an Electric/Empathy Controller."]])
return gal return gal
def prepare_profile(loc, char_name): def prepare_profile(loc, char_name):
string = "" string = ""
with open(loc + char_name) as f: with open(loc + char_name) as f:
@ -40,9 +66,226 @@ def prepare_profile(loc, char_name):
string += line string += line
return string return string
def find_year(): # Return list of snippets using list of articles
now = datetime.datetime.now() def list_snippets(articles):
return now.strftime('%Y') loc = 'diary/entries/'
limit = 4
total = len(articles)
result = []
for article in articles:
path = loc + article
text = []
a = []
length = 0
text = article2list(article, loc)
a.append(find_title(text))
a.append(prepare_article(text, path))
a.append(find_timestamp(text))
a.append(find_url(path))
a.append(find_social_title(text))
a.append(find_tags(text))
result.append(a)
return result
# List latest 5 articles as headline links
def list_headlines(articles):
loc = 'diary/entries/'
result = []
text = []
for article in articles:
path = loc + article
b = []
b.append(path)
with open(path) as f:
f.readline()
text = f.readline()
b.append(clean(text.replace('<br>','')))
result.append(b)
return result
# Return first two sentences of article + " ... "
def snip_sentence(article, path):
article = clean(article)
limit = 100
result = article[0:min(len(article),limit)]
result = result.rsplit(' ',1)[0]
return result + " ... "
# Return first 300 words of article + " ... "
def snip_article(article, path):
article = clean(article)
limit = 300
result = article[0:min(len(article),limit)]
result = result.rsplit(' ',1)[0]
return result + " ... "
# Snip article and close any open list tags
def prepare_article(text, path):
content = snip_article(find_content(text), path)
if content.count('<ul>') > content.count('</ul>'):
content += '</ul>'
return content
# Return article text without HTML header
def find_content(text):
length = len(text)
content = ""
# form a string from relevant lines of the article
pos = 0
for line in text:
# skip to line 5
if pos > 4 and pos < length:
content += line
pos += 1
return content
def find_tags(text):
new = text[3].replace('<br>','')
new = new.replace('\n','')
new = new.split(" ")
final = []
for n in new:
if len(n) <= 0:
new.remove(n)
if '#' in n:
final.append(n)
final.sort()
return final
# Return title of article, formatted for sharing via social media
def find_social_title(text):
return clean(text[1]).replace(' ','+')
# Return URL of article
def find_url(path):
return '/' + path.replace('.tpl','')
# Return clean timestamp
def find_timestamp(text):
return text[2].replace('<br>','')
# Return clean title
def find_title(text):
return clean(text[1])
# Return list of files with given tag
def pull_tag(files, tag):
pull = []
for f in files:
tags = find_tags(article2list(str(f), 'diary/entries/'))
if "#" + tag in tags:
pull.append(f)
pull.sort(reverse=True)
return pull
def retrieve_diary_entry_content(page,loc):
text = []
string = ""
with open(loc + str(page)) as f:
lines = f.readlines()
for line in lines:
if lines.index(line) >= 4:
string += line
return string
def list_rec(page):
loc = 'diary/entries/'
result = []
rec = []
comment = ""
if isinstance(page, int):
# Collect recommended articles from comment line
with open('diary/entries/' + str(page)) as f:
comment = f.readline()
comment = comment.replace('<!--','')
comment = comment.replace('-->','')
comment = comment.replace(' ','')
comment = clean(comment)
rec = comment.split(',')
# Convert into array for template to display
for article in rec:
if is_it_time(article):
path = loc + article
data = []
try:
with open(path) as f:
f.readline()
data.append(clean(f.readline().replace('<br>','')))
data.append(path)
result.append(data)
except EnvironmentError:
print("No article @ " + path)
return result
def prepare_diary_entry(page, loc):
result = []
with open(loc + str(page)) as f:
text = []
text = article2list(str(page), loc)
result.append(find_title(text))
result.append(retrieve_diary_entry_content(page, loc))
result.append(find_timestamp(text))
result.append(find_url(loc + str(page)))
result.append(find_social_title(text))
result.append(find_tags(text))
return result
# Return article as list of lines of text
def article2list(article, loc):
text = []
with open(loc + article) as f:
text = f.readlines()
return text
# return list of diary entry tags, sorted by frequency
def fill_word_cloud(files):
tags = []
for f in files:
temp = find_tags(article2list(str(f), 'diary/entries/'))
for t in temp:
tags.append(t)
tags.sort()
cloud = []
i = 0
while i < 24:
if len(tags) > 0:
top = max(set(tags), key = tags.count)
cloud.append(top)
tags[:] = [x for x in tags if x != top]
i += 1
return cloud
def curate_files(files):
# remove folders
if 'raw' in files:
files.remove('raw')
if 'extra' in files:
files.remove('extra')
# remove
clean = []
for f in files:
if is_it_time(f):
clean.append(f)
return clean
# Sort diary - newest to oldest
def sort_files(files):
files.sort(reverse=True)
return files
# Return list of all diary entries (exclude raws + extras)
def gather_files(loc):
files = os.listdir(loc)
return files
def gather_and_sort(loc):
return sort_files(curate_files(gather_files(loc)))
def is_it_time(date):
today = datetime.datetime.now()
today_string = today.strftime("%y") + today.strftime("%m") + today.strftime("%d")
return int(date) <= int(today_string)
## Static ## ## Static ##
@ -61,6 +304,11 @@ def serve_img(filename):
def serve_xml(filename): def serve_xml(filename):
return static_file(filename, root='static/xml', mimetype='text/xml') return static_file(filename, root='static/xml', mimetype='text/xml')
# Downloads
@route('/download/<filename:path>')
def download(filename):
return static_file(filename, root='static/extra', download=filename)
## Routes ## ## Routes ##
# Error Page # Error Page
@ -84,6 +332,20 @@ def char(char_name):
TEMPLATE_PATH.insert(0, abs_views_path ) TEMPLATE_PATH.insert(0, abs_views_path )
return template(os.path.join(abs_views_path,'char.tpl'), info) return template(os.path.join(abs_views_path,'char.tpl'), info)
# Blessfrey Presskit Page
@route('/blessfrey-presskit')
def presskit():
"""presskit"""
info = {'css': 'presskit', 'title': 'blessfrey presskit', 'year': find_year()}
return template('blessfrey-presskit.tpl', info)
# Blessfrey Credits Page
@route('/credits')
def credits():
"""credits"""
info = {'css': 'credits', 'title': 'blessfrey credits', 'year': find_year()}
return template('credits.tpl', info)
# Blessfrey Demo Page # Blessfrey Demo Page
@route('/demo') @route('/demo')
def demo(): def demo():
@ -91,13 +353,34 @@ def demo():
info = {'css': 'demo', 'title': 'blessfrey demo', 'year': find_year()} info = {'css': 'demo', 'title': 'blessfrey demo', 'year': find_year()}
return template('demo.tpl', info) return template('demo.tpl', info)
# Fashion Page # Diary Page
@route('/diary') @route('/diary') # Start on first Diary page if no page given
def diary(): def diary2():
return diary(0)
@route('/diary/') # Slash is optional
def diary3():
return diary(0)
@route('/diary/<page:int>')
def diary(page):
"""diary""" """diary"""
info = {'css': 'diary', 'title': 'chimchooree\'s diary', 'year': find_year()} loc = 'diary/entries/'
assert isinstance(page, int)
info = {'css': 'diary', 'title': 'chimchooree\'s diary', 'year': find_year(), 'snippets': list_snippets(gather_and_sort(loc)), 'latest': list_headlines(gather_and_sort(loc)[0:5]), 'tags': fill_word_cloud(curate_files(gather_files(loc))), 'total': len(curate_files(gather_files(loc))), 'limit': 8, 'cluster': 3, 'page': page}
return template('diary.tpl', info) return template('diary.tpl', info)
# Entry Page - Feature Template - for articles
@route('/diary/entries/<page:int>')
def entry(page):
"""diary entry"""
if not is_it_time(page):
return error404(404)
loc = 'diary/entries/'
info = {'css': 'feature', 'title': 'blessfrey - developer diary', 'year': find_year(), 'entry': prepare_diary_entry(page, loc), 'recommends': list_rec(page), 'articles': "Articles", 'latest': list_headlines(gather_and_sort(loc)[0:5]), 'tags': fill_word_cloud(curate_files(gather_files(loc))), 'page': page}
abs_app_dir_path = os.path.dirname(os.path.realpath(__file__))
abs_views_path = os.path.join(abs_app_dir_path, 'views')
TEMPLATE_PATH.insert(0, abs_views_path )
return template(os.path.join(abs_views_path,'entry.tpl'), info)
# Fashion Page # Fashion Page
@route('/fashion') @route('/fashion')
def fashion(): def fashion():
@ -109,16 +392,29 @@ def fashion():
@route('/') @route('/')
def home(): def home():
"""home""" """home"""
info = {'css': 'index', 'title': 'chimchooree\'s dev space - blessfrey', 'year': find_year(), 'news':[["link","website update"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"],["link2","about blessfrey rpg"]]} #list_headlines(sort_files(gather_files(loc))[0:10])} loc = 'diary/entries/'
info = {'css': 'index', 'title': 'chimchooree\'s dev space - blessfrey', 'year': find_year(), 'news': list_headlines(sort_files(gather_files(loc))[0:10])}
return template('index.tpl', info) return template('index.tpl', info)
# Me Page # Me Page
@route('/me') @route('/me')
def me(): def me():
"""me""" """me"""
info = {'css': 'me', 'title': 'about me', 'year': find_year(), 'chars': ["Helia", "Angel", "Rune", "Tessa", "WISE", "Silke", "Calder", "Aloin", "Fifi", "Lune", "Aristen"]} info = {'css': 'me', 'title': 'about me', 'year': find_year(), 'chars': ["Helia", "Aries", "Angel", "Rune", "Tessa", "Silke", "Abbey", "Calder", "Aloin", "Fifi", "Lune", "Chimchooree", "Aristen"]}
return template('me.tpl', info) return template('me.tpl', info)
# Search Diary by Tag
@route('/diary/tag/<tagin>') # Start on first Diary tag page if no page given
def tag2(tagin):
return tag(tagin, 0)
@route('/diary/tag/<tagin>/<page:int>') # Tag Page - Diary Tag Template - list all articles for tag
def tag(tagin, page):
"""tag page"""
loc = 'diary/entries/'
assert isinstance(tagin, str)
assert isinstance(page, int)
info = {'css': 'diary', 'title': 'blessfrey - developer diary', 'year': find_year(), 'snippets': list_snippets(pull_tag(gather_and_sort(loc), tagin)), 'latest': list_headlines(gather_and_sort(loc)[0:5]), 'tags': fill_word_cloud(curate_files(gather_files(loc))), 'total': len(curate_files(gather_files(loc))), 'limit': 8, 'cluster': 3, 'page': page}
return template('diary.tpl', info)
## Main ## ## Main ##

@ -37,6 +37,12 @@
<priority>0.80</priority> <priority>0.80</priority>
</url> </url>
<url>
<loc>http://www.blessfrey.me/credits</loc>
<lastmod>2022-07-19</lastmod>
<changefreq>monthly</changefreq>
<priority>0.64</priority>
</url>
<url> <url>
<loc>http://www.blessfrey.me/blessfrey-presskit</loc> <loc>http://www.blessfrey.me/blessfrey-presskit</loc>
<lastmod>2022-07-19</lastmod> <lastmod>2022-07-19</lastmod>

@ -29,18 +29,25 @@ a:hover, a:active {
p { p {
text-indent: 2em; text-indent: 2em;
} }
ul { ul,ol {
list-style-type: none; list-style-type: none;
list-style-position: inside; list-style-position: inside;
background-color: transparent;
} }
li { li {
padding-left: 2em; padding-left: 2em;
background-color: transparent;
} }
h2,img {
background-color: transparent;
}
.center { .center {
width: 60%; width: 60%;
padding: 2em; padding: 2em;
margin: auto; margin: auto;
color: white;
} }
.grid { .grid {

@ -1,3 +1,5 @@
.content-grid { .content-grid {
grid-area: 3 / 2 / 4 / 3; grid-area: 3 / 2 / 4 / 3;
display: grid; display: grid;
@ -79,7 +81,7 @@
} }
.snippet-title { .snippet-title {
background-image: url(../img/ele/diaryheader.png); background-image: url(../img/dia/diaryheader.png);
background-size: 100%; background-size: 100%;
height: 40px; height: 40px;
padding: 10px; padding: 10px;
@ -87,6 +89,7 @@
} }
.snippet-title a { .snippet-title a {
color: #E3E0DE; color: #E3E0DE;
background-color: transparent;
font-weight: bold; font-weight: bold;
text-shadow: text-shadow:
-1px -1px 1px #324832, -1px -1px 1px #324832,
@ -157,7 +160,7 @@
font-size: 15px; font-size: 15px;
} }
.snippet-bottom { .snippet-bottom {
background-image: url(../img/ele/diarybottom.png); background-image: url(../img/dia/diarybottom.png);
background-size: 100%; background-size: 100%;
height: 25px; height: 25px;
} }
@ -219,6 +222,7 @@
text-align: left; text-align: left;
list-style-position: inside; list-style-position: inside;
padding: 5px; padding: 5px;
background-color: #95939F;
} }
.wordcloud { .wordcloud {
grid-area: 4 / 1 / 5 / 2; grid-area: 4 / 1 / 5 / 2;

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Before

Width:  |  Height:  |  Size: 531 KiB

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

@ -0,0 +1,88 @@
% rebase('frame.tpl')
<div class="content-grid">
<div class="center">
<div class="banner">
<h1>Blessfrey Presskit</h1>
</div>
<div class="textbox fact">
<h2>Fact Sheet</h2>
<ul>
<li><b>Description:</b> Build synergies across your skillbar and team to survive the local downtown dungeon.</li>
<li><b>Developer:</b> chimchooree, US indie dev</li>
<li><b>Genre:</b> Singleplayer Action RPG</li>
<li><b>Release Date:</b> Spring 2030</li>
<li><b>Platforms:</b> Windows, Linux, HTML5 </li>
<li><b>Engine:</b> Godot Engine</li>
<li><b>Website:</b> blessfrey.me</li>
<li><b>Price:</b> $874.99 USD</li>
<li><b>Press Contact:</b> <a href="https://twitter.com/lilchimchooree">Twitter (@lilchimchooree)</a>, Discord (CustomsOfficer#3449)</li>
<li><b>Social:</b> <a href="https://twitter.com/lilchimchooree">Twitter (@lilchimchooree)</a></li>
</ul>
</div>
<div class="textbox desc">
<h2>Description</h2>
<br>
In active development, Blessfrey is the first commercial game by US-based indie game developer chimchooree. <br>
<br>
Blessfrey is a 2D action RPG set in a rural southern town riddled with secret tunnels and dungeons.
The dual-class and skill systems are inspired by Guild Wars 1 and Magic: The Gathering and emphasize player skill, personal expression, and experimentation. Delve deeper under the town by discovering new skills, building synergies within your skillbar, and recruiting AI teammates. Bosses, puzzles, and a secret world await. <br>
<br>
</div>
<div class="textbox features">
<h2>Features </h2>
<ul>
<li>Try tens of possible dual-class combinations</li>
<li>Experiment with hundreds of skillbar combinations</li>
<li>Freely relocate skill points and swap out skills in safe areas</li>
<li>Learn new skills through themed exploration and gameplay. No skill shops nor UI skill trees</li>
<li>Explore an underground world populated by fantasy races and an above ground rural town</li>
</ul>
</div>
<div class="textbox dev">
<h2>Developer </h2>
<br>
Chimchooree has a programming and art background, studying both in school and at home since she was a kid. Her five favorite games are Oblivion (more as a hobby horse to endlessly write mods for than a game), Guild Wars 1, Arcanum, Divine Divinity, and Anachronox. Keep up with her activity on her <a href="/diary">dev diary</a> and <a href="https://twitter.com/lilchimchooree">Twitter</a>. <br>
</div>
<div class="textbox videos"> </div>
<div class="textbox graphics">
<h2>Graphics</h2>
<br>
<img src="/static/img/prom/BlessFREY_logo.png" alt="(link: BLESSFREY" class="logo"><br>
<a target="_blank" href="/static/img/prom/godotengine.png">
<img src="/static/img/prom/godotengine.png" alt="(image: screenshot of the godot editor">
</a><br>
</div>
<div class="textbox contact">
<h2>Contact</h2>
<br>
Please message me on <a href="https://twitter.com/lilchimchooree">Twitter (@lilchimchooree) or Discord (CustomsOfficer#3449)</a>.
</div>
<div class="textbox credits">
<h2>Credits</h2>
<ul>
<li>Code: chimchooree</li>
<li>Art: chimchooree</li>
<li>Design: chimchooree</li>
<li>Engine: Godot Engine</li>
<li><a href="/credits">Full Credits</a></li>
</ul>
</div>
<div class="textbox permissions">
<h2>Permission</h2>
<br>
Freely use all of the content on this page, even for commercial use, at your own risk. <br>
</div>
</div>
</div>

@ -0,0 +1,74 @@
% rebase('frame.tpl')
<div class="content-grid">
<div class="center">
<h1>Credits</h1><br>
<br>
(all assets are placeholder)<br>
<br>
game + art by chimchooree<br>
<br>
game engine: godot engine<br>
<br>
visual dialogue (a dialogue tree plugin for godot) by chimchooree's husband <br>
<br>
background music: "straight" <br>
Benjamin "Bensound" Tissot<br>
https://www.bensound.com/royalty-free-music/track/straight<br>
license: Creative Commons License<br>
<br>
background music: "energy" <br>
Benjamin "Bensound" Tissot<br>
https://www.bensound.com/royalty-free-music/track/energy<br>
license: Creative Commons License<br>
<br>
background music: "save"<br>
LokiF<br>
https://opengameart.org/content/gui-sound-effects<br>
license: Public Domain CC0<br>
<br>
door sound: "Abandoned Villa- Thailand! Door Knocker & Door Knocking Sound Effects"<br>
freetousesounds https://freetousesounds.bandcamp.com/album/abandoned-villa-thailand-door-knocker-door-knocking-sound-effects<br>
license: Attribution 3.0 Unported (CC BY 3.0) <br>
<br>
click sound: "Click 1" from the UI SFX set<br>
Kenney Vleugels<br>
https://www.kenney.nl/assets/ui-audio<br>
license: Public Domain CC0<br>
<br>
wrong sound: "Wrong 02"<br>
https://www.noiseforfun.com/2012-sound-effects/wrong-02/<br>
license: CC-BY-ND 3.0 Attribution license<br>
<br>
skill failure sound: "Negative" from the GUI Sound Effects set<br>
LokiF<br>
https://opengameart.org/content/gui-sound-effects<br>
license: Public Domain CC0<br>
<br>
appraise sound: "Shimmer Glimmer Magic"<br>
The Berklee College of Music <br>
submitted to Open Game Art by qubodup<br>
https://opengameart.org/content/shimmer-glitter-magic<br>
license: CC-BY 3.0<br>
<br>
summon sound: "Elemental Spell"<br>
Iwan "qubodup" Gabovitch<br>
https://opengameart.org/content/elemental-spell<br>
license: CC Attribution-ShareAlike 3.0 Unported<br>
Copyright 2012 Iwan 'qubodup' Gabovitch http://qubodup.net qubodup@gmail.com | License: CC Attribution-ShareAlike 3.0 Unported http://creativecommons.org/licenses/by-sa/3.0/<br>
<br>
bingo win sound: "Positive"<br>
Lokif<br>
https://opengameart.org/content/gui-sound-effects<br>
license: Public Domain CC0<br>
<br>
font: JFドットjiskan16 (JF Dot Jiskan16)<br>
Sony Corp<br>
http://jikasei.me/font/jf-dotfont/<br>
license: Public Domain, stored in art/Fonts/Documentation/JF Dot Jiskan16/readme.txt<br>
<br>
font: pixel joy<br>
chimchooree<br>
https://fontstruct.com/fontstructions/show/1596262/pixel-joy <br>
license: Public Domain<br></div>
</div>

@ -33,7 +33,7 @@
<div class="system" id="system"> <div class="system" id="system">
<div class="center"><h2>system</h2> <div class="center"><h2>system</h2>
<p>Blessfrey is an action rpg with a dual-job system which will determine the skill pool from which you will build your skillbar. Your AI companions will have skillbars of their own to edit, so think in terms of teams in order to defeat bosses and solve puzzles. Barely any class progression decisions are permanent, so you can experiment and express your playstyle. <br></p> <p>Blessfrey is a 2D action rpg with a dual-job system which will determine the skill pool from which you will build your skillbar. Your AI companions will have skillbars of their own to edit, so think in terms of teams in order to defeat bosses and solve puzzles. Barely any class progression decisions are permanent, so you can experiment and express your playstyle. <br></p>
<br> <br>
<h3>jobs </h2> <h3>jobs </h2>
<p>Blessfrey jobs are equivalent to RPG classes. Your first job is a permanent decision which you will make early in gameplay. You will be able to unlock the rest and more during gameplay as side gigs. You can only have one side gig at a time, but you can always swap it outside of combat areas. <br></p> <p>Blessfrey jobs are equivalent to RPG classes. Your first job is a permanent decision which you will make early in gameplay. You will be able to unlock the rest and more during gameplay as side gigs. You can only have one side gig at a time, but you can always swap it outside of combat areas. <br></p>
@ -64,7 +64,7 @@
<div class="characters" id="characters"> <div class="characters" id="characters">
<div class="center"><h2>characters</h2> <div class="center"><h2>characters</h2>
<p><b><a href="/char/Helia">Helia</a></b> (-/-) - The player character! Almost every job is available to her. Where she comes from, combat training is unheard of, so she's a blank slate. Her reasons for suddenly moving countries by herself at the end of a schoolyear are filled with holes, so rumors spread ahead of her arrival. Barely anyone moves to Lucrest, though, so most people are excited to meet the new girl. <br></p> <p><b><a href="/char/Helia">Helia</a></b> (?/?) - The player character! Almost every job is available to her. Where she comes from, combat training is unheard of, so she's a blank slate. Her reasons for suddenly moving countries by herself at the end of a schoolyear are filled with holes, so rumors spread ahead of her arrival. Barely anyone moves to Lucrest, though, so most people are excited to meet the new girl. <br></p>
<br> <br>
<p><b><a href="/char/Angel">Angel</a></b> (Weaponmaster/Hacker) - Her real name's Miriam, but it sounds too frumpy, so please call her Angel. She is a naturally gifted with heavy blades and participates in a competitive swordsman league, but she usually comes across as friendly if not a little absent-minded. Computers interest her deeply, so she always has tinkering away with some new gadget or software. <br></p> <p><b><a href="/char/Angel">Angel</a></b> (Weaponmaster/Hacker) - Her real name's Miriam, but it sounds too frumpy, so please call her Angel. She is a naturally gifted with heavy blades and participates in a competitive swordsman league, but she usually comes across as friendly if not a little absent-minded. Computers interest her deeply, so she always has tinkering away with some new gadget or software. <br></p>
<br> <br>
@ -81,8 +81,9 @@
<div class="info" id="info"> <div class="info" id="info">
<div class="center"><h2>info</h2> <div class="center"><h2>info</h2>
<p>Blessfrey is a PC game that will be playable in at least Windows, Linux, and HTML5. I'm going to sell it on Steam and wherever else lets me list it. It's being developed by me (chimchooree) in Godot Engine with original writing and art, though I'll need help with music and SFX eventually. My husband also helps sometimes, especially with writing plug-ins for the engine.♡ <br></p> <p>Blessfrey is a singleplayer action RPG game that will be playable in at least Windows, Linux, and HTML5. I'm going to sell it on Steam and wherever else lets me list it. It's being developed by me (chimchooree) in Godot Engine with original writing and art, though I'll need help with music and SFX eventually. My husband also helps sometimes, especially with writing plug-ins for the engine.♡ The full credits are available on the <a href="/credits">credits page</a>.<br></p>
<br> <br>
<h2>timeline</h2>
<p>Legless the Cat is the first demo. It has nothing to do with the game, but it's an important exercise for exporting and embedding an HTML5 game. I'd hate to make a sophisticated game over multiple years and be too inexperienced to actually share it with anyone. It also lets my kitty be in his own videogame! So cute. <br></p> <p>Legless the Cat is the first demo. It has nothing to do with the game, but it's an important exercise for exporting and embedding an HTML5 game. I'd hate to make a sophisticated game over multiple years and be too inexperienced to actually share it with anyone. It also lets my kitty be in his own videogame! So cute. <br></p>
<br> <br>
<p>As for the first real demo, I am currently creating a vertical slice of the game, focusing on a robust presentation of the skill system. This demo will be more of a tech demo than a game. It will feature 3 demo areas, and you will receive a bingo card directing you to try a smattering of what the full game will have to offer. <br></p> <p>As for the first real demo, I am currently creating a vertical slice of the game, focusing on a robust presentation of the skill system. This demo will be more of a tech demo than a game. It will feature 3 demo areas, and you will receive a bingo card directing you to try a smattering of what the full game will have to offer. <br></p>

@ -0,0 +1,49 @@
<!--right column-->
<div class="sidebar">
<div class="about-box">
<h2>about</h2>
<b>Blessfrey</b> is a 2D action RPG developed for PC in Godot Engine. <br>
<br>
Edit your skillbar from hundreds of skills to fight enemies, solve puzzles, + explore. <br>
<br>
Inspired by Guild Wars 1 and Magic: The Gathering. <br>
</div>
<div class="twitter-box">
<h2>chat</h2>
Twitter: <a href="https://twitter.com/lilchimchooree">@lilchimchooree</a><br>
<br>
<a href="/contact" rel="nofollow">contact me</a><br>
</div>
<div class="latest">
<h2>latest</h2>
<div class="latest-text">
<ul>
% if len(latest) > 0:
% print(str(len(latest)))
% for l in latest:
<li>&#9;<a href=/{{l[0]}} rel="nofollow">{{!l[1]}}</a></li>
% end
% end
</ul>
<br>
</div>
</div>
<div class="wordcloud">
<h2>cloud</h2>
% for t in tags:
% tagless = t.replace('#','')
<a href=/diary/tag/{{tagless}}>{{t}}</a>
% end
</div>
<div class="disclosure">
<br>Blessfrey.me is not using sponsored posts or affiliate links. <br>
<br>
Blessfrey.me is not collecting personal information + has no cookies. <br>
<br>
Thank you for following the development of Blessfrey. <br>
</div>
</div>

@ -3,7 +3,6 @@
<div class="content-grid"> <div class="content-grid">
<div class="diary-dir top"> <div class="diary-dir top">
<center>
% max_pages = int((total - 1) / limit) % max_pages = int((total - 1) / limit)
<% <%
# page never below 0 # page never below 0
@ -18,18 +17,18 @@
<div class="diary-dir-left"> <div class="diary-dir-left">
% # << is always active link pointing to 0 % # << is always active link pointing to 0
<a href=/diary/0> <a href=/diary/0>
<img src="/static/img/btn/nav_ll.png" alt="&lt;&lt;" width="33" height="29"> <img src="/static/img/dia/nav_ll.png" alt="&lt;&lt;">
</a> </a>
% # < points to 0 if page 0 or below % # < points to 0 if page 0 or below
% if page <= 0: % if page <= 0:
<a href=/diary/0> <a href=/diary/0>
<img src="/static/img/btn/nav_l.png" alt="&lt;" width="27" height="29"> <img src="/static/img/dia/nav_l.png" alt="&lt;">
</a> </a>
% # < points to previous page otherwise % # < points to previous page otherwise
% else: % else:
<a href=/diary/{{page - 1}}> <a href=/diary/{{page - 1}}>
<img src="/static/img/btn/nav_l.png" alt="&lt;" width="27" height="29"> <img src="/static/img/dia/nav_l.png" alt="&lt;">
</a> </a>
% end % end
</div> </div>
@ -73,28 +72,27 @@
% # > points to max if page is at or above maximum % # > points to max if page is at or above maximum
% if page >= max_pages: % if page >= max_pages:
<a href=/diary/{{max_pages}}> <a href=/diary/{{max_pages}}>
<img src="/static/img/btn/nav_r.png" alt="&gt;" width="27" height="29"> <img src="/static/img/dia/nav_r.png" alt="&gt;">
</a> </a>
% # > point to next page otherwise % # > point to next page otherwise
% else: % else:
<a href=/diary/{{page + 1}}> <a href=/diary/{{page + 1}}>
<img src="/static/img/btn/nav_r.png" alt="&gt;" width="27" height="29"> <img src="/static/img/dia/nav_r.png" alt="&gt;">
</a> </a>
% end % end
% # >> is always active link to maximum page % # >> is always active link to maximum page
<a href=/diary/{{max_pages}}> <a href=/diary/{{max_pages}}>
<img src="/static/img/btn/nav_rr.png" alt="&gt;&gt;" width="33" height="29"> <img src="/static/img/dia/nav_rr.png" alt="&gt;&gt;">
</a> </a>
</div> </div>
</center>
</div> </div>
<div class="diary-pages"> <div class="diary-pages">
% for s in snippets[page * limit:page * limit + limit]: % for s in snippets[page * limit:page * limit + limit]:
<div class="snippet"> <div class="snippet">
<div class="snippet-title"> <div class="snippet-title">
<a href={{s[3]}} rel="nofollow"><h1>{{!s[0]}}</h1></a> <a href={{s[3]}} rel="nofollow"><h2>{{!s[0]}}</h2></a>
</div> </div>
<div class="date-line"> <div class="date-line">
<b>chimchooree</b> <b>chimchooree</b>
@ -118,7 +116,7 @@
</div> </div>
<div class="snippet-link"> <div class="snippet-link">
<a href={{s[3]}}> <a href={{s[3]}}>
<img src="/static/img/btn/diaryreadmore.png" alt="read more" width="99" height="84"> <img src="/static/img/dia/diaryreadmore.png" alt="read more">
</a> </a>
</div> </div>
<div class="snippet-bottom"> <div class="snippet-bottom">
@ -130,7 +128,6 @@
% include diary-boxes.tpl % include diary-boxes.tpl
<div class="diary-dir bottom"> <div class="diary-dir bottom">
<center>
% max_pages = int((total - 1) / limit) % max_pages = int((total - 1) / limit)
<% <%
# page never below 0 # page never below 0
@ -145,18 +142,18 @@
<div class="diary-dir-left"> <div class="diary-dir-left">
% # << is always active link pointing to 0 % # << is always active link pointing to 0
<a href=/diary/0> <a href=/diary/0>
<img src="/static/img/btn/nav_ll.png" alt="&lt;&lt;" width="33" height="29"> <img src="/static/img/dia/nav_ll.png" alt="&lt;&lt;">
</a> </a>
% # < points to 0 if page 0 or below % # < points to 0 if page 0 or below
% if page <= 0: % if page <= 0:
<a href=/diary/0> <a href=/diary/0>
<img src="/static/img/btn/nav_l.png" alt="&lt;" width="27" height="29"> <img src="/static/img/dia/nav_l.png" alt="&lt;">
</a> </a>
% # < points to previous page otherwise % # < points to previous page otherwise
% else: % else:
<a href=/diary/{{page - 1}}> <a href=/diary/{{page - 1}}>
<img src="/static/img/btn/nav_l.png" alt="&lt;" width="27" height="29"> <img src="/static/img/dia/nav_l.png" alt="&lt;">
</a> </a>
% end % end
</div> </div>
@ -201,20 +198,19 @@
% # > points to max if page is at or above maximum % # > points to max if page is at or above maximum
% if page >= max_pages: % if page >= max_pages:
<a href=/diary/{{max_pages}}> <a href=/diary/{{max_pages}}>
<img src="/static/img/btn/nav_r.png" alt="&gt;" width="27" height="29"> <img src="/static/img/dia/nav_r.png" alt="&gt;">
</a> </a>
% # > point to next page otherwise % # > point to next page otherwise
% else: % else:
<a href=/diary/{{page + 1}}> <a href=/diary/{{page + 1}}>
<img src="/static/img/btn/nav_r.png" alt="&gt;" width="27" height="29"> <img src="/static/img/dia/nav_r.png" alt="&gt;">
</a> </a>
% end % end
% # >> is always active link to maximum page % # >> is always active link to maximum page
<a href=/diary/{{max_pages}}> <a href=/diary/{{max_pages}}>
<img src="/static/img/btn/nav_rr.png" alt="&gt;&gt;" width="33" height="29"> <img src="/static/img/dia/nav_rr.png" alt="&gt;&gt;">
</a> </a>
</div> </div>
</center>
</div> </div>

@ -0,0 +1,200 @@
.diary-entry {
grid-area: 3 / 2 / 4 / 3;
margin-top: 40px;
margin-bottom: 30px;
word-wrap: break-word;
}
.diary-title {
background-color: #486438;
border-top-left-radius: 25px;
border-top-right-radius: 25px;
color: #e6e8ef;
padding: 10px;
padding-top: 55px;
padding-bottom: 25px;
font-size: 25px;
text-align: center;
font-weight: bold;
text-shadow:
-1px -1px 1px #324832,
0 -1px 1px #324832,
2px -1px 1px #324832,
2px 0 1px #324832,
2px 2px 1px #324832,
0 2px 1px #324832,
-1px 2px 1px #324832,
-1px 0 1px #324832;
}
.date-line {
padding: 10px;
background-color: #1c2628;
color: #aaa39d;
text-align: center;
}
.diary-content {
background-color: #ecd5d2;
color: #080410;
text-indent: 50px;
padding: 15px;
padding-top: 25px;
}
.diary-content img {
display: block;
margin-top: 25px;
margin-bottom: 0px;
margin-left: 0px;
}
.diary-content h2 {
margin-top: 25px;
margin-bottom: 15px;
text-indent: 0px;
}
.diary-content h3 {
margin-top: 25px;
margin-bottom: 0px;
text-indent: 0px;
}
.diary-content h4 {
margin-top: 25px;
margin-bottom: 0px;
text-indent: 0px;
}
.diary-tags {
background-color: #1c2628;
padding: 10px;
font-size: 15px;
}
.diary-tag {
background-color: #b9b4af;
border-radius: 25px;
padding: 3px;
padding-left: 4px;
padding-right: 4px;
color: #1c2628;
font-size: 15px;
font-weight: bold;
display: inline-block;
}
.share-links {
background-color: #1c2628;
color: #aaa39d;
padding-top: 25px;
padding-bottom: 25px;
text-align: center;
}
.sidebar {
grid-area: 3 / 3 / 5 / 4;
display: grid;
grid-template-columns: auto;
grid-template-rows: repeat(4, auto);
grid-column-gap: 0px;
grid-row-gap: 0px;
align-content: start;
padding-left: 7px;
margin-top: 40px;
}
.sidebar a:link {
color: #213021;
}
.sidebar a:hover {
color: #486438;
}
.sidebar a:visited {
color: #213021;
}
.sidebar a:active {
color: #945634;
}
.about-box {
border-radius: 25px;
background-color: #95939F;
color: #111718;
text-align: center;
margin: 15px;
padding: 5px;
margin-top: 0px;
padding-bottom: 15px;
}
.twitter-box {
grid-area: 2 / 1 / 3 / 2;
border-radius: 25px;
background-color: #95939F;
color: #111718;
text-align: center;
margin: 15px;
padding: 5px;
padding-bottom: 15px;
}
.latest {
grid-area: 3 / 1 / 4 / 2;
border-radius: 25px;
background-color: #95939F;
color: #111718;
text-align: center;
list-style-position: inside;
margin: 15px;
padding: 5px;
}
.latest-text {
text-align: left;
list-style-position: inside;
padding: 5px;
}
.disclosure {
grid-area: 4 / 1 / 5 / 2;
border-radius: 25px;
background-color: #95939F;
color: #111718;
text-align: center;
margin: 15px;
padding: 5px;
padding-bottom: 15px;
}
.recommend {
grid-area: 4 / 2 / 5 / 3;
background-color: #080410;
color: #F9B3D7;
display: grid;
grid-template-columns: auto auto auto;
grid-template-rows: auto auto;
grid-column-gap: 0px;
grid-row-gap: 0px;
padding: 5px;
}
.more {
grid-area: 1 / 1 / 2 / 4;
background-color: #486438;
border-radius: 25px;
padding: 5px;
text-align: center;
color: #080410;
}
.rec-box { grid-area: 2 / 2 / 3 / 3; }
.snip {
width: 150px;
float: left;
margin: 30px;
background-color: #95939f;
border-radius: 25px;
padding: 20px;
text-align: center;
font-size: 16px;
}
.snip a {
color: #080410;
}
.snip a:hover {
color: #404664;
}
.snip a:visited {
color: #080410;
}
.snip a:active {
color: #404664;
}

@ -0,0 +1,52 @@
% rebase('frame.tpl')
<!--left column-->
<div class="diary-entry">
<div class="diary-title">
{{!entry[0]}}
</div>
<div class="date-line">
chimchooree ❤ {{!entry[2]}}
</div>
<div class="diary-content">
{{!entry[1]}}
</div>
<div class="diary-tags">
% if len(entry[5]) >= 1:
<div class=diary-tags>
% for t in entry[5]:
<div class="diary-tag">
% tagless = t.replace('#', '')
<a href=/diary/tag/{{tagless}}>{{t}}</a>
</div>
% end
</div>
% end
</div>
<hr>
<div class="share-links">
</div>
<br>
</div>
% include diary-boxes.tpl
<div class="recommend">
% if len(recommends) > 0:
<div class="more"><h1>more like this...</h1></div>
% end
<div class="rec-box">
% if len(recommends) > 0:
% for s in recommends:
<div class="snip">
<div class="snippet-title">
<a href=/{{s[1]}} rel="nofollow"><b>{{!s[0]}}</b></a>
</div>
</div>
% end
% end
</div>
</div>
<div class="footer-row"> </div>

@ -19,7 +19,7 @@
For the capsule collection, I immortalized my favorite old clothes as reverse-engineered patterns. With the original garments, I am creating clothes that are finally <i>me</i> but flavoring them with discordant sources of inspiration and sentimentality. I take each design's name from scattered memories. <br></p> For the capsule collection, I immortalized my favorite old clothes as reverse-engineered patterns. With the original garments, I am creating clothes that are finally <i>me</i> but flavoring them with discordant sources of inspiration and sentimentality. I take each design's name from scattered memories. <br></p>
<br> <br>
<hr> <hr>
<img src="/static/img/fash/hikari.png" alt="(link: home)"> <img src="/static/img/fash/churchgirls+animalparade/hikari.png" alt="(link: home)">
<div class="caption">(Hikari from Harvest Moon: Animal Parade, snapped from a <a href="https://www.youtube.com/watch?v=bNi5A047aoo&list=PLqNTe2pSF5Fr3JdFjksSbq0p4KtbcL9Fz">NaViナビ YouTube video</a>)</div> <div class="caption">(Hikari from Harvest Moon: Animal Parade, snapped from a <a href="https://www.youtube.com/watch?v=bNi5A047aoo&list=PLqNTe2pSF5Fr3JdFjksSbq0p4KtbcL9Fz">NaViナビ YouTube video</a>)</div>
<p>I wasn't prepared to unlock a 00s fashion time capsule when I found a copy of <b>Animal Parade</b>. It's not like Hikari epitomizes the era and I never liked that style back then, but her cami layered over a basic tee and bulky cargo pockets has a hold over me. It's a mix of fresh and nostalgic. It brought to mind some of the silly and hyper-girly outfits Hillary Duff wore. She wore layers and comfy cottons all the time, too. Maybe people would cringe at her old outfits, but they were undeniably fun. <br></p> <p>I wasn't prepared to unlock a 00s fashion time capsule when I found a copy of <b>Animal Parade</b>. It's not like Hikari epitomizes the era and I never liked that style back then, but her cami layered over a basic tee and bulky cargo pockets has a hold over me. It's a mix of fresh and nostalgic. It brought to mind some of the silly and hyper-girly outfits Hillary Duff wore. She wore layers and comfy cottons all the time, too. Maybe people would cringe at her old outfits, but they were undeniably fun. <br></p>
<br> <br>
@ -48,19 +48,58 @@ Weeping may tarry for the night,
</div> </div>
<div class="gallery" id="gallery"> <div class="gallery" id="gallery">
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches2.png" alt="(image: a bomber jacket with a luminous light pink polyester and a gray, beige, and light brown lace, a bodice with a white bamboo viscose with pink cherry blossoms and blue birds, a kimono with black inky block batiste, a button-down short sleeve shirt with shank buttons, black piping, and a beetle print, and a mock turtleneck with thumbholes and a metallic foil knit)">>
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches2.png" alt="(image: a bomber jacket with a luminous light pink polyester and a gray, beige, and light brown lace, a bodice with a white bamboo viscose with pink cherry blossoms and blue birds, a kimono with black inky block batiste, a button-down short sleeve shirt with shank buttons, black piping, and a beetle print, and a mock turtleneck with thumbholes and a metallic foil knit)">
</a><br>
<b>Bomber</b>: I've had a favorite light rayon bomber jacket for 10 years, but it's wearing out and has some weird bleach stains. This is basically a knockoff of a <a href="https://www.ebay.com/itm/124967194636?hash=item1d18a0100c:g:1K8AAOSw7PdhctB3">BB Dakota design</a>. This one is a shiny pink polyester (a lustrous exception to my natural fiber rule) with multicolored lace trim, a metal zipper, and a beige drawstring. I think I can keep the old BBD jacket, too, but it needs embroidery or appliques over the stains. <br>
<br>
<b>Bodice</b>: This is a light layering top made from batiste. It will have ruffles at the shoulders and long straps from the waist to wrap around and tie in a bow. <br>
<br>
<b>Kimono</b>: I have a favorite purple floral chiffon kimono that has a fraying seam. After three repairs, it needs a semi-retirement. This design but with rayon batiste and a dark inky print...if Mood ever restocks the Penitentiary Block print! <br>
<br>
<b>泣き虫 (Cry Bug)</b>: An oversized poplin button-down with short sleeves and an oversized beetle print. It has black piping along seams, a pocket, and black glass shank buttons. The fit is meant to resemble your dad's shirt where the short sleeves come down too far, the armholes are too deep, and the pocket is too big, but the collar and length will be appropriately proportioned for me. It's white with an oversized print that visually plays up the unusually large proportions of the shirt. The piping and glass shank buttons remain the correct proportions, though. <br>
<br>
<b>Mock Turtle</b>: There's three light mock turtlenecks. This is my favorite staple, but I lost my charcoal gray one 2 moves ago. (RIP) One will be a foil knit with thumbholes, one is a striped knit, and one is a 4x2 rib knit. <br>
<br><br>
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches1.png">
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches1.png" alt="(image: A mock turtleneck with gray and white horizontal striped tissue knit, a mock turtleneck with 4x2 black rib knit, pants with seagrass green, brown, and tan plaid linen, a pair of shorts with natural linen with white, lime, and orange stripes and a multicolor fringe ribbon in mint, baby pink, brown, neon coral, baby blue, and straw, and a pair of cuffed shorts with a bow belt in dragon fruit printed linen.)" width="500">
</a><br>
<b>Pants</b>: Straight-legged plaid linen pants with a fly-front closure, belt loops, side pockets, and blind hems. Linen feels great in the summer and lends itself to a well-tailored staple. <br>
<br>
<b>Shorts</b>: Two pairs of linen shorts, one with stripes and striped fringe ribbon trim and the other with a dragon fruit print and cuffs and a bow belt. <br>
<br><br>
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches3.png">
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_sketches3.png" alt="(image: a one piece long sleeve swimsuit with a mock turtleneck, an obi belt, three ruffles over the hips, and shorts, a yukata-style pajama set with bishop sleeves and berry red piping and dawn blue jacquard, and a pajama set with gathered sleeves, a gathered empire-waisted top, and gathered shorts with a sailor color and oversized rick rack trim and dark blue jacquard fabric with white bow print. )" width="500">
</a><br>
<b>Swimsuit</b>: The one piece swimsuit is made out of pastel seafoam and pink neoprene with pops of sulfurous yellow in an abstract swampy design. I actually lived around wetlands for most of my life, so it's cool to see a wetlands design instead of another tropical beach or flowering meadow print. It has long sleeves, a mock turtleneck, and an invisible zipper at the center back. The focus is the obi belt made from a contrasting black neoprene. There are three panel-and-tier ruffles over the bottom to give some illusion of volume against the closely-fitted belt and top without adding more unnecessary bulk. I'm not 100% on materials yet and may need to bring in a thinner swimwear tricot for the layers. <br>
<br>
<b>Pajama sets</b>: The pajamas are not my design. They are basically knock-offs from Yahoo! Japan shopping, since I don't feel like importing mall-tier pajamas. (The originals are <a href="https://store.shopping.yahoo.co.jp/open-clothes/xkunken-aihyx401.html?sc_i=shp_pc_search_itemlist_shsrg_img">Japanese-style yukata-style long sleeve pajama set for spring and fall</a> from <a href="https://store.shopping.yahoo.co.jp/open-clothes/">OPEN-CLOTHES</a> and <a href="https://store.shopping.yahoo.co.jp/kittyshop/lh20051312.html">summer pajama set for ladies in their 20s with flared collar and cute short sleeves</a> from <a href="https://shopping.geocities.jp/kittyshop/">kittyshop</a>.) The only real design change is using oversized rick rack instead of ruffles on that second set. Pajamas are the most pressing sartorial area in my life in which I need a self-assertion. People like to gift me pajamas, but they always ask me my size then buy a size or two down. Why won't anyone believe I'm not an XS! The one time I got something that fit, it was unwearably heavy fleece for my year-round hot climate. I don't want to be ungrateful or wasteful, though, so I've either crammed myself into tiny pajamas or sweated since I was little. That's so silly, especially now that I'm an adult. There's beautiful but unused jacquard fabric hanging in my closet. There's nothing stopping me from turning it into cute Japanese jacquard pajamas that actually fit. <br>
<br>
<h2>pattern-making and sewing so far</h2>
I'm working on the 泣き虫 button-down shirt first, but while waiting for the buttons to arrive, I went ahead and got one version of the mock turtleneck pattern done. <br>
<br>
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi_pattern.png">
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi_pattern.png" alt="(image: pattern pieces for the button-down shirt and a ruler and curve tool. )" width="500">
</a><br>
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_mockturtle_pattern.png">
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_mockturtle_pattern.png" alt="(image: pattern pieces for the button-down shirt and a ruler and curve tool. )" width="500">
</a><br>
I'm in the middle of sewing the button-down. The sleeves are cuffed and reinforced with interfacing (finally available again after the early pandemic mask-making frenzy) and decorated with the piping. Next, I'll set the sleeves in and work on the button placard. <br>
<br>
<a target="_blank" href="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi.png">
<img src="/static/img/fash/churchgirls+animalparade/capsulewardrobe_nakimushi.png" alt="(image: incomplete button-down shirt with disconnected sleeves. )" width="500">
</a><br>
</div> </div>
<div class="designer" id="designer"> <div class="designer" id="designer">
Here's a random list of steps I take: <br></p> <h2>designer</h2>
<br> <p>I'm chimchooree! I love the full process of apparel construction, but pattern-making has always been my favorite. Like any designer, I view fashion in terms of defining the problem and solving it. The creative side of my designs are led by meaningful themes, selecting for having relevance to both the temporal and metaphoric season I'm in, diverse concepts to draw from, and a consistent core to tie everything together. <br></p>
<ul> <br>
<li>I design my clothes to be irreplaceable. They are exactly what the client wants, made with professionalism and durability in mind, have a tailored fit, can be thrown in a washing machine no problem, and can be altered easily. The other part of this is avoiding fads. It's hard to tell how long you'll be into something, but fortunately(?) I take at least a week to design, cut, and sew, plus possibly even more time to order materials and coordinate fitting sessions, so my designs are necessarily free of impulse. </li> <h3>design statement</h3>
<li>I avoid synthetic fibers. The 5% lycra in denim feels great, but it's tough to say it's worth the 500 years it'll spend in landfills. Polyester is just as bad, and it often feels cheap, scratchy, or pilly. Clothes are washed frequently, too, so I'm afraid plastic-based clothing contribute to the rising number of microplastic particles in freshwater. (No proof, just a personal concern.) Do keep in mind that cotton, linen, and especially tencel, my go-tos, have their own serious issues, as do virtually every textile that is dyed or processed in any way. Basically, just to make your clothes last. </li> <p>The best clothes might very well be the ones you already own. We are called to be good stewards of the earth, so I encourage you to have your clothes repaired, altered, or customized whenever possible. <br></p>
<li>I use old rags or other people's trashbound cuts of fabric instead of buying muslin yardage. It's also cheaper and can be more similar to the fashion textile. Sometimes, I can even make the muslin garment wearable in its own right. </li> <br>
<li>I source as many elements as I can from what I already own. I hoard buttons, steal hooks-and-eyes, save any cups I remove. It's time-consuming to remove boning and free zippers from old clothes, but shopping my storeroom first frequently saves me from buying basics. Home seamstresses know how hard it is to feel this way about fabric and yarn, though...Always finish your projects before buying more fabric. Even if it's <i>so</i> tempting... </li> <p>But if I'm going to make new clothes, I'm going to design them to be irreplaceable. They will be thoughtfully designed and made with professionalism, personality, comfort, and durability in mind. I shoot for daywear that handles being thrown in a washing machine no problem, and try to keep my designs easy to alter. <br></p>
<li>I shred fabric scraps and serger tails into stuffing. Stuffing is usually polyester, and my scraps can be just as soft if not softer. I'm not even convinced this is unusual, since I took apart a mall-bought throw pillow one time to find it full of selvage! </li>
<li>I repair garments until they are crotchless and threadbare. I used to pride myself in making old things look brand-new again, re-knitting dropped stitches and hiding my repairs, but I've been more into visible mending lately. Old clothes are old, and it's okay and even individualizing for a garment to admit that. </li>
<li>
</div> </div>
</div> </div>

Loading…
Cancel
Save