Version 0.4.02: card tournaments, stat boosters, new UI, palace intrigue battle!
Greetings, SRPG fans! I was hoping that things might slow down a bit since the craziness of last month, but we all know how Decembers are. Still, I managed to get some really good new stuff into the game: multiple new random events, a new job type, a new hand-designed palace intrigue mission, new skills, new enemy types, some long-requested UI improvements, and more!
Let's start with the new content:
- a new job type has been added to the daily jobs board: Card Tourney. Pay an entry fee to participate in a Psy Clash tournament against a series of procedurally generated opponents; win the tournament to take home a cash prize! This brings the game up to three job types, two of them proc gen in nature.

- items can now alter a character's base stats, allowing for permanent changes!
- new rare item: Salubrious Draught. Permanently increases the user's maximum health by 3.
- new rare item: Protein Pellets. Permanently increases the user's Strength by 1.
- new rare item: Mycelium Drops. Permanently increases the user's Psy by 1.
- there is now a 1% chance of Salubrious Draught, Protein Pellets, or Mycelium Drops showing up in the shop during any given visit (and a 100% chance of one of these showing up in the wandering merchant's shop after saving him from the bandits).

- created the next investigation mission, with cut scene prelude and alternate endings depending on how events play out during the battle.
- created several new enemy types which appear during the second investigation battle.
- it is now possible to get random events at the start of the day, not just in the arena or in the evening.
- new event: Heat Wave. Drains most of remaining unit energy and risks making units sick if they are assigned physically demanding tasks during the day.
- new event: Dance Lessons. You can pay to send two characters off for dance lessons, improving their relationship and teaching them each Twirl.
- new skill: Kinetic Surge. 3 knockback, hits 3 spaces in a row.
- new skill exclusive to the royal guard: Shield Bash. Low crushing damage with knockback 1 and a chance of stunning.
We have a few nice UI improvements, including the long-requested knockback pre-visualization UI:
- when right-clicking on objects in battle, if there are move tiles or attack tiles present onscreen, that right-click is now treated as a "cancel move or attack" command rather than a command to call up the object's character screen.

- the game now previews knockback paths! See exactly where Shove, Pull, Kinetic Gust, etc. is going to land everyone right onscreen.

- the game now shows where knockback collisions are going to occur, displaying the predicted damage that the targeted unit will take!
We have a variety of other miscellaneous improvements and balance tweaks as well:
- at the start of the game, the initial qualifier bout is now skippable directly from the arena entryway if you've already played through the tutorial fights (or skipped them) in a prior run! If you skip the qualifier, the game will throw you right into the first fight (against the team with engineers).
- Psy Clash cards can now drop as loot during battles!
- when arriving at camp, the game now warns you if camp is messy.
- after the first two in-game months, the game now automatically adds negative events to the "random event hopper" every week in perpetuity, keeping random events from ever running out and putting pressure on the player to conclude the playthrough.
- reduced the familiarity requirements for certain dialogue variations, making more varied character dialogue available earlier on.
- reduced the friendship threshold for characters with certain personality traits to give other characters nicknames, share secrets, and teach skills.
- a character's background dialogue (where a character came from, what their family was like, etc.) now cannot repeat even if the particular character listening hasn't heard it before.
- characters now progress from sharing background and "like" dialogue to nicknaming each other, sharing secrets, and teaching each other skills faster.
- added a new negative Talk interaction for characters who have a bad relationship.
- improved awkward phrasing in some life skill-related dialogue variants.
- Blinded characters can now only see 1 space through fog of war regardless of their Perception stat.
- reduced the maximum health of thinner cave walls to 99 to make brute-force solutions to the optional objective in the Dissident's Den battle more feasible.
- made the dissident interrogation a little more flexible in how you can navigate the dialogue.
- if you ignore Manbir Raksha's letter after the Festival of the Ascendant Lights, it is now possible to visit the palace at a later time to initiate the palace intrigue plot line. (Getting kicked out of the palace will still close it off for the rest of the playthrough, however.)
- reduced the levels of several enemies in the Monkey League Qualifier (particularly the stone golem and axefighter) to make the fight less of a difficulty spike.
- improved Shadowling Grandpa's scaling to help keep up with enemy level scaling in the "save grandpa" random event.
- increased the spawn rate of special weapons like rapiers in the shop.
- increased Grape Shot energy cost from 7 to 9 and decreased its damage scaling from 120% to 100% of strength.
- buffed Lunge: it now has a range of 2 and move-to-target behavior; increased Lunge's damage output from 1.5x strength to 1.75x strength.
- buffed the kineticist promoted classes: (1) the Kinetokurios no longer gets an energy cost reduction on Kinetic Constriction, but now gets +5 damage on Kinetic Constriction and can impart Weakened status with it; (2) the Puppetmaster no longer gets an energy cost reduction on Kinetic Gust and Kinetic Pull, but now gets guaranteed access to Kinetic Wave and learns Kinetic Surge as well.
- buffed the the Thoughteater promoted class: replaced its flat +6 damage for Mind Shock with a 125% damage bonus, causing it to scale with Psy growth at the same rate as Mind Blast; and replaced the Thoughteater's -1 energy cost reduction for Mind Shock with a +50 accuracy bonus, giving the skill's Stunned status a base 100% chance of taking effect.
- buffed the Shadowling card for Psy Clash; it how has health 3 when first played.
- cards in Psy Clash can now affect a minion's stats with more than one operation.
- buffed most of the highest-cost Psy Clash cards.
- the level-up screen now has an animation for when characters learn new counterattacks.
- adjusted the positioning of the spike trap holes so they no longer hang over the edge on transition tiles.
- removed a substantially duplicative reply option from the cut scene with the maharaja.
- refactored some of the old portrait code to make it easier to modify the elements portraits are created from.
- non-scar, non-facial-hair accessories in character portraits now support a "glow" value independent of the rest of the portrait.
- got attack animations for Prince Ajit's battle sprite in-game.
- added portrait movement to the start of the Item Sale event.
- began laying groundwork for a new item usability type: Gift.
Next, we have bug fixes:
- fixed: hair accessories in character portraits were being tinted with lightness values intended for character hair itself, resulting in accessories in light-colored hair appearing much too bright.
- fixed: save slots for playthroughs on custom difficulty did not display the player's team name in the top-right.
- fixed an irritating visual glitch where a character's portrait would vanish for just a moment in between a camp narration and subsequent dialogue (e.g. when a character comes up to the player to ask if they'd like to give them money to gamble with).
- fixed: the Investigate button would not appear in the town menu during days with a league match scheduled.
- fixed: one of the snow-sand transition tiles was missing.
- fixed: the refactored activity-partner selection algorithm had broken instances where random events forced certain camp activity partners.
- fixed: the ModSkillPower and ModSkillAccuracy tags were affecting skills unrelated to those tagged.
- fixed: the ModSkillRange tag could increase the range of skills with a max range of 0 (such as Whirlwind), leading to strange outcomes (such as potentially hitting oneself with Whirlwind).
- fixed: certain Duoterre weapons still required "brittle" masteries that appeared in Telepath Tactics Liberated, but which are not used in Together in Battle.
- fixed: the player's chosen death rules were being ignored in the "golem attack" random event.
- fixed: it was possible to get the event with Sita and the card game more than once.
- fixed: it was possible (albeit unlikely) for golems and spirits to have a morale-based reaction to teammate deaths.
- fixed: Stone Golems were not using the correct animation for Hurl.
- fixed: status effect icon tooltips weren't being layered correctly.
- fixed: the area preference tag wasn't being applied to long-term moves that caused the character to stop within the named area on their way to a destination outside the area.
- fixed: AI-controlled units moving only a single space out of fog of war would not become visible.
- fixed: fog of war would not auto-update after equipping (or unequipping) a torch in battle.
- fixed: fog of war would not auto-update after using SetStat to change a character's Perception or Coords in battle.
- fixed: if a character's sibling appeared in an arena fight and they were killed without being recruited, the game would not save their data, leading to the character feeling depressed about "-MOODCHAR-" in subsequent scenes.
- fixed: wounded characters could still use items in their character screens.
- fixed: unequipping certain weapons (or having them forcibly unequipped via Disarmed status) could sometimes cause a dictionary error and freeze the game.
- fixed: the game ceased giving payday reminders after the first in-game month.
- fixed: the Cryokineticist minion in Psy Clash could send enemy power into the negatives, causing their attacks to heal him.
- fixed: the dialogue input screen would accept a reply containing no text.
- fixed: the deployment screen would show the option to switch to a second (empty) page of characters if the player's roster was exactly 18 units in size.
- fixed: the reserve supplies screen would show the option to switch to a second (empty) page of characters if the player's roster was exactly 18 units in size.
- fixed: it was possible for the game to trigger the top AI move twice if scripted character movement occurred at the start of the enemy turn.
- fixed: one of the replies during the Prince Ajit interrogation linked to the wrong dialogue branch.
- fixed: under circumstances where the AI was controlling more than 8 characters in the same army, if an AI-controlled character in that army died on its own turn (typically from an enemy counterattack), the AI would inappropriately skip the turn of the next character in order.
- fixed: units afflicted with the Frozen status effect could nonetheless regain energy on their turns.
- fixed: prior fixes had once again broken the game's ability to pick out the correct unit for displaying the talk symbol and producing unit babble in battle when multiple units shared its name (even when using a script ID in place of a name).
- fixed: the loadID for Grapple Pull contained a typo.
- fixed a typo in one of the Suave heal barks.
- fixed: much of Gurdeep and the maharaja's dialogue during the Festival of the Ascendant Lights was missing babble sounds.
And finally, we have new goodies for (and improvements to) the campaign creator!
- new destructible objects: Jug and Planter. Jug comes in two variants (empty and full of water), while Planter comes in four varieties (full of just dirt, or planted with arum lilies, ferns, or a palm tree).

