• 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=ninja6398
Ok thanks guys. I just need to know where to start. Right now I'm messing with the tachie. does there happen to be a shrine maiden outfit? Cause I'm setting my character to be a shrine maiden that lives near the shrine visited.

If you happen to have tachie from other sources that fit your needs you could use those. The "medium build girl" set that's used by most of us does only have a school uniform.

At the top of the artistic thread there's workshop by kevincalanor with useful information and some extra parts and backgrounds ...

Or you might want to test my tachie generator tool using kevicalanor's latest workshop graphics.

There's no "shrine maiden" outfit in there, I fear. But maybe a dress in the right color would do the trick for you?
Marrend
Guardian of the Description Thread
21781
The closest I've come to in regards to a "Shine Maiden" outfit might have been the original Emiko? It's been a while, and I've many regrets in regards to that tachie.
author=Garage
If you happen to have tachie from other sources that fit your needs you could use those. The "medium build girl" set that's used by most of us does only have a school uniform.

At the top of the artistic thread there's workshop by kevincalanor with useful information and some extra parts and backgrounds ...

Or you might want to test my tachie generator tool using kevicalanor's latest workshop graphics.

There's no "shrine maiden" outfit in there, I fear. But maybe a dress in the right color would do the trick for you?


So i tried to use your tachie maker, and my antivirus(Avast) set off a couple red flags on it. Just wanted to let you know.
author=ninja6398
author=Garage
If you happen to have tachie from other sources that fit your needs you could use those. The "medium build girl" set that's used by most of us does only have a school uniform.

At the top of the artistic thread there's workshop by kevincalanor with useful information and some extra parts and backgrounds ...

Or you might want to test my tachie generator tool using kevicalanor's latest workshop graphics.

There's no "shrine maiden" outfit in there, I fear. But maybe a dress in the right color would do the trick for you?
So i tried to use your tachie maker, and my antivirus(Avast) set off a couple red flags on it. Just wanted to let you know.
The main reason because anti-vtirus and similiar defenses don't like my tool seems to be because it's an unsigned executable that brings along it's own libraries ... if anybody knows an easy way to help me fix this, I'd be very happy to implement it.

The 100% virus and warning free variant would be to just download the python scripts (and the .PSD file, of course) and install python, imagemagick and wx-python seperately.
Detailed instructions can be found here.

I understand if you don't want to bother with all this. In that case: kevincalanor's .PSD files contain everything you really need. Just use those.
Should this work?

