Version 0.9.00: new investigation, battle, events, match types, and upgrades!

Greetings, tactics fans! I'm pleased to report that I showed Together in Battle at the first-ever [url=https://www.indiecitygames.org/chicagoindiegameshowcase]Chicago Indie Game Showcase[/url] on November 2nd, where it was well-received by SRPG enthusiasts. Apart from that, I finally got to have a relatively quiet month this month, so I took advantage of the lull and pushed hard to get a lot of things done in as short a time span as possible. My main focus this month was on fleshing out the endgame experience, adding new content and wrinkles to keep things interesting. Let's get right into what's new! [h3]First, there's new events and late-game character advancement content![/h3] [list][*] wrote multiple new investigation scenes following up on the Wailling interrogation! [img]{STEAM_CLAN_IMAGE}/37433648/07f62a583b8d236bccdf3028d767c27ca6595e82.png[/img] [*] created a new investigation-related plot battle! [*] the game now supports a separate "morning event" pool for things that can randomly occur when you first arrive in town for the day (such as heat waves). [*] created a new morning event that gets added to the morning event pool after the first week of Duomensis: you encounter men recruiting for an organization you've never heard of before... [*] created a brand new, recurring event chain that can start appearing partway through Duomensis. I'm going to be vague about this one for spoiler reasons, but I think it adds a [i]lot[/i] to the game's atmosphere and feeling of stakes--and offers a new method for further upgrading characters who've reached the end of their skill progressions. [*] speaking of new methods of character advancement, I've created a whole bunch of unique books (19, to be exact!) that serve as endgame upgrade items. Rather than explain what they do, I'll just list the titles here and let you all figure it for yourselves: [list][*] Arrowing Around Armor [*] The Avenging Arbalist [*] Bambi Must Pay: A Guide to Hunting [*] Concussive Cryo Blasts [*] Cooking: From Mediocre to Master [*] Dive and Ditch: A Swooper's Guide [*] Don't Make the First Move [*] Gust with Gusto! [*] How to Make Enemies and Influence People [*] Leveling Light Blasts [*] Motivational Speaking For Beginners [*] Powerful Pyro Blasts [*] Quiet Mind: Focus Under Stress [*] Self Defense and You [*] The Self-Sustaining Mentalist [*] Shield Pray Love [*] Staggering Shadow Blasts [*] Swifter Sword: Triple Strikes and More [*] Walking But Faster: A Primer on Sprinting[/list] But that's not all... [h3]I also boosted the selection of battle conditions that can occur during arena fights to keep things fresh in the mid and late game:[/h3] [list][*] [b]new arena battle condition[/b] that can appear starting in Monkey League: [i]Inspirational Leader[/i]. The opposing team has a very strong, unique, named character as their team leader--as long as this character is on the field, the enemy team will have maximum morale (with its attendant energy recovery, damage, and accuracy boosts) and your own team's morale will be reduced by 3. Taking down this character will flip the tables, undoing the maximum-morale effect on the enemy team, undoing the -3 morale effect for your team, and giving you an additional +2 morale across the board. [*] [b]new arena battle condition[/b] that can appear starting in Gharial League: [i]Attack the Idol[/i]. The player must destroy the enemy team's idol to win, with a strict time limit in place and the enemy team playing defense. [*] the arena battle condition where fans request the player avoid using a skill now increases to forbid [i]two[/i] skills when in Snow Leopard League or Tiger League for an added challenge. [*] the "weather" condition type for battles in Tiger League can now also produce snowstorms or fiery ash, not just rain.[/list] [h3]On top of that, I made a slew of UI improvements:[/h3] [list][*] the equipment sorting algorithm has been improved! The game now sorts equipment more intelligently, grouping them according to mastery type and then name. [*] armor appearing in the shop is now auto-sorted by body part, mastery, and name. [img]{STEAM_CLAN_IMAGE}/37433648/f875750815719c714ebab7c04d339ea0039cb53f.gif[/img] [*] character tooltips in battle now show the character's current base dodge chance (accounting for status effects, the effect of the terrain they're standing on, etc.) [*] significantly reduced the delay on showing each objective when auto-displaying objectives at the start of a battle. [*] the game no longer shows auto-displays objectives during the Qualifier tutorial map. [img]{STEAM_CLAN_IMAGE}/37433648/62bd0161998284fc81d07c1f13eca85c44982953.png[/img] [*] numerous status effect descriptions now show both the relative percentage and the flat value of the effect. (Note: this fix will cause a few minor aspects of saved status effects to break, but nothing too serious.) [*] replaced the word "aura" with the symbol for aura wherever it appears in the UI (with the exception of the info bar tooltip for the aura symbol, of course). [*] key words in the game's tutorials are now bolded to help emphasize the topic being discussed. [*] when starting a new game in a slot that already contains a saved game, the game now specifies which slot you are about to overwrite in the warning message. [*] when saving mid-battle in a slot that already contains a saved game, the game now specifies which slot you are about to overwrite in the warning message.[/list] [h3]And on top of [i]that[/i], we also have a variety of miscellaneous additions and improvements![/h3] [list][*] wrote a new late-night random event that can occur if the player has recruited a spirit. [*] [b]performance optimization[/b]: broke out the default character sprite shader into spirit- and non-spirit variants to cut down the number of colors that need to be palette-swapped each frame. [*] [b]performance optimization[/b]: certain properties of skills are now checkable as booleans to reduce the amount of time the game AI needs to check them. [*] [b]AI improvement[/b]: when scoring moves for an army that has units it must protect due to a Protect Char victory condition, the AI now prioritizes proximity to targets needing protection much more heavily under most AI profiles. [*] [b]new AI behavior supported[/b]: linear paths. A character can now be scripted to follow a linear path to its conclusion without looping (as it would with the existing "patrol" behavior). [*] [b]new AI behavior supported[/b]: AI controlled units can now be forced to use Create skills via [i]SkillPreference[/i] tags. [*] halved the value that the AI attaches to Preempting and Move Bonus status so it spams skills granting it these statuses less. [*] if a character becomes stunned, frozen, or enthralled, any holds they may have on the battlefield are now cleared. [*] adjusted item attribute availability for certain underwhelming weapon modifiers at the upper end of the quality range to help ensure that proc gen weapons at the top of the quality spectrum are consistently amazing. [*] the Family Weapon event can now produce unique wrenches and claws in addition to the other weapon types. [*] new item: Master Lockpicks. These are like normal lockpicks, but they grant +2 Reflexes when equipped and have unlimited uses. [*] new skill: Nimble Stance. Grants +20% Dodge, +1 Reflexes, and +1 Counterattacks until the user's next turn. [*] Douse now deals a flat 50 damage to Fire (typically extinguishing it outright) rather than merely increasing its Heat resistance. [*] reduced the base, unscaled experience gain from using a Shield skill on an ally from 15 to 12 to help reduce the tendency of healers to out-level other characters. [*] skills with the premise of applying multiple hits (e.g. Double Strike) can now apply BonusDmg, ModSkillPower, ModSkillSFX, and other similar tags multiple times per attack. (Double Strike, for instance, now applies each such tag twice when the skill is used.) This should help to support the main strength of the swordsman class line: being able to maximize the effect of weapon modifiers with numerous attacks. [*] promoted spearmen now get a buff to Trade as part of their natural skill progression, allowing them to use a skill after swapping spaces with an ally. [*] increased the Perception stat for lit braziers created by engineers; they now reveal fog of war 3 tiles out instead of 2. [*] the engine now supports camp activity narrations that require custom integer or string values to match (or to not match) before they can be chosen, allowing narrations to be contingent on what has happened in the game in general. [*] characters will now sometimes discuss events currently occurring in the game's plot during idle chatter in camp! There are now 17 new talk narration lines implementing this. [*] to allow for more interesting and memorable proc gen character lines, the engine now supports unique lines that can only be assigned once ever in any given playthrough! [*] wrote new, unique background lines for former blacksmiths, soldiers, sailors, lawyers, professors, bounty hunters, burglars, and pickpockets. [*] wrote a new preferred character expletive: "Son of a mustebeast" [*] characters in camp now have a distinct preference for spending time with whatever [i]single[/i] character in camp they are closest to. This should help characters to actually reach the end of their relationship-building progressions with at least one other character. [*] if no one cleans, the likelihood of camp becoming messy now varies with difficulty: it remains 50% on Brutal, but it is now only 40% on Challenging or Challenging+ and 33% on Relaxed. [img]{STEAM_CLAN_IMAGE}/37433648/fa5b6df85cb8b7299e2c48349753bc8ca7ea6bfc.png[/img] [*] spirits are now created with an unearthly glow to their battle sprites, courtesy of HDR bloom effects. (Note: this change is not retroactive to spirits created in prior versions of the game, who may appear flat black going forward.) [*] spirits and golems are now generated with a tag that ensures they will never initiate a resignation conversation. [*] when a spirit's morale is less than 0, it now automatically recovers by 1 point every evening that the spirit spends resting. [*] character moods can now exclude specific camp activities, not just restrict the character to a set list of them. [*] the [i]Happy[/i] and [i]HappyAbout[/i] moods now foreclose characters from choosing negative camp activities while they remain in effect. [*] the Character Letter event now imparts a weak, short-lived mood. [*] the jobs board is no longer selectable from the main menu in town until Day 4 of the campaign. (This is to prevent new players from rushing off on caravan guard or cavern exploration jobs and getting [i]absolutely wrecked[/i] before they've even finished the tutorials, something I've now seen happen a couple of times during playtesting.) [*] when procedurally generating a character, each geographic region of origin can now impose a new weighted list of possible skin and hair colors for the portrait of proc gen characters belonging to a given species. [*] proc gen characters native to Dese now have their portraits restricted to an appropriate range of skin and hair colors. [*] the engine now supports forcing recruits or unique generated characters to be from a specified region of the world. [*] camp activity narrations now support species and gender requirements for the second participating character. [*] the game now keeps a history of all classes a character has ever been. [url={STEAM_CLAN_IMAGE}/37433648/805a60022d2170dcd46a4b101fcebbcfbf28adbf.jpg][img]{STEAM_CLAN_IMAGE}/37433648/d16d81bb3818a27a1af61a58897a5cc7ce3d43f8.jpg[/img][/url] [url={STEAM_CLAN_IMAGE}/37433648/e00e746d7b1034cd8e2a9523c40376d9655c1315.png][img]{STEAM_CLAN_IMAGE}/37433648/ab93860f508b2dd05d1c5f9a44007c9965b4d53a.png[/img][/url] [url={STEAM_CLAN_IMAGE}/37433648/9bf6d1a94050795cad7e45c4c06f0e9853a0c910.png][img]{STEAM_CLAN_IMAGE}/37433648/f43f6a6ea9bc1de8614a3ed1b42c0389ed9cd9c6.png[/img][/url] [url={STEAM_CLAN_IMAGE}/37433648/bdeba61e4d14c0902651426b161cf573b5b65439.png][img]{STEAM_CLAN_IMAGE}/37433648/8b61cb5bb3f456cdc7f0a2cbe30b32730aecac70.png[/img][/url] [*] received, integrated new cutscene backgrounds: barracks, summer palace front, palace bathroom, and palace kitchen, as well as two new variants of the Kalkerapur Market background. [img]{STEAM_CLAN_IMAGE}/37433648/96b8627e8f5498f74c0ffb9e9fea8b0f49cfecb4.png[/img] [*] the background now transitions to a jobs board variant when you go visit the jobs board in town. [*] you can now use and equip items during the summer palace investigation scene. [*] the locked drawer in the summer palace can now be opened by having a character who either (a) possesses the Unlock Door skill (i.e. they have lockpicks equipped), or who (b) has both lockpicks in their inventory and lockpick mastery.[/list] [h3]We have quite a few bug fixes:[/h3] [list][*] [b]fixed[/b]: due to my failure to call the Close() method on the XMLTextReader object used to download news updates on the title screen, the game would hang when returning to the title screen from a loaded game--and, upon returning a second time, would appear to freeze entirely. [*] [b]fixed[/b]: when engaging the game's auto-move-and-attack behaviors, if the target wasn't in move-and-attack range of the top-scoring skill, the game simply wouldn't move the character or select a skill at all. Now, post-fix, if the top-scoring skill can't reach, the game will instead go through the selected character's other skills in descending order of effectiveness until it finds one that [i]can[/i] reach the target, then will auto-move-and-attack with that skill. [*] [b]fixed[/b]: destructible objects belonging to army 99 were being disregarded as targets by the AI even if an army was assigned to protect them. [*] [b]fixed[/b]: if a character poisoned an enemy or set them on fire and the status effect caused the enemy to die during the AI's turn--and the death both gave the attacker a level-up and triggered their victory bark--then the AI turn would resume immediately upon closing the level-up screen even though the victory bark had not yet been dismissed. [*] [b]fixed[/b]: in battles with more than 8 AI-controlled characters in an army, if the first unit to move used a non-turn-ending skill such as Sprint, the AI would skip over the rest of that character's turn. [*] [b]fixed[/b]: objects could sometimes not be shoved or thrown when atop rugs or other floor objects, as the game could mistakenly treat the rug as the top object on the space. [*] [b]fixed[/b]: when shoving an object across a rug or other treat-as-floor object, the knockback could sometimes fail to initiate as the game would mistakenly treat the rug as a collidable object blocking the knockback from occurring. [*] [b]fixed[/b]: you could right-click a character and open their character screen in the middle of an AI army's turn. [*] [b]fixed[/b]: the level of thieves spawning in the arena during Snow Leopard League remained unchanged from Gharial League. [*] [b]fixed[/b]: if a skill without knockback gained knockback due to a ModSkillKnockback tag, any knockback from that skill would occur half a second after the skill animation began instead of at the moment of impact with the target. [*] [b]fixed[/b]: the game wasn't taking ModSkillKnockback tags into account when showing predictions of knockback and collision damage for skills. [*] [b]fixed[/b]: bonus fire damage and burning status effect were not being applied to Thrust for the unique sword Jwalaa. [*] [b]fixed[/b]: Place Timed Charges had ceased to point to the correct script to actually light the charges on fire. [*] [b]fixed[/b]: Place Timed Charges was missing an animation attribute for the character using it. [*] [b]fixed[/b]: there was no day log created for winning or losing the initial qualifier match--or the two hand-designed tutorial fights that follow it. [*] [b]fixed[/b]: it was possible to perform the summer palace investigation again after successfully escaping. [*] [b]fixed[/b]: if a particular morning plot event ("plot event 5") triggered and the player went on to spend only a single time unit, upon returning to town, the plot event would trigger again. [*] [b]fixed[/b] a scripting error that would have frozen the game if a character undertook the Cook camp activity without a second character available to react to the food. [*] [b]fixed[/b] a scripting error that prevented individualized character morale penalties from occurring in reaction to a character's dismissal from the team. [*] [b]fixed[/b]: the lighting effect for the heatwave event could fail to reapply when returning to town after a 1-time-point activity. [*] [b]fixed[/b]: characters could start conversations with spirits beyond just the initial greeting. [*] [b]fixed[/b]: when using an item that grants the users tags, the game was applying two copies of each tag instead of one. [*] [b]fixed[/b]: the localized battle warning pop-up messages had a missing space. [*] [b]fixed[/b]: Mind Shock's tooltip description incorrectly listed the base chance of stunning the target as 50% rather than the actual base chance (75%). [*] [b]fixed[/b]: some status effect tooltips were using the additive effect value where the text implied it was a percentage (e.g. a tooltip for Weakened showing -2% to Strength when the effect was, in fact, -2 Strength). [*] [b]fixed[/b]: there was no sound assigned to play when clicking the reserve supplies button in the deployment screen. [*] [b]fixed[/b]: text set via the AddObjective script action was not being processed for special characters. [*] [b]fixed[/b]: AddSpeakerPortrait wouldn't work in branch 0 of dialogue if the speaker name was set to -FNAME- and the triggering character was assigned in branch 0's own script actions. [*] [b]fixed[/b]: in the infirmary, if a character could be treated and released that same day, the narration would read "0 day" instead of "0 days" for the duration of their stay. [*] [b]fixed[/b] a scripting error in the summer palace investigation that caused the wrong speaker name to appear alongside dialogue about the locked drawer. [*] [b]fixed[/b]: pronouns and player address text contained in certain branches of the Mustebeast Tent event were erroneously pulling from the chosen bunkmate rather than the character whose tent was sprayed. [*] [b]fixed[/b]: the game would generate item descriptions with a missing spot where the last name should go for lissit characters receiving a unique family mace. [*] [b]fixed[/b]: non-human characters with the Serious personality trait could get a greeting line variant in which they distinguished between their full name and their first name despite the fact that non-human characters do not have names beyond their first names. [*] [b]fixed[/b]: characters could gossip about other teams or their odds of winning the tournament even after the championship match had already concluded. [*] [b]fixed[/b]: a camp talk narration for characters with an unrequited crush had incorrect romance value requirements, ensuring that it would almost never be selected. [*] [b]fixed[/b]: character familiarity comparisons were being calculated incorrectly for purposes of swapping roles prior to initiating the Talk activity. [*] [b]fixed[/b] incorrectly formatted dialogue upon refusing to let a character leave during the Sick Parent event. [*] [b]fixed[/b] potentially awkward wording of a dialogue variant in one of the branches of the Ally Gift event. [*] [b]fixed[/b]: dialogue responses to the arena manager during the second scheduled league match of Snow Leopard and Tiger leagues were incorrect. [*] [b]fixed[/b]: the default character approach lines for floating and non-floating characters were erroneously sharing an ID, potentially leading the engine to confuse them. [*] [b]fixed[/b]: Ishita Svaamee's last name was misspelled in day logs memorializing the events where she appears. [*] [b]fixed[/b] the spelling of the character name Soumil in the character name bank. [*] [b]fixed[/b]: processing of localized UI text was preventing [i]SPRITE[][/i] special characters from working properly in such text. [*] [b]fixed[/b]: a few pixels on the face of the female crossbowman sprite's downward-facing rest pose were not palette swapping. [*] [b]fixed[/b] in version 0.9.00a: upon changing the class of a character who already existed before version 0.9.00, the game would throw a null error when attempting to add to the character's class history, as such characters had no class history list to add to. [*] [b]fixed[/b] in version 0.9.00a: after the update, characters sent away to the trainer ceased returning to camp due to a scripting oversight. [*] [b]fixed[/b] in version 0.9.00a: upon changing a character's class, the game would count both starting skills inherent to the character due to their personality or background and starting skills the character already knew (and which were therefore properly culled from their skill progression, e.g. Mind Blast) toward the number of starting skills to learn, resulting in characters with an excessive number of "starting skills" for their new class, who were therefore almost always prodigies immediately possessing advanced skills the second they class-switched. [*] [b]fixed[/b] in version 0.9.00b: somehow, the file for Battle in the Northern Stepwell had gotten deleted, causing the game to stop progressing whenever this fight was triggered. [*] [b]fixed[/b] in version 0.9.00b: the direct address to the player immediately upon choosing to engage in the Battle in the Northern Stepwell referenced the wrong character. [*] [b]fixed[/b] in version 0.9.00b: when moving an enthralled enemy into fire or non-player-created trap, the game would inappropriately flash a "you are about to move a character into one of your own traps" warning. Proceeding would then cause the game to behave strangely, acting as though the enemy was on a different space. [/list] [h3]And finally, we have--what else?--improvements for people using the campaign creation suite![/h3] [list][*] improved map editor UI behavior: when opening the edit unit properties window, unit tooltips now vanish and cannot pop up again until the window is closed. [*] the skill editor now permits editing the number of hits assigned to a skill. [*] new item icon: Book Orange. [*] new script action: [b]LearnCounterAttack[/b]. Causes a character to learn to counterattack with a new skill; if the character's base counter limit is 0, it becomes 1. Two parameters: character name, skill name. [*] new script actions: [b]IfTilesetGoTo[/b] and [b]IfTilesetRun[/b]. Battle only. Checks if the map has a certain tileset, then runs the script if it does. [*] the [b]UnitsToList[/b] script action now supports three new attribute types: Skill, Mastery, and Item. This allows you to grab (or exclude) characters based on whether they have a given skill, equipment mastery, or item in their inventory. [*] new optional parameter for [b]AddPortrait[/b]: force skin palette. Allows you to dynamically set the skin palette for portraits that support skin palette swapping (most notably the generic portraits). [*] changed the [b]ChangeArmyAI[/b] script action so that the first parameter now asks for army number instead of army name. [*] new condition: [i]Show Objectives[/i]. One boolean parameter. If set to false, the game won't auto-display the objectives for this map. [*] the [i]Capture Char[/i] condition now supports an optional Health Threshold parameter--you can now specify how large a proportion of their maximum health the target must be at or below to be captured. (The default value is still 0.5, meaning 50%.) [*] new unit tag: [i]Path[/i]. Like [i]Patrol[/i], but non-cycling. When the tagged unit reaches the final destination in the sequence, the [i]Path[/i] tag is automatically removed. [*] new AI profile: [i]Protective[/i]. The army will heavily prioritize protecting units subject to a Protect Char condition over all other considerations. [*] split out the multiplier for protecting targets from the self-interested defense weight in AI profiles, allowing fine-tuning of how strongly each type of AI focuses on protecting vital units. [*] new mood types: [i]Afraid[/i], [i]Angry[/i], [i]AnnoyedAt[/i], and [i]HappyAbout[/i]. [*] created in-game documentation of the game's different mood types, now available in the Guide in the campaign creation suite. [*] added [i]Can Attack[/i] to the game's list of accepted post-usage behaviors in documentation for the [i]ModAfterAttack[/i] unit tag. [*] clarified the difference between the [b]LearnCampActivity[/b] and [b]AddCampActivity[/b] actions in the in-game scripting documentation. [*] [b]fixed[/b]: within the campaign creation suite's character creator, equipping a character with weapons, armor, or other items that apply tags would cause the game to save those tags as part of the character itself. [*] [b]fixed[/b]: you could only set a single custom parameter in [b]IfListHasRun[/b] actions unless the Check For Absence parameter was set to true. [*] [b]fixed[/b]: the game was missing support for the name NPC attribute via the [i]-NPC:X-[/i] special character. [*] [b]fixed[/b]: the Damage skill tag (used, e.g., in Pilfer) would not actually cause a skill to damage the target if the underlying skill did not affect Health. [*] [b]fixed[/b]: the game was missing documentation for the first name and last name NPC attributes used with the -NPC:X- special character.[/list] Phew! All right, I think that's everything. [h3]So where are we now?[/h3] With this update, the investigation event sequence is now complete! There's still plenty left to do, but as far as content goes, it's mostly endgame stuff: the final cutscenes, the final battle (which will require commissioning some new battlefield assets), and the game's good ending. Somewhat less crucial yet still high up on my to-do list are a handful of late-game events that TIB currently sets up but which I have yet to make actually pay off via a follow-up event: the big post-championship speech to the team; the event that happens if you choose to double-cross Ishita Svaamee; a personalized random event for paranoid characters; follow-up events with family members who appear in camp; etc. Beyond that, my focus will be on continuing to polish the game and fix bugs. If I have the time, I'd also like to add the possibility of recruitable characters who start off knowing each other from before they signed up; a couple of new physical traits for characters; maybe flesh out the custom character creator a bit more, allowing for player-customized character backgrounds and dialogue. The next two months will be quite busy for me with day-job work and moving to a new place, so we'll see how much I can get done. In short: we're still on track for a Spring 2025 release! Thanks so much to everyone who's played, reported bugs, given suggestions, or left a nice review so far. You've been enormously helpful. Anyone who hasn't left a review yet, please do consider writing one. They make a big difference to Steam's algorithm (and its likelihood of showing the game to others). Until next month! Tactically yours, Craig