- new destructible objects: modular Rugs! Variants of the Rug object that seamlessly connect together to create rugs of arbitrary size and shape; these are treated as part of the floor, laying flat and (unlike other destructible objects) appearing beneath movement tiles.

- right-clicking a destructible object present on the battlefield in the map editor now works like right-clicking open terrain, initiating a camera drag-pan.
- two new cut scene backgrounds added to the game.
- new sound effect added: Ceramic Breaking. Plays when destroying jugs and ceramic planters.
- new script action: AddBark. Dynamically adds a new combat bark to a character's stable of barks.
- new special character supported: -DATE-. Spells out the current date with the day of the month, the month name, and the current year.
- cut scene backgrounds now support HDR colors, allowing for them to appear to properly glow when tinted with values above 1.
- when used in battle, UnitsToList now adds generic characters by their unique ID instead of by name, allowing it to pinpoint specific instances of generic units sharing the same name.
- commas no longer break the text within letters and other documents displayed via the ShowReport script action.
- the runScripts attribute for items can now contain custom script parameters! (Just like with the Run script action, add a comma, a parameter name, a second comma, and then a parameter value to pass a parameter to the script that gets run.)
- new optional parameter for ClearPortraits; add any number of portrait reference names as parameters to have the game exempt them from being cleared.
- new mathematical operation supported for the SetVal script action: mod. This runs a modulo operation, dividing the current value by the operand and returning the remainder. (For instance: if a custom value is currently set to 7 and you use mod:4, the result will be 3 since that is the whole number remainder from dividing 7 by 4.)
- new special character supported: -PROJ:X-. In place of the 'X', type the name of an existing group project. Gets replaced with the numerical progress level of that group project (or zero, if no such project has been initiated).
- new tag supported: ForceGender. One parameter: gender. Forces the tagged instance of a premade generic unit with an 'Either' gender attribute to spawn with the gender specified.
- added an explanation for how to alter base stats to the Guide's Stats page.
- updated documentation in the Guide with explanation for how to make a ModSkill tag affect all skills.
- fixed: when cloning a unit in the campaign editor, the editor would add an attribute called "nodeCategory" to the cloned unit, thereby causing the engine to not be able to parse the XML file containing all of the custom campaign units and seeming to wipe out the units list.
- fixed: the "remove" button for armies within the map editor's army sub-editor inappropriately appeared above the tooltip explaining different AI profiles.
- fixed: the map editor was inappropriately replacing special characters within army values when loading a saved battle map, causing custom strings and the like to be wiped.
That's all for 2023, folks! In January, I'll be aiming to add a new investigation dialogue scene, create a fourth proc gen job type for the jobs board, get new battlefield background art into the game, and add a Psy Clash deck management interface into the game (among other things). See you then--and in the meantime, don't forget to leave a nice review if you're having fun with the game! Your support means the world to me. 🙂
Yours in tactics,
Craig
Let's start with the new content:
- a new job type has been added to the daily jobs board: Card Tourney. Pay an entry fee to participate in a Psy Clash tournament against a series of procedurally generated opponents; win the tournament to take home a cash prize! This brings the game up to three job types, two of them proc gen in nature.

