Telepath Tactics cover
Telepath Tactics screenshot
Genre: Role-playing (RPG), Strategy, Turn-based strategy (TBS), Indie

Telepath Tactics

Version 1.035

Hey guys! There were some bugs that snuck into version 1.033 which needed addressing, so I took the liberty of quickly knocking them out before getting caught up in a big, involved rewrite of the game's inventory system. Here are the changes since version 1.033:

- fixed a bug in which character portraits would not load in deployment tiles on the battlefield.

- fixed a bug in which certain newly recruited characters (ones who weren’t under your control in a previous battle) would not show up in the Reserve Supplies screen during deployment.

- fixed portraits not appearing in the detailed info screen when right-clicking deployment tiles.

- fixed portraits not appearing in the reserve supplies screen.

- recoded the function for generating the common inventory screen so it loads your characters in roster order rather than in order of appearance in the save file.

- updated the code for saving changes to the common inventory so as to prevent unintentional array coupling.

- fixed the properties for a few chasm tiles that the game was erroneously treating as regular dirt ground tiles.

- fixed another bug that was preventing tags reducing the cost and range improvements for promoted character attacks from affixing properly.

- fixed a bug in which the game would not load Header.png from custom campaign directories.

- you can now include custom sound effects within a custom campaign folder: stick each one in the subdirectory Data/Sounds, just as if it were an asset in the install directory.

- put in a procedure to have the game dynamically check for sound files before it tries to play them, thus preventing errors where the game freezes due to attempts at playing a nonexistent sound file.

- added a process to catch and correct the wrong campaign getting saved in save files. This should address issues with older saved games not loading properly.

- added documentation for how to package up a custom campaign to the game manual.


--Craig

Version 1.033

Hey guys! Sorry for the unusually long period between patches–I just moved to a new apartment this Sunday, and I only just got my internet turned on last night! Despite the delays, I’ve still been working on new features and fixing existing issues. Here are the changes in version 1.033:

- fixed a bug in which doors which are set to Locked with an OnLoading-triggered script action would sometimes glitch out and become impassable.

- addressed some of the remaining slowdown by calling garbage collection whenever a player’s turn starts (while the “Player’s Turn” splash is displayed onscreen), and whenever an attack sequence ends.

- put in a process to clear listeners from inventory slot boxes after they load, which should help optimize the game a smidge.

- fixed a bug in which the game would get stuck in a loop in the conversation preceding the caravan battle if Louise Legerdemain is dead.

- fixed a bug in which the game was not applying the tag to reduce the Energy cost for certain attacks (as with the promoted psy classes in the main campaign).

- fixed a bug in which it was possible to move between spaces with large elevation differences using Swim.

- made some balance tweaks to the Assassin class in the single player campaign: dropped the backstab multiplier for Knife from 2.25X to 2X, for Stab from 3X to 2.25X, and Mega Stab from 3X to 2.5X. Increased the sidestab multiplier for Mega Stab from 1.5X to 1.75X.

- Annel Stormhunter now has a bit of dialogue when he leaves the group after the battle in Coria’s streets (assuming you talked to him and he survived the battle).

- removed the “Promotable” tag from Sarn Kamina (as there is no promotion class for Gasul).

- fixed a bug wherein Siripent had the wrong class name (Lizardman instead of Barudit), which in turn glitched out his class promotion.

- fixed a bug where Malcolm Eichan’s name and portrait were mistakenly shown instead of Harriet Glaive’s during the final line of Malcolm Eichan’s death scene.

- fixed a bug in which Oliver Spenks would not be added to the player’s roster of useable characters after landing on Kovit.

- fixed a showstopper bug in the game that would occur if playing in Windows and you had no audio device enabled for playing sounds on your machine.

- fixed a bug in the basement of the bandit fortress that permitted players to advance before recovering the map to the mines.

