Version 1.0.53: Quality of life improvements, bug fixes, campaign editor tools!

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! Two further months of development on Together in Battle [i](and a few helpful bug reports from players like you!)[/i] have yielded some nice new improvements to the Telepath Tactics Liberated engine, along with a few campaign tweaks, lots of bug fixes, and a whole boatload of goodies for people working on their own custom campaigns. Without further ado, here is what's new and improved. [h2][b]First up, we have interface and quality-of-life upgrades:[/b][/h2] [list] [*] improved auto-move-and-attack behavior: the game now heavily favors skills that do not require the character to move further to use. (That is: if the target is already in a skill's range when auto-move-and-attack is used, the character should now generally stay in place and use that skill instead of moving positions to use a different skill.) [*] in the shop, when mousing over equipment, the game now tells you the biggest reason why each character who wants that piece of equipment wants it--and if that reason happens to be an increase to a stat, the game shows you how much that stat would increase. [/list] [img]{STEAM_CLAN_IMAGE}/41649779/a439a61417bbe3df05b6a0873ad168fae2afe474.png[/img] [list] [*]for moves smashing an enemy up against the edge of the map, the collision damage preview now displays the collision just off the edge of the map instead of layering it under the ordinary damage reticle. [/list] [h2][b]There are also a variety of balance tweaks, optimizations, and other miscellaneous improvements:[/b][/h2] [list] [*]objective reticles are now placed around all of the fruit trees on the first turn of Out of Food Battle. [*]updated the fruit tree sprite so that it has a different silhouette from the regular tree, making it easier to spot (especially for colorblind players). [*]removed the turn 24 and 28 reinforcements from the Battle with Ebon Raban when playing on difficulties below Veteran. [*]added an [b]"Unlocked!"[/b] pop-up message to the steel door when pulling the lever in the Coria Dogs Ground Floor battle. [*]implemented a virtual keyboard! The game now fully supports input text fields with gamepad (not used in the main campaign, but usable in player-created campaigns). [*]status effect immunity messages now only pop up if the target is a character. (The player doesn't really need to hear about how boulders and trees are immune to, say, Blinded or Enthralled status.) [*][b]AI improvement: [/b]enemies can now path their way through closed doors, opening the doors as they move! [*][b]AI improvement: [/b]CPU-controlled characters will no longer wander into campfires. [*]the level-up screen now has an animation for when characters learn new counterattacks. [*]switched the game's internal operate() function over from if-else statements to a switch statement for increased performance. [*]did a bit of code optimization for when the game checks for whether spaces are solid land. [*]improved end credits scrolling behavior. Instead of automatically skipping to the entire next scene, clicking now increases the scroll speed by nearly 10x while the button is held down, and advances to the next scene only when scrolling is completed. [*]added the number of the current save slot to generated log files. [/list] [h2][b]There are a whole lot of bug fixes:[/b][/h2] [list] [*][b]FIXED:[/b] the gamepad navigator code could sometimes fail to enable navigation to some of the reply buttons in dialogue branches with multiple responses once the reply options finished fading in. [*][b]FIXED:[/b] the flashback cut scenes had ceased to advance to the next frame upon ending cut scene dialogue due to changes made to fix unintended behaviors in the engine for Together in Battle. [*][b]FIXED:[/b] clicking on a bridge or on stairs while moving in exploration mode would cause the selected character to move adjacent to (rather than onto) the clicked object. [*][b]FIXED:[/b] when ending dialogue in exploration mode, the game would select the next character in the army rather than re-selecting the last selected character. [*][b]FIXED:[/b] the land movement sprite had become misconfigured in movement tiles during Exploration Mode due to changes adding localization support to the game. [*][b]FIXED:[/b] shoving an object while in exploration mode could result in the game displaying that object as the current selected unit in the actions bar. [*][b]FIXED:[/b] null error that could occur when clicking to use a triggerable object when in exploration mode. [*][b]FIXED:[/b] in some circumstances, the animation for dropping a flyer into water or lava could play much too slowly. [*][b]FIXED:[/b] if Heavy status wore off while a flying character was dunked in water or lava, they would immediately return to flying movement. Now, they must instead swim to shore first. [*][b]FIXED:[/b] flyers who were dunked into water or lava by virtue of being Heavy would, upon swimming to an adjacent tile of liquid terrain after Heavy status wore off, immediately resume flying. Such units must now swim back to land (or a bridge tile) to recover Flying movement. [*][b]FIXED:[/b] the AI could have characters inflicted with Immobilized status use Swim when in water or lava. [*][b]FIXED:[/b] when shown in battle, the info bar was layering on top of UI elements that should have taken priority over it. [*][b]FIXED:[/b] when shown in battle, particle effect velocity for the info bar was not scaled properly. [*][b]FIXED:[/b] choosing a particular set of particle effects did nothing for Create skills. [*][b]FIXED:[/b] the game was leaving the "talking" symbol visible on the last speaker portrait when transitioning to a new dialogue branch with no speaker. [*][b]FIXED:[/b] character dialogue would animate, with accompanying babble sounds, even as a report covered the dialogue menu onscreen. In a branch with a ShowReport action, the game now initiates dialogue animation and babble sounds only after the report is closed. [*][b]FIXED:[/b] the game could sometimes overwrite proc gen equipment materials values with old placeholder values, resulting the game not loading material names correctly and therefore failing to generate the correct names for weapon and armor images. [*][b]FIXED:[/b] localization-related changes to the code over the past few months caused the game to stop displaying the name of the status effect in "[Status effect] wore off" pop-up messages. [*][b]FIXED:[/b] using the StopMusic script action and then resuming the track that was playing prior to StopMusic with PlayMusic would not work, as the game would think that track was already playing. [*][b]FIXED:[/b] in rare circumstances, the game could produce a range error trying to place an enemy with exceptionally long range on a proc gen battle map without enough space to get them outside of enemy range. [*][b]FIXED:[/b] when finishing deployment in a map with both a Fog of War condition and a Go First condition for any army other than the player, the game would reconfigure fog of war to reflect the perspective of whichever army went during the first turn, thereby inappropriately revealing hidden areas of the map to the player. [*][b]FIXED:[/b] in some cases, the game running and then closing dialogue with an OnReachingArea trigger in the middle of an AI turn could cause the game to tell the AI that none of its characters had moved or acted yet, resulting in them taking multiple turns. [*][b]FIXED:[/b] the game could freeze if character movement mid-combat sequence (e.g. with a skill like Charge) brought a character into an area of the map that triggers OnReachingArea dialogue. [*][b]FIXED:[/b] during OnCharAttacked dialogue where the speaker's name was set via the -ATTACKER- special character, the game was leaving the resulting unique ID in place in lieu of the attacker's name. [*][b]FIXED:[/b] in some circumstances where a unit took a long time making a move on the battlefield destined to be interrupted by a trap, the game would start calculating the next move for that unit before the move was finished, without taking the trap's effects into account. [*][b]FIXED:[/b] missing-space typo due to localization implementation in the reserve supplies screen when asking the player if they want a character to automatically equip multiple new equipable items. [*][b]FIXED:[/b] narrowing down a tag by its parameters for RemoveTag was only working in cut scenes, not battles. [*][b]FIXED:[/b] using RemoveTag to strip a unit of its scriptID would remove the tag, but not the associated scriptID marker used to find it by the game. [*][b]FIXED:[/b] binoculars had stopped working due to a bug fix from a prior update. [*][b]FIXED:[/b] 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. [*][b]FIXED:[/b] 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. [*][b]FIXED:[/b] 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. [*][b]FIXED:[/b] units afflicted with the Frozen status effect could nonetheless regain energy on their turns. [*][b]FIXED:[/b] 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). [*][b]FIXED:[/b] 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. [*][b]FIXED:[/b] 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. [*][b]FIXED:[/b] the title screen news ticker would not reappear after returning to the title screen from playing the game. [*][b]FIXED:[/b] an over-long delay between news items in the title screen news ticker. [*][b]FIXED:[/b] alignment on the floor button destructible object. [*][b]FIXED:[/b] the Crickets and CricketsAlt loops were not looping cleanly. [*]cleaned up the "Grab" sound effect a bit. [*][b]FIXED[/b] in 1.0.53a: the game could freeze when calculating knockback attacks for the AI. [*][b]FIXED[/b] in 1.0.53b: stairs were having their elevation commands applied twice in battle and exploration scenes, causing them to float above the ground in some cases. [*][b]FIXED[/b] in 1.0.53b: AI-controlled characters would not open a closed door during their move onto the door's space if that space happened to be the last space in their move. [*][b]FIXED[/b] in 1.0.53b: triggering an on-death attack for a destructible object (such as Explode) would not grant experience to the character who destroyed the object and triggered the attack. [*][b]FIXED[/b] in 1.0.53c: the code to make sure enemies don't end their turns walking onto a closed door without opening that door could cause a range error during other enemy moves. [*][b]FIXED[/b] in 1.0.53d: objects and non-player armies were sometimes not appearing when procedurally generating maps in the map editor. [/list] [h2][b]And for people working on their own campaigns in the campaign creation suite, I have a [i]whole slew[/i] of new goodies to play with as well:[/b][/h2] [list] [*]new map tileset added to the game:[i][b] Castle Sandstone! (It's the same as the Castle tileset, but sandstone-colored.)[/b][/i] [*]a bunch of new cutscene backgrounds! [/list] [h3][b]New destructible objects[/b][/h3] [list] [*]jugs and planters! These come in multiple varieties. [*]trapped chests! These come in two varieties: chests trapped with poison needles and chests trapped with explosives. [/list] [img]{STEAM_CLAN_IMAGE}/41649779/c1afc0944edbaba779fbb71511d495b1b19b53fe.png[/img] [list] [*]modular rugs! These are variants of the Rug object that lay flat on the floor, below move and attack tiles, and seamlessly connect together to create rugs of arbitrary size and shape. [*]new item button and skill button graphics! [*]new sound effects and sound loops! [*]when calling LoadConv, the new conversation keeps the existing trigger character and secondary character of the prior dialogue or script by default. [*]new script action: KnockbackUnit. Pushes the unit in a specified direction for a specified number of spaces, as if they'd been shoved or subjected to a kinetic gust. Three parameters: unit name, direction, and number of spaces. [*]new script action supported: NextFrame. Automatically ends any dialogue that may be open and advances to the next frame of the current cut scene. [*]new operation type supported for SetVal and its ilk: abs. Sets the custom value equal to the absolute value of the operand. [*]added multiple-operations support to the SetStat script action. (For instance, you can now call SetStat/Alan Basilleaf,Health,+:10,*:2,c:50 all in one go.) [*]added parameter count error-checking to a bunch more script actions. [*]new tag used to affect randomized battlefield placement: AvoidOwnArmy. This causes the game to weight placement of the tagged unit so that members of the unit's own army are treated as enemies, enforcing minimum distance rules. [*]new tag used to affect randomized battlefield placement: AvoidArmyObjects. This causes the game to weight placement of the tagged unit so that destructible objects belonging to various armies are treated as characters, including them when calculating minimum distances. [*]new after-attack type supported: "Can Attack." The character can continue using other skills, but can no longer move. [*]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. [*]reworked the Generate Map window of the map editor to make better use of space and support more object groups per map. [*]the map editor will now let you select more than just 2 terrain tilesets and more than just 1 hazard tileset in the Generate Map window. [*]added "force spawn distance from player" support to characters and destructible objects in proc gen maps. [*]the map editor successfully loads and saves the "forced spawn distance from the player" attribute of army groups and objects in proc gen maps. [*]added "force spawn distance from player" fields for destructible objects to the Generate Map window of the map editor. [*]the game now properly supports stairs which appear to lead down below the map; there is a now a "StairsDown" variant of all existing stairs objects. [*]improved proc gen map logic for placing stairs (they can now only be placed at elevation 1, and not adjacent to environmental hazards). [*]the game's procedural map generator can now generate bridges across large stretches of hazard tiles, not just one-tile gaps. [*]the game's procedural map generator can now generate bridges across gaps between cliffs. [*] fixed: on rare occasions, the proc gen map algorithm could generate more than one bridge tile on the same space. [*]fixed a range error that could occur when generating spawn positions for destructible objects in proc gen maps. [*]improved the game's detection of premade unit load IDs (as opposed to actual class names) for army group units in proc gen maps. [*]fixed: upon loading proc gen maps, the map editor would strip out colons from any premade unit load IDs within army groups. [*]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. [*]fixed: the map editor was not setting terrain check boxes correctly within the Generate Map window of the map editor to match the sets used by existing proc gen maps upon loading them. [*]fixed: loading a dialogue tree containing a NewScene action in branch 0 within a frame of the cut scene editor would cause the game to actually load the new scene within the editor. [*]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. [/list] That's all for this update, folks! Thanks so much for your continued support. If you're enjoying the game, I do hope you'll leave a review--it means the world to a solo developer like myself. Also, make sure to come follow along on social media! [url=https://discord.gg/Yj7wKy7AN4]The Sinister Design Discord[/url] is small but friendly, filled with the sort of people who love to discuss tactics, debate which characters are best, or just give helpful advice. Until next time! Tactically yours, Craig