Side Stories - Battle Commands

Battle Commands

There's a lot involved in creating a battle... Unfortunately, it's not just 'Slime Girl - Fight!'... When creating a battle, you're responsible for everything. Yeah, it makes sense to be responsible for everything, but you'd think it'd already be there... you know, you're just creating a side story...

That said, there are only two actual battle commands, neither of which have options. Everything is set up in variables that you set in the story.ini file. You cannot have more than one battle in a single story.ini file.

P.S. features added in this patch are  italic and underscoped .

battle
The battle command initiates the battle sequence. At this point, the battle hasn't actually started, but sprites have displayed, critical settings are loaded, etc. After issuing the battle command you can have your monster talk.



Anyway, that's an example... Anything that you write between the battle command and the battle_st command is battle intro speak. You can do whatever you want, you can write hundreds of lines or you can write nothing. Your choice...

battle_st
At line 10, there's battle_st... that's the actual start of the battle. Once you've run that command the battle will start... You're going to need to have all of your settings done before that... The reason you can only have one battle in one story.ini file is because of the settings and how they work. There's no ability to duplicate them successfully within the same story.ini as they're all listed under chapter headers. Since there's no initiation to battle, you can't break it into separate areas. for example - you can't say '1 = "battle,SlimeGirl " and have it pick specific items for a specific battle set...

It's still possible to have multiple battles within a side story, just not within the same story.ini. Using the Restart Command you can include as many story.ini files as you'd like... :)

To do this, you must use sub folders... your folder structure will look a little bit like this...

sidestory\

sidestory\section1\

sidestory\section2\

sidestory\battle1\

sidestory\battle2\

additionally you can use the restart method to extend / organize your story... :)

[victory]
If you win the battle - you will go to this section automatically.

Script it normally like you script any part of your story, maybe use a restart to put yourself back in the main story if you've gone into a new section to do the battle.

[lose]
The game will move to this section if hero is defeated.

battle settings
The battle settings are passed through specific subs / chapters in your side story. This is why you're only able to have one battle per story.ini file. It's unfortunate, 'cause it could have set up with a single option. Anyway, doesn't matter. That's the way it is, so play by the rules, right?

You'll need the sections [data], [sel], [anno], [ondari], [victory] and [lose]. Below is a list of the settings you set in each of these areas as well as what they do.

I will work on this over the next few days, keep an eye open, it'll all be explained in time... :)

It should be noted that I'm adding to this section as I figure it out (and get it written); in some cases there may be things that are explained wrong; for that I apologize and request your knowledge, if you see something that's wrong, let me know and I'll fix it... I intend to have this fully written within a week or so; but never know, so many things in life don't go according to plan, so - well... we'll see...

Beyond that, I will not be posting this in a sensible order, though as I add more I will try to sort it properly... I'm mainly stating that because the next section that I'm adding is dependent on a section I've not yet added... Hence the dilemma, and if its happening now it may happen again...

[data]





 * The pictures are got from the .NSA archive by default. You can use custom images, to do so - use filename with the extension as the tatie1 argument. Example: tatie1="qbeS.png" (Cecil Adventures). Supported extensions are .bmp, .jpg and .png. Warning: if you have used the custom tatie1 image - others 3 must be custom too.




 * You can use custom backgrounds. The method is same as for tatie1.








 * As the example, with keigen=60 your's damage will be 60% of nominal. With earth_keigen=30 enemy's damage will be (100-30%)=70% of nominal. Earth_keigen is working only with Breath of the Earth and Wild Lands.




 * Higher the number the higher your chance to hit.




 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.
 * You can also use custom music. To do this - just use the filename as the argument. Example: music="myfight.ogg". You must use filename with the extension or the game will crash. Supported formats are .mp3, .ogg and .wav.






 * // victory effect for an enemy






 * Warning: Alice command in battle selections is enabled in [ruka] section.




 * Can be a1-a8, tame0 or counter0. Skill_kakuritu must be defined for this skill.