- and finally, I added in an important feature that has been requested by folks working on custom campaigns: you can now include custom artwork right in your custom campaign folder, and the game will autodetect it and load it at runtime with no further effort on the end-user’s part! Custom sprites that now work in this way include: character portraits, character sprites, destructible object sprites, item icons, and attack icons. More info on how to make sure the game detects them in the devlog: http://sinisterdesign.net/forum/index.php?topic=1224.msg48461#msg48461

That’s it for now, but I’m continuing to plug away! I’ve recently learned that the inventory bugs have survived my most recent attempts at killing them–I’ve decided that a complete rewrite of the inventory code is in order, as small tweaks beneath the hood are clearly not getting the job done. That will be the focus of version 1.034. Once that is done, I’ll be doubling down on optimizing the game and killing off all of the remaining causes of slowdown that I can.

Version 1.032

Hey folks! I just pushed another quick (but important) update:

- fixed a bug that I accidentally introduced in version 1.031 where the game would not save changes to your characters–or their equipment–in between battles. (For players starting new games, this manifested in the form of Emma being back to level 1 with 0 experience and not having her swords available at the start of the fight with Zash and Red.) Needless to say, I just about had a small heart attack when I woke up this morning and found this bug. It's all fixed in version 1.032, though!

- new script action: GetCharsDist. Finds the distance in spaces between two named characters, sets the custom value _Dist to that number. Two parameters: the name of the first character, and the name of the second character.

- new script action: GetCharSpaceDist. Finds the distance in spaces between a named character and a given space on the battlefield, then sets the custom value _Dist to that number. Three parameters: the name of the character, the space’s y coordinate, and the space’s x coordinate.

- added a script to the training battle with Emma and Silithis so that if the _Dist between them is 1, it skips the instruction “To attack, move Emma right next to Silithis.”

- added documentation of all the new array script actions to the manual.

I would've waited and pushed a bigger update, but that save game bug was too serious to let it sit around. Now that that's squashed, it’s back to work on performance improvements and Mac compatibility stuff.

Version 1.031

Hey folks! Telepath Tactics was selected for the indie expo in Power of Play this weekend, so I was out there showing off the game. This cut into bug-fixing time somewhat, but I still managed to squeeze in a cluster of bug fixes and improvements for a new update:

- newly spawned reinforcements can no longer attack on the same turn they spawn (though they can still move around).
- you can now increase the size of the font that appears in those little pop-up info boxes when mousing over characters, objects and interface buttons.
- info boxes now dynamically resize vertically (they already did that horizontally) to accommodate the larger supported font sizes.
- increased the font size in the detailed character screen from 11 to 12.
- the game now ties changes made to character inventories in the reserve supplies screen to the individual characters’ names rather than saving them numerically by character slot. (This is me taking another stab at killing the inventory swapping bug–hopefully this was of the “fatal backstab” variety.)
- fixed a bug in which changes made in the reserve supplies during battle would be saved even if were in the middle of a battle, long after you finished deploying characters.
- fixed some more edge cases where it could end up glitching out the game if an enemy was killed by wandering into a trap.
- fixed a bug in which Louise could show up in the ending even if she died or left the group earlier on.
- fixed the scripting in the chat immediately preceding the caravan battle so characters who may have died at Adelbrae don’t show up and talk.
- you can now right-click the portraits of characters who’ve been recruited but haven’t appeared on the battlefield yet (like Meridian right after you rescue her) during deployment / in the common inventory.
- pulling the lever on the ground-floor Coria Dogs battle now spawns a chest with special loot inside.
- expanded the range on psy user buff abilities (blinding cloak, frost armor, etc.) from 1 to 0-2.
- added a new legendary weapon to the game: the bow Lyrio. Strength 11, Accuracy +100, gives Range +1 to all ranged attacks. Can only be found as a rare spawn in chests / in the crypt mission.
- added flails to late-game stores.
- added a sound effect for Hover.
- the game now supports a new type of custom variable: arrays! This is big news for modders who want to script more complex content.
- there are a bunch of new script actions relating to the creation, pruning, and general usage of arrays: SetArr, GetArr, DelArr, ShuffleArr and ForArr. I haven't had time to add documentation on them to the manual yet, but you can find info on using them over on the developer's log if you want a head start.
- changed ITEMVAL format from -ITEMVAL:X- to ITEMVAL[X] to make it easier to nest the -STR:- and -ARR:- special characters inside it.
- created a store with randomized item selection inside it in the Recruitable Chars stub campaign using custom arrays; feel free to steal it for your own creations!