- items can now alter a character's base stats, allowing for permanent changes!
- new rare item: Salubrious Draught. Permanently increases the user's maximum health by 3.
- new rare item: Protein Pellets. Permanently increases the user's Strength by 1.
- new rare item: Mycelium Drops. Permanently increases the user's Psy by 1.
- there is now a 1% chance of Salubrious Draught, Protein Pellets, or Mycelium Drops showing up in the shop during any given visit (and a 100% chance of one of these showing up in the wandering merchant's shop after saving him from the bandits).

- created the next investigation mission, with cut scene prelude and alternate endings depending on how events play out during the battle.
- created several new enemy types which appear during the second investigation battle.
- it is now possible to get random events at the start of the day, not just in the arena or in the evening.
- new event: Heat Wave. Drains most of remaining unit energy and risks making units sick if they are assigned physically demanding tasks during the day.
- new event: Dance Lessons. You can pay to send two characters off for dance lessons, improving their relationship and teaching them each Twirl.
- new skill: Kinetic Surge. 3 knockback, hits 3 spaces in a row.
- new skill exclusive to the royal guard: Shield Bash. Low crushing damage with knockback 1 and a chance of stunning.
We have a few nice UI improvements, including the long-requested knockback pre-visualization UI:
- when right-clicking on objects in battle, if there are move tiles or attack tiles present onscreen, that right-click is now treated as a "cancel move or attack" command rather than a command to call up the object's character screen.

- the game now previews knockback paths! See exactly where Shove, Pull, Kinetic Gust, etc. is going to land everyone right onscreen.

- the game now shows where knockback collisions are going to occur, displaying the predicted damage that the targeted unit will take!
We have a variety of other miscellaneous improvements and balance tweaks as well:
- at the start of the game, the initial qualifier bout is now skippable directly from the arena entryway if you've already played through the tutorial fights (or skipped them) in a prior run! If you skip the qualifier, the game will throw you right into the first fight (against the team with engineers).
- Psy Clash cards can now drop as loot during battles!
- when arriving at camp, the game now warns you if camp is messy.
- after the first two in-game months, the game now automatically adds negative events to the "random event hopper" every week in perpetuity, keeping random events from ever running out and putting pressure on the player to conclude the playthrough.
- reduced the familiarity requirements for certain dialogue variations, making more varied character dialogue available earlier on.
- reduced the friendship threshold for characters with certain personality traits to give other characters nicknames, share secrets, and teach skills.
- a character's background dialogue (where a character came from, what their family was like, etc.) now cannot repeat even if the particular character listening hasn't heard it before.
- characters now progress from sharing background and "like" dialogue to nicknaming each other, sharing secrets, and teaching each other skills faster.
- added a new negative Talk interaction for characters who have a bad relationship.
- improved awkward phrasing in some life skill-related dialogue variants.
- Blinded characters can now only see 1 space through fog of war regardless of their Perception stat.
- reduced the maximum health of thinner cave walls to 99 to make brute-force solutions to the optional objective in the Dissident's Den battle more feasible.
- made the dissident interrogation a little more flexible in how you can navigate the dialogue.
- if you ignore Manbir Raksha's letter after the Festival of the Ascendant Lights, it is now possible to visit the palace at a later time to initiate the palace intrigue plot line. (Getting kicked out of the palace will still close it off for the rest of the playthrough, however.)
- reduced the levels of several enemies in the Monkey League Qualifier (particularly the stone golem and axefighter) to make the fight less of a difficulty spike.
- improved Shadowling Grandpa's scaling to help keep up with enemy level scaling in the "save grandpa" random event.
- increased the spawn rate of special weapons like rapiers in the shop.
- increased Grape Shot energy cost from 7 to 9 and decreased its damage scaling from 120% to 100% of strength.
- buffed Lunge: it now has a range of 2 and move-to-target behavior; increased Lunge's damage output from 1.5x strength to 1.75x strength.
- buffed the kineticist promoted classes: (1) the Kinetokurios no longer gets an energy cost reduction on Kinetic Constriction, but now gets +5 damage on Kinetic Constriction and can impart Weakened status with it; (2) the Puppetmaster no longer gets an energy cost reduction on Kinetic Gust and Kinetic Pull, but now gets guaranteed access to Kinetic Wave and learns Kinetic Surge as well.
- buffed the the Thoughteater promoted class: replaced its flat +6 damage for Mind Shock with a 125% damage bonus, causing it to scale with Psy growth at the same rate as Mind Blast; and replaced the Thoughteater's -1 energy cost reduction for Mind Shock with a +50 accuracy bonus, giving the skill's Stunned status a base 100% chance of taking effect.
- buffed the Shadowling card for Psy Clash; it how has health 3 when first played.
- cards in Psy Clash can now affect a minion's stats with more than one operation.
- buffed most of the highest-cost Psy Clash cards.
- the level-up screen now has an animation for when characters learn new counterattacks.
- adjusted the positioning of the spike trap holes so they no longer hang over the edge on transition tiles.
- removed a substantially duplicative reply option from the cut scene with the maharaja.
- refactored some of the old portrait code to make it easier to modify the elements portraits are created from.
- non-scar, non-facial-hair accessories in character portraits now support a "glow" value independent of the rest of the portrait.
- got attack animations for Prince Ajit's battle sprite in-game.
- added portrait movement to the start of the Item Sale event.
- began laying groundwork for a new item usability type: Gift.
Next, we have bug fixes:
- fixed: hair accessories in character portraits were being tinted with lightness values intended for character hair itself, resulting in accessories in light-colored hair appearing much too bright.
- fixed: save slots for playthroughs on custom difficulty did not display the player's team name in the top-right.
- fixed an irritating visual glitch where a character's portrait would vanish for just a moment in between a camp narration and subsequent dialogue (e.g. when a character comes up to the player to ask if they'd like to give them money to gamble with).
- fixed: the Investigate button would not appear in the town menu during days with a league match scheduled.
- fixed: one of the snow-sand transition tiles was missing.
- fixed: the refactored activity-partner selection algorithm had broken instances where random events forced certain camp activity partners.
- fixed: the ModSkillPower and ModSkillAccuracy tags were affecting skills unrelated to those tagged.
- fixed: the ModSkillRange tag could increase the range of skills with a max range of 0 (such as Whirlwind), leading to strange outcomes (such as potentially hitting oneself with Whirlwind).
- fixed: certain Duoterre weapons still required "brittle" masteries that appeared in Telepath Tactics Liberated, but which are not used in Together in Battle.
- fixed: the player's chosen death rules were being ignored in the "golem attack" random event.
- fixed: it was possible to get the event with Sita and the card game more than once.
- fixed: it was possible (albeit unlikely) for golems and spirits to have a morale-based reaction to teammate deaths.
- fixed: Stone Golems were not using the correct animation for Hurl.
- fixed: status effect icon tooltips weren't being layered correctly.
- fixed: the area preference tag wasn't being applied to long-term moves that caused the character to stop within the named area on their way to a destination outside the area.
- fixed: AI-controlled units moving only a single space out of fog of war would not become visible.
- fixed: fog of war would not auto-update after equipping (or unequipping) a torch in battle.
- fixed: fog of war would not auto-update after using SetStat to change a character's Perception or Coords in battle.
- fixed: if a character's sibling appeared in an arena fight and they were killed without being recruited, the game would not save their data, leading to the character feeling depressed about "-MOODCHAR-" in subsequent scenes.
- fixed: wounded characters could still use items in their character screens.
- fixed: unequipping certain weapons (or having them forcibly unequipped via Disarmed status) could sometimes cause a dictionary error and freeze the game.
- fixed: the game ceased giving payday reminders after the first in-game month.
- fixed: the Cryokineticist minion in Psy Clash could send enemy power into the negatives, causing their attacks to heal him.
- fixed: the dialogue input screen would accept a reply containing no text.
- fixed: the deployment screen would show the option to switch to a second (empty) page of characters if the player's roster was exactly 18 units in size.
- fixed: the reserve supplies screen would show the option to switch to a second (empty) page of characters if the player's roster was exactly 18 units in size.
- fixed: it was possible for the game to trigger the top AI move twice if scripted character movement occurred at the start of the enemy turn.
- fixed: one of the replies during the Prince Ajit interrogation linked to the wrong dialogue branch.
- fixed: under circumstances where the AI was controlling more than 8 characters in the same army, if an AI-controlled character in that army died on its own turn (typically from an enemy counterattack), the AI would inappropriately skip the turn of the next character in order.
- fixed: units afflicted with the Frozen status effect could nonetheless regain energy on their turns.
- fixed: prior fixes had once again broken the game's ability to pick out the correct unit for displaying the talk symbol and producing unit babble in battle when multiple units shared its name (even when using a script ID in place of a name).
- fixed: the loadID for Grapple Pull contained a typo.
- fixed a typo in one of the Suave heal barks.
- fixed: much of Gurdeep and the maharaja's dialogue during the Festival of the Ascendant Lights was missing babble sounds.
And finally, we have new goodies for (and improvements to) the campaign creator!
- new destructible objects: Jug and Planter. Jug comes in two variants (empty and full of water), while Planter comes in four varieties (full of just dirt, or planted with arum lilies, ferns, or a palm tree).

