1. Together in Battle
  2. News

Together in Battle News

Version 0.9.30: custom character dialogue, relationships screen, and more!

Greetings, tactics fans! I'm dropping this month's update super early because--on the day I'd usually push the monthly update--I will instead be moving (and probably not have internet, or my computer set up, or even a bed put together). And I've got to get ready for that move.

This update contains a new event, a new character class, a new skill, UI improvements, and so on--but there are a couple of marquee features in particular, those being customizable character dialogue and a proper relationships screen! Let's start with that first one:

[h3]You can now customize dialogue for your custom characters![/h3]

You heard that right: you can now write out what your custom characters will say under most common circumstances during the game!

  • when creating a custom character on the title screen, there is now a separate page you can access full of buttons to write or edit the following types of customized lines:

    • greeting lines, spoken when this character first introduces themselves to an ally (up to 3);
    • greeting response lines, spoken in response to another character's greeting lines (up to 3);
    • deployment lines, spoken when a battle begins with this character on the field (up to 3);
    • attack lines, spoken sometimes when about to attack an enemy (up to 3);
    • victory lines, spoken sometimes when defeating an enemy (up to 3);
    • heal lines, spoken sometimes when about to heal an ally (up to 3);
    • build lines, spoken sometimes when about to create an object or place a trap (up to 3);
    • friendly fire reaction lines, spoken when hit by an ally's attack (up to 2);
    • ally defeat reaction lines, spoken when someone this character is close to falls in battle (up to 2);
    • a defeat monologue, spoken falling in battle themselves; and
    • a secret--a line spoken in confidence to a good friend, only once per playthrough.
  • the dialogue editing window includes a facial expression selector so you can customize the facial expression attached to each individual line.
  • this feature has full gamepad support, so you can dream up and edit custom character dialogue even while playing on Steamdeck or using a USB gamepad!

Pretty cool, huh? Now let's move on to that second marquee feature I mentioned before: the character relationships screen!

[h3]Your characters now have a screen laying out their friendships and feuds with other characters![/h3]

When in the character screen for folks on your team, you may notice something different: a big, shiny new relationships button. Click it, and the game will open up a new sub-window listing every other unique allied character they have interacted with!



These other characters will be listed roughly in descending order of how well your character knows them (and secondarily, how much they like them), with a short label describing how your character thinks of them.

And before anyone asks: no, this isn't like social ranks in Fire Emblem. Here, these values can (and often will) be asymmetrical! Below, you can see that at this moment in time, Dipali views Vijay as a friend even though he only sees her as an acquaintance:



With the granular way that Together in Battle models social interactions, this screen makes it much easier to keep track of relationships between your characters. This can help you decide who to pick for certain events--and to predict who could be rendered unhappy by certain personnel decisions you might make...

[h3]On top of this, we have a selection of miscellaneous improvements and bits of new content![/h3]

