Skip to content

Tailraise's Parser

Tailraise's parser is still a work in progress and new additions and ways to utilize it may appear over time. This guide may not be feature complete.

The parser that Tailraise uses is a completely custom implementation and has a few ways to check and dynamically replace text in a scene.

If you haven't read through it already, please read through Writing for Tailraise in order to better understand how a lot of the underlying systems work. In particular, you will want to understand Tailraise File Structure.

You will also need to heavily reference the Tailraise Attributes in order to know which attributes you can access and how they are used.


Dynamic Text Replacement

One system that Tailraise uses so your writing can be more dynamic is the Dynamic Text Replacement system. This lets you access the player's attributes or an NPC's attributes (the structure is the same for them both) in order to change text and reference them. This means your scenes will hold up if the NPCs change in some way, such as the NPC is transformed or they are heavily changed in the future for whatever reason.

To use this system, we use a double square bracket system, like so:
[[id.attributeName]]

The player will always be pc as the ID!

Most characters use their name as their ID, such as flint or taw.

Some examples would be:
You blink, your [[pc.eyeColour]] eyes staring into Flint's [[flint.eyeColor]] hues, meeting their gaze.

This becomes:

You blink, your blue eyes staring into Flint's amber hues, meeting their gaze.

Common attributes

More attributes may be added over the course of development based on what writers need to make content more fluid.

For full reference on what information you can pull, please see Attributes to know the full list. Anything that is a bool (true/false) or int (numbers) should not be used, you'll want this to pull strings, which is anything in quotation marks.

A small list of some attributes examples:
[[pc.skinOrFur]] becomes skin, fur, scales, etc.
[[pc.hand]] becomes hand, paw, claw, etc.
[[pc.handType]] becomes hands, paws, claws, etc.
[[pc.eyeColor]] becomes blue, steel-grey, amber, etc.
[[pc.nose]] becomes muzzle or snout based off your species, or uses noseType if unknown.

Description Helpers

Description helpers are very preliminary and might change drastically as more attributes are added or better ways to describe and use these are considered.

If you have feedback/suggestions on improving this system, please let me know.

We also have description helpers, which take from an attribute field, or sometimes several attribute fields, and make a few words to use together in a sentence together.

Some of these are:
[[pc.dickDescription]] becomes small canine, large feline, human, etc.
[[pc.sheathDescription]] becomes plump sheath, modest, short sheath, hefty, prominent sheath, plush sheath, or just sheath based on sheathType.
[[pc.ballsDescription]] becomes tight, modest balls, soft, modest balls, full, swollen balls, heavy, dangling orbs, or heavy balls based on your ballsSize.
[[pc.anusDescription]] becomes soft, puffy ring, tight, little hole, firm, toned entrance, neatly puckered opening, or an indistinct rear based on anusType.


Conditional Text System

This is something very important for Tailraise in order to give players a good experience based on their character and tailor the story to them.

When writing in Tailraise, we have many attributes you can check to dynamically change a scene or insert text.

You can utilize bool attributes (true/false) to show or hide sentences or paragraphs based on player anatomy, if they are in chastity, and so on. This allows you to account for different situations in a scene and cater to different situations without having to restrict the player choice to a very specific option, and decrease the amount of scenes you need to write.

When a conditional is not met, it will not appear to the player at all.

Sometimes, it's easier to lock the choice unless a player meets specific critera.

If you're writing a scene where a player with a vagina is being topped, you don't need to include conditionals for other anatomy if it isn't the main focus. While it's encouraged to include as many options and variations as possible, this significantly increases the time it takes to write new content.

Please refer to the Attributes Page for a list of all bool attributes this system can be used for.

You can also nest these, which is perfect when you want to get oddly specific and write several different variations or more detail.

Examples of using conditional text in a variety of ways

To use conditional text, you write them like so:

<<if_pc_hasCock>>Your cock throbs gently.<</if_pc_hasCock>>

If the player does not have a cock, this line will not appear to them in the scene.

You can also put several conditionals stringed together, and they will each check to see if it's true and display them.

In this example, the player has a cock, no sheath, and a knot:

<<if_pc_hasCock>>Your cock throbs gently.<<if_pc_hasSheath>> A few more inches of your cock spill from your sheath.<</if_pc_hasSheath>><<if_pc_hasKnot>> The base of your cock swells slightly, your knot beginning to form. <</if_pc_hasKnot>><</if_pc_hasCock>>

Only two of the sentences would show because they are true, so this line becomes:

Your cock throbs gently. The base of your cock swells slightly, your knot beginning to form.

Because you have no sheath, the middle line doesn't appear whatsoever.

Make sure any line after a sentence (not on a new line) starts with a space so it spaces properly after other sentences.

You can also make a check to see if a player does NOT have something true using a ! in the start.

<<!if_pc_cockIsLocked>>Your shaft gives a hearty throb as it slowly stiffens.<</if_pc_cockIsLocked>>

This means if the player currently is not wearing a chastity cage, then this line will appear.

Only the starting tag needs a ! in it. Do not use this in the ending tag.

You can also nest these with other conditionals, like:

<<if_pc_hasCock>>
<<!if_pc_cockIsLocked>>Your cock twitches.<</if_pc_cockIsLocked>>
<<if_pc_cockIsLocked>>Your cage twitches.<</if_pc_cockIsLocked>>
<</if_pc_hasCock>>

One thing to keep in mind when using conditionals, is that some players might only have a cock, some might only have a vagina, and some might have both.

This means when you write a scene, you want to make sure the text isn't repeated between all three and can stand out uniquely or combine together and flow well.

Good and bad examples

A bad example, where all lines clash and don't work together, would be like so:

<<if_pc_hasCock>>
<<!if_pc_cockIsLocked>>Your cock throbs hard and begins to spill your seed, spraying a few ropes across the fox's cream-coloured belly fur. <</if_pc_cockIsLocked>>
<<if_pc_cockIsLocked>>You can feel your cage growing increasingly tight and you gasp, managing to spurt a few ropes across the fox's cream-coloured belly fur. <</if_pc_cockIsLocked>>
<</if_pc_hasCock>>

<<if_pc_hasVagina>>You shiver and clench down, feeling your orgasm hit and your cum sprays out across the fox's cream-coloured belly fur.<</if_pc_hasVagina>>
This example normally would be all on one line but for readability in this I've made it several lines.

This becomes repetitive if the player has a cock (locked or not) along with a vagina. On their own, they would be fine, but together they would not.

Your cock throbs hard and begins to spill your seed, spraying a few ropes across the fox's cream-coloured belly fur. You shiver and clench down, feeling your orgasm hit and your cum sprays out across the fox's cream-coloured belly fur.

A good example where all the lines flow and work together is like so:

<<if_pc_hasCock>>
<<!if_pc_cockIsLocked>>Your cock throbs hard and begins to spill your seed, spraying a few ropes across the fox's cream-coloured belly fur. <</if_pc_cockIsLocked>>
<<if_pc_cockIsLocked>>You can feel your cage growing increasingly tight and you gasp, cum spilling from the tip, each throb coaxing out more seed to dribble out uselessly.<</if_pc_cockIsLocked>>
<</if_pc_hasCock>>

<<if_pc_hasVagina>>You shiver in delight and you clench down, both around his cock, and in general. You begin to squirt, marking his fur with your cum and soaking his lap quite a bit.<</if_pc_hasVagina>>
This example normally would be all on one line but for readability in this I've made it several lines.

This becomes:

Your cock throbs hard and begins to spill your seed, spraying a few ropes across the fox's cream-coloured belly fur. You shiver in delight and you clench down, both around his cock, and in general. You begin to squirt, marking his fur with your cum and soaking his lap quite a bit.

or

You can feel your cage growing increasingly tight and you gasp, cum spilling from the tip, each throb coaxing out more seed to dribble out uselessly. You shiver in delight and you clench down, both around his cock, and in general. You begin to squirt, marking his fur with your cum and soaking his lap quite a bit.

Or it might just be one sentence or another, not both.

Using conditional text for NPCs

You may have noticed we are using if_pc_boolName in the above examples.

For NPCs, you simply can swap pc out for the NPC's ID. Most of these should be their first name. As the game gets more complex, a list of NPC IDs may be added to the wiki.

For example, you can use if_taw_isBald instead. I don't think Taw's going to be bald ever, but who knows, maybe. Stranger things have happened in Itum.