That’s all for now. More bug fixes and improvements are in the wings, so stay tuned! (I understand that performance is still an issue for many of you, so making more improvements in near the top of my to-do list.)

Version 1.03

Hello everyone! You’ll be pleased to hear that I’ve finally tackled the game’s performance issues, wrestled them to the ground, and taken their lunch money. That is, uh…I may have lost track of where I was going with that metaphor. Anyway! The point is, Telepath Tactics is now running smoother and faster than it has run in months–nearly all of the slowdown that was occurring during larger / longer battles has now been eliminated.

Here’s the full list of changes in version 1.03:

- improved game performance on maps with lots of characters and objects, and massively reduced slowdown on big battles.
- fixed a bug where the game would freeze if the last enemy left on the map died from burning.
- fixed a bug where you could undo scripted character movement in cut scenes by pressing Z immediately after the game handed the player control.
- fixed an exploit where the player could use the same “unlimited use” ability over and over in the same turn to grind experience. Abilities now grant experience no more than once per turn, no matter how often they are used.
- fixed a bug in the save game code where dead characters weren’t getting clipped out of the current character roster until after the roster had already been saved.
- cleaned up the roster-saving code to ensure that it wasn’t getting inappropriately entangled with the army roster array used in the main game (which could have resulted in character deaths getting saved–or character recruitments getting saved–even if the player restarted the battle before completing it).
- added an extra check to the function that adds characters to army rosters to prevent the adding of duplicates.
- fixed a bug in which characters who take fatal damage from being shoved into a trap would remain on the battlefield with 0 (or negative) health.
- added the ability to drag the deployment window around while placing your characters before a battle.
- added the old Instant walk speed (i.e. skipping super-fast between spaces) back into the game as a fourth character movement speed option, “Turbo.” (Instant remains actually instantaneous.)
- fixed a bug in the battle with Gunther Lathe, the battle in The Teeth, and the battle with Leon Hart where the battle would not end as long as you left a thief alive to wander the battlefield.
- fixed a bug in the Coria pick-pocketing scene where the map to the mines would remain in the common inventory if you’d had Emma drop it there.
- fixed a bug where, if the player selected a campaign other than The Vengeance of Emma Strider, then loaded a save slot featuring a different campaign, then quit and returned to the Campaign menu and hit the New Campaign button, the game would start the campaign they’d most recently loaded instead of the campaign that remained selected on the drop-down menu.
- fixed a few chasm tiles on the Mines Entrance map that had the incorrect elevation.
- fixed the description of Kinetic Wave.
- fixed a bug where a character could use an item, the player could undo, and the item’s benefits would be erased while the item did not get its use back. Using an item now simply prevents the player from undoing back to before the item was used.
- bumped up the base damage on Poison Bolt.
- added a second chance to inflict Stunned status to the cavalier attack Charge (effectively doubling its chance of inflicting Stunned status, and potentially stunning the target for two consecutive turns instead of just one).
- fixed bug with unequipping items in the reserve supplies screen.

People have mentioned that the inventory swapping bug was often accompanied by characters spontaneously swapping places in the roster–it is my hope that the fixes and improvements I made to the game’s handling of the character roster will fix the issue (though I can’t make any promises, as I’ve never been able to reliably reproduce the bug).

