Version 1.0.55: Presentational polish, patrol AI, bug fixes, and more!

Telepath Tactics Liberated

An SRPG fan's SRPG! Imagine Fire Emblem with destructible battlefields; the ability to place traps; the ability to shove enemies off cliffs, into lava, or into each other; and a built-in campaign creator.

Greetings, tactics fans! It's been another month of work on [url=https://store.steampowered.com/app/1267210/Together_in_Battle/]Together in Battle[/url]--and that means there's another month's worth of engine improvements, bug fixes, and campaign creator goodies available for Telepath Tactics Liberated! [h3]First, I rewrote a couple of things in the engine from the ground up specifically to work better for players with older (or lower-end) machines:[/h3] [list] [*] parabolic movement has been completely overhauled to improve performance on slower systems. Whether it's hopping between terrain elevations, the Stone Golem's Throw skill, or the assassin's Leap, parabolic arcs no longer lag behind the other, accompanying animations on slower machines. [img]{STEAM_CLAN_IMAGE}/41649779/263249561127daee40bcaa72e4c16978f13fded9.gif[/img] [*] the game's dodge animations have likewise been overhauled so that they, like the new parabolic animations, are driven purely by code and math rather than Unity's Animator component. This massively improves performance and ensures that there are not timing mismatches on slower systems. [*] the timing of combat sequences concluding is no longer tied to a Unity camera animation, ensuring that things progress at the intended clip regardless of system power. [/list] [h3]That's not all, however! We also have a mixture of UI and presentation improvements:[/h3] [list] [*] received, incorporated a brand-new visual effect for Overheat! [img]{STEAM_CLAN_IMAGE}/41649779/276ed5eff0cb0a5b8c629759d2ff18cf222ed39e.gif[/img] [*] created a new sound effect for Overheat. [*] the combat camera now pans over to the attack even if combat zoom is turned off, reducing graphical issues resulting from visual effect layering. [*] reduced the height on the pop-up text animation to aid readability. [*] cleaned up the timing on character "hop" animations when changing elevation. [*] right-clicking rugs and other objects set to be treated as part of the floor no longer opens the character screen. [*] status effect tooltips now dynamically display the actual power of the status effect conferred for those occasions where a status effect power differs from its ordinary default value. [*] repositioned status effect tooltips within the character screen so the mouse cursor doesn't obscure any of the text. [*] the Defending status effect can now stack in its power and is hard-coded to disappear when a unit gains a new turn or becomes Enthralled. [/list] [h3]Next, we have a variety of bug fixes:[/h3] [list] [*] [b]fixed[/b]: the deployment window's starting text was being overwritten by default localization values. [*] [b]fixed[/b]: the order of the Combat Zoom setting options was switched in the localization file, causing 'Attacks Only' to be interpreted as 'Off' and vice versa. [*] [b]fixed[/b]: sometimes, the tooltip for an item's Give button wouldn't show up upon mousing over it. [*] [b]fixed[/b] misaligned mouseover zones for status effect icons in the character screen. [*] [b]fixed[/b]: the counterattacks icon did not display correctly when providing in-shop explanations for why characters wanted Vengeful weapons. [*] [b]fixed[/b]: you could click an enemy to show their moveable spaces under fog of war. [*] [b]fixed[/b]: the AI could disregard a valid move onto an AreaPreference space if no valid skill targets existed within range of the destination. [*] [b]fixed[/b]: if a character was moved via a Teleport-type skill (such as Shadowport or Juxtapose), the game would not check to see if it should drop them into water, lava, or a chasm upon reaching their new position. [*] [b]fixed[/b]: you could undo after using a Move skill that also moves a second character (like Trade or Juxtapose). [*] [b]fixed[/b]: due to an oversight when implementing the new move-tracking code, the computer could fail to clear its internal list of viable moves when an enemy's attack slew a character and triggered a death monologue, which in rare cases could result in the AI proceeding with the second-ranked move without recalculating based on the updated state of the battlefield. [*] [b]fixed[/b]: the AI would get locked into an infinite loop when swimming with proc gen units generated with the Swimmer trait. [*] [b]fixed[/b]: due to recent changes in the AI code, the game would throw a null error if an enemy drowned to death at the start of the AI's turn. [*] [b]fixed[/b]: it was possible for an AI-controlled character with a preferred area tag and no viable moves to remain on the "calculate a move" list forever despite having no viable moves, thereby preventing the computer from ever ending its turn. [*] [b]fixed[/b]: if any of an AI-controlled unit's skills could affect a target worth affecting, all of that unit's skills would be marked as worth using as part of short-range moves toward a preferred area, leading to the unit potentially inappropriately attacking scenery. [*] [b]fixed[/b]: smashing an enemy up against the edge of the map could only ever deal a single tile's worth of collision damage even if using a skill with multiple tiles worth of extra knockback. [*] [b]fixed[/b]: Create skills would not function on spaces containing rugs or other objects with a true "treatAsFloor" attribute. [*] [b]fixed[/b]: door-affecting script actions such as Lock could trigger OnDoor dialogue when used in OnLoaded dialogue. [*] [b]fixed[/b]: the AI was not set to recalculate moves upon removing Inactive tags from a CPU-controlled unit mid-turn. [*] [b]fixed[/b]: under certain circumstances, dummy attack tiles shown upon mousing over an attack button could inappropriately vanish (or fail to appear at all). [*] [b]fixed[/b]: if a new turn belongs to an army with no units remaining, the game would skip to the next turn without triggering any OnTurn or BeforeTurn dialogue set to trigger on that turn. [*] [b]fixed[/b]: bridges below the level of the terrain could cause the game to use the bridge's elevation instead of the ground's for purposes of calculating movement and elevation bonuses. [*] [b]fixed[/b]: the in-battle pop up text showing experience gain from using a battle primer would scale the displayed experience against the resulting level rather than the level at the time of use, frequently resulting in it announcing less experience than was actually gained. [*] [b]fixed[/b]: a character portrait added to the left edge of the screen and that same portrait walking to the left edge of the screen would end up in positions about 5 pixels off from each other. [/list] [h3]And last but not least, we have new tools and improvements for campaign creators![/h3] [list] [*] dialogue branches now support an attribute called "show single replies." This forces the game to show a reply button on this dialogue branch even if only a single reply remains--useful for moments when the player says or does a particular thing. [*] new clothing for female human portraits: RoyalDese. [*] new clothing for male human portraits: Blacksmith. [*] added a new skin tone that can be used for character portraits: Ruddy Brown. [*] added three new eye colors that can be used for character portraits: Aqua, Red, and Violet. [*] new dialogue trigger supported: [b]OnUnitAttacked[/b]. This works just like OnCharAttacked, except that the unit attacked does not have to be a character to trigger the dialogue. (Someone attacking a specified object, for instance, can trigger the dialogue with OnUnitAttacked.) [*] new script action: [b]AddTagToGroup[/b]. This works just like AddTagToArmy, but instead of specifying an army number, you specify an AggroGroup number. Every unit in the specified AggroGroup will receive the new tag you provide. [*] new script action: [b]RemoveTagFromGroup[/b]. This works just like RemoveTagFromArmy, but instead of specifying an army number, you specify an AggroGroup number. Every unit in the specified AggroGroup will lose whatever tag you provide. [*] new optional parameter in the [i]Deployment[/i] battle condition: maximum characters. This allows additional deployment spots to be placed on the battlefield without increasing the maximum number of deployable characters for the battle. [*] new AI tag type supported: [i]Patrol[/i]. This works like [i]AreaPreference[/i], except that it acts upon a looping sequence of areas for the character to prefer. Once the character reaches the first area in the sequence, their preference shifts to the next one, and so on. [*] new option for the [b]IfInArea[/b]-type script actions: you can now use an army in the Character Name parameter (e.g. "Army 0", Army 1", and so on) and the game will check for any character belonging to that specific army. [*] new custom menu gray-out/warning type: [i]avgLvl[/i]. Calculates the average level of the characters in the current roster and grays out the button or pops up a warning if their average level falls outside the specified range. [*] the blacksmith interface now supports renaming weapons! [*] it is now possible to alter a piece of equipment's name via an equipment-altering consumable using Name as the attribute to alter. [*] added support for Name as an Attribute to Alter in the item editor within the campaign creation suite. [*] updated the item editor's built-in guides to include Name. [*] [b]fixed[/b]: the "force name" feature for characters in proc gen map army groups was not being applied to units drawn from PremadeUnits.xml, only to units procedurally generated from scratch. [*] [b]fixed[/b]: bridges below the level of the terrain would cause the map editor to set the cursor elevation (and the elevation of further objects placed on the space) to the bridge's elevation instead of the ground's. [*] [b]fixed[/b]: in some circumstances, adding a row to a map could produce a null error. [*] [b]fixed[/b] a null error in the cut scene and map editors caused by the game expecting the online bug reporting component to be present. [*] [b]fixed[/b]: in some circumstances, displaying dialogue in the cut scene editor could cause a null error due to the game attempting to call the gamepad menu navigator component. [*] [b]fixed[/b]: the "force species" attribute could be used to create proc gen characters of a species not compatible with the chosen class, resulting in issues like missing portraits and sprites. [/list] That's all for this update, folks! As ever, if you're enjoying the game, please don't forget to leave a review--it really helps a lot. Want to chat with other players and make suggestions? The Sinister Design Discord is a great place to do that; I'm there myself quite regularly and love chatting with players. 🙂 Until next time! Tactically yours, Craig