• Add Review
  • Subscribe
  • Nominate
  • Submit Media
  • RSS
This page is for discussion of the technical side of content creation. If you have a technical issue or question with regards to a character or story you are creating, talk about it here.
(The old Custom Content thread can be found here)


Helpful things:

--> Medium build girl, the .psd that was used to create the built-in characters, is available with layer names in English.

--> Kudos to SparkleFox for finding us a male tachie generator, authored by "彩 雅介" (Aya Mayabaikai?)! This one is put together as a program, but has PSD files with layer-names in Japanese. No "fan-translation" available at this time.

--> You can use any of these images for making new custom characters.

--> Notepad++ with syntax highlighting for Heartache 101 can be a big help with story creation. To set it up, go to the View menu and set User Defined Language to HeartAche. Then close View, go to the Language menu and select HeartAche. (If you already have Notepad++, here's userDefineLang.xml by itself)

--> Mr. Help File has, regrettably, forgotten to mention certain locations! They are as follows:
Beach (sunset), Grounds (sunset), Roof (sunset), Bedroom (Morning), Downtown, Studio Room.
Note that these locations must be specified via a PLACE command. To the best of my (ie: Marrend's) knowledge, they cannot be obtained via the generic "School" or "City" code.

--> If you are writing story content that includes the appearance of existing characters (built-in or custom), the following list may be of reference:

ID 0 = The Player
ID 1 = Nakajima Miki {flowerthief, Built-in content}
ID 2 = Ikeda Keika {flowerthief, Built-in content}
ID 3 = Onishi Tsubasa {flowerthief, Built-in content}
ID 4 = Kaneshiro Shihoko {flowerthief, Built-in content}
ID 5 = Kaneshiro Riho {flowerthief, Built-in content}
ID 6 = Sato Akari {flowerthief, Built-in content}
ID 7 = Hiraoka Hinami {flowerthief, Built-in content}
ID 8 = (Secret character) {flowerthief, Built-in content}
ID 9 = Watanabe Junko {Nekochi, "Junko"}
ALSO = Tsukino Emi {Silent Pheonix, "Tsukino Emi", in progress}
ID 10 = Mitsuya Masako {Marrend, "Masako"}
ID 11 = Monotami Ruri {Marrend, "Uchioniko"}
ID 12 = Nemoto Mayu {Marrend, "Uchioniko"}
ID 13 = Terakado Shoko {Marrend, "Uchioniko}
ID 14 = Shirazu Izumi {Marrend, "Uchioniko"}
ID 15 = Watanabe Aoi {Nekochi, "Junko"}
ALSO = Lambaria Yuu {KimotoDragoon, "Yuu", in progress, Caretaker: Marrend}
ID 16 = Ran Fujioka {Neckochi, unpublished}
ID 17 = Torako Koizumi {Neckochi, unpublished}
ID 18 = Yumemi Tanno {Neckochi, unpublished}
ID 19 = Umehara Joruri {Marrend, "Joruri"}
ID 20 = Sakuragawa Fuyuki {Fuyuki, "Fuyuki", cancelled}
ID 21 = 21 Ways {dude797, "21"; Caretaker: Dozen}
ID 22 = Ikari Kyouki {Dozen, unpublished}
ID 23 = (Reserved for Nekochi)
ID 24 = (Reserved for Nekochi)
ID 25 = Kuwabara Emiko {Marrend, "Emiko"}
ID 26 = Tanaka Yoko {triad2/Noone42, in progress}
ID 27 = Katanashi Seira {triad2/Noone42, in progress}
ID 28 = (Reserved for KimotoDragoon)
ID 29 = Shitazawa Arika {Dozen, unpublished}

ID 31 = Maeda Eriko {triad2, "Meada"}
ID 32 = ? Genji {triad2, "Meada"}
ID 33 = ? Ryoko {Dozen, unpublished}
ID 34 = (Reserved for Tthedragon)
ID 35 = (Reserved for Tthedragon)
ID 36 = Murakami Megumi {Render, unpublished}
ID 37 = Kawano Fujiko {Render, unpublished}
ID 38 = Matsuhara Akane {Render, unpublished}
ID 39 = Momohana Nami {GloopMaster, Unknown, in progress}
ID 40 = Konohana Midori {LordNight, "Midori", RMN only, in progress}
ID 41 = Natsume Rika {LordNight, "Midori", RMN only, in progress}
ID 42 = (Reserved for LorSquirrel)
ID 43 = Hasegawa Kanon {LordNight, "Midori", RMN only, in progress}
ID 44 = Kirihara Kana {LordNight, "Midori", RMN only, in progress}
ID 45 = (Reserved for LordNight)
ID 46 = (Reserved for LordNight)
ID 47 = (Reserved for LordNight)
ID 48 = (Reserved for LorSquirrel)
ID 49 = (Reserved for LorSquirrel)
ID 50 = (Reserved for LorSquirrel)
ID 51 = Shiromiya Kagami {BDFalcon, unpublished}
ID 52 = Tsuchitsuru Airi {BDFalcon, unpublished}
ID 53 = Kimura Shizuka {Mute, unpublished}
ID 54 = Columban Kuri {?, unpublished}
ID 55 = Shikimori Asuka {Render, "Clique", unpublished}
ID 56 = Shikimori Sanako {Render, "Clique", unpublished}
ID 57 = Nakao Yasuko {Render, "Clique", unpublished}
ID 58 = Sakaki Usagi {Render, "Clique", unpublished}
ID 59 = Waifu Mai {pegaso, "Mai", unpublished} (temporary reserve?)
ID 60 = Makoda Yuuki {Ilan14, unpublished}
ID 61 = Hisatsuki Seiryuu {BDFalcon, unpublished}
ID 62 = Torahashi Mio {BDFalcon, unpublished}
ID 63 = Eienji Rie {BDFalcon, unpublished}
ID 64 = Hamaguchi Takako {dewelar, unpublished}
ID 65 = Yoshimura Noriko {dewelar, "Noriko"}
ID 66 = Ichini Sanshi {BDFalcon, unpublished}
ID 67 = Kimura Sachiko {Mute, unpublished}
ID 68 = Hitsuragi Yuureiko {BDFalcon, unpublished}
ID 69 = Hanata Haruka {BDFalcon, unpublished}
ID 70 = Shiraki Kotone {BasedMG, "Kotone", in progress}
ID 71 = Kurokawa Sarako {BDFalcon, unpublished}
ID 72 = Kurokawa Mikari {BDFalcon, unpublished}
ID 73 = (Reserved for LorSquirrel)
ID 74 = Yamisaki Eliza {Kevincalanor, Wolfpack}
ID 75 = Yamisaki Alessa {Kevincalanor, Wolfpack}
ID 76 = Nakamura Yuriko {Kevincalanor, Wolfpack}
ID 77 = Harada Himeko {Garage, "Winggirl"}
ID 78 = Fujikawa Sayumi {Garage, "Winggirl"}
ID 79 = Fujikawa Mayumi {Garage, "Winggirl"}
ID 80 = Hashimoto Midori {Ertad, unpublished}
ID 81 = (reserved for Ertad)
ID 82 = (reserved for Ertad)
ID 83 = (reserved for Ertad)
ID 84 = (reserved for Ertad)
ID 85 = (reserved for Ertad)
ID 86 = (reserved for Ertad)
ID 87 = (reserved for Ertad)
ID 88 = (reserved for Ertad)
ID 89 = (reserved for Ertad)
ID 90 = (reserved for Ertad)
ID 91 = (reserved for Ertad)
ID 92 = Itawa Miyuki {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 93 = Shogowa Yuka {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 94 = Fujita Suki {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 95 = Chihiro Sato {RukasuWYZ, "Ijona on'nanoko", probably canceled}
ID 96 = Shingoza Ayumi {RukasuWYZ, "Ijona on'nanoko", probably canceled}

ID 97 = Sawada Merika {Garage, "Winggirl - Pathways"}
ID 98 = Nagai Shika {Garage, "Winggirl - Pathways"}
ID 99 = Harada Hibiko {Garage, "Winggirl - Pathways"}
ID 100 = Robin Clark {Wowzer_, "Robin"}
ALSO = ? Takuya {Kevincalanor, "Built-off", tachie/profile only}
ID 101 = Miyazaki Kiyoka {Nedras, "First Years", unpublished}
ID 102 = Matsumoto Atsumi {Nedras, "First Years", unpublished}
ID 103 = Kagawa Yasuna {Nedras, "First Years", unpublished}
ID 104 = Azuka Ishikawa {Nedras, "First Years", unpublished}
ID 105 = Hayashito Kaede {ShinigamisApples/KiyokoKaia, unpublished}
ID 106 = Hayashi Kitsune {Garage, "Kitsune"}
ID 107 = Sasaki Riku {Garage, "Nadeshiko"}
ID 108 = Yamaguchi Ayame {Garage, "Nadeshiko"}
ID 109 = Kimura Nanashi {Garage, "Nadeshiko"}
ID 110 = Takahashi Karen {Garage, "Rivalries"}
ID 111 = Inoue Azami {Garage, "Rivalries"}
ID 112 = Yamamoto Hina {Garage, "Crossover", unpublished}
ID 113 = Kojima Daishi {Garage, "Crossover", unpublished}
ID 114 = Hashimoto Chiyo {Garage, "Crossover", unpublished}

ID 121 = Furuya Reika {ScarbucksCoffee, "Reika", unpublished}
ID 122 = Furuya Shunpei {ScarbucksCoffee, "Reika", unpublished}
ID 123 = Shimada Tsukasa {ScarbucksCoffee, "Reika", unpublished}
ID 124 = Shimada Tomo {ScarbucksCoffee, "Reika", unpublished}

ID 130 = Tanaka Grace {mysteriousone3, "Grace"}

(Note: You don't need to care about this list if your story events will not include existing characters, as ID numbers for characters in separate files don't have to be unique)

--> Finally, I've listed the game cheats here. You can use these during story events to test your content:
SHIFT + F5 -- Adds 10 to Looks
SHIFT + F6 -- Adds 10 to Athletics
SHIFT + F7 -- Adds 10 to Personality
SHIFT + F8 -- Adds 10 to Mind
SHIFT + F9 -- Adds 10 to Soul
ALT + F5 -- Adds 1000 to yen
ALT + F6 -- Active speaker's affection decreases by 100
ALT + F7 -- Active speaker's affection increases by 100
ALT + F8 -- Advances the calendar by 1 day
ALT + F9 -- Advances the calendar by 7 days

Posts

author=Garage
Since you asked, RukasuWYZ - this how I created each of my tachie sets:

First I made a fresh copy of the same tachie generator which has been used for the built-ins, too.

Then I opened it with The GIMP.

As described in Mr. HelpFile, the "generator" is a multilayer graphic file that contains layers - grouped (roughly) by bodyparts having multiple versions for each part.

You should take a few minutes to make yourself familiar with these layers, if you are not used to it.

The basic idea is, that ALL variations of ALL parts are there in one single file. You just have to enable those parts that should be shown, and disable those you don't want to be shown. Note that there not only a group for Arms and a group for Chests - but also a group combining the two in one set of layers. IN fact there is yet another group for bare arms ...

The next, important, step is to recolor at least the hair, and in the case of my sets the eyes. You should recolor each of the different layers of hair to with the same parameters so you get a consistent look (well: unless you want some advanced special effects, of course - like having a blue ponytail and red bangs ...) - I used the tool "colorize" (I hope that is the correct english name for it).

After this you can design the haircut by enabling and disabling the different layers until it looks like "your girl".

You should save this as "name.xcf". Then I created the "name-neutral.xcf" version by selecting layers for eyes, clothing, arms and anything ...

The other expressions are simple: take "name-neutral.xcf" and adjust at least the layers for mouth, eyes, blush and eyebrows. For me it was easiest to go from neutral -> unfriendly -> dislike and neutral -> friendly -> like -> love ->lovesick ...

If you like and need it you might add other expressions which you will then assign to OTHER1 et alt.

Once you have a complete set of .xcf files you export each of them to a .png file. You should then resize the .png to the target hight of your character.
(I first resized before exporting ... the result is less desirable in some cases because the masks of some layers get messed up.)
Normally you should resize all the files of one set to the same hight, of course ;)

Since I kept all the .xcf files for all expresions of my characters I am able to easily edit them (like for example moving part of the hair behind the clothing as suggested by Marrend).

Some basic information:
  • as mentioned in Mr. HelpFile you should definetly turn off the background - or your tachie would appear on a black box.

  • You can disable and enable whole layer groups with just one click.

  • The layers have to seperate functions: they are organising the content of the file (into bodparts) and they define the order in which things are drawn above each other. The lowest layer (Background) is drawn first, the top layer (Hair/Glasses) is drawn last and thus over every other layer.

  • You can't combine any version of hair with every version of arms+chest. Look at Back_Long_Tail_Braided and its variations.




Is there any way to do this WITHOUT using Gimp? Or a free alternative to gimp? I don't think I have the money to buy it :(
author=RukasuWYZ
Is there any way to do this WITHOUT using Gimp? Or a free alternative to gimp? I don't think I have the money to buy it :(


GIMP is the free alternative ;) Just go to gimp.org and download it.
author=RukasuWYZ
EDIT: Marrend I'm depressed! Where are my ID Reserves?!?


Gotcha covered, mate.
author=dewelar
author=RukasuWYZ
EDIT: Marrend I'm depressed! Where are my ID Reserves?!?
Gotcha covered, mate.


Thank you!!!
Marrend
Guardian of the Description Thread
21781
author=RukasuWYZ
Marrend I'm depressed! Where are my ID Reserves?!?


Sorry about that! I can be pretty slow with those updates, sometimes!


Thanks for the backup, dewelar!
author=Marrend
author=RukasuWYZ
Marrend I'm depressed! Where are my ID Reserves?!?
Sorry about that! I can be pretty slow with those updates, sometimes!


Thanks for the backup, dewelar!


No worries. I have to do something now and then to earn my title ;-D.
There is no way to use CONTINUE in a PHONE-Story, is there?

Like:
STORY 7909
CONDITION = 7908 DONE
CONDITION = 7911 NOT DONE
CONDITION = NOT Saturday
PHONE = 79
PRIORITY = High
REPEATABLE = Yes
ID = 0
Am I ready for a fight?
A: Schedule training
B: Not yet.

BRANCH A
So ... You ready for some training?
ID = 79
Sure!
ID = 0
Let's meet a the gym!
JUMP 7911

BRANCH B
CONTINUE

That will issue a warning.
Marrend
Guardian of the Description Thread
21781
I'm not really sure about this, but, it might need a new STORY to work. Such as...


STORY 7909
CONDITION = 7908 DONE
CONDITION = 7911 NOT DONE
CONDITION = NOT Saturday
PHONE = 79
PRIORITY = High
REPEATABLE = Yes
ID = 0
Am I ready for a fight?
A: Schedule training
B: Not yet.

BRANCH A
So ... You ready for some training?
ID = 79
Sure!
ID = 0
Let's meet a the gym!
JUMP 7911

BRANCH B
JUMP 7910

STORY 7910
CONDITION = 7909 DONE
PHONE = 79
CONTINUE

...this?

*Edit: Screwy code-tag!
author=Marrend
I'm not really sure about this, but, it might need a new STORY to work. Such as...

...
author=Marrend
...this?

*Edit: Screwy code-tag!
I doubt that adding another PHONE story to jump to will change things ... but I'll try.
A short cameo (one scene - the char in question has a tachie but only about 5 lines of text) doesn't deserve an official ID, does it?
Speaking of cameos I found a nice hack.

Suppose you want Miki for a short appearance in a route that's supposed to be played with Clean Mode on ...

This is how you can do this:

my_profile.txt, game_profiles.txt

STORY 11111
#CONDITION = whatever
PLACE = Front A
PRIORITY = High
ID = 0
It's good that Miki did not see this.
JUMP 11112

STORY 11112
CONDITION = 11112 DONE
ID = 1
SHOW CENTER
That I did not see <i>what</i>?

The game does check for unintroduced chars in a STORY ... but it does not check the JUMPs in a STORY whether they end up on a STORY with unintroduced chars.
author=Marrend
I'm not really sure about this, but, it might need a new STORY to work. Such as...

...
JUMP 7910

STORY 7910
CONDITION = 7909 DONE
PHONE = 79
CONTINUE

...this?

*Edit: Screwy code-tag!
I checked - this issues the same warning.
*Edit: yup, screw that screwy tag!
Marrend
Guardian of the Description Thread
21781
author=Garage
A short cameo (one scene - the char in question has a tachie but only about 5 lines of text) doesn't deserve an official ID, does it?


Lemme think out loud for a bit. A new character that has about five lines of text that also has a tachie. I sorta have to question why bother with the tachie, and just have that character use ID=<insert_name_here>? Unless the intent was to flesh out that character elsewhere, as it's "just" a cameo in the one content?

author=Garage
The game does check for unintroduced chars in a STORY ... but it does not check the JUMPs in a STORY whether they end up on a STORY with unintroduced chars.


I think I recall flowerthief saying that this was possible, I don't know off-hand if Mr. Help File speaks of this. I'll check up on this later.

author=Garage
I checked - this issues the same warning.


That's most peculiar. I vaguely remember getting an error with CONTINUE in the context of a BRANCH (Darigaaz, did I ever report that?), but, figured it would work with a "normal" STORY. I think the best thing you can do in that BRANCH is to go something like...

ID = 0
(We continued chatting for a bit.)
ID = 79
AFFECTION UP


...this?
author=Marrend
author=Garage
A short cameo (one scene - the char in question has a tachie but only about 5 lines of text) doesn't deserve an official ID, does it?
Lemme think out loud for a bit. A new character that has about five lines of text that also has a tachie. I sorta have to question why bother with the tachie, and just have that character use ID=<insert_name_here>? Unless the intent was to flesh out that character elsewhere, as it's "just" a cameo in the one content?
The char is a plot device ... her identity is ment to come as a surprise to the "player".

Currently I have no intention of making her playable, and she would not fit as a playable char in my current content.

author=Marrend
author=Garage
I checked - this issues the same warning.

That's most peculiar. I vaguely remember getting an error with CONTINUE in the context of a BRANCH (Darigaaz, did I ever report that?), but, figured it would work with a "normal" STORY. I think the best thing you can do in that BRANCH is to go something like...

ID = 0
(We continued chatting for a bit.)
ID = 79
AFFECTION UP

...this?
Yeah. But I am already using faked "Just Chat"-options in other places. I do not want to emulate the whole PHONE-Call and random ENCOUNTER stuff more then I have too.

Plus: it is impossible to perfectly emulate this - I cannot have a customized PHONE-Call schedule a date (in the sense of a DATING-Story), AFFECTION UP uses a fixed value instead of looking at player's stat.

Not to mention that a random phone call can fail. A selfwriten PHONE-Story always counts as a success. Even if you fake "She doesn't pick up" - her heartache gets still reset. Just ask the author of Robin ... (great character, by the way!)

For example: (minor spoiler)
Himeko will not accept dates. To implement this I'll be ending up having REPEATABLE PRIO-High PHONE-Stories for every state from NEUTRAL up to LIKE for her.
Marrend
Guardian of the Description Thread
21781
I am aware that Mr. Help File mentions that PHONE events can use CONTINUE to allow for a generic phone event to occur, both when talking about Phone events and when talking about the CONTINUE command. I am also aware that, outside of this command, it is utterly impossible for authors to emulate the proceedings of generic phone events. Particularly in respect to setting up where the date occurs in, much less anything else you mention.

However, the error message that you're getting (or, at least, the one that I'm seeing) specifies that CONTINUE can only be used in a "City" or "Dating" STORY. Which tells me that the PHONE-story functionality for CONTINUE is broken or never worked to begin with, because nobody ever tried it until now.

*Edit: I'm sorry I can't be of more help. There are many things that authors can do, but, we are still limited by the code-base. We are also learning how much of that code-base is even usable, given the recent errors in regards to multiple-character-endings, and now this.
author=Marrend
I am aware that Mr. Help File mentions that PHONE events can use CONTINUE to allow for a generic phone event to occur, both when talking about Phone events and when talking about the CONTINUE command. I am also aware that, outside of this command, it is utterly impossible for authors to emulate the proceedings of generic phone events. Particularly in respect to setting up where the date occurs in, much less anything else you mention. Maybe further investigation (on my side) is in order ;)

However, the error message that you're getting (or, at least, the one that I'm seeing) specifies that CONTINUE can only be used in a "City" or "Dating" STORY. Which tells me that the PHONE-story functionality for CONTINUE is broken or never worked to begin with, because nobody ever tried it until now
OK: So it wasn't just me ... I thought I remembered Mr. Helpfile mentioning PHONE-Stories in the context of CONTINUE.
*Edit: even a 5-liner STORY without anything fancy (no branches, a minimum 2-line header, an ID= line, a bit of text and CONTINUE) triggers the warning.
And Mr. Helpfile simply LIES about this!

author=Marrend
*Edit: I'm sorry I can't be of more help. There are many things that authors can do, but, we are still limited by the code-base. We are also learning how much of that code-base is even usable, given the recent errors in regards to multiple-character-endings, and now this.
Having to have to work with what is there is another way to have fun ;)