As always, if you find a bug, don’t forget to hit ‘L’ to save a log file and report it on the Sinister Design forums! That way I’ll be able to address the issue super quickly. Until next time!

Version 1.029

Hello everyone! You guys have been really good about filing bug reports this past week--so good, in fact, that I've been scrambling to keep up with them all! Great job. Because you all have been so diligent, this update has a lot of bug fixes (plus some other goodies that I felt the game needed):

- I made it so the "Instant" walk speed is now actually instantaneous; characters now immediately blip to their ultimate destination when they go to move on that setting (though crucially, they will still get stopped and trigger traps if they try to move over them).
- fixed more inventory bugs. Dropping a character's item in the reserve supplies screen will no longer cause other items belonging to that character to spontaneously come unequipped or disappear.
- I'm no longer able to reproduce the inventory-swapping bug, which makes me think I may have finally (hopefully?) killed the thing.
- you can now right-click character portraits for detailed info when managing your reserve supplies in merchant scenes and during battle (i.e. not just during character deployment).
- pixeled new graphics for the steel sword, steel lance, steel spear, and steel axe so that they are visually distinguishable from the iron versions.
- the game now gives you visual feedback when item sacks are getting auto-looted at the end of battles that have Post-Battle Looting enabled.
- the game now plays a sound effect to provide audio feedback when a character's weapon breaks.
- fixed a bug where decoys did not actually appear on the battlefield when using Harynx's Decoy ability.
- fixed a bug where visual attack effects would show up beneath enemies whenever the attacker faced down.
- fixed an exploit: characters can no longer unequip speed-boosting items after they have moved. (If you undo the character's move back to where they have taken 0 steps, you'll be allowed to unequip the item.) This has the added benefit of sidestepping bugs that use of this exploit was causing.
- fixed a bug where the game would freeze if you tried to move characters whose speed had dropped below 0.
- fixed a bug in which characters whose strength, psy power or psy defense went into the negatives would have those stats wrap around to some absurdly high number.
- fixed a bug where the game would sometimes try to degrade a weapon that wasn't actually equipped and freeze.
- fixed a bug in which the game could freeze during the bridge battle if you had characters in the water, taking drowning damage right after the conversation where the enemy engineer lays explosive charges onto the bridge.
- added a new 6-player multiplayer map to the game: Sunken Fortress.
- fixed erroneous placement of player boxes in the local multiplayer new match menu when playing maps meant for more than 4 players.
- fixed a sorting issue in the local multiplayer view army menu that placed the "Remove Unit" text above the Add Character drop-down.
- fixed a bug that was causing the game to lock up when capturing the flag in a local multiplayer free-for-all capture the flag match.
- applied missing lighting to braziers, candelabras, and lamps in the "Default" and "Bases for Generals" local multiplayer rulesets.
- added ambient sound effect loops to certain maps that were missing them.
- put in some extra code to automatically stop sound effect loops playing in the background when a local multiplayer match ends.
- new condition: Attack Bridges; this tells the AI whether to treat player-built bridges as an attack target. Attack Bridges is now set to false in the outdoor battle escaping the bandit fortress.
- added score bonuses for prematurely eliminating Gulch and Fera during those battles in which they're supposed to be all but untouchable.
- added monologues to Gulch and Fera if you take them out during the second battle escaping the bandit fortress.
- added coins to more of the enemies in the outdoor bandit fortress escape battle so the player will be in a better position to reequip when Gonif Bastid shows up two battles later.
- put a turn time limit on the battle at Adelbrae so you can't just exploit it endlessly for experience (or spend absurd amounts of time trying to loot every chest).
- updated the objectives text for the battle at Adelbrae to more accurately reflect its win conditions.
- switched the order of the two cut scenes following the battle at Adelbrae; the story flows more naturally that way.
- the game now creates a human-readable document with a .TTsav file extension whenever it saves the game, then saves that document in Documents > My Games > Telepath Tactics > Saved Games. You can open it with any text editing program; it lets you see all of the data that went into the actual saved game file (though it is not actually the save file itself). This will help me fix bugs.