[ruka]

 * This section sets Hero's parameters


 * // Hero's name


 * // Hero's level (1-99).


 * Hero's maximum HPs and SPs are level dependant.


 * // HP penalty
 * // SP penalty


 * You can start battle not with the maximum HP/SP value to simulate wound/ambush.


 * // crosshairs x position.


 * All skills have visual effects. With this variable you can aim this effect to exact point so the effect will hit the monster's sprite.


 * // Alice's Word of Dispel availability.


 * // Hero's skills (0-22).


 * Standard skills tree ("human"):
 * 0 - no skills.
 * 1 - +Demon Decapitation.
 * 2 - +Flail Wildly.
 * 3 - +Thunder Thrust.
 * 4 - +Meditation.
 * 5 - +Demon Skull Beheading.
 * 6 - Death Sword Chaos Star replaces Flail Wildly.
 * 11 - Lightning Sword Flash replaces Thunder Thrust.
 * 12 - Earth Rumbling Decapitation replaces Demon Skull Beheading.
 * 14 - Serene Demon Sword replaces Demon Decapitation.
 * 15 - +Quadruple Giga.
 * 16 - Vaporizing Rebellion Sword replaces Death Sword Chaos Star.
 * 17 - Seal mode. Same as [ruka]/skill=6.
 * 18 - Seal mode + Serene Mind.


 * With [ruka]/skill more than 18 you have another skills tree ("angelic").
 * 19 - You have Flash Kill, Heavenly Demon Revival, Ninefold Rakshasa, Daystar and Meditation. Plus there are Fallen Angel Dance and Serene Mind, but you can remove these two skills if you set correct spirit levels.
 * 20 - Element Spica replaces Fallen Angel Dance.
 * 21 - Quadruple Giga replaces Serene Mind.


 * Edging is always available.


 * // Sylph's level (0-5).
 * // Gnome's level (0-5).
 * // Undine's level (0-5).
 * // Salamander's level (0-5).


 * There are 2 Spirits tree: human and angelic. The second one is used if [ruka]/skill is more than 18. Unfortunatedly spirits are controlled differently in each case.


 * "Human mode"
 * There are 4 valid skill_wind/earth/aqua/fire values.
 * 0 - spirit level 1.
 * 2 - spirit level 2.
 * 3 - spirit level 3.
 * 4 or more - no spirit. Use this if you can't get the wanted spirits configuration with [ruka]/skill alone. As the example, [ruka]/skill=8, [ruka]/skill_wind=4 and [ruka]/skill_earth=3 will made avaiable Gnome level 3 only.


 * You need the certain [ruka]/skill value to use spirits. Sylph - [ruka]/skill must be more than 6, Gnome - more than 7, Undine - more than 9, Salamander - more than 12.
 * If [ruka]/skill is less than 6 and more than 16 - Spirits menu isn't selectable at all.
 * In "human" mode you need [ruka]/skill more then 8 to use Sylph and Gnome simultaneously. Unfortunatedly Wind Wall and Strength of the Earth still cancels all others spirits.


 * "Angelic" mode
 * There are 4 valid skill_wind/skill_aqua values in this mode.
 * 0 - no spirit. You have Fallen Angel Dance (skill_wind=0) and Serene Mind (skill_aqua=0).
 * 2 or 3 - no spirit, no Fallen Angel Dance or Serene Mind.
 * 4 - spirit level 4. You can't summon multiple spirits.
 * 5 - spirit level 5. You can summon multiple spirits.


 * There is no difference between 0, 2 or 3 for skill_earth and skill_fire.
 * You can set each spirit level independently.
 * Warning: you must have [ruka]/skill_earth more than 0 to activate Spirits page in the "angelic" mode.
 * Warning: Sylph and Undine if they are level 4 or 5, will automatically remove Fallen Angel Dance and Serene Mind.


 * Quad Spirits Summon is controlled by [ruka]/skills. If [ruka]/skills more than 21 then you have this skill.