There's a brand new engineer promotion path, a new random event, more polish in Psy Clash, improved threat-range checking in battle, and more--here's the full list:
  • when checking threat ranges for enemies, the game now ignores other enemies of the same army who are temporarily blocking their movement, allowing you to see what their full threat range will be once they're no longer hemmed in. This avoids situations where the game displays a misleadingly small threat range simply because other enemies are temporarily in the way.



  • new random event: Shipping! Two characters bond over a fan theory one of them overheard.
  • new promoted class for engineers: Machinist! Machinists learn Tune Up, a skill they can use to support golem allies.
  • skills that only affect targets with specific attributes are now supported.
  • new skill: Tune Up. Heals the target golem and grants it +25% Strength for one turn. Only affects golems.
  • AI optimization: the game now checks boolean values instead of strings for a couple more variables when calculating moveable spaces, speeding up processing times.
  • the game now supports custom relationship labels (i.e. those that can't be determined purely from familiarity, friendship, and romance values) for unique named characters vis-a-vis other unique named characters.
  • when a unique character is generated from another character's NPCs and they happen to be relatives, the game now automatically updates both characters with appropriate relationship labels (e.g. Brother, Sister, Father, Mother, etc.)
  • the wedding proposal event now updates the characters with a "Betrothed" relationship label if accepted.
  • simplified the game's collision damage formula and exposed it in a new early-game tutorial. Before, base collision damage was the skill's inherent damage plus the attacker's base Strength or base Psy, to a maximum of 33% of the target's max health and with a minimum damage of 6. This, then, would be multiplied by the number of spaces the unit was prevented from moving by the collision. Now, collision damage is much more straightforward: the base damage is simply the attacker's base Strength or base Psy (with a minimum of 6); this damage is now increased by 50% for each space of movement prevented beyond the first.

    For example: a stone golem with base Strength of 10 will now deal 10 damage using Shove on someone against the edge of the map; 15 using Toss; 20 using Throw; or 25 using Hurl. (Previously, those damage amounts could have been capped by the target's maximum health, and would have increased much more dramatically with each extra space of knockback. Against a target with 24 maximum health, for instance, Shove would have had its damage capped at 8, Toss would have done 16, Throw would have done 24, and Hurl would have done 32--but against a target with 30 maximum health, they would have done 10, 20, 30, and 40 damage respectively.)

    I'm especially curious to know how folks like this particular change, so please do leave me your thoughts once you've had a chance to try it out!
  • reorganized the character screen a bit to make better use of space. Equipment masteries now appear right above the inventory, where they logically ought to; skills have been moved up into the very top-right, and physical traits now sit below skills.
  • when playing with gamepad, if you select a healing skill, the game now goes out of its way to position the selector on a tile containing an ally who's actually been damaged.
  • when playing with gamepad, if the game automatically selects a skill to target an enemy multiple spaces away, the game now auto-adjusts the camera to try to keep both the target and the selected character visible onscreen.
  • finished creating the Dese Palace tile (and associated fill tile) and getting them working in-engine as a prerequisite for designing the final battles.
  • there is now a chance for character friendships to increase when they practice together.
  • characters can now only be the subject of an Ally Gift event if they've spoken about their miscellaneous like at some point in the past.
  • wrote a new ally-defeat response line specifically for Hot-tempered characters.
  • increased the size of the particle effects in Psy Clash to make hits feel more satisfying.
  • minions in Psy Clash now have distinct sound effects for when their attacks land (i.e. they no longer all sound like they're attacking with swords).
  • minions in Psy Clash no longer produce an attack sound effect during combat exchanges if they have a power of 0.
  • in Psy Clash, if the AI player plays the same card multiple times in a row, the messages now fade out in between each to make it clearer that there are multiple instances of the card being played.

[h3]Next, we have bug fixes:[/h3]

  • fixed: after switching the character screen to an enthralled enemy using the mouse wheel, subsequent switching via the mousewheel would show other units in the enthralled character's normal army instead of the army which currently had them enthralled.
  • fixed: when playing with gamepad, the behavior to automatically select a skill if an enemy was in skill range after moving a character could sometimes fail if multiple enemies were within the skill's range in theory but not all of them were actually targetable in practice.
  • fixed: when playing with gamepad, in some scenarios, the game could throw a null error when searching for targets in range after moving a character.
  • fixed: when playing with gamepad, there was an error in the scripting for the tutorial dialogue tree teaching auto-move-and-attack preventing the player from exiting the dialogue tree.
  • fixed: the code for pulling a character's nickname during dialogue inappropriately reversed the roles of the two speakers.
  • fixed: adding a character nickname during dialogue would not update the character's nickname for purposes of the remainder of that same dialogue tree.
  • fixed: in Psy Clash, if the AI opponent was left with only Focus in their deck, they could end up in an infinite loop of just playing Focus over and over again. The game now counts how many times an AI player has played the same card in any given turn and will rule it out as a possibility after playing it 5 times.
  • fixed: due to a change in the Psy Clash code, it had become possible to fill up your lanes with minions, then repeatedly click a minion card in your hand possessing an "on played" effect (such as a gasul) to receive the effect over and over without ever actually clicking a minion to replace.
  • fixed: in Psy Clash, the Gasul sprite would not show up when the AI played the Gasul card.
  • fixed: in Psy Clash, a discrepancy between two different algorithms the AI used to evaluate moves could, in rare circumstances, cause the AI to get caught in an endless loop of thinking it had a valid move with a card and then rejecting that move, ad infinitum.
  • fixed: when in deployment and playing with gamepad, it was not possible to open a character's details screen with the Y button.
  • fixed: the gamepad cursor was not aligned correctly to the physical trait buttons in the character details screen.
  • fixed: the gamepad cursor was not aligned correctly to the item buttons in the character details screen.
  • fixed: when selecting a character for a one-on-one in camp, the game would show a message about right-clicking characters to see their stats in detail even if the player was playing with a gamepad.
  • fixed a small timing issue where the victory screen waited too long to show the aura won.
  • fixed: custom portrait clothes assigned in the custom character editor would not reappear upon reloading the character in the editor later.
  • fixed: the custom character creator was overriding a character's chosen default facial expression upon saving the character.
  • fixed: if, upon opening the game, the very first thing the player did was go to edit an existing custom character rather than creating a new one (or playing a campaign), the game would fail to load the necessary data from XML and would freeze.
  • fixed: a few of the buttons in the custom character creator were missing sound effects for being clicked.
  • fixed a typo in one of the variants for one of the response lines for pessimistic characters upon being told sad information about an ally's background.


[h3]And finally, we have new goodies for people making their own custom campaigns:[/h3]
  • new sound effects: Hammering Fast and Ratcheting.
  • new skill button graphic: Tune Up.
  • new script action: SetRelationshipLabel. Sets a custom relationship label between two unique characters. Three parameters: character name, second character name, and the relationship label. Optional fourth parameter: is mutual. If true, the label will be applied to both characters; if false, only to the first. (By default, relationship labels are mutual.)
  • new script action: RemoveRelationshipLabel. Removes the custom relationship label from a unique character. Two parameters: character name and second character name. Optionally, the third parameter can be a relationship label--if the first character's relationship label for the second character doesn't match this parameter, then nothing happens.
  • new attribute type supported for the UnitsToList script action: Spoke. Narrows down by characters who've spoken a particular type of generated dialogue in the past (Greeting, Like, Hobby, Background Where, Background What, Background Family, Nickname, Secret, etc.)
  • updated in-game documentation to discuss the effect of character nicknames on special characters like -NAME- and -CHAR2-.
  • the engine now has the groundwork laid to support Fire Emblem-style movement rules (i.e. where characters in the same army can walk through one another); expect the option to turn this on in a future update!

And that's it for January!

[h3]What's next![/h3]

So, where does this leave us? I've now plucked all of the low-hanging-fruit from my wishlist and laid the groundwork for designing the final battle and the scenes that lead up to it; next up will be actually writing those scenes, designing that battle, and writing the ending, polishing and fixing any remaining bugs as I go.

I also have some m...muh...ahem. Excuse me for a moment while I gag. 😫 I have some...marketing...to do. (You know: capturing screenshots, editing video footage, posting to social media, sending emails--all of the relentlessly dull, soul-crushing tasks necessary to ensure that people actually know this game exists.)

We're getting close, folks! I'll be announcing Together in Battle's actual, version 1.0 release date soon; keep an eye open for it! πŸ˜‰


Tactically yours,

Craig

Version 0.9.10: battle MVPs, Steamdeck improvements, bug fixes and more!

Happy holidays, tactics fans! As I predicted last month, this month was extremely busy for me with real-life stuff--and I wanted to get this latest patch out before the year-end holidays hit so that players trying out the game for the first time could enjoy it in the most stable, complete state possible.

As a result of all that, this update was pushed out on a tighter time frame than usual; as such, it is on the smaller side. Still, there's some good stuff in here--follow along as I regale you with all the cool new thingies!

First up, we've got a couple of big items that I've had on my personal wishlist for the game for some time now...

[h3]...combat performance tracking and post-fight MVP awards![/h3]



I know this goes against my past declaration that I'd be focusing on content and polish rather than new features, but I realized I could fit this in with only a day or so of work, and it really adds an extra jolt of "heck yeah" to the victory screen while simultaneously providing another vector for connecting with your characters. Seemed like a bit of a no-brainer! So here are the details:

  • the game now tracks battle performance stats on a per-character basis, both for the current battle and cumulatively across the whole game. The new battle performance stats tracked include:

    • total damage dealt,
    • total enemies defeated,
    • total enemies debuffed,
    • total collision damage dealt to enemies,
    • total falling damage dealt to enemies,
    • total healing provided,
    • total energy provided,
    • total allies buffed,
    • total damage taken,
    • total damage dodged,
    • total damage blocked,
    • total sacks grabbed,
    • total traps placed,
    • total objects created,
    • total characters summoned,
    • total number of times they've held spaces,
    • total number of times deployed, and
    • total number of times defeated.
  • the game now hands out little "MVP" awards on the victory screen at the end of each battle based on how much (and in what way) the characters left on your team contributed! Up to 8 different awards can be handed out at the end of each battle, with the categories depending in part on what your characters did during the fight.

Now, you may be wondering: can these new features later be harnessed as grist for post-fight character interactions and random events? You bet! And will I eventually do that? Mayyyybe... πŸ˜‰

[h3]I also spent time this month focused on adding a bunch of fixes and improvements for folks playing on Steamdeck or with a gamepad![/h3]

  • when using gamepad controls, the gamepad cursor now properly disappears from the screen when transitioning to a new scene.
  • when using gamepad controls, after moving a character with a knockback skill, if there is not a direct-damage skill available, the game now auto-selects the knockback skill for use on an enemy who can currently be damaged by being knocked into an object or character, off of elevation, or into an environmental hazard. (This makes it much easier and more enjoyable to play with kineticists when playing with gamepad controls.)
  • fixed: when using gamepad controls, after moving a character with a healing skill, the game would not auto-select a Shield skill for use on a damaged ally in range unless the ally belonged to a different army.
  • fixed: when playing on Steamdeck, the gamepad cursor was not aligned quite right on item options buttons (Use, Give, Drop, Cancel, etc.)
  • fixed: when playing on Steamdeck, the gamepad cursor was not aligned correctly to the item buttons in the character inventory inspection window in the reserve supplies screen.
  • fixed: when playing on Steamdeck, the gamepad cursor was not aligned correctly for the day cells in the calendar screen.
  • fixed: when using gamepad controls, after exiting the game settings menu in a cutscene, the game would inappropriately return gamepad focus to the underlying scene rather than the main options menu (which remained open onscreen).
  • fixed: when using gamepad controls, the B button would behave like the A button during dialogue even in contexts where this made no sense.
  • fixed: when using gamepad controls and selecting from a list of units in dialogue, if the dialogue tree returned to the list of units, the tooltip for the last selected character would still be showing onscreen.
  • fixed: when hiring out characters, the game would show a message about right-clicking characters to see their stats in detail even if the player was playing with a gamepad.
  • fixed: the Together in Battle demo was not defaulting to gamepad controls on Steamdeck as intended.


[h3]Next up, we have a bunch of other miscellaneous improvements![/h3]

My favorite of this bunch are the new random physical traits characters can get, wherein characters have special reactions to certain types of food. (I've had allergies on my list of traits to add to this game since all the way back in 2011, when I first created the design document for this game!)

  • new physical trait characters can be generated with: Fruit Allergy. Gains the Sick status effect upon eating mangos or apples.
  • new physical trait characters can be generated with: Sugar Fiend. Gains the Move Bonus status effect upon eating Cake, Cookies, or Pie.
  • during the blacksmith rescue mission, there is now alternative dialogue for Dhatuu Dil if you speak to him with a golem or a spirit.
  • you can now back out of the recruiter without losing a time point if you click it by mistake.
  • reworked the pixel art a bit for puddles: reduced their size so they don't visibly hang over the edge of elevated terrain tiles, and improved the animation for them. (I have an artist working to make them look even nicer, but we will have to wait for that to be completed.)
  • the game now auto-updates glow values for spirits from older versions of the game.
  • added scripting to mark objectives reached for characters who take down an enemy idol or inspirational leader in the arena, or who recruit their sibling there.
  • added scripting to mark objectives reached for characters who achieve certain objectives in the monkey league qualifier, battle in the dissidents' den, blacksmith rescue fight, golem attack, revenge quest battle, and battle in the northern stepwell.


[h3]And as usual, we have miscellaneous bug fixes aplenty (special thanks to this month's top bug hunter, Tacitus)![/h3]

Oh and by the way, before we get to those bugs: some of you might recognize Tacitus as the creator of the extremely cool custom campaign Fate of the Wayward. If you want a new adventure to play while waiting for Together in Battle to be completed, why not go download Fate of the Wayward from the New Game menu? Trust me, it's worth your time!

All right, now on to the bug fixes:

  • fixed: when generating a spriggat without a proper spriggat class name, the game could throw a null error upon attempting to update the spriggat's portrait palette.
  • fixed: the logic used by the danger displayer had ceased counting knockback skills as attack skills, causing the displayed move-and-attack range of enemy kineticists to appear misleadingly small.
  • fixed: because the Kill-All Victory condition was turned off for army 0 in Attack the Idol matches, destroying the idol would not actually cause the player to win after it resulted in army 1 being wiped out.
  • fixed: if, during a Psy Clash match, you had multiple minions with free-targeting (e.g. bowmen or crossbowmen) in play and the opponent ran out of minions for you to target in the middle of free-targeting, the game would softlock.
  • fixed: if, during a Psy Clash match, the AI opponent had multiple minions with free-targeting (e.g. bowmen or crossbowmen) in play and you ran out of minions for them to target in the middle of free-targeting, the game would freeze.
  • fixed: during a Psy Clash match, if the enemy AI chose to play a card that both affects one or more minions and a player but minions of the appropriate type did not exist in play, the game would recognize this as a valid move but would then get caught in a loop upon trying (and failing) to find a minion to target.
  • fixed: during a Psy Clash match, you could click a card in your hand during the opponent's turn and the card would be played (and would behave as if the opponent had played it).
  • fixed: receiving a Psy Clash deck from Rohit during the Festival of the Ascendant Lights would cause the game to overwrite whatever assorted Psy Clash cards the player may have accumulated up to that point.
  • fixed: the icons for food and aura would sometimes fail to appear in the info bar, particularly when playing on Steamdeck.
  • fixed: in proc gen battles where the player's characters auto-deploy and the final character in the roster had a wound level greater than 1, the game could throw an out-of-range error when queuing up the characters to spawn.
  • fixed: during the free-roaming bits of cavern exploration, the introductory text had ceased to coexist peacefully with the free-roaming tutorial text.
  • fixed: defeating all enemies on the first floor of a cavern would send the player back to camp instead of down to the second floor.
  • fixed: the file containing the data for the Poison Needles skill had gone missing from the game.
  • fixed: during recruitment, the little portrait frame that normally appears on the current selected character had stopped showing up.
  • fixed: when reporting to Manbir Raksha following the attack on the royal guard informant, if the informant was not saved, certain dialogue replies led to the wrong part of the dialogue tree, causing the conversation to proceed as though the player was speaking to Prince Ajit.
  • fixed: during the interrogation with Malatose about Dayaan, it was possible to navigate the dialogue tree's branches in such an order that you could end up in a spot with no available replies, forcing the scene to end prematurely.
  • fixed: in the blacksmith, attempting to exit when choosing a weapon for engraving would still direct the player to the dialogue branch where they pick a name to engrave rather than canceling out. (Note for modders: this now requires dialogue trees ensconcing the blacksmith to have a branch for canceling the engraving process named "Cancel Naming"; otherwise, exiting out will return the player to branch 0 of the dialogue.)
  • fixed: typing words with 'L' in them in the dialogue input field would cause the game to inadvertently save log files.
  • fixed: during the Stat Advice camp event, if one of the stat possibilities was Counter Limit, the game would fail to display the correct icon alongside it.
  • fixed: one of the greeting line variants for Imaginative characters was missing a period.
  • fixed in version 0.9.10a: the confirmation button for leaving the Shop screen had become unlinked from its function, trapping players in the shop screen.
  • fixed in version 0.9.10b: non-skill red action tiles in combat (e.g. for Talk, Give, and so on) had broken due to a different fix from last month.
  • fixed in version 0.9.10b: item sacks and bridges had become impassable due to an optimization in the game's pathing logic combined with the game failing to save a boolean "isCharacter" flag correctly.
  • fixed in version 0.9.10c: traps had broken again due to me once again accidentally overwriting the file that contains their scripts. (Sigh.)


[h3]And finally, what would an update be without some new improvements for folks making their own custom campaigns in the campaign creation suite?[/h3]

  • new script action: ReplaceInList. Systematically goes through a custom list and, upon finding a particular entry value, replaces it with a different value. Three parameters: List Name, Entry Value, and New Value. Optional fourth parameter: Allow "Contains" Matches. (If this last parameter is set to true, the game will count any value containing the Entry Value as a match.)
  • new script action: MarkObjectivesReached. Sets a special internal stat for the named character of the type "Objectives Reached," stored alongside other battle stats and used in the algorithm for determining MVPs at the end of a victorious fight. Two parameters: Character Name and, optionally, Amount.
  • new optional parameter for DamageUnit, DamageUnitAtCoords, DamageCharAtCoords: Attacker ID. Allows you to supply the unique ID of a unit and have the game treat that unit as the one producing the damage.
  • new unit tag supported: ModItemSFX. The tagged character gets a specific status effect whenever they use an item of the named type.
  • fixed: shops in the cutscene editor had broken, throwing a null error when displayed.


That's all for this month, folks! Enjoy the holidays to come and I'll have more for you soon! Just FYI, I'm going to be moving in January, so I'm not sure how much I'll be able to squeeze in, but my plan is to focus less on QOL stuff and more on creating endgame content.

We'll see what I can make happen. Until next time...


Tactically yours,

Craig

Version 0.9.00: new investigation, battle, events, match types, and upgrades!

Greetings, tactics fans! I'm pleased to report that I showed Together in Battle at the first-ever Chicago Indie Game Showcase on November 2nd, where it was well-received by SRPG enthusiasts. Apart from that, I finally got to have a relatively quiet month this month, so I took advantage of the lull and pushed hard to get a lot of things done in as short a time span as possible.

My main focus this month was on fleshing out the endgame experience, adding new content and wrinkles to keep things interesting. Let's get right into what's new!

[h3]First, there's new events and late-game character advancement content![/h3]

Version 0.7.90: new balancing, new investigation, new battle, new ending!

Greetings, tactics fans! As October draws to a close, I've updated Together in Battle with another month's worth of progress. There are new investigation scenes, a new plot battle, a new ending, balance improvements, AI improvements, bug fixes, and more. There's a fair bit to cover, so let's get into all the changes!

[h3]First up, here's the new content:[/h3]

  • created a new investigation scene where you must scour an empty palace under time pressure! Where will you search, and in what order? Your choices affect the outcome!
  • created a new plot battle where the outcome affects the scenes to follow!
  • created a new, branching cutscene following the plot battle!
  • created a new, second "bad" ending to the game!
  • created two new conspirator enemy types: Silent Serpent and Silent Rider.
  • created a new scene that occurs if you visit the recruiter after you get locked in to the game's first bad ending.
  • new achievement: A darker fate.


[h3]Next, we've got balance changes to keep runs from capsizing due to excessively bad luck:[/h3]

  • during caravan battles, the game now dynamically adjusts the number of AI-controlled ally guards on the battlefield based on how many characters you're fielding, making it much less risky to send only two characters.
  • made some tweaks to the "numerous" condition in caravan guard battles to make it less likely to generate scenarios where the player is quickly overwhelmed by enemies.
  • when "thieves" are chosen as the condition in arena battles, the enemy team now ignores chests. (This keeps arena opponents from busting open chests and thieves immediately swooping in, grabbing the loot, and vanishing before the player can react.)
  • during buyout offer events, Ishita Svaamee will now specifically offer to buy out either your highest-salary or your lowest-level character(s) rather than just choosing a character purely at random.
  • scheduled league matches now award extra money to the player relative to pickup matches, provided the player wins. The further up the ranks the player rises in a given league, the more the scheduled-match prize for victory increases (+45 aura per scheduled match won in Monkey League; +60 aura per scheduled match won in Gharial League; +75 aura per scheduled match won in Snow Leopard League; and +100 aura per scheduled match won in Tiger League.) This is intended to provide a cushion to help players afford a replacement if they should lose a character during the course of any given league.
  • the game now tracks if you lost the last qualifier match and--if it finds that you did--it won't grant the victory bonus for repeating scheduled league matches prior to re-attempting the qualifier. (This is to avoid a situation where losing qualifier matches becomes economically optimal.)
  • late-night battle events (currently, Thief Attack and Thief Attack 2) will no longer occur if both (1) a battle event already occurred earlier in the evening, and (2) a scheduled league match either occurred earlier in the day or will occur the following day. (Three forced fights in a row without time to recover is simply too much to put on the player.)
  • when initiating the first late-night thief attack event, the game now checks to make sure you have at least 6 characters available; if you don't, it aborts the event.
  • when initiating the second late-night thief attack event, the game now checks to make sure you have at least 8 characters available; if you don't, it aborts the event.
  • increased the minimum available characters necessary for the smuggler's den event to occur from 5 to 6.
  • when counting the characters available for the smuggler's den or thief attack events, the game now only counts characters who have at least 50% of their health and 25% of their energy. (Previously, if a character could be fielded at all, then they would be counted toward the minimum number of characters.)


[h3]We also have a variety of miscellaneous improvements, including several to the game's AI:[/h3]

  • AI improvement: when an AI-controlled army is tasked with protecting a unit as part of their victory/loss conditions, the AI will now prefer moves which bring its characters closer to the unit they must protect (with the strength of the effect scaling off the defense weight for that army's AI profile). Among other things, this means caravan guards are now more likely to actually stick around the caravan wagons they're supposed to defend.
  • AI improvement: the AI now scores moves which bring characters closer to their allies somewhat more highly.
  • AI improvement: character sensitivity to the danger a space represents now scales down proportionally based on much health the character has left, with full-health characters factoring it in at roughly 1/10th its normal strength. (This makes enemies at or near full health far less likely to simply run away on their turn.)
  • when in town, the game now warns you if you try to visit the recruiter with your roster already full (18 characters).
  • added a dialogue choice during the interrogation of Prince Ajit wherein the player considers attempting a scan.
  • cleaned up the dialogue in the Finding Malatose cutscene a bit.
  • added multiple new family background dialogue variants for characters who (a) were raised by both a mother and father, and (b) feel sad about one parent and anger toward the other.
  • added a loading screen tooltip about the effect (and value) of surrendering arena fights.
  • updated the ending credits.


[h3]And of course, we have bug fixes! (Shout-out to Titanium Legman and Koankitsune, our top bug hunters for this month!)[/h3]

  • fixed: if a character had less than 40% health left, they would always rest instead of performing a forced camp activity (including activities they were ordered to perform via a one-on-one).
  • fixed: when surrendering a match while playing with a gamepad, the game would inappropriately switch gamepad focus from the defeat window back to the battlefield, effectively freezing the game.
  • fixed: when surrendering a match while still in deployment, the deployment window would remain onscreen and obscure the defeat screen, as well as any OnVictory dialogue triggered by the surrender.
  • fixed: when surrendering a regular arena match prior to reaching Monkey league, the game would inappropriately show a little dialogue box that read "Defeated..." prior to showing the actual defeat screen.
  • fixed: the game could freeze when checking for terrain properties after removing a character from the battlefield as part of OnReachingArea dialogue.
  • fixed: thieves in the arena had such an overwhelming preference for attacking chests that they would always choose to bust open another chest over simply grabbing loot from a chest that had already dropped.
  • fixed: custom, player-created spirits and golems possessed an ongoing salary after being recruited.
  • fixed: the game could trigger a heatwave during the day (or, conversely, could untrigger an existing heatwave) if the player visited someplace and then left without using up a time point.
  • fixed: preemptive strikes were not working properly against Charge and other move-to-target attacks.
  • fixed: text overlay messages about preemptive strikes were being cut off early by text overlay messages with the name of the preempting attack.
  • fixed: if the team leader in the Monkey League qualifier was generated with Stimulate or another buffing ability, they could prematurely move toward the center of the map to buff an ally, immediately making the battle far harder than intended.
  • fixed: attacking a target tagged with Pursue would cause the game to remove Passive tags from the target as intended, but not Immobile or Inactive tags; instead, the game would remove Immobile and Inactive tags from the attacker.
  • fixed: characters created via script actions at the start of a battle could spawn on top of deployment tiles, blocking characters from being deployed there.
  • fixed a scripting error in the revenge quest battle impacting the team morale penalty for attacking a civilian bystander.
  • fixed a graphical blemish in the generic male and female swordsman portraits.
  • fixed: the bodies on generic portraits were getting base scale variations not matched by the hair layer.
  • fixed: changing a unit's army color mid-battle would cause their hair and skin palette to reset to default values rather than their actual skin and hair color.
  • fixed: hair and skin palettes for characters from older saves were not getting set based on their portrait values as intended.
  • fixed: opening and closing the battle menu during deployment would cause the game to inappropriately show the actions bar.
  • fixed: when switching between multiple successive dialogue branches where the speaker is left blank, the game would begin to inappropriately play babble speech sound effects alongside the dialogue text.
  • fixed: the game would detect displayable dialogue (and therefore show the dialogue window) despite detecting an immediate conversation-ender in branch 0 even if there was no speaker and no dialogue text, just so long as there existed a single reply with any characters in it at all.
  • fixed: the game would not copy knockback timing values when cloning AttackInfo data.
  • fixed: localized text for participation aura awarded after losing an arena match had a spacing error.
  • fixed a typo in the Trailing Malatose cutscene narration.


[h3]And finally, we have new goodies for people making their own custom campaigns in the campaign creator:[/h3]

  • created a turquoise variant of the in-game rug object.
  • new sound effect added: Drawer.
  • new sound effect added: Prison Door Close.
  • new script action: ScalePortrait. Allows you to adjust the size of an existing character portrait at runtime. Two parameters: portrait name and scale. (By default, most portraits have a scale of 1.0, though this can vary for proc gen and custom portraits.)
  • new script actions: HighestStatUnitsToList and LowestStatUnitsToList. Gets the characters in the specified army or roster tied for the highest or lowest value in the specified stat, then adds their name to a custom list. Parameters: list name, roster or army number, and stat name.
  • new script actions: HighestStatUnitsInList and LowestStatUnitsInList. Pulls the characters from an existing list who are tied for the highest or lowest value in the specified stat, then adds their names to a new list. Parameters: existing list name, new list name, and stat name.
  • the SpawnUnit, GenerateUnit, and GenerateUnique script actions now accept integer ranges for their x coordinate and y coordinate parameters, letting you randomize character spawning within a defined area.
  • fixed: documentation for the NextFrame action was missing from the campaign editor guide.


And that about covers the changes for this month!

[h2]Featured coverage![/h2]

I'm now going to shout out Titanium Legman again here for his delightful coverage of Together in Battle over the past month, including

  • this lovely overview video (I quote: β€œIt makes for a very compelling, one-more-battle type of feeling that I haven't gotten from a strategy RPG in a good long while”) and
  • this SRPG tier list video where (spoilers!) he ranks Together in Battle in A-tier alongside Fire Emblem Three Houses, Fire Emblem Awakening, and Fire Emblem Path of Radiance--even in its unfinished, early access state! (I quote: "Phenomenal.")

As the kids say: what an absolute king! πŸ˜ƒ

[h2]What's next[/h2]

We're on track to hit the full version 1.0 release in Spring 2025; and as it happens, that is precisely when I was hoping to release the game. So I'm feeling pretty good about that!

For our final updates leading up to that launch, my goal is to get the last investigation mission completed; get the last bits of new art and music into the game; create the final plot battle; write the good ending; write the scene with the big post-championship speech to your team; and add in one last event that can occur with Ishita Svaamee if you cross her. (Needless to say, I will also keep polishing the game with balance tweaks and bug fixes, and may throw in some new random events and dialogue as well if the mood strikes.)

As always, feel free to help me out by sending in reports of any bugs you run into, and--if the spirit moves you--by giving the game a nice Steam review. Such things are immensely helpful to a small indie dev like me! Until next month, my friends.


Tactically yours,

Craig

Version 0.7.50: new investigation scenes, new character dialogue, and more!

Hey there, tactics fans! This month's update is a little on the short side because (drum roll, please)...I'm getting married this Saturday! Still, I've got some good stuff here that I hope you enjoy.

The two biggest additions are simply new investigation cutscenes:

  • wrote a new interrogation scene with Malatose.
  • wrote a new interrogation scene with Wailling.


Both of these scenes provide information important to the conspiracy investigation and set up new main plot missions that I'm planning for the next update. πŸ˜‰

[h3]Miscellaneous features, improvements, and balance changes:[/h3]

  • generic unit portraits now shift skin and hair color to match their sprites!



  • updated to a newer version of Unity.
  • reduced frame drops that had started occurring during combat zoom-in and zoom-out.
  • both proc gen characters and custom characters are now assigned a sad info response line when they are created. These responses are now used after particularly dark background dialogue in camp. (If the responding character comes from an older version of the game and therefore lacks a sad response variant, they'll just respond with a normal response line that generally won't acknowledge the seriousness of the disclosure.)
  • wrote new nickname response lines for characters with the compulsive, empirical, imaginative, jokester, arrogant, serious, disciplined, sensitive, and vindictive personality traits! This means that a little more then one-third of all new characters will now have distinctive, personality-based responses to being nicknamed. (Characters from previous versions, by contrast, will all have responses picked from the same pool of half a dozen or so generic replies.)
  • wrote a new talk narration for narcissistic characters.
  • wrote new, self-loathing "fantasize" camp activity narrations for characters fantasizing about another character with whom they have a romance stat of 0 or lower.
  • when characters are lined up to have dialogue with one another in camp, if the game detects that there is no valid dialogue they can have together, the game now tries to give them a narrated "small talk" activity instead of having them say "Actually, I have nothing to say."
  • when premade generic units promote to classes that have new default weapon skills (e.g. the Blackguard with Throw Knife or Mantis Knight with Halberd), if they don't spawn with droppable weapons equipped, they now gain those new default skills as natural skills.
  • generic Marauders and Berserkers now have Throw Axe as default weapon skills.
  • improved the descriptions on certain personality traits for purposes of the character creator.

A quick note about the new response lines: if you have a custom character you made in a previous version whom you'd like to receive those new response lines, just open the character in the custom character creator and re-save them; the game should assign them new dialogue lines (including the new response types)!

[h3]Numerous bug fixes![/h3]

Thanks to me not adding any big new features this month, I was able to spend a good bit of time focused on knocking out a lot of bugs with highly specific reproduction conditions (plus a few that cropped up due to recent changes in the code):

fixed: the game had begun triggering visual and audio cues for characters dropping into chasms when merely moving onto bridges above (or, in the case of flying units, flying onto) chasm tiles.
fixed: the code which made the traveling merchant event more commonplace had a typo, essentially adding a nonexistent event into the event hopper and making the game skip to the next day whenever it came up.
fixed: it was possible for the game to select a heatwave event upon returning to camp in the evening, which would throw an error and cause the game to skip the evening's events.
fixed: if you recruited the enemy kineticist during the Monkey League Qualifier, they retained a script ID tag that could cause the game to inappropriately make them deliver lines intended for enemies during subsequent battles.
fixed: regular, non-dialogue camp activities intended to alter characters' familiarity, friendship, and romance were misformatted and so were not actually altering these values.
fixed: certain response lines incorporating the speaker's non-verbal tic were getting the entire line replaced with just the tic narration.
fixed: certain response lines incorporating the speaker's specific laugh were getting the entire line replaced with just the laugh description.
fixed: if a character got the random "romantic crush" event in camp, then lost their romantic feelings for their crush before they could fantasize about them (e.g. via the crush turning them down for a date or saying something unkind to them), the game would fail to find any valid "fantasize" narration in camp when the fantasizing character came up during free rein, thereby freezing the game.
fixed: if a character asked another character out on a date, the game could leave a forced "fantasize" camp activity tag on the character despite removing the associated camp activity from their "free rein" activity list.
fixed: the Trailing Malatose event could be triggered repeatedly.
fixed: the game was triggering an event where the player receives a letter from Manbir about Malatose much too early.
fixed: if they hadn't been triggered beforehand, Ishita Svaamee's buyout offer events would remain in the random event hopper even after the championship battle.
fixed: a bunch of potential character interests were missing from the "ally gift" event.
fixed: when generating a unique named knife for the "family weapon" event, the game would assign the wrong image name, causing the weapon to display no image in inventory screens.
fixed: a change in the last update broke the NPC attribute special character in dialogue, causing NPC pronouns in proc gen character dialogue (particularly background lines concerning family members) to simply not appear.
fixed: many day logs for investigatory visits to the palace were being cut off.
fixed: custom variables and other special characters within map objectives were not being processed during auto-displaying of objectives at the start of a battle.
fixed: default lines and attributes from the game's placeholder CharAttributes.xml file could be loaded alongside campaign-specific lines and attributes even when they shared the same ID.
fixed: as of the last Unity version update, objects assigned to a player army (e.g. the statue in Defend the Idol) were using a material containing the wrong render order, leading to these objects always displaying behind characters even when they should have displayed in front.
fixed: in rare circumstances, the game could still fail to display the counterattack sprite when showing reasons why a character wants a piece of equipment.
fixed: when playing in gamepad mode, the gamepad cursors were misaligned to buttons in the new turn box and the actions bar.
fixed: when loading a previously created custom character in the custom character creator, the game was not loading tooltip data for the personality and physical trait pickers.
fixed: tooltips for personality and physical attributes could appear below the portrait pickers in the character creation screen.


[h3]And finally, we have a few improvements for campaign makers:[/h3]

if the game detects a plural in the Relationship parameter for an -NPC:x- attribute special character in dialogue (e.g. when the NPC relationship is "mom and dad" or "aunt and uncle"), and the Attribute Type is a special character pronoun, the game will now supply the appropriate they/them plural pronoun.
fixed: the campaign creation suite was not loading campaign-specific custom character classes upon loading up a campaign for editing.
fixed: a null error was preventing the cutscene editor from working properly.

That's all for this update! As I mentioned last month, all the big-ticket features are in-game at this point, so from here until release, it's just churning out content and polishing things up.

I'm going to take a little time to enjoy the whole "getting married" thing, but I'll be back to working on Together in Battle soon enough! I'm looking to get two new main-plot missions done for next month's update--and if there's time, maybe another non-main-plot event or two. Until next time!


Yours in tactics,

Craig