[Tutorial] Adding ACS, Hair, and Clothes to Monika After Story v0.9.5 (Outdated so probably wont expand after all) #7918
Replies: 9 comments
-
Not sure if this is just your WIP, but this will probably be better served in the Wiki. |
Beta Was this translation helpful? Give feedback.
-
Just FYI. I'd shy away from giving people access to the dev console. We removed it from the main repository for a reason. If you wanted to do something like this, sure you can make a dev tool, but have it done via topics which you can use to access everything, similar to the dev rpy's we have in the dev version. You can PR those as well. |
Beta Was this translation helpful? Give feedback.
-
@jmwall24 I am not sure if you mean I should put it in the wiki or if people should use the wiki instead. It is a WIP however each section contains a template and or explanation of what to do so all of the sections aside from the advanced one are complete I just need to remove the console stuff and add in the label version which I was already planning on adding. @multimokia if you read my parenthesis I said I am gonna make a label version aka do it from a rpy file as opposed to the console. The console it just what I use and I wanted to write this for a while and to respond to #4314. I didn’t have enough time to add the “dev tool” version before I left. I was hopping this tutorial would be helpful to people because a few people I have talked to have had a hard time understanding the wiki. Also what does “PR those as well” mean? |
Beta Was this translation helpful? Give feedback.
-
@LordBaaa I meant when it is done, you should put it in the Wiki. Anyone can update the wiki, and this the kind of thing it is meant for. |
Beta Was this translation helpful? Give feedback.
-
@jmwall24 Oh I didn’t know I could update the wiki. I just put it here cause that is the only place I though I could. |
Beta Was this translation helpful? Give feedback.
-
When you have the dev tool versions, I mean to make a pull request submitting them. That way anyone who installs the developer build of MAS can use them. |
Beta Was this translation helpful? Give feedback.
-
@multimokia Ahh sorry I am not the best with abbreviations. Aside needing the dev tools version what do you think of what I covered? I was trying to make it a bit more average user understandable. |
Beta Was this translation helpful? Give feedback.
-
woah finally something understandable |
Beta Was this translation helpful? Give feedback.
-
@bittercaramel Good, I’m glad it helped you. :) |
Beta Was this translation helpful? Give feedback.
-
Okay so you want to add a ACS to the game. Well lets start with a basic single pose ACS.
See the Advanced Section(Comming Soon) for full explanation of each bit but for now let just get something in the game.
game
folder. This will enable the console and allow you test your sprites more easily. (You can remove unren when your done.)(edit: removing this zip for now until we decide just how readily available we want the console for the masses - @jmwall24)
(I will add a version of how to do this with labels later but for now I am gonna show you how ot use console commands)
(Templates.zip is comming soon couldn't finish all of this before I had to go out of town)
(All templates should work with no problems but if there problems let me know. Also I will DOUBLE Check for the billionth time when I come back)
Preparing Images (Read me first)
Start by downloading the After Story Base psd's from here. We will be using these a lot.
We will be using this piano clip art I found as base for the Basic ACS, Hairclip and Plushie
.
TheresaKnott-piano.zip
Import your image, resize, position it and save the layer by itself for day time mode and apply the twilight group for night time.
Next we resize the images to 1280 by 850 In another program like GIMP or Paint.Net
Preparing Images for ACS
Contents
Images for ACS start with the header
acs-
followed byspritename
followed by-pose
ended by-n
for night time mode. oracs-<spritename>-n.png
. The-n
is for switching between day and night.Basic ACS (Single Pose ACS)
An example of this naming style in action is the Basic ACS section where we will be naming out sprites
acs-piano-0.png
andacs-piano-0.png
which is the night time version.piano
could be replaced with any name for your sprite.Hairclip/Ribbon (Two Pose ACS)
An example of this naming style in action is in the hairclip section where we would name our files 'acs-piano-hairclip-0.png' and 'acs-piano-hairclip-5.png' for daytime versions and 'acs-piano-hairclip-0-n.png' and 'acs-piano-hairclip-5-n.png' as night version.
0
is for upright and5
is for leaning in this example.acs-piano-hairclip-0.png
to acs-piano-ribbon-0.png
or something like that if you are doing a ribbon.Multipose ACS T(Three or more poses, in this case all six)
This is an example from Multipose ACS that I did. There are six poses and a day/night version for each of them.
We now need to move out ACS to the MAS ACS file location
game\mod_assets\monika\a
folderPreparing Images for Hair
Contents
Hair is a bit different. So the name are for upright are
hair-<hairstylename>-front.png
andhair-<hairstylename>-back.png
and for leaning itshair-leaning-def-<hairstylename>-front.png
andhair-leaning-def-<hairstylename>-back.png
. And of course with the-n
for nightime.Here is an example
Preparing Images for clothes
Contents
The naming style for clothes is a bit different then ACS. Firstly the path for clothes is
mod_assest\monik\c
. For clothes in the templateimg_sit
you specify a folder name not a file name! This is very important. The rest of naming can pretty much be exactly the same.Don't worry about how they are named. My advise is just make a copy of the
def
clothing folder and overwrite images as you go that way you can use the already established naming convention.Also for thumbs you will need to name the file
clothes-<sprites>.png
Preparing thumbs
Contents
Thumbnails are stored in
mod_assests\thumbs
folder.acs-
,clothes-
, orhair-
then
your name
and finally.png
acs-piano-hairclip.png
mod_assests\thumbs
folderLike this
Here is an example of making a ribbon Thumbnail
The easiest way to make a ribbon thumb is to take an existing ribbon thumbnail and your new ribbon. Put the new ribbon over the thumbnail. Basically just open both up and cut the part of the new ribbon and paste it in a new layer over the thumbnail being careful not to expand the canvas size. Then just use your arrow keys to line up pixel to pixel and hide the layers to check your work against the original. Like this. (Using paint.net btw)
Coding
Basic ACS (For demonstration purposes only. Don't use otherwise)
Contents
Read the Preparing Images for ACS before following this section. This is a really simple template just to get something in game. This is not really good for anything but this example but I just want you to get your feet wet.
REALLY simply ACS Code Template
First need give it a
name
which is what the game. For this we will say pianoNext
img_sit
is the base name of our images which will again be piano.My code example
log\spj.txt
and it should look like this.
"dryrun": false,
string from our json. Then relaunch the game and pressShift-O
to open the console.store.mas_sprites.ACS_MAP
. Note that there is alsoHAIR_MAP
andCLOTH_MAP
for well you can guess what they are. For this we will be usingACS_MAP
.store.mas_sprites.ACS_MAP["name_of_your_sprite"])
or this case piano.After doing
monika_chr.wear_acs(store.mas_sprites.ACS_MAP["piano"])
your should seeNext we do monika_chr.wear_acs(mas_sprites.ACS_MAP["piano"]) and we should get this.
See it is on her desk!
monika_chr.remove_acs(store.mas_sprites.ACS_MAP["piano"])
.Okay... takes long breath so we put a ACS in the game! Yay! You can read the other sections for making something actually useful.
Filling Out Templates (Read me before reading below sections)
Contents
In the following sections you will be filling out templates. Here are the important section you will need to fill out.
Before your proceed you must know. Only gift her the sprite AFTER after you remove the
dryrun
line! (read entry 8 of this section). If gift her something before hand and it it is not in the game she wont be able to see it. Plus if she reacts to something that doesn't work then when you add it properly she won't react at all. See Advanced Section(Coming Soon) to fix the gifted to soon problem.Once you fill out the below section you are gonna save whatever template as a
.json
in thegame\mod_assests\monika\j
folder. Look at templates.zip for examplesname
, this is the name that the game will see.img_sit
this is the name of the image/or images you will be using-for acs this is the file name without any prefixies or suffixes without any prefixes see Preparing Images for ACS for reference.
display_name
, this is the name that will appear in selectors like for ribbons and hairclipthumb
this is the name of your thumbnail without the prefix. See Preparing Thumbnails for more infohover_dlg
This is what will be said when your mouse is over the ACS in a selector menuselect_dlg
This is what is said when you select a ACS to be worn.select_dlg
has no comma andhover_dlg
on the"I love this one."
line has no comma but the one before it does.giftname
this is the name of the gift file without the.gift
extention you will put in yourcharacters
folder8.- 'dryrun
this tells the game to not offically add it but to just test to make sure it works. Once you check your 'log/spj.txt
you can remove this entire string and give her a gift. Say you hadit would end up like this
Giving Gifts
Contents
Before your proceed you must know. Only gift her the sprite AFTER after you remove the
dryrun
line! from the template (read Filling Out Templatesf for more details). If gift her something before hand and it it is not in the game she wont be able to see it. Plus if she reacts to something that doesn't work then when you add it properly she won't react at all. See Advanced Section(Coming Soon) to fix the gifted to soon problem.To make a gift make a new text document and rename it to
yourgiftname.gift
and put it in yourcharacters
folderHairclip
Contents
Read the Preparing Images for ACS and Filling Out Templates Sections before proceeding
Hairclip ACS Template
At this point your game should look like this.
Once you gift he the hairclip it should show up in the hairclip selector.
She saw it.
Ribbon
Contents
Read the Preparing Images for ACS and Filling Out Templates Sections before proceeding
Ribbon Template
Once you gift her the ribbon it should show up in the ribbon selector.
Add/Replace Plushie
Contents
Okay so we already basically made a plushie in Basic ACS Section. Lets actually make something out of it. Start by grabbing this plushie template for json code. Fill out the template except for
mux_type
. What we will do with that is dependent on the next bit.Json Plushie Template Code
Replace quetzal plushie(Simple)
If you just want to replace the quetzal plushie with your own and don't want any others, use this template.
Replacing Plushie Template Rpy Override Code Simple
acs_type
as plush_mid (Look at Advanced explanations for why)your-plushie-name-here
on line 10 with your plushiename
from you json file. Now save this file as plushie_replace.rpy and copy it into you
game
folder. Like this.3. Load the game and when the plushie script run you should see your plushie.
mas_startupPlushieLogic(1)
. This will guarantee that if the code is working the plushie will spawnAdding new Plushies (Advanced)
We are gonna add a plushie.
acs_type
to something unique for I set it toplush_p
for piano.Adding More Plushie Template
Quetzalplushie mux_type overrider
<your-plush-acs-type>
in Quetzalplushie mux_type overrider with your jsonacs_type
name and save it in your game folder.Adding More Plushie Template
and replaceyour-plushie-name
with your plush name.number_of_total_plushies
is by defualt set to two but set it to as many plushies as you have.Add_plushie.rpy
and copy to game like before.mas_startupPlushieLogic(1)
serveral times. You should see one plushie appear and then after a few time be replaced by your other plushie. This means it it working.Multi Posed ACS
Contents
Read the Preparing Images for ACS and Filling Out Templates Sections before proceeding.
The best in game example of this I can think of is the
Hairties-Braclet
It has a different image for each pose. See
zz_spriteobjects.rpy
for more details.However we are gonna do something a bit simplier by making a changing color ribbon!
(Note again this an example not an art tutorial)
I started by making 6 differently colored bows to kinda represent the rainbow, maybe someone could make better colors, did this kinda quick and dirty. Again day and night time versions and appropriate naming. See Preparing images for ACS for more info.
Okay onto coding
For this we can basically use the wiki page template, however we will have to remove this comma as it will throw this error if we don't. So we are left with this template.
Comma Error
Multipose ACS Template
Here is my code
What this looks like in game
Hair
Contents
Read the Preparing Images for ACS and Filling Out Templates Sections before proceeding
Template
Clothes
Contents
Read the Preparing Images for ACS and Filling Out Templates Sections before proceeding.
Clothes Template
Note Just like
Multi Posed ACS
fi you use the defualt template from the wiki you get a comma error. Also the default lean in the wiki islean|def
which doesn't work. It says invalid pose. You need to replace it withdef|def
. Finally I added the down hairstyle to the hair map in the templateProg Point
Contents
Prog Points are bits of code that can be run when the a ACS, Hair, or Clothes are worn.
Here are the lablels
an example would be this
This code would tell what ever clothes your specify in
name
to store whatever hairclip, and ribbon monika has on and then to wear the red ribbon and the heart hairclip.So lets break down the code a bit
prev_ribbon = monika_chr.get_acs_of_type("ribbon")
monika_chr.get_acs_of_type()
: (function) It gets the acs that has theacs_type
of whatever is specififed in this caseribbon
if store.mas_SELisUnlocked(store.mas_sprites.ACS_MAP['ribbon_red'], 0)
store.mas_SELisUnlocked()
: (function) checks if something is unlockedstore.mas_sprites.ACS_MAP
: (dictionary) Stores thename
and a `MASAcessory object. It is the location for all ACSstore.mas_sprites.ACS_MAP["red_ribbon"]
to access a dictionary you must enter in a key to return a value This is done through["name"]
or you can use.get("name")
monika_chr.wear_acs()
: Takes (MAS Object) Makes monika wear a specifited ACSstore.mas_sprites.ACS_MAP['ribbon_red'])
. As we learned a moment ago with this code we can specify aMASAccessory object
which is basically all the data used to wear a ACS.if prev_hairclip is not None
Checks if prev_hairclip has a value, if she wasn't wearing a hairclipprev_hairclip
would beNone
. This is says as long asprev_hairclip
does not equalNone
to do the next bitmonika_chr.wear_acs(prev_hairclip)
or to wear the last hairclipYou can do alot more but this is just a simple example
Good functions to know for prog points
Contents
monika_chr.wear_acs()
: Takes (MAS Object). Makes monika wear a specifited ACSgstore.mas_sprites.ACS_MAP["name"]
monika_chr.change_clothes()
: Takes (MAS Object).This changes her clothes.store.mas_sprites.CLOTH_MAP["name"]
monika_chr.change_hair()
: Takes (MAS Object). This changes her hairstore.mas_sprites.HAIR_MAP["name"]
store.mas_SELisUnlocked()
: Checks if somthing is unclockedstore.mas_SELisUnlocked(store.mas_sprites.ACS_MAP['ribbon_red'], 0)
store.mas_sprites.ACS_MAP['ribbon_red']
is the code to get to the MASAcessoryred_ribbon
0
is the sprite type0
is ACS1
is Hair,2
is clothesmonika_chr.get_acs_of_type()
: Takes (string). It gets the acs that she is wearing that has theacs_type
of whatever is specified in. Useful to store things for lateracs_type
same one from jsons.Reactions
Contents
This is the syntax for the different sprite types.
Basic Code
This is the most basic thing you can do. This is just after she says lets see whats inside monika will say
This is a test
and add the player name with the var[player]
. All the code you don't need to worry about just replace<name>
with your name minus the<>
. You can call labels from here run python or anything else. Literally anything you can do anywhere else you can do here.Advanced Section (Coming Soon)
I didnt have enought to finished, I was going out of town for a few days. I will finishe it when I am back
Beta Was this translation helpful? Give feedback.
All reactions