[anno]

 * The [anno] section is for battle descriptions, 'annotations'. There are 2 sections, mogaku (bind) and vic (victory).




 * Used if failed to struggle from bind.




 * Used if successfully struggled from bind.




 * Used if attack fails due to bind.




 * Used if you attack in a special bind (when you must attack to free, not struggle).




 * Used when you win. The second line is optional.




 * Used if a charged skill was guarded.

[onedari]

 * The [onedari] section specifies requestable techniques. It's pretty easy to use, though there are some things that can cause issues for your side story should you do them wrong.


 * The only really important part is that skill_name for your enemy attack is written exactly the same was as the onedari_list index of it. If it's not, the battle sequence will lock the user in the request window if they click the invalid request index, until they select one that is valid. If there aren't any, well that's not going to work at all.


 * You don't need to have all of the attacks requestable, but you can have up ot 16 indexed under the onedari section.




 * Items in the list appear on the request menu, top to bottom, left to right. More pages are added if needed.
 * list formatting is from onedari_list1 to onedari_list16

[sel]

 * The [sel] group is used to list text / script that the monster will say during the battle. It's select dialog for select situations, though I'm not entirely sure that sel stands for select, it does fit fairly well...
 * P.S. All lines are optional. If you define 2 lines (except mogaku_selX) - you will see both. If you define the first line and the second will be undefined - you will see only 1 string. If both lines are undefined - there is no enemy's message at all.




 * Mogaku_selX is what the monster says when you attempt to escape a bind. Assuming you fail. There are 5 possible entries, though you don't need to use them all.
 * One of the lines you enter will be randomly selected, if you use all 5 there will be a 20% chance that a specific line will be used. You can duplicate lines however to set higher chances of it being said, or specific odds if you only want to use 2 but have a higher chance of saying one over the other.




 * Mogaku_dassyutuX are told by monster when Luka breaks free from the bind.




 * mogaku_earth_dassyutu1 and 2 are the same as mogaku_dassyutu1 and 2, except that they're used when you're using Gnome. Usually they'll reference the extra power you're using...


 * These strings are used if you break a special bind.




 * half_sX are said when Luka reaches half health.




 * kiki_sX are said when Luka's health reaches 20%




 * vic_selX are said when monster defeats Hero.




 * kousanX is spoken by monster if Luka surrenders.

[hero_sel]
the [hero_sel] section describes the user / character and what they say during battle. If the hero is Luka (unchanged) you don't need to set this...

The game randomly selects 1 of 3 (or 4) variants.  If custom messages aren't defined - the game uses default values .




 * used with standard attacks, critical attacks, Blade of Still Water, misses, special bind attacks, Confuse attacks.




 * used with struggles (with/without Gnome, failed/successful), standard binds attacks.




 * used when hero is confused and passes turn.




 * used once if hero's HPs are lower than 50%.




 * used once if hero's HPs are lower than 20%.




 * used if hero loses via normal ejaculation




 * used if hero loses via 'strong pleasure'..?




 * used if hero loses via accidental ejaculation... (above 0hp)




 * used if hero is defeated through combat / normal damage... (never used in the actual game, however in side stories you could do this...)




 * used if hero loses in a Trance.




 * used if hero was drained to the level 1.




 * used if hero kills themselves while Confuse.

[hero_skillX]
These sections define Hero's text when one of skills are used. Warning: Currently you must define all 3 variables or there is a chance for no text at all.

