Version 1.0.52: Holiday Surprise Patch!

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.

Salutations, SRPG fans! I know I titled [url=https://steamcommunity.com/games/1849820/announcements/detail/6738003788152400428]that last update[/url] "the final improvements," but I've added some really nice stuff to the engine since then, and a few of you asked if I'd update TTL with it. It being the holidays and all, I said "What the heck--why not." (Besides: I [i]did[/i] reserve the right to come back in and patch again if new bugs were discovered!) Anyway, why am I spending so much time justifying more improvements to Telepath Tactics Liberated? Let's talk about what's changed! First, a little bit of new content as a winter holiday present for you all: - I've added a new, [i]super-secret recruitable character[/i] to the game. Who is it? Where do they appear? How do you get them? Shhhhhh...it's a [b]mystery![/b] 😉 We also have some nice quality-of-life improvements: - 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. [img]{STEAM_CLAN_IMAGE}/41649779/f91d2378480a4bb3c33f909636e6eec53299ffbc.gif[/img] - the game now previews knockback paths! See exactly where that Shove or Pull 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! [img]{STEAM_CLAN_IMAGE}/41649779/e17367e8d0214f5e7b99c0fb24c8706cf3608b89.png[/img] - added a little glinting animation to the "next set of options" buttons when dialogue and custom menus have multiple pages of options to make them harder to miss. AI fixes: - fixed: the "move again" AI-scoring bonus was being applied to Bow and Lance attacks against allied characters, not just enemies, which in some circumstances could result in the AI viewing it as a good move to use these skills against allies. - fixed: when there was no good move other than staying still and using an item, the game would skip the character's turn instead of staying put and using that item. - refactored a bit of hacky AI code tracking whether the current AI-controlled unit had taken certain actions yet this turn and replaced it with a list that tracks this for every character tied to their unique IDs. - the AI now values the Enthralled status effect differently depending on the total level of the target, with higher-level targets deemed more valuable than lower-level targets. - the AI now values Slowed status less. (Previously, it would be scored identically to Immobilized.) - fixed: the AI was valuing any kind of straight stat buff as though it were healing, leading to enemies using skills like Douse on injured allies. - fixed: the AI was incorrectly predicting the knockback destination for pull skills, leading it to (for example) using skills like Pull under circumstances where Shove would make sense. - fixed: if an AI-controlled character used a consumable item, thereby destroying it, and then tried to move into a trap, if the game prevented the move from completing, it could queue up another move where the unit used the now-destroyed item a second time, thereby producing a null error. - fixed: Passive units could move to different locations as part of purely self-buffing moves. - fixed: the AreaPreference tag could cause AI-controlled units to inappropriately value moves where they moved into the preferred area and then attacked allies. Other fixes: - fixed: user scores for downloadable campaigns were incorrectly scaled, leading to them appearing at 1/5th the value they should have. - fixed: regular enemies were attacking the treasure chest in Battle with Gunther. (To compensate for the reduced early pressure this fix puts on the player, I moved up the appearance of the thief by 2 rounds and added a second chest to serve as an optional objective for those looking to really challenge themselves.) - fixed a few scripting errors in randomizer versions of campaign maps. - fixed: AI-controlled units within fog of war would not appear if they moved only a single space out of fog of war. - Blinded characters can now only see 1 space through fog of war regardless of their Perception stat. - 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: characters would not counterattack after blocking an incoming attack with Defensive Stance. - fixed: self-focus skills (such as Soul Suck and Transfer) were inappropriately affecting maximum energy, not just current energy. This was caused by changes in the code allowing for rollover damage from sending a character into negative energy. - fixed: Immobilized characters were able to use Move skills (like Leap or Swim). - fixed: using Mind Control on an enemy could produce a null error. - fixed: in rare circumstances, an attack sequence could end with a pending counterattack left unexecuted. The game now performs a separate check for any such attacks before ending a sequence of attacks and counterattacks. - fixed: Emma and Sabrina were not appearing on the map in the cut scene after the Adelbrae fight. - added MoveCam scripting to the door and switch tutorial in Rescuing Meridian. - fixed: frame alignment on the Sword animation for Swordmasters and Blade Dancers was erratic. - fixed: if the framerate dipped at the start of knockback or swap skills, the character(s) could appear to teleport onto their target squares. - fixed: in rare circumstances, the actions queue could remain uncleared when changing scenes, leading to the game refusing to process actions in the next scene under the belief that it was already in the middle of processing script actions. - fixed: pure knockback attacks like Kinetic Gust and Shove were not triggering OnCharAttacked dialogue when used against enemies. - fixed: when right-clicking a space with both an object and an item sack, the game would show the object's character screen rather than the item sack's. - fixed: if a map's music changed mid-fight and then a character promoted, the game would cross-fade back to the level's original music, not to the track it had previously changed to. - fixed: clicking units in the deployment menu was not making a sound. - fixed: the graphic for steel mail was missing. - fixed: hair accessories in proc gen 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: choosing to proceed with a custom menu button selection in the face of a pop-up warning would not close the pop-up menu if proceeding meant staying within a custom menu. - when a premade unit has a class name not corresponding to any class in Classes.xml (such as "Villager"), the game now provides them with an empty class that has the provided name. - fixed: if a character had multiple counterattack types to respond to an attack, they would queue up a counterattack with each of them instead of just one. - fixed: the game was not taking weapon dependencies into account when determining viable skills to use for counterattacks (e.g. a character with a Bayonet counterattack would be able to use it even if not equipped with a crossbow). - 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: Stone Golems were not using the correct animation for Hurl. - fixed: unequipping certain weapons (or having them forcibly unequipped via Disarmed status) could sometimes cause a dictionary error and freeze the game. - fixed: status effect icon tooltips weren't being layered correctly. Next, we've got a ton--a [b][i]ton[/i][/b]--of improvements to the campaign creator (and changes that may otherwise benefit custom campaigns)! - cut scene backgrounds now support HDR colors, allowing for them to appear to properly glow in combination with the LightBackground script action. - when auditioning music tracks within the map or cut scene editors, if music volume is set to 0, the game will now override this setting in this context so you can still hear the auditioned music. - changing the operation for a bridge's Elev tag now updates its elevation in real-time in the map editor. - proc gen item attributes are now moddable! (When you create a new campaign, the game will generate a file called ItemAttributes.xml; edit it in Notepad++ or a similar program to alter the properties of existing proc gen equipment modifiers, remove modifiers you don't like, or add your own.) - items can now alter a character's base stats, allowing for permanent changes; added an explanation for how to alter base stats to the Guide's "Stats" page. - fixed: one of the snow-sand transition tiles was missing. - fixed: the Edit Branch window in the dialogue editor was maxing out at 6 actions due to failure to offer the player an option to turn to page 2 upon hitting that number of actions. - fixed: when placing multiple characters onto the same space in the map editor, the Undo function would sometimes remove the wrong character from that space. - fixed: summoning the console when in the middle of dialogue would not feed the console the dialogue context, potentially causing it to throw an error when running dialogue navigation actions like GoTo. - custom menus now support hidden buttons: buttons that are defined but not shown to the player unless unhidden via a script action. - the "hidden" property of custom menu buttons may now be edited within the cut scene editor. - the cut scene editor now supports an unlimited number of gray-outs and warnings for each custom menu button (with each delimited by |s). - new unit tag supported: Inactive. Causes the AI to skip the unit's turn each round while the tag remains. (The only action a character tagged Inactive will take is to swim back to land if in water or lava.) Useful for stealth missions! - new special character supported: -DATE-. Spells out the current date with the day of the month, the month name, and the current year. - commas no longer break the text within letters and other documents displayed via the ShowReport script action. - new script action: AddBark. Dynamically adds a new combat bark to a character's stable of barks. - new script action: ShowMenuButton. Shows a hidden button within a custom menu. One parameter: button name. - new script action: HideMenuButton. Hides a visible button within a custom menu. One parameter: button name. - new script action: EndUnitTurn. Lets you forcibly end the named character's turn. - new stats supported by Stat script actions: Health % Left and Energy % Left. These return a number between 0 and 100 reflecting the percentage of a character's health or energy that remains. - 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.) - 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. - custom strings can now be used as the loadID for unit spawns in battle. - custom integer values can now be used in place of victory aura, victory morale, and defeat morale effects for battles. - new optional parameter for GenerateUnique and GenerateUniqueFromNPC script actions: Force Personality. This forces the character to be generated with one particular personality type that you specify. - improved documentation for the generate inventory parameter for the GenerateUnit, GenerateUnique, and GenerateUniqueFromNPC script actions. - updated documentation with explanation for how to make a ModSkill tag affect all skills. - fixed: the Regenerating sprite was missing from the campaign creator's TextSprite documentation. - new special character supported in dialogue: -BASECLASS-. Like -CLASS-, but it gets swapped to the base version of the character's current class instead. - new special characters: -CLASSID- and -CLASSID2-. These refer to class loadIDs, whereas the old -CLASS- and -CLASS2- special characters now refer to localized class names. - added -CLASS2- documentation to the campaign editor's in-game reference. - improved Guide documentation for the -NPC:Attribute Type|X- special character. - fixed incomplete Guide documentation for the AggroGroup script action. - fixed: particularly long topics in the Guide could overflow their text fields. - added parameter count checks and error logging to a [i]bunch[/i] more script actions. - the XML saving class in the campaign editor now gives specific feedback on the error when an xml file fails to save. - proc gen battles now accept premade character types, not just proc gen characters. (Just use a loadID in place of the character class, with a : in place of the /.) - proc gen battles now accept destructible object assignments to particular armies. - the game now supports designated "spawn regions" for deployment spaces, groups of characters, and groups of objects within proc gen maps, forcing each to spawn within certain defined areas of the map. (Spawn regions are defined the same way as custom areas are.) This makes proc gen defend maps much more doable. - fixed: when editing a branch in the dialogue editor, swapping action positions on the second page of actions was not functioning properly. - fixed: in the dialogue editor, a range error could occur when changing the trigger for dialogue and then making further changes. - fixed: the game was not accounting for skills like Sprint and Engine Boost when calculating where enemies could reach for purposes of determining unit placement in proc gen maps. - fixed: in proc gen battles with more than two armies, the unit spawning algorithm was inappropriately counting units from earlier armies toward the group number for a subsequent army's groups, resulting in those later groups consistently clustering near the edges of the map. - fixed: predictive text results for the music input field in the map editor had gotten misaligned at some point. - fixed: promoted characters who reclassed to a new base class would learn a slew of the new class's skills upon leveling up once, as if their true level had been spent in that class. The game now tracks the character's level at the moment of their last promotion, resets it to zero upon changing to a new class, and uses this level for skill progression purposes. - fixed: characters who were reclassed to a base class post-promotion would promote again upon gaining a level in their new base class. - fixed: reclassed characters could still sometimes end up learning duplicates of known skills. - fixed: the game could silently reject available promotion options without logging a reason. - fixed: the report screen was not hiding the dialogue menu as intended when the ShowReport script action was used in battle. - fixed: the game would throw a range error if a zero-length string was passed as the parameter for the SetNextScene or NewScene script actions. - fixed: calling the SetValByEvent script action without its optional fourth parameter would produce a range error. - fixed: the "remove" button for armies within the map editor's army sub-editor inappropriately appeared above the tooltip explaining different AI profiles. - fixed: recruitment broke when asked to generate pre-promotes due to a faulty detection mechanism for level ranges versus open-ended minimum levels in class data. - fixed: the game was using an incorrectly formatted parameter to reset the days passed in memory when starting a new campaign. - fixed: wounded characters could still use items in their character screens. - adjusted the positioning of the spike trap holes so they no longer hang over the edge on transition tiles. - when the player uses a consumable whose only function is to alter properties of equipment, the game now checks to confirm that a valid item is actually equipped before letting the player use the item. And now, one final surprise: Telepath Tactics Liberated now officially has localization support! Note that this doesn't mean I am actually going to get it professionally localized--sales need to actually justify the cost of hiring a localization firm, and so far they unfortunately haven't. However, full localization is now [i]technically[/i] possible, which is a far sight more possible than it was before! Other news: you might also notice that the version number jumped from 1.0.50 to 1.0.52 with this update. That's because 1.0.51 was the launch version for GOG! That's right: TTL is now available on two different storefronts. (Very exciting, I know.) Pushing 1.0.52 to both platforms is just a way for me to keep the version numbering consistent. [h2]The End?[/h2] Anyway, that's all I've got for you on TTL! Maybe I'll change my mind and push another update in the future, but as of right now, this is it: the finished game. I still have so many game ideas--and limited time in which to make them real. For more tactics in the Telepath style, make sure to check out [url=https://store.steampowered.com/app/1267210/Together_in_Battle/]Together in Battle[/url]! That game has been in early access for eight months now, and it just keeps getting better and better. Early issues with economic difficulty balancing have now long since been smoothed out, and TIB is starting to attain some pretty insane levels of depth and variety. If you've been hesitating to give it a try, now's a pretty good time to come on over and give it a shot! I hope to see you there. 😉 Tactically yours, Craig