By the way 2.5 is the correct and final version, right? Or are there some last minute patches that I missed because I downloaded from the wrong location?
Marrend
Guardian of the Description Thread
21781
It's technically possible to do, but it would certainly be more limited. My train-of-thought involves using BRANCHes for "Just Chat" and "Ask for a date", and do follow-up BRANCHes in regards to "Ask for a date". If "Ask for a date" was successful (you should be able to use ID LIKE, or like CONDITION for this check), you could JUMP into a regular STORY where the player character has a thought-bubble about where to go, and then do a choice of up to four locations, probably having at least one "good" location, and one "bad" location on the list. It's possible the actual choice made might be irrelevant, though, as the various DATING stories should be able to use CONTINUE. This is all very largely speculation on my part, though.


To the best of my knowledge, the 2.5 version that is available as the main download is the latest one. I don't believe flowerthief made any additions/tweaks/bugfixes/whatever when he made the blog about leaving.
author=Marrend
It's technically possible to do, but it would certainly be more limited. My train-of-thought involves using BRANCHes for "Just Chat" and "Ask for a date", and do follow-up BRANCHes in regards to "Ask for a date". If "Ask for a date" was successful (you should be able to use ID LIKE, or like CONDITION for this check), you could JUMP into a regular STORY where the player character has a thought-bubble about where to go, and then do a choice of up to four locations, probably having at least one "good" location, and one "bad" location on the list. It's possible the actual choice made might be irrelevant, though, as the various DATING stories should be able to use CONTINUE. This is all very largely speculation on my part, though.
Without CONTINUE you have no way to schedule a "real date" - in the sense of game logic.