These sections are supported in the Rogue's patch only (because in the original MGQ3 you always Luka).
 * [hero_skill1] - Demon Decapitation.
 * [hero_skill2] - Flail Wildly.
 * [hero_skill3] - Thunder Thrust.
 * [hero_skill5] - Demon Skull Beheading.
 * [hero_skill6] - Death Sword Chaos Star.
 * [hero_skill7] - Sylph summon (level 1-3), Quad Spirit Summon.
 * [hero_skill8] - Gnome summon.
 * [hero_skill10] - Undine Summon (level 1-3 and 5).
 * [hero_skill11] - Lightning Sword Flash.
 * [hero_skill12] - Earth Rumbling Decapitation.
 * [hero_skill13] - Serene Demon Sword.
 * [hero_skill14] - Salamander summon.
 * [hero_skill16] - Vaporizing Rebellion Sword.
 * [hero_skill17] - Edging.
 * [hero_skill18] - Serene Mind (and Undine level 4).
 * [hero_skill19] - Flash Kill.
 * [hero_skill20] - Ninefold Rakshasa.
 * [hero_skill21] - Heavenly Demon Revival.
 * [hero_skill22] - Daystar.
 * [hero_skill23] - Fallen Angel Dance (and Sylph level 5).
 * [hero_skill24] - Element Spica.
 * Meditation and Sylph level 4 custom announcements are broken in Rogue's MGQ3 patch. Quad Spirit Summon currently uses [hero_skill7] announcements.


 * // 1st variant
 * // 2nd variant
 * // 3rd variant

Monster Girl Skills
The skills section is very extensive, most of it can be left out and ignored... That said, it's good to know how it works... :) I will continue to explain this section as I get through it myself...

There are 4 types of enemy skills in Spin-off stories. And 4 skill queries.
 * skilla1-skilla8 - these skills are used if Hero isn't binded.
 * skilltame0-skilltame1 - charged attack. Must be guarded to avoid. Skilltame0 is the preparation phase, skilltame1 is the attack itself. Odds are calculated after skilla8. Rogue's patch only.
 * skillcounter0-skillcounter1 - enemy's counter. Skillcounter0 is the counterstance, skillcounter1 is the counter itself. Odds are calculated after skilltame0. Rogue's patch only.

About skill odds.
 * skillb1-skillb4 - these skills are used if Hero is binded.
 * skillc1-skillc4 - the second binding query, used if hero is binded.
 * skilld1-skilld4 - the OHKO query. If these skills are started - they are used constantly and hero just passes turns. Until hero loses. (GC345: broken in the Rogue's patch, I will fix this)
 * 1) The game gets 1 RNG value between 1 and 100.
 * 2) First skill in the query (skilla1, skillb1, skillc1 or skilld1) is selected as the skilltag.
 * 3) If the odds (defined in [skilltag]/skill_kakuritu) are less or same as this RNG value - enemy try to use this first skill.
 * 4) This may fail due to the skill cooldown timer (defined in [skilltag]/skillcount).
 * 5) Odds of the first skill are substracted from the RNG value.
 * 6) The next skill in query is selected. If there is no skills left - go to the 1 and get the new RNG value.
 * 7) Go to the 3.
 * So, skill odds are skill_kakuritu divided to the total_query_kakuritu (sum of odds of all skills in the query).
 * Warning: try to set total_query_kakuritu must be less than 100 or some skills can't be selected.
 * Warning: you must have 1 skill in the query w/o cooldown. Or there can be infinite loop if all skills in query are cooldowned.