Phew! That was a lot of stuff. I'm now ready to get started on performance improvements--that will be my focus this weekend, with version 1.03 to hopefully drop next week. Until next time!

Version 1.028

Howdy folks! I've been working my butt off to fix the game's remaining bugs--among other things, I believe I may have finally fixed the inventory swapping bug. Here is the list of fixes and improvements:

- fixed the inventory swapping bug? (fingers crossed really hard!)
- fixed bug in which characters would get to keep acting after leveling up from what should have been a turn-ending attack.
- fixed a bug that was causing the game to screw up when using the RecruitChar script action during a static cut scene (as in the cut scene right after the apple-picking mission).
- fixed a game-freezing bug involving the drawbridge in the bandit fortress escape.
- fixed a bug where Shadow Blast's range somehow became set to 2 instead of 2-3.
- split off the intro dialogue to the Meridian rescue battle into its own scene so you don't have to go through it all over again every time you lose that battle.
- bumped up the amount of money Gonif Bastid gives you after the caravan battle from 350 to 480, to make things easier for players who've taken losses (or who haven't yet figured out how to conserve their supplies).
- recoded the game's handling of animated character health and experience bars; it's now cleaner and more optimized.
- fixed a bug in which the game didn't save the assigned sex of recruited "Either" characters. Now it does.
- fixed a bug in which level up data was not transferring over to new scenes with generic, randomly named characters. Now it does.

Those last two fixes concern generic character recruitment, the template for which has been updated on the Sinister Design forums.

With this fixed, I'm moving on to figuring out performance improvements for larger battles in version 1.03. Until next time!

Version 1.026

Hey folks! I’ve uploaded another small update with a few vital fixes while I work on untangling the mystery of the inventory swapping bug and performance issues! The changes:

- fixed the bugs that were preventing characters from promoting upon reaching level 20. (Yes, there was more than one.)
- fixed a bug in which the game would freeze when the drawbridge lowered in the second battle escaping the bandit fortress.
- fixed a bug in which Harriet Glaive would give a death monologue and permanently die if killed in casual mode. (She now properly obeys the non-permadeath rules of casual mode.)
- reduced the levels of the two crossbowmen who pursue Annel Stormhunter to level 3, making them a bit weaker and easier to respond to when they appear.


I’ve also been making some tweaks to the engine to properly support campaigns with recruitable “generic” characters (a la Final Fantasy Tactics). To this end:

- fixed a bug where the SpawnChar script action would not correctly assign a sex to characters with sex “Either” (or correctly assign a name to characters with name “random”) that had been spawned by class name rather than by character name.
- you can now use ID tags with the RecruitChar and DismissChar actions–this makes it so you don’t have to know the assigned name for a “random” character in advance, prior to recruiting (or dismissing) them.
- new script action: SetStringByStat. This sets a string equal to a character string stat.
- added Name, FirstName, and LastName to the list of useable IfStatGoTo string stat name parameters; these can be used in combination with the ID tag and SetStringByStat to return a character’s full name (using spaces), first name, or last name, respectively.


Taking advantage of these new features, I’ve uploaded a bare-bones system for generic character recruitment to the Sinister Design forums for players that want to use it in creating their own campaigns.

This wraps up all of the serious, easy-to-fix bugs that have been reported in the game. Inventory swapping and performance will take a bit longer to resolve than the other ones–they will be resolved by version 1.03. Stay tuned!

Version 1.025

As part of my ongoing effort to destroy every bug and improve the experience of playing Telepath Tactics for everyone, I’ve updated the game yet again! This brings us to version 1.025. Here are the changes:

- you can now right-click character portraits during deployment and on the reserve supplies screen to bring up the character details window! No more having to remember all of your characters’ attributes when deciding whom to field or where to distribute supplies and equipment.
- fixed a bug in which the game would not load more than 7 of each character’s attacks at the start of battle, even if the character actually knew 8 or 9 or 10 attacks.
- fixed a particularly annoying bug in which the actions window would sometimes spawn offscreen if you started a battle while in windowed mode.
- fixed a bug in which the player could open up the settings menu during the enemy turn and surrender on the enemy’s behalf, then get the Victory screen.
- the save file for procedurally generated levels now displays the type of procedurally generated level as the level name instead of a crazy string of words, numbers, and punctuation marks.
- fixed a bug in which the Map to the Mines remained in Emma’s inventory even after it should have been gone.
- fixed a bug in which player-built bridge tiles with characters standing on them would not be removed from the path of the drawbridge before the stone bridge spawned in the bandit escape mission, leading to situations in which the AI characters would target the old bridge for attacks as if it were still there.
- changed the contents of the treasure chests in the Defending the Camp battle from bandages and focus pills to things that are more useful and interesting.


I’m not done with implementing fixes to all of the issues players have brought to my attention, but we’re getting close! The game’s bugs list is much, much smaller than it was a week ago. There are a few bugs still left to tackle, though, plus the matter of fixing poor performance during some of the game’s larger battles. Those remain for fixing in version 1.03, which I will be getting started on as soon as possible!

Version 1.02

Hey folks! I'm continuing to go through everyones' feedback and mow down bugs / make improvements to the game for you all. I'm not finished, but I'm making some pretty good headway! Here are the changes since version 1.01:

- manual saving! Specifically, you can now open the Save Game menu and manually save your game in a different save slot during deployment at the start of each mission. (For non-deployment missions, I'll be putting similar functionality into the main Options menu in a future update.)

- fixed a bug where the game would freeze during the computer's turn if the only enemies remaining in the computer's army could not move due to being frozen or stunned.

- fixed a bug where the game would freeze if the last remaining enemy died at the start of the computer's turn (as from burning or drowning).

- fixed a bug where characters killed by the DamageChar and DamageCharAt script actions (e.g. characters caught in the drawbridge during the bandit fortress escape) would continue wandering around with negative health.

--fixed a bug where the game would sometimes end a random character (or object)'s turn when a trap killed an entirely different character in the middle of his / her move.

- fixed a bug that prevented you from recruiting Meridian if you somehow managed to kill every enemy during her rescue mission.

- found and fixed typos in the Meridian rescue mission that unintentionally rendered the task of killing all enemies there much easier than I had intended. (Unless you're a tactical genius, you're basically supposed to flee the battle at some point.)

- fixed a bug where battle primers would not give characters who used them experience points during free exploration mode.

- characters no longer get more counterattacks from leveling up once they reach 4 counterattacks; they'll improve a different stat instead.

- changed the after-attack effects of Awareness, Levitate, and Hover from Unlimited to Use Once so as to avoid over-exploitation of these abilities for experience points. (All of them are really only useful once per turn anyway.)

- increased the size of the text in drop lists somewhat (from font size 11 to 12).

- fixed an annoying UI thing where the cursor would remain a hand after mousing onto the common inventory or deployment screens; it now turns into an arrow for more precise clicking.

- fixed misalignment of certain UI elements in the New Match menu when selecting a Capture the Flag match.

- crossbowmen can now wear leather armor, chain mail, and iron helms. Arbalists can now wear those things, plus partial plate.

- added some extra scripting functionality to the game for modders. (More details on those in the devlog.)

- updated the game manual with some corrections and missing documentation.


Oh, and speaking of modders--the game has been out a week, and we already have 10 mods in the Miscellaneous Mods subforum! It's pretty exciting. I can't wait to see what sort of campaigns you guys create. :D

I know that that isn't every bug, but that's the lion's share of the serious stuff, and we're rapidly winnowing down the list! I'm hard at work on fixing the game's remaining issues. Stay tuned for version 1.03!