You could make up a PHONE STORY where player and his girl decide to go to xyz which looks much like a regular one and matching City-STORY which plays much like a DATING.

This would still not be regarded as a regular date by game logic. No checking how long its been till the last time he dated her, no <3 in the location list, no factoring in of a confidence boost that might have been scored by the player (at least not in to the calculation whether she say yes or no). And you would have to emulate stuff "where will we meet" and "why didn't you show up" on your own. Which is entirely solvable - at least if you have a limited number of simulated dates.

It gets complicated fast if you want this to be repeatable, or if you want to allow different locations.

By the way: yes, a DATING story is able to use CONTINUE (regardless of branch or not). And you can use PLACE = City, DATING = id_of_girl for a generic customization but that's a differnt beast ;)

PS: for my current purpose I just suspend the possibillity of dating Mayumi while she and the player are in training mode ... so "Ask for date" is replaced by something like "Schedule training" and "Just chat" by a short "(we chatted for a while)" + AFFECTION UP. This phase should not be lasting longer the a few weeks anyway.
:sigh: There ain't going to be any bug further fixes to this game - like ever?
Yeah - I know the answer ...

Some note to the ZOOM command and how tachies seemed to be displayed on screen:
If you have more then one tachie on-screen and ZOOM the one that's taking CENTER stage she will be clipped by the any non-ZOOMed tachie to her left or her right.
(In other words: ZOOM makes her *bigger* not moves her closer to the player)