[skilla1] - [skilla8]
note: I'm describing skilla1, however skilla2 - skilla8 work exactly the same way. ''note: a little bit of awesomeness... you can apparently use @ and \ (pause and clear text) in these.''




 * The name of the skill
 * Skill name does not appear if left blank.




 * odds of usage.




 * once used, the skill cannot be reused for 3 more turns (or whatever you set)




 * skill_sel1, 2 and 3 are displayed when the skill is used. They are displayed as the monster talk (there will be the monster girl name in the nametag).
 * The game randomly selects which line is used.




 * Additional effect of this skill (status / bindng / etc)
 * 0 - none
 * 1 - HP drain.
 * 2 - abnormal status.
 * 3 - binding method 1.
 * 4 - binding method 2.
 * 5 - lead to OHKO.
 * 6 - level drain.




 * cut scene graphic - displayed when the skill is used




 * cut scene offset X coordinate




 * cut scene offset Y coordinate




 * This is a little confusing... well, not really...
 * If you only use the skill_anno1_1 (and don't list skill_anno1_2 and skill_anno1_3) then it will be selected and printed in conjunction with the first attack of this skill.
 * If you use skill_anno1_1 and skill_anno1_2, but not skill_anno1_3; both skill_anno1_1 and skill_anno1_2 will be displayed. You can use @ to pause mid sentence or between lines. \ also seems to work in this context.
 * If you use all of them (skill_anno1_1, skill_anno1_2, and skill_anno1_3) it will select one of them at random.




 * this references the sound effect played during the attack.
 * if you're using a sound effect included with the game (in the SE folder) just list it by name (ie: ero_slime1)
 * if you're using a custom sound effect, reference by folder and name+extension (ie: sounds\mySound.ogg)
 * compatible audio formats are wav, mp3 and ogg.




 * odds (in percent) that Undine will block this attack




 * odds (in percent) that Sylph will block this attack.




 * text that appears when Sylph blocks this attack (Sylph blocks it with a gust of wind)




 * minimum damage caused by the use of this skill




 * maximum damage caused by the use of this skill
 * pointless notes: a random number is selected between skill_damage1_1 and skill_damage1_2

Next six keys are used only if skill_damage2_1 is defined.




 * this section follows the same rules as skill_anno1_1 through skill_anno1_3 - look at it for questions about it's functionality.
 * Using this in addition to the skill_anno1_x set adds a second attack to the skill. This set is said during part two of set attack.




 * this references the sound effect played during the second stage of the attack.
 * if you're using a sound effect included in the game (SE folder) just list it by name (ie: ero_slime2)
 * if you're using a custom sound effect, reference by folder and name+extension (ie: sounds\mySound2.ogg)
 * compatible audio formats are wav, mp3 and ogg.




 * Minimum amount of damage caused by the second stage of this attack




 * Maximum amount of damage caused by the second stage of this attack

Similar to above six keys, next six are used only if skill_damage3_1 is defined.




 * skill_anno3_1 through skill_anno3_3 work exactly the same way as skill_anno1_1 through skill_anno1_3, look at that section for the description of how it works.
 * Using this set will add a third attack to this skill, meaning 3 sets of damage and a potentially much more elaborate attack method.
 * notes: I've got no idea what happens when you use this group without using the second group...




 * this references the sound effect played during the third stage of the attack.
 * if you're using a sound effect included in the game (SE folder) just list it by name (ie: ero_slime3)
 * If you're using a custom sound effect, reference by folder and name+extension (ie: sounds\mySound3.ogg)
 * compatible audio formats are wav, mp3, and ogg




 * minimum amount of damage caused by the third stage of this attack.




 * maximum amount of damage caused by the third stage of this attack.




 * type of status applied
 * 1 = ecstatic
 * 2 = paralysis
 * 4 = surrender
 * 5 = temptation
 * 7 = confusion
 * requires skill_kouka = "2"




 * status change persists (minimum)
 * requires skill_kouka = "2"




 * status change persists (maximum)
 * requires skill_kouka = "2"




 * requires that it's a binding technique (skill_kouka = "3", "4" or "5")




 * requires that it's a binding technique


 * // type of the bind
 * 0 - standard bind. Hero can't attack. Must Struggle to free from.
 * 1 - charged bind. You need 1 attack to free. Plus you can free with Struggle.
 * 2 - special bind. You can't free with Struggle, only with Attack.
 * requires that it's a binding technique.
 * Added by Rogue, original MGQ always uses 0.




 * how much you need to struggle to break from the bind
 * requires that the bind can be broken with Struggle (skill_kousoku_type = "0" or "1")




 * how much you need to struggle using Gnome to break from the bind
 * requires that the bing can be broken with Struggle




 * how much damage you need to free from a special bind.
 * requires special bind (skill_kousoku_type = "2")
 * Rogue's patch only.




 * again, these lines are displayed from the name of the monster girl.
 * in the japan MGQ3 these lines are displayed only with a status or binding attacks. Rogue's patch have broken this (these lines are displayed always).
 * If you only use selx1, this line will be displayed after the attack.
 * if you use selx1 and selx2, selx1 will be displayed, selx2 will appear on the next line.
 * if all three are used a random line is displayed.




 * skill_onedari1 and skill_onedari2 are spoken when the Hero requests this skill.


 * cut scene graphic 2 - when Luka ejaculates by this technique




 * announcements after losing to this attack




 * enemy talk after losing to this attack




 * This is the image file used for the orgasm / bukkake scene.




 * 0 - Overlays above the existing graphic.
 * 1 - Replaces the existing graphic with a completely new one.




 * Any skill can trigger an extended rape scene. To do so - just set this key. The game will goto to the defined section in story.ini, where you can program the scene. To end this and return to the battle script you must use overkill_end command. After this the game will go automatically to the [lose] section.

[skillb1] - [skillb4]
Skillb1-skillb4 are almost the same as skilla1-skilla8 and are supporting all of above keys. The only difference is 1 key:


 * // starting annotation
 * this string is printed first at the skill start.

[skillc1] - [skillc4]
skillc1 to skillc4 are written the same way as skillb1-skillb4. The only difference between the two is the skillc1-c4 use the second bind query.

skillb1 - skillb4 documents the only real difference between the two from a scripting point of view, please refer to it.

[skilld1] - [skilld4]
These skils are finishers. After 1 of these skills was used - you can't command anything to hero until hero loses.
 * so - these skills don't have cooldown timers and can't be status/binding skills.
 * these keys from the [skillaX] aren't used:
 * skill_count
 * skill_status
 * skill_turn1
 * skill_turn2
 * tatie4
 * skill_kousoku_anno
 * skill_kousoku_type
 * skill_mogaku
 * skill_mogaku_earth
 * skill_mogaku_hp
 * skill_selx1-skill_selx3
 * all others keys are used similar to [skillaX].
 * you still can use water and wind evades, but the final result still be same - hero loses.

[skilltame0]
This skill is the charged attack preparation.
 * this skill has no damage, status, bind etc. Only announcements.
 * These keys are actual for this skill:
 * skill_count
 * skill_kakuritu
 * skill_sel1 - skill_sel3
 * skill_name
 * skill_ct1
 * skill_ctx, skill_cty
 * skill_se1
 * skill_anno1 - skill_anno3
 * skill_selx1 - skill_selx3
 * All other keys are ignored.

[skilltame1]
This section defines the charged attack itself.
 * This attack is same as [skillaX] with 3 more keys:
 * skill_selmiss1
 * skill_selmiss2
 * skill_selmiss3
 * These keys are enemy talk variants after the skill is dodged.

[skillcounter0]
This skill is the enemy counterstance.
 * These keys are similar to skillaX:
 * skill_count
 * skill_kakuritu
 * skill_sel1 - skill_sel3
 * skill_name
 * skill_ct1
 * skill_ctx
 * skill_cty
 * skill_se1
 * skill_anno1_1 - skill_anno1_3
 * skill_selx1 - skill_selx3


 * These keys are specific for this skill only:


 * Counterstance duration.




 * Counterstance sprite.




 * Enemy phrases in the counterstance.




 * Announcements in the counterstance




 * Enemy phrases after the counter is ended.




 * Announcements after the counter is ended.

[skillcounter1]
The counter attack. Keys are exactly the same as [skillaX].