STORY 9706
CONDITION = whatever
PLACE = Hall A
ID = 79
ID = 0
(Up ahead there's Hiroaki talking to some other guy.)
(He hasn't noticed me, yet.)
(Maybe I'll just listen in on them?)
ID = Guy
'Tell you she's hot for you.

The intention here is, that the "ID = 79" should tell the game that the STORY belongs to a certain girl which doesn't actually appear in the story.

This should result in the STORY being favored if the playing person choses to shift the horoscope to her sign.
Marrend
Guardian of the Description Thread
21781
To be perfectly honest, I have no idea. I'm aware that a character's horoscope can affect the encounter rate (as it were) of said character. However, does that story count as an "encounter" when said character has no interaction with the game/player?

*Edit: I've done a little research on this. What I did was to basically copy-paste your text into a new story-file, but replaced the "ID = 79" line with "ID = 1", and commented out the CONDITION line. However, I neglected to provide a profile definition.

The game ran without throwing any errors, and did not display any characters under the "Characters in this story" section. Thus, I'm tempted to say that an "ID = X" line with no follow-up code would mean that the character with an ID of X is not being encountered, and the scene's rate of encounter is purely based on the combination of the CONDITIONs it needs, and the PRIORITY it has.

*Edit2: Though, it should be possible that the CONDITIONs of the story could provide context for allowing the horoscope to affect it. Such as X UNFRIENDLY, or... what-have-you.
author=Marrend
*Edit2: Though, it should be possible that the CONDITIONs of the story could provide context for allowing the horoscope to affect it. Such as X UNFRIENDLY, or... what-have-you.
Hmm. If the Test Mode is any indicator it should be the other way round.
With an ID = 97 line test mode list Merika under "Characters in this story", without this line there's no "Character in this story". (I had originally mixed up 79 with 97 ... but nevermind)

That would be consistent with what Mr. Helpfile says about "unintroduced characters" btw.:
author=Mr. Helpfile
Only characters who have appeared in an Introduce story are eligible to appear in any subsequent stories, whether custom or generic. To put that another way, if a story event contains anywhere in its body the command "ID =" for a character whose Introduce story has not yet been played, that story will not be played, even if it includes other "ID =" commands for characters who have been introduced. This restriction does not apply to branches.

Alas, the section about story selection is less specific in this regard.
author=Mr. Helpfile
If any of the characters who appear in a story have a zodiac sign that matches the horoscope prediction for that day, ...
"Appearing" is not defined there.

*EDIT*: About the handling of IDs not defined by any Profile within STORYs ... the game just treats them as NPCs. I.e.: if you do something like

game_profiles.txt

STORY 777
CONDITION = 1 LIKE
PLACE = Roof
ID = 123456
I'm not a girl
ID = Suspicious Voice
Me neither
ID = 1
UNFRIENDLY
SHOW CENTER
Get lost you two. You don't even exist.

In this story "123456" and "Suspicious Voice" speak in "black" text and only Miki is shown by her name and in that purple-pinkish-red color-thingy.
Similiary: if you use a non-existent character or STORY ID in any conditional jump like
A: 123456 LOVE
The text "123456 LOVE" is not treated as a condition but as a dialog option.
Yes - me again, asking for yet another set of IDs ...

ID 107 = Sasaki Riku
ID 108 = Yamaguchi Ayame
ID 109 = Kimura Nanashi

Current sketch-of-ideas:
  • Riku is an outright tomboy. Kazuhiko is shocked to learn she's a she, he used to know her as just "one of the boys".
  • Ayame ... well "Sure she's got it all but baby is that really what you want."
  • Nanashi - your avarage wall flower (or ain't she?)
Marrend
Guardian of the Description Thread
21781
Recorded, and should be updated!
author=Marrend
Recorded, and should be updated!

Thank you.
Please may you unreserve Chihiro, Suki and Ayumi's IDS? For the time being, they are being left to rot...
Marrend
Guardian of the Description Thread
21781
From what I can tell, those characters exist as part of Ijona on'nanoko. That they are labeled as "unpublished" on here probably just means that I forgot to update this page with that information when Ijona on'nanoko last released whenever-it-was-ago. :P

*Edit: However, what I suppose I can do for you is put a different label in those particular slots? Hrm. Not sure what that label would be.

*Edit2: Until I come up with a better idea, I'm using the strike-tag on the "in progress" label for those characters.
In hope it might be useful for somebody:

Sometimes you just want to know if Kazuhiko did or did not somebody.
You HAVE to supply a PLACE= or your story will be ignored.

Thus you could do it like that:
# Just a trigger for their first date.
STORY 1818
DATING = 108
PLACE = City
PRIORITY = High
CONTINUE

(City is the official placeholder for all locations where you could go after school. And thus all possible dating spots.)
Can someone explain to me how make an attribute check work properly?

I thought the proper syntax was "C: MIND 30" written like that, but apparently not. There's an attribute check that happens in one of my branches, like this:

(He throws a punch.)
C: ATHLETICS 25

But it just goes on as if the check didn't fail. I clearly DON'T have those stats, but it's like the game doesn't care. Also, how does the game decide to "jump" to another event if you fail a check? how do you do that?
Marrend
Guardian of the Description Thread
21781
It's been forever-and-a-half, but, from what I recall, an "else" clause is written after the check. So, in the case of...


STORY 1
ID = 0
(I throw a punch...)
C: ATHLETICS 25
(...but, I barely phase the guy!)

BRANCH C
(...and the creep reels back from the pain! That'll show 'em!)


...this writing, the text "(I throw a punch...)" will always occur, whereas "(...but I barely phase the guy!)" occurs if ATHLETICS is less than 25. When the check succeeds, it goes to BRANCH C, and displays "(...and the creep reels back from the pain! That'll show 'em!)"


If it always displays the "success" branch, I'm wondering if you have it backwards? Have you tested to see what happens if the player has over 25 ATHLETICS?
The problem was that I didn't realize that the letter means to jump to another branch. Once I realized that, it was simple.

On a side note It's kind of annoying that I have to create a new story event for each choice if my story event has 4 dialogue options and I want each choice itself to have it's own branches. There ought to be extra "invisible branches".

Marrend
Guardian of the Description Thread
21781
I really, really doubt this game is going to change. Especially if the original author drops by every once in a blue moon, if that. I've a funny feeling none of the other people listed as developers are willing (or able) to change the game either, but, I suppose I can be surprised?

As for why it only goes up to "D", my guess is that it's somehow linked to the "Show Choice" command inherent in the engine. That command usually only displays up to four choices at a time. While it might be possible to have a Show Choice (or Conditional Branch) command within a Show Choice command in the engine proper, content authors are limited by what the code allows.
Oh well. Regardless of engine limitations, I was able to string together a nice series of choices. Once you get everything down, it's actually pretty fun to write for the game.

I guess because it's very easy to learn. I've got a male character and a female character I'm actively doing story for, and two female characters I'm doing nothing with right now. I played this game a lot several years ago, and I guess I got nostalgic.
author=Shinigami
Oh well. Regardless of engine limitations, I was able to string together a nice series of choices. Once you get everything down, it's actually pretty fun to write for the game.

I guess because it's very easy to learn. I've got a male character and a female character I'm actively doing story for, and two female characters I'm doing nothing with right now. I played this game a lot several years ago, and I guess I got nostalgic.

For me part of the fun in writing for this game comes from accepting certain limitations (like the "Only four branches" limit.) and working my way around them (it still is frustrating from time to time ;) )
author=Garage
author=Shinigami
Oh well. Regardless of engine limitations, I was able to string together a nice series of choices. Once you get everything down, it's actually pretty fun to write for the game.

I guess because it's very easy to learn. I've got a male character and a female character I'm actively doing story for, and two female characters I'm doing nothing with right now. I played this game a lot several years ago, and I guess I got nostalgic.
For me part of the fun in writing for this game comes from accepting certain limitations (like the "Only four branches" limit.) and working my way around them (it still is frustrating from time to time ;) )


Yeah, it's pretty annoying because when you use branches everything flows seamlessly. But you have to create a whole new event if you want to get complicated at all. So I gotta do this for every detailed choice:


ID = 0
(What do I do?)
A: Help that Guy
B: Don't help him

BRANCH A
JUMP 2

BRANCH B
JUMP 3


On the bright side, I realized you can use this system to have characters "acknowledge" certain events rather than others depending on the dialogue option you choose. So I could set a specific event like this:


STORY 9
PLACE = ROOF
CONDITION = 7 DONE


So if I had a BRANCH that JUMPED to STORY 7, I could have special dialogue in STORY 9 that acknowledges I took that route rather than, say, STORY 6. It's pretty crazy when you think of all the possibilities.