- new destructible objects: modular Rugs! Variants of the Rug object that seamlessly connect together to create rugs of arbitrary size and shape; these are treated as part of the floor, laying flat and (unlike other destructible objects) appearing beneath movement tiles.

- right-clicking a destructible object present on the battlefield in the map editor now works like right-clicking open terrain, initiating a camera drag-pan.
- two new cut scene backgrounds added to the game.
- new sound effect added: Ceramic Breaking. Plays when destroying jugs and ceramic planters.
- new script action: AddBark. Dynamically adds a new combat bark to a character's stable of barks.
- new special character supported: -DATE-. Spells out the current date with the day of the month, the month name, and the current year.
- cut scene backgrounds now support HDR colors, allowing for them to appear to properly glow when tinted with values above 1.
- when used in battle, UnitsToList now adds generic characters by their unique ID instead of by name, allowing it to pinpoint specific instances of generic units sharing the same name.
- commas no longer break the text within letters and other documents displayed via the ShowReport script action.
- the runScripts attribute for items can now contain custom script parameters! (Just like with the Run script action, add a comma, a parameter name, a second comma, and then a parameter value to pass a parameter to the script that gets run.)
- new optional parameter for ClearPortraits; add any number of portrait reference names as parameters to have the game exempt them from being cleared.
- new mathematical operation supported for the SetVal script action: mod. This runs a modulo operation, dividing the current value by the operand and returning the remainder. (For instance: if a custom value is currently set to 7 and you use mod:4, the result will be 3 since that is the whole number remainder from dividing 7 by 4.)
- new special character supported: -PROJ:X-. In place of the 'X', type the name of an existing group project. Gets replaced with the numerical progress level of that group project (or zero, if no such project has been initiated).
- new tag supported: ForceGender. One parameter: gender. Forces the tagged instance of a premade generic unit with an 'Either' gender attribute to spawn with the gender specified.
- added an explanation for how to alter base stats to the Guide's Stats page.
- updated documentation in the Guide with explanation for how to make a ModSkill tag affect all skills.
- fixed: when cloning a unit in the campaign editor, the editor would add an attribute called "nodeCategory" to the cloned unit, thereby causing the engine to not be able to parse the XML file containing all of the custom campaign units and seeming to wipe out the units list.
- fixed: the "remove" button for armies within the map editor's army sub-editor inappropriately appeared above the tooltip explaining different AI profiles.
- fixed: the map editor was inappropriately replacing special characters within army values when loading a saved battle map, causing custom strings and the like to be wiped.
That's all for 2023, folks! In January, I'll be aiming to add a new investigation dialogue scene, create a fourth proc gen job type for the jobs board, get new battlefield background art into the game, and add a Psy Clash deck management interface into the game (among other things). See you then--and in the meantime, don't forget to leave a nice review if you're having fun with the game! Your support means the world to me. 🙂
Yours in tactics,
Craig