After many years of hard work, it's finally done: Together in Battle is now out of early access and released to version 1.0!
I could wax poetic about how long I've been wanting to make this game--about how it's based on a design doc I wrote nearly 13 years ago, all the way back in 2012, and based on design principles I first wrote about all the way back in 2010(!)--but that's all academic. The proof of the pudding is in the eating, as the saying goes--so let's eat!
Together in Battle is 20% off for this week only, so go get it while the getting's good! π
Changelog
...oh. You're still here. You say you want to see all the changes since last month? Okay, fine, fine--I'll indulge you.
Here is what's changed since the last major Early Access version (version 0.9.80):
made the final plot battle and the good ending accessible!
received, implemented a special attack animation specific to the final plot battle.
the shop now has its own dedicated music!
updated the final boss music with a real life vocalist!
there's a new condition that can appear in the lower levels when exploring caverns: a riddle! The player must collect the fragments of a riddle, then solve the riddle to unlock the big treasure.
the army overview screen now lets you see characters who are currently off on jobs, at the infirmary, etc.! Their rows will be grayed out and they will be marked "Absent," but they can still be inspected.
in combat, battle backgrounds can now be left-clicked to initiate drag-panning (or right-clicked to cancel character movement or skill target selection), the same as normal battle terrain.
the game now shows character Dodge stats in the tooltips during deployment.
all of the recurring "character advice" events no longer prevent throwing a gathering in camp.
the AI now respects fog of war, and will not consider attack targets it cannot see.
the AI now ignores treasure chests on Defend the Idol and Attack the Idol maps.
added icons to the buttons in the main menu on the title screen.
swapped the order of the Custom Characters and Campaign Editor buttons in the main menu on the title screen.
cutscene menu buttons can now queue up multiple pop-up warnings, and will show them one after the other when the player clicks to proceed, only proceeding once all have been displayed.
camp activity narrations can now have weather effects attached to them.
golem and spirit activity narrations during rainstorms now actually show them outside in the rain.
Imaginative characters now gain a bit of morale during rainstorms.
caravan defense jobs are now somewhat more common.
the most challenging conditions in caravan defense battles now cannot appear until a certain number of weeks into the campaign.
fixed the level scaling for the Save the Travelers battle.
in the Save the Travelers battle, the game now gives the player a bit of dialogue to signal the enemy discovering the son hidden in the trees.
starting in Monkey League, thieves now spawn on Round 2 or 3 instead of Round 1 during arena matches where they appear.
added a couple of new loading screen tips: one explaining energy drain roll-over damage, and one pointing players toward the Glossary.
it is now possible for aura drop in battle to appear in amounts greater than 500.
reduced the pay cut for 4-on-4s; increased the amount of aura gettable from chests during 4-on-4s in the upper leagues.
increased the amount of aura gettable from chests in the upper leagues in general.
new object type: sturdy chests. Intermediate between ordinary and royal chests.
added way more loot to the blacksmith rescue mission.
the minimum and maximum values of the potential prize for winning a card tournament now gradually grow as the game progresses.
the monetary reward for solving the free-roaming section of cavern exploration now also scales upwards with total days passed in the campaign.
boosted the base extra prize money awarded by scheduled league matches by a fixed amount per league.
improved the treasure in the royal chests for the arena championship battle.
increased the amount of the championship bribe.
created a follow-up event, post-bribe.
took out the extra 1.5 seconds of waiting before a character gets their skill from Teach dialogue; instead, characters now learn the new skill from Teach camp dialogue at the conclusion of their response.
made Hari Rathore a unique character with his own distinct portrait and combat barks.
added an extra enemy to the Dissident's Den battle when playing on Brutal difficulty.
buffed the guard's survivability in the witness protection battle some more.
gave Ansh a big boost to accuracy in the witness protection battle so his shield bash is more consistently effective.
added some dialogue to the witness protection battle making it clear that attacking enemies on the stage activates them all.
made it much harder to accidentally aggro all the units onstage in the witness protection battle.
replaced the treasure onstage in the witness protection battle with something much more valuable.
Jigna Lal's dialogue letting you know that stronger recruits are available now changes somewhat with each successive league.
added more explanation about paradigm training to the trainer.
added one more hobby line variant for hotheaded characters.
the game now tracks the maximum romance value that characters have toward other characters for purposes of having dialogue specific to former love interests. (Corresponding special stat name: RomanceHistorical.)
the game now tracks the maximum friendship value that characters have toward other characters for purposes of having dialogue specific to former friends. (Corresponding special stat name: FriendshipHistorical.)
if a character gets asked out by their crush, the game now increases their morale and gives them a happy mood.
if a Depressive character is in a romantic relationship, their partner may now come comfort them when they get depressed.
characters now lose the Fantasize camp activity if they get into a romantic relationship.
added a new romance relationship level before lovers: Dating.
pushed back the earliest point at which a character can ask another character to marry them.
2 of the 3 "nothing happens" events are now stripped out of the evening events hopper as soon as the player reaches Duomensis, keeping interesting events coming at a higher rate.
other than the spirit, free-roaming cavern exploration conditions will no longer repeat over the course of any given playthrough.
moved the BPD Recruitment event up from Day 42 to Day 35.
health proficiency now increases Health by 3 instead of 2.
increased the psy boost effect of the Power Orb from 3 to 5.
increased the health-boost effect of the Blood Orb from 10 to 16.
increased the power of proc gen flails.
increased the availability of Ladoo and Medicated Bandages in the shop.
reduced the base salary modifier for shadowlings from 120% to 105%, making them much more affordable than before.
characters can now continue moving after using the Unlock Door skill.
stone golems are now generated with a base Dodge value of -10 (down from 0), making it more difficult to create "dodge tank" stone golems.
boosted Mant Lancer Strength, Speed, and Energy to make it a more viable alternative to Mantis Knight.
the Arbalist class now gets +1 max range to Grape Shot as well, not just Powder Bolt.
the Drake promoted class now gains Small Shield mastery.
the Wyrm promoted class now gains more Dodge and Health.
the Caduceus class now gains +1 range to Mind Shield and Far Shield in addition to the various energy cost reductions.
engineer braziers now scale their health relative to the creator's strength at a dramatically lower rate than barricades do, keeping them from just being strictly better than barricades in every respect.
you can now create a custom background line for your custom characters (corresponding to the "Background What" dialogue type).
when you change a custom character's name, species, or class, the game will now flag any non-custom dialogue lines assigned to the character to regenerate in order to account for references to the changed details (e.g. the character saying their own name or class in the dialogue).
added gamepad support to the background selection buttons and background dialogue button in the custom character creator.
when using the virtual keyboard with gamepad controls, the Y button now automatically acts as a shortcut for Space.
wrote alternate response dialogue for characters who are the subject of a marriage proposal despite being already engaged.
made some final tweaks to the ending and to the end credits.
reduced the extent to which iron, steel, and duoterre materials increased the cost of weapons and--especially--armor.
increased the amount of money lootable in the smuggler den event.
the game now auto-displays the updated objectives when the crank is loosened in the smuggler's den battle.
added extra safeguards to ensure that the game never clones a character when using Recruit-type script actions.
added an Inspect Character reply option to the stat advice, sick parent, and family weapon events.
buffed the Steam-powered Crossbow item.
BPD events are now more common each week.
you can now haggle a bit with Jiti Sone.
added a new ending slide reflecting player choices during the strikebreaking event.
wrote some extra dialogue for the event where a character returns with a unique family weapon.
version 1.0.00a: halved the game's music volume by player request.
We have numerous bug fixes:
fixed: Manbir Raksha's eye and mouth positioning and scaling data had not been updated to match the increased base scaling of his portrait.
fixed a typo in one of the Practice camp activity narrations for Suave characters.
fixed: it was possible for characters to Fantasize about other characters they hadn't met yet.
fixed: the algorithm the game uses to determine if a camp activity requires an available partner was not taking account of the "is partner present?" attribute, preventing characters from having activities thinking about other characters if those other characters weren't available.
fixed: the game was inappropriately using character nicknames in lieu of character names during narration for Teach Response dialogue.
fixed: one of the sound effects at the start of the Battle in the Dissidents' Den was mislabeled, causing it to not play.
fixed: if a skill caused damage to a single ally from two or more separate sources (e.g. normal damage and falling damage), the game could queue up a friendly fire reaction twice in a row to it.
fixed: the character screen was not incorporating the +20 accuracy boost for max morale characters when showing their stats.
fixed: the game could sometimes inappropriately add extra bridge tiles over a nearby hazard space when building bridges.
fixed: a scripting mistake in the BPD Recruitment event was causing the game to treat non-Desan human characters as natives of Dese.
fixed: during the investigation scene following the witness protection battle, if talking to Manbir, it was possible to end up taking a path through the dialogue tree that didn't surface a certain important revelation.
fixed: at the start of a new day, the game was failing to reset the flag indicating whether it had already performed a morning event check that day, leading to non-plot-specific morning events never triggering.
fixed: the flags for whether the last player attacked or shot with a unit were not getting reset for subsequent games of Psy Clash after the first, almost always preventing whichever player went first from attacking on their first turn.
fixed: if you sent characters out on a caravan protection mission, the second half of the payment due could get overwritten by subsequent hiring out via the jobs board.
fixed: it was possible for the game to freeze if a character dodged a charge attack, counterattacked, and then leveled up from it all in one sequence.
fixed: in the character screen, tooltips for character class appeared beneath the Relationships button.
fixed: in the custom character maker, the game would throw a fatal error when trying to create a golem or spirit and getting to the part where you pick a character background.
fixed: any time the game switched character roles around before a Talk activity in camp, neither character would remember the resulting conversation, nor would the effects of that conversation "stick."
fixed: the SetWinAura and SetLossAura script actions were not updating the dialogue's internal victory aura and loss aura values for purposes of the -WINAURA- and -LOSSAURA- special characters, which was causing day logs to inaccurately record arena winnings for scheduled league matches.
AI fix: the AI was treating prospective attackers as if they were still on their pre-movement space for purposes of determining if attacks would be counterattacked.
AI fix: the AI was treating prospective attackers as if they were still on their pre-movement space for purposes of calculating character collision damage when scoring moves.
AI fix: the game was not penalizing moves which dealt collision damage to an enemy by smashing them up against an ally, leading to green units smashing red units into the player's characters way too often.
fixed: the "Stupid" AI profile would cause the game to make characters sit and do nothing until approached, ironically making them harder to deal with in many situations.
fixed: proc gen recruits were being created without a load ID, allowing them to evade one of the game's core checks to prevent unintentional unit duplication.
fixed: one of the Happy mood descriptors noticeably conflicted with one of the rest narration phrases.
fixed a small scripting issue in the Trailing Malatose scene.
fixed: the event where a character asks another character out on a date could occur even if the character being asked was wounded.
fixed a bit of event dialogue where a character's nickname could appear in lower-case despite being at the start of a sentence.
fixed a few small scripting mistakes in the event where a character returns after a long absence.
fixed: the code which was preventing attacks from counting as skill uses in arena fights if not used against targets for whom the character would gain experience was also preventing loud skills from alerting enemies in the blacksmith rescue mission if used against destructible objects.
fixed: the promoted shadowling's Shadowport animation was misaligned, causing the user to inappropriately pop up into the air during use.
fixed: the skill Cut was missing the attribute that made it dependent upon having the skill Sword available.
fixed: the game had begun duplicating bonus damage tags every time it displayed them in a skill tooltip.
fixed: weapon bonus damage was being applied to non-damaging skills so long as they depended upon that weapon (e.g. bonus damage from a poisoned or burning sword being applied to Feint).
fixed: in the Smuggler Den event, the character to be rescued remained in the list of characters you could send in to perform the rescue.
fixed: when using an item in the character screen during battle that didn't close the character screen, the game was not updating the character screen to reflect changes.
fixed: it was possible to screw up some of the game's logic tracking what in-game day it currently is by pressing the left or right arrow keys in the calendar screen.
fixed: certain day logs relating to character death or wound recovery were missing periods.
fixed: the day log window within the calendar screen was using outdated arrow graphics.
fixed: the game was not loading Battle in the Print Shop correctly.
fixed: the game would freeze if a campaign tried to go to a scene which doesn't exist.
fixed: the game was not immediately updating fog of war when characters switched armies or became Enthralled.
fixed: generic units were not being generated with status effect immunities, permitting enemy golems and spirits to get poisoned.
fixed: the NextFrame script action was leaving actions in the queue from any dialogue the action skipped, resulting in those actions executing the next time cutscene dialogue appeared.
fixed: the wording on Bowman and Crossbowman in Psy Clash inappropriately suggested that the player could choose to attack instead of damaging a minion.
fixed: when defeated, the defeat box was showing the prize for winning instead of the consolation prize upon defeat.
fixed: the game was failing to schedule a new league match after losing the Gharial, Snow Leopard, or Tiger League qualifier battles, blocking any further progress up the leagues.
fixed: if you lost in the Monkey League qualifier, it was possible for the game to simply never let you retry it if you did pickup matches beforehand.
fixed: if you lost in the Monkey League qualifier, the game would create a day log saying that you lost the Gharial League qualifier.
fixed: when rescheduling a league qualifier match that the player had previously lost, the game was pulling the date of the earliest attempt rather than the new date for purposes of Gupt's dialogue.
fixed: when quitting to the title screen while a voiceover is playing, the voiceover would continue.
fixed: kineticist skills were dealing far less collision damage than intended.
fixed: a small error in the game's algorithm for returning adjacent spaces on the battlefield meant that it would never acknowledge the existence of any space in the very topmost row of the battlefield as a valid space (for example, when generating character deployment spots for proc gen arena battles).
fixed: certain newer types of data tracked by the game weren't being reset upon starting a new campaign.
fixed: the left- and right-facing female frost spriggat rest poses had rogue position attributes still attached from the earliest days of experimenting with animations in the engine.
fixed: the up-facing female barudit sprite had a rogue position attribute still attached that caused female barudit to disappear into stairs when facing upwards.
fixed: the male frost spriggat and female red spriggat walk animations had rogue position attributes still attached.
fixed: in the reserve supplies screen, you could use the mouse wheel while a confirmation window was onscreen (e.g. asking if you'd like to auto-equip a character), and it would cause the text in the screen to no longer match the effect of confirming.
fixed: when the game cloned character portrait data, it was failing to include accessories, meaning that in some situations (most notably during dialogue), character accessories failed to appear.
fixed: certain personality-specific Recognition Response lines were miscategorized as regular Recognition lines.
fixed: the game wasn't parsing the -HOBBYVERB- special character (used in exactly one variant of one hobby line across the entire game).
fixed: the depressive hobby line inappropriately referenced the character's miscellaneous like instead of their hobby.
fixed: the game would not load more than one item with the same name even if they had different load IDs.
fixed: Lead Ointment was not using its unique item graphic, and instead was sharing a graphic with Thermal Paste.
fixed: the Book text sprite was misaligned.
fixed: the custom character creator was trying to load life background options when editing previously created golems and spirits, then throwing an error.
fixed: in the custom character creator, clicking a button the change a golem's gender after choosing its class would wipe out subsequent selections even though a golem's gender cannot change.
fixed: when reloading a previously created custom character, the background selector would not default to showing the character's previously selected background.
fixed: an incorrect delimiter was causing the game to deserialize custom character life backgrounds incorrectly.
fixed: the facial expression chooser in the custom character creator had begun to obscure the portrait, preventing the player from previewing these expressions.
fixed: the next page button was not connected properly in the custom character browser.
fixed: the page buttons when selecting units in dialogue were not working.
fixed: it was not possible to select the View Deck button in camp using gamepad controls.
fixed: it was not possible to input custom character dialogue using gamepad controls.
fixed: when playing with gamepad, the game would not show tooltips when moving the cursor over item sacks located on bridge tiles.
fixed: when playing with gamepad and using an item within the reserve supplies screen, if the character screen popped open to show the results of the item usage, gamepad focus would not switch to the character screen.
fixed: the gamepad cursor could appear misaligned to main menu buttons in the title screen.
fixed: when playing with a gamepad during recruitment, the gamepad cursor could end up over elements on the left side of the screen even when those elements were not visible.
fixed: when playing with a gamepad during cutscenes, the gamepad cursor could end up over the food and aura icons in the info bar even when the info bar was not visible.
And finally, changes and improvements for people using the custom campaign creation suite:
custom campaigns now permit the creation of custom AI profiles! When creating a new custom campaign, an AIProfiles.xml file is now created; edit it to create new AI profiles for use in the custom campaign.
the weight given to moves based on how close characters will stay to their allies now has its own distinct property in AI profiles: clustering.
the "Stupid" AI profile now enforces an army-specific AI handicap floor of 7, making it actually stupid.
species-specific status effect immunities are no longer hard-coded, but are now instead assigned in the species XML file.
the game now supports items that are readable books, letters, notes etc. When used, these items open the report screen and let the player read their contents.
added four new "Paper Scrap" item graphics.
new script action: RegenerateCharDialogue. Causes the game to reroll a character's dialogue. Two parameters, same as the first two parameters for RemoveCharDialogue.
new special character: STRLENGTH[]. Gets replaced with the number of characters within a named custom string's value. (For instance: if the custom string CharacterName is set to Bob, then STRLENGTH[CharacterName] will be replaced with the numeral 3.)
new special character: [lc][/lc]Causes whatever text is wrapped within it to be entirely lower-case.
new special character: [CAP][/CAP]Causes whatever text is wrapped within it to have a capitalized first letter.
updated the custom asset info file for the Backgrounds subfolder created when making a new custom campaign; it now explains how to create custom battle backgrounds.
updated missing special character and script action documentation for the in-game guide.
fixed: unadjusted growths were not being applied to characters created with the ShowCharCreator script action, resulting in the game throwing a null error when attempting to alter their growths.
There. That's everything!
Thank You
I'd like to end this by saying thank you once again to everyone who's supported Together in Battle over the years, whether by buying Sinister Design games, by sending in bug reports, by leaving nice reviews, or by spreading the word on Reddits, forums, and Discords all over the interwebs. I am but a single guy--there is simply no way I would have been able to pull all this off on my own without your help. I am humbled by your continued support and my gratitude is immeasurable; I sincerely hope that this game meets your expectations!
All right folks, that's all I've got for now. Until next time!
Tactically yours,
Craig
One month until version 1.0!
Greetings, tactics fans! Today is April 6, 2025: and that means we are exactly one month away from Together in Battle's version 1.0 release!
I originally wanted to avoid doing a monthly update this month, but I found and fixed some rather nasty bugs and I just couldn't bring myself to leave you all hanging for 30 whole days. π But before we get to the bug fixes...
...here are the changes, improvements, and new content in this update:
first, a huge and long-awaited UI improvement: when in the Reserve Supplies screen, if playing with a mouse and keyboard, you can now drag and drop items directly from reserve supplies onto specific characters! (And from character inventories back into the reserve supplies as well.) π
a "Conclude Investigation" button now shows up in town after Malatose offers to help you investigate the summer palace; the player can choose to click it immediately or to continue pursuing leads in the investigation, at their discretion. (Note: this button is currently turned off pending the version 1.0 launch.)
created the scenes leading up to the final battle. (Not yet accessible.)
created the final battle. (Not yet accessible.)
created the scenes following the final battle, including the good ending and a new, extra-bad ending. (Not yet accessible.)
added a new, unique character spriteset to the game. (I'm not saying what it is because of spoilers.)
created a final boss variant portrait for post-defeat.
created a couple of new enemy types.
new special terrain and skills added to the game (which I am being deliberately vague about for spoiler reasons).
new items added to the game: Ladoo, Shahi Ladoo, and a handful of unique weapons and armor specific to certain named characters (which, again: spoilers).
new battle background added to the game (also spoiler-y in nature).
battle backgrounds now support an emissions layer, letting parts of them glow independent of the actual battle map.
new difficulty: Challenging-. Combines the economic aspects of Relaxed with the tactical difficulty of Challenging.
after a certain number of in-game days (200 in Relaxed difficulty, 140 in Challenging, and 100 in Brutal), if you haven't managed to address the fact that Praetor Nero is hunting you down, you'll now get a bad ending (for reasons that may be readily apparent). Don't worry: this timer is quite generous on every difficulty setting below Brutal--half of an in-game year or more. It's there more for immersion-preservation reasons than out of any expectation that players will actually run afoul of it.
the time limit is now customizable for Custom Difficulty.
finally got a unique animated visual effect for Vengeance; I must say, I think it looks pretty awesome! π
stat alterations caused by a character's current terrain are now noted in the character screen.
you can now grab item sacks filled with money using Enthralled enemies and the money will be added to your total.
the game now tracks whether you've met a variety of different NPCs in order to customize the ending based on your experience and choices.
scripted capability for the game to permit the player to skip certain dialogue branches with the Escape key/Cancel button even if they contain multiple replies or would otherwise normally be unskippable. You can now use this to quickly skip through the first two plot events in the game (the flyer event and the camp visit event) even on dialogue branches where there are multiple reply options.
wrote alternate dialogue for Nihal Agarwal if you visit the shop after a certain major, very bad event occurs.
wrote a new evening event with Ishita Svaamee (Renaming Offer), plus character reactions that can occur in battle, post-event.
if payday is tomorrow and the game detects that the player is short of the funds needed to meet payroll by a certain amount of aura, the game will now automatically try to queue up the next Ishita Svaamee event for that evening's camp event (assuming that any of those events have not yet occurred).
the game now tracks how much your payroll comes to with the day log for each payday.
if you fail to make payroll, the game now saves a separate day log recording how far short of payroll you fell.
created a few new gradations for friend and enemy relationship labels, allowing a bit more granularity.
characters with prior relationships can now join up already having nicknames for each other from when they met earlier in life.
increased the chance of characters who talk in camp having a narrated conversation instead of specific dialogue from 40% to 50%.
wrote new character gossip: characters who talk at camp may now discuss the Festival of the Ascendant Lights during the week and a half or so leading up to it.
added day logs for choices made during the Festival of the Ascendant Lights.
added missing sound effects to the dramatic climax of the Festival of the Ascendant Lights.
created a map of Dese, now accessible within the glossary! (Speaking of which: the glossary can now display maps in lieu of a text description.)
added glossary entries for the Exostose Mountains, Tavaar Mountains, and Hadi Desert.
updated the Glossary entry for Thought Impressions.
the glossary can now be accessed in battle.
added alternate spirit and golem lines to the introductory dialogue at the start of the summer palace escape battle.
added alternate dialogue to one of the bad endings if it triggers because the player took too long.
added effects to the dialogue branch where you attempt to scan Dayaan during her visit to camp.
edited scripting for the first Thief Attack event to make enemy levels scale more evenly with in-game time passed.
reduced the salary of the recruitable kineticist in the Monkey League Qualifier.
the enemy axefighter in the Monkey League Qualifier now only has throwing axes in Brutal difficulty.
the game will no longer run late-night battle events on the same day that a league qualifier or championship match occurred.
increased starting food from 100 to 105 to avoid outlier situations where the player could run out of food shortly after fighting the qualifier match.
Ladoo now shows up in the consumables section of the shop upon reaching Monkey League.
the shop now has a 1-in-3 chance of having a Claw in stock whenever you visit.
characters with the Fruit Allergy trait are now precluded from being generated with fruit in their inventories.
characters with the Sugar Fiend trait are now always generated with some manner of baked good in their inventories.
characters with the Sugar Fiend trait are now generated with tags that give them Move Bonus status after eating Ladoo or Shahi Ladoo. (This change is not retroactive to characters created before the patch.)
added a day log for when Nihal Agarwal asks the player to help restore his supply of steel armaments, and a second day log recording whether the player agreed or refused.
added day logs for a variety of side quest battles (particularly those with multiple potential outcomes).
replaced "aura" text in numerous dialogue replies for various events with the aura symbol.
added a bit more texture to the new palette-swapping hair for the female axefighter sprites, improving their appearance.
updated the lighting at the entrance to the Dissident's Den map using the new directional lighting.
multiple new achievements added to the game. (Note that you can't actually get these until version 1.0, though π )
updated the Jack of All Trades achievement to require promotion to all of the current 49 prestige classes (as opposed to the 48 prestige classes that existed prior to the addition of the Mechanist).
official (i.e. not player-created) campaigns can now set special int variables readable globally in every campaign (called "internal vals"), usable to check if the player has yet encountered certain types of situations across playthroughs.
Next, we have a variety of bug fixes:
fixed: the shop's 10% Weddingsday discount was being based solely off of the default shop price level from Challenging difficulty; it was not scaling to match the differing shop price levels of other difficulty settings, and so was not actually offering 10% off on those difficulties.
fixed: defeating all enemies during the first floor of cavern exploration would take the player back to camp instead of down to the second floor.
fixed a null error that could occur if an enemy burned to death from a Burning status effect applied from exploding charges.
fixed a null error that could occur if lit charges exploded on their own and triggered a counterattack check.
fixed a null error that could occur if lit charges exploded on their own and killed someone as the game tried to check for a friendly-fire bark trigger.
fixed: the Together in Battle skills XML file had a formatting error that was keeping it from being loaded.
fixed: bonus damage was not showing up in skill tooltips within the character screen, only in the Actions Bar.
fixed a scripting error that was preventing the vindictive character quest event chain from ever initiating.
fixed: when clicking on enemies, the game was not displaying danger tiles for skills that exclusively imposed certain status effects like Enthralled or Clouded (e.g. Mind Control).
fixed: destructible objects were not taking heat damage over time while immersed in lava (meaning, absurdly, that you couldn't detonate charges by throwing them into lava).
fixed: the game had ceased displaying mouseover tooltips for item sacks on top of bridges.
fixed: the terrain inspector would not display healing effects associated with terrain tiles.
fixed: cave walls could be set on fire by explosives despite having a Heat resistance of 100.
fixed: when stats got into the triple digits, they could get cut off in the character screen.
fixed: characters could react to friendly fire from generic units with a Friendly Fire bark.
fixed: changes to the next scene made via SetNextScene and SetDefeatScene were not being saved in mid-battle saves.
fixed: characters with prior relationships could end up nicknaming each other instead of recognizing each other when first approaching one another in camp.
fixed: the last two MVP awards were showing up simultaneously on the victory screen at the end of a battle.
fixed: due to a scripting error, the Monkey League Qualifier boss was not moving after the turn they were supposed to aggro.
fixed: the code which looks ahead to see if a crucial character is going to immediately die from environmental damage after the turn starts (and, if so, shut off the mid-battle save function to prevent the player soft-locking themselves) had not been updated to account for destructible objects which add environmental damage to a space (such as fire).
fixed: a scripting error could cause the Conclude Investigation button to show up in town even after being kicked off of the investigation.
fixed: setting parameters using a Run reply type was only working in battles, not in cutscenes.
fixed: a coding mistake had started causing the dialogue for late-night events to stop showing up.
fixed: a scripting error was causing the caravaneer's guild to erroneously say you had no characters available to hire regardless of how many characters you had.
fixed: the description for Partial Plate incorrectly labeled it as heavy armor instead of medium armor.
fixed a few minor scripting errors for Battle with the Steel Bandits.
fixed: defeating the Steel Bandits was adding steel weapons to Agarwal's, but not iron or steel armor.
fixed: the code that triggered recognition dialogue could cause characters with sufficient familiarity but who had not actually spoken a normal Greeting line to each other to inappropriately use recognition lines when speaking dialogue to each other for the first time.
fixed: a character who already had a nickname for someone could nonetheless get Nickname dialogue with them and overwrite their existing nickname.
fixed: Pessimistic characters could mistakenly be assigned an Info Response line intended for Religious characters.
fixed: it was possible for characters to talk about how battles have changed since the team got into the current league before the player ever actually fought a battle in that league.
fixed a couple of typos in a few variations of the practice camp narration for characters with the Insomniac trait.
fixed: one of the flirtatious "miscellaneous like" lines incorrectly referred to hobbies instead.
fixed a typo in part of the scripting for the Lost Kitten event.
fixed a typo in part of the scripting for one of the bad endings that could cause golems and spirits to offer dialogue inappropriate to their nature.
fixed: the recruitment screen was not displaying salary and price text consistently between golems and non-golem characters, using text for most characters and the aura symbol for golems.
And finally, there's some cool new stuff for campaign creators:
when custom campaigns are created, they now come with a folder (and instructions, and an example map graphic) for adding custom maps to your campaign's glossary!
new terrain stat modifier supported: RangeBonus. You can use this to have a battlefield object boost attack range for ranged skills!
new script action: ChangeArmyColor. Two parameters: army number and color. Does exactly what it says on the box. π
new script action: ChangeArmyController. Changes an army from human-controlled to AI-controlled, or vice versa. Two parameters: army number and "is human" (a boolean that can be set to true or false).
new script action: ShowObjectives. Brings up the animated objectives UI showing current objectives (handy for if you change objectives mid-battle and want the player to see them spelled out).
new script action: ClearLights. Removes all point and directional lights from the battlefield.
new script actions: IfInternalValGoTo and IfInternalValRun. These check for global integer values instead of the normal kind, then do the thing advertised in the action name if there's a match.
new special character: -CONTROLLINGARMY-. Returns the army is currently controlling the character who triggered the dialogue (accounting for Enthralled status). If there is no such character, then the game instead returns the number of the army whose turn it currently is.
new sound effects: Crowd Angry, Crowd Gasp, Crowd Gasp Male, Crowd Murmuring 2, and Wail Woman.
fixed: the Transfer script action would add a character to the destination roster even if they no longer existed in the roster they were to be transferred from.
fixed: the -ATKX- and -ATKY- special characters had started each returning 0 when using skill scripts regardless of where the attack was centered.
Now, some of you may be wondering: what's up with all those "Not yet accessible" scenes? The short answer is, I'm waiting on a few assets from contractors to put the finishing touches on those scenes. Not to worry, though: they'll be ready in time for next month's launch! π
Speaking of which...
The game hits version 1.0 in exactly one month!
Game developers customarily send out review copies to reviewers a few weeks prior to version 1.0, a courtesy that gives those reviewers time to really dig in and produce comprehensive reviews in time for launch day. Which is to say, Together in Battle is actually going to be complete quite soon--within about a week-and-a-half, in fact.
"But if that's the case," you may ask, "then what are you going to do between then and May 6th?" Great question, astute reader! I'll be using those last few weeks before May 6th to (1) catch and fix any bugs that escaped my earlier sweep, (2) make any necessary last-minute balance tweaks, (3) create the launch trailer, and (4) prep miscellaneous marketing materials. (Marketing is important, after all: it would be less-than-ideal if I were to spend this many years making Together in battle only for it to launch to a world that doesn't know it exists. π )
To everyone who's been playing, offering feedback, and reporting bugs: I want to once again say thank you. I'm just one guy with a day job--I would never have gotten to this point without you. Also: I cannot wait for you all to experience the game's final battle and good ending. See you in one month!
Tactically yours,
Craig
A few fixes and improvements
A small update with some hotfixes and improvements, pushed now only due to a rather nasty bug reported by one of our players.
Miscellaneous improvements:
for all combat difficulty levels below Brutal, removed fog of war from potential arena fight conditions prior to Monkey League, as it was causing a big difficulty spike for so early in the game.
wrote 3 new loading screen tips: one about the advisability of prioritizing enemy psy users, one about combining attacks with differing ranges to focus down an enemy, and one about the value of feeding kills to your level-one assassins.
male pyrokineticist sprites and pyrokurios/pyrarch sprites are no longer bald; they now display character hair color correctly.
cleaned up a frame in the right-facing human female photokineticist casting animation that was offset by a pixel.
updated one of the lines in the dissident interrogation dialogue to make more sense.
new unlockable glossary entries added: Dara Abhedy and Sandesh Andhera.
added some new flags to various moments in player interrogations to give the game ways to recall if the player has gathered certain information.
the engine now supports baking bonus damage of differing elements directly into a skill.
further increased the base winnings for matches in the various arena leagues.
Bug fixes:
fixed: if the player surrendered a fight in the arena following the maharaja visit event and they hadn't won any arena battles in the interim, it would set the maharaja visit event to retrigger that evening.
fixed: female axefighter sprites were not displaying their character hair palettes correctly; replaced their bandana with uncovered medium-length hair to make their hair color easier to see.
fixed: human photokineticist sprites were displaying character hair color in a much darker shade than intended.
fixed the offset on directional lights--they now appear to originate on the space where they are placed.
fixed in the map editor: unit tooltips could show up over the top of the light properties window, obscuring it.
fixed: the option to scan Prince Ajit during his interrogation was not leading to the correct dialogue branch.
fixed: Nihal Agarwal was not informing the player that his mission wouldn't occur that same day until they'd already accepted it.
fixed: in some instances, clicking to skip score tallying in the victory box could fail to end the "score tallying" sound loop, leaving it playing until the player quit to the title screen.
fixed: under some circumstances, it was possible to access certain investigatory sub-activities from the town menu even after being removed from the investigation.
The endgame is underway--but obviously, not accessible just yet. Stay hyped for May 6th! π
--Craig
Version 0.9.60: Old friends/lovers, glossary, special orders and release date!
Greetings, tactics fans! It is as I foretold: over this past month, I moved and had to spend a bunch of time both prepping for that and then, post-move, unpacking and setting things back up. But I'm back and I have some cool new stuff for you all!
I also have some big news--the final release date! Make sure to read to the end on this one. But first, let's go over all the new stuff now in the game:
Big improvement number one: characters can now have unexpected, preexisting relationships with your other characters straight out of recruitment!
each newly recruited character now has a chance to know one of your other characters from back before they were recruited: as a childhood friend, as an old flame, or as an old rival. The chance of this happening starts out very low but gradually increases as the days pass in-game.
characters are now generated with specialized lines for when they recognize a character from before the start of the game--both positive and negative--and lines responding to those recognition lines.
characters who have a prior relationship are now given memories of having met years before the start of the game that they can potentially reference when reminiscing.
when characters who have a prior relationship are recruited, a tag is now added so that one will try to talk to the other when they are in camp together.
added both positive and negative recognition lines and recognition response lines to the custom dialogue page of the custom character creator.
Big improvement number two: there is now an in-game glossary!
the glossary contains a whopping 234 entries discussing lore about the game setting; providing details about all of the world regions, cities, and towns that your characters can come from; discussing all of the world religions your characters can practice; talking about how Psy works; detailing every Psy Clash card; describing the game's variety of elements, stats, and status effects; and more!
the bottom of every glossary entry contains clickable links to other, related glossary entries, making it much easier to learn about related subjects (and creating its own little TV Tropes-esque research rabbithole).
the glossary tracks what topics you've navigated to since opening it, and has an unlimited "back" function so you can retrace your steps.
some glossary entries start out hidden and unlock as you investigate the core conspiracy and meet unique and plot-relevant NPCs.
the glossary can be accessed and browsed from the main menu at any time during non-combat scenes (including during the middle of character dialogue).
In response to complaints (well, okay, one complaint, but that's good enough given the sample size), I made further changes to render the mid-to-late-game economy even more lenient:
increased the monetary prize for winning the league qualifiers. The Monkey League Qualifier now awards 1900 aura instead of 1600; the Gharial League Qualifier now awards 2300 aura instead of 1900; the Snow Leopard League Qualifier now awards 2800 aura instead of 2250; and the Tiger League Qualifier now awards 3400 aura instead of 2600.
doubled the number of coins held by the chest in the dissident's den battle.
added 100 coins to one of the chests in the witness protection battle.
doubled the number of coins held by the Silent Strangler in the summer palace escape fight.
added extra loot to the chests in the smuggler's den battle.
whenever the game generates a day log following a victory or loss in the arena, it now includes a note stating exactly how much aura you received as a reward for the fight. This creates a record you can reference to help plan out how much money you can expect to earn in the arena in the future.
day logs now record how much aura you earn when you hire out characters as laborers; how much aura you earn when you participate in a card tournament; how much aura you're paid when you hire characters out as explorers; and also how much aura you earn when you hire out characters as guards (and how much extra aura they earn if and when they succeed in defending the caravan). This, too, should help with budgeting!
new loading screen tip added: "Be careful not to overspend; you'll need money saved up in case things go wrong!"
and in case all that wasn't enough, a new difficulty level has been added: Tactics Only. A blend of Brutal and Relaxed, this difficulty setting cranks the tactical challenge of the game's battles up to the maximum while simultaneously setting salaries and prices for food, training, and items to levels so low that they need hardly ever be considered.
Now, you might ask: "Wouldn't setting prices so low ultimately end up trivializing the tactical challenge as well due to the player simply having way too much money to outfit and train their characters?" To this, I say: yeah, probably. Tactics Only difficulty is intended for veteran SRPG players who want a tactical challenge but just can't be bothered with things like budgeting (or, you know, pressing the "Custom Difficulty" button). If you intend to actually pay attention to the economic side of the game and manage your budget, then Challenging, Challenging +, and Brutal are still right there, waiting for you!
I made a couple of changes and additions to make the new Machinist advanced class for Engineers more appealing and tactically interesting:
new Machinist skill: Recharge. This restores a golem's energy and grants it Alert status for 1 round.
boosted the health-restoring power of the Machinist's Tune Up (it now restores health equal to the Engineer's Strength rather than just 50% of the Engineer's Strength).
I also took some time to go back through all the Secret lines (which I hadn't touched in probably two years or more) to make sure they all still make sense given the way that characters have developed in the intervening time:
sad character Secret lines will now trigger the sad info response variant line instead of the default response.
wrote a new Secret line for Narcissistic characters.
reassigned one of the Secret lines for Narcissistic characters to Blunt characters instead, as it better fit that personality archetype.
polished up the wording of a handful of character Secret lines.
Next, we have a variety of other, miscellaneous changes and improvements:
during one-on-ones in camp, you can now order characters to undertake special camp activities tied to their distinctive talents! Hunting for food, treating the wounded, lecturing, repairing weapons...as long as the character knows how to do it, they can be ordered to do it (with the sole exception of group morale-boosting activities such as joking, singing, and telling stories--these are off limits for obvious balance-preservation reasons.)
Together in Battle now supports anime hair colors for custom character portraits: blue, light blue, green, purple, pink, and bright red. (To be clear, the game will never use these colors for proc gen units, but you can now select them for your OCs--or Legally Distinct Fire Emblem Character Look-alikes--if you desire.)
commissioned a lovely new animated puddle graphic, incorporated it into the game.
when in the reserve supplies screen during start-of-battle deployment, the game now marks the characters who've been chosen for deployment with a little star on their portraits.
reduced the size of the character inventory window within the Reserve Supplies screen so it no longer obscures the fourth row of reserve supplies when open, then adjusted the layering and positioning of item tooltips to accommodate the layout change.
prettied up the design of battlefield grid squares for when grid squares are turned on in the game settings.
human characters from Dese now have last names generated from a completely separate pool of words better suited to their home region. The game can now generate well over 1,000 distinct Desan last names.
created a new, unique "electrical blast" sound effect specifically for Mind Shock; the game now plays this when using the Mind Shock skill instead of just reusing the Mind Blast sound effect.
when a fan requests that you not use one or more skills during an arena match, the game no longer counts automatic usage of those skills via counterattacks against you.
reworded the blurb in the caravaneer's guild to remove any ambiguity about whether the characters you send out will have to fight. (Spoiler: they will.)
the cave explorer job type no longer appears on the jobs board until the player has advanced to Monkey League.
updated the "not enough characters" warnings for caravan guard and cave explorer jobs in the jobs board so they now pop up if there aren't enough characters available for the specific job type. (Previously, they only popped up if no characters at all were available in the roster.)
wrote new Defeat lines for Awkward, Arrogant, Blunt, Cheerful, Depressive, Empirical, Friendly, Imaginative, Kind, Narcissistic, Natural Leader, and Serious characters (bringing all of them up to at least 3 variant Defeat lines to choose from).
made it so that if a Religious character can possibly get a Defeat line customized to their particular religious tradition, they will always be generated with that instead of a more generic line.
spriggats are now more likely to be generated as Dualists.
new miscellaneous like added to the game: pies.
characters who get certain variants of the Fantasize camp activity now increase the likelihood that they (or anyone else in camp with a crush) will ask another character out on a date.
if a character with the Old Flame relationship label asks out the other character with the corresponding Old Flame label, they'll now get special dialogue acknowledging their prior romance.
the game now displays the name of the current team when in the battle menu during a multiplayer fight.
if the info bar is showing when the victory/defeat box appears at the conclusion of combat, it will now automatically fade out.
We have bug fixes, too!
AI fix: the game could play the "Held!" message and sound effect for a unit repeatedly during its army's turn, applying the Immobilized status effect anew each time.
fixed: OnCharDeath dialogue set to trigger upon the death of any characters in the player's army could also be triggered by the destruction of any player-created object, leading to potentially absurd consequences such as losing the duel in the Duel random event battle because the enemy wandered into your snare trap.
fixed: the MVP code responsible for accounting for ties on various post-fight award metrics was missing a check to exclude scores of 0, which could in some instances cause a character with an internal battle stat of 0 to get an MVP award for it if a second character had that same battle stat also set at 0 and no one else had a higher value for it.
fixed: if you clicked the victory box to skip the MVP award animations, the awards would not snap to their correct final locations.
fixed: it was possible for dialogue boxes to pop up even after they initiated a change of scene and the screen began fading to black.
fixed: deployment of multiple different armies on the same map was not functioning properly.
fixed: the game's default nicknaming conversation had a coding error--it assigned the nickname within the wrong unit, ensuring that the character theoretically bestowing the nickname never actually used it.
fixed: characters could be generated with apples as the miscellaneous thing that they like even if they had the Fruit Allergy physical trait.
fixed: one of the Secret lines for Blunt characters referenced the person who raised them, and yet could be chosen even if the character had in fact been raised in an orphanage or grew up alone on the streets. (It also presented a uniformly negative picture of that person regardless of how the character actually felt about the NPC who raised them.)
fixed: characters who were once bakers could get a Secret line about hating the taste of baked goods even if cookies, cakes, or pies were chosen as their miscellaneous thing that they like (leading to inconsistencies with the positive results of picking the thing they like in the Ally Gift event).
fixed: characters could get a miscellaneous Secret line about how they despise picked flowers even if a type of flower was chosen as their miscellaneous thing that they like (leading to inconsistencies with their positive reaction to receiving picked flowers in the Ally Gift event).
fixed: you could generate unwanted log files simply by typing the letter 'L' into an input field during dialogue.
fixed: the game would not play turned off for AI-controlled teams during multiplayer battles.
fixed: if the save game function was called multiple times during a cutscene, it would produce a duplicate of every character to save.
fixed: the settings menu was cut off by the top and bottom of the screen for players with super-widescreen monitors, preventing them from switching to a properly supported resolution in-game.
fixed: the generate inventory parameter for the GenerateUnit and GenerateUnique script actions was not being read.
fixed: level music could only be set to a custom string as part of a PlayMusic script action, not just as part of the normal level parameters.
fixed: surrendering did not work correctly in a multiplayer context.
And of course, we have new goodies for the campaign creation suite:
the game now generates a new placeholder glossary for editing whenever you create a new custom campaign. This glossary will be specific to your campaign!
a new type of free-standing light is now supported in the map editor: Directional Light! Unlike the existing Point Light, these point in a clear direction, making them handy for simulating light coming through windows, doorways, and other openings to the outside.
new sound effect available in the campaign creation suite: Mind Shock.
new skill graphics available in the campaign creation suite: Tune Up, Recharge, Point Light Btn, and Directional Light Btn.
new text sprite supported: Book.
new script action: ClearRoster. Clears all characters from a single specified roster.
new script action: CustomCharsToRoster. The game will load all of the player's custom characters and add them to the specified roster, where they can be accessed and used just as any other character might be. One parameter: roster number.
new script action: CampActivitiesToList. Two parameters: character name and list name.
two new script actions: CapitalizeString and DecapitalizeString. These alter an existing string variable so that the first character in the string is capitalized, or so every character in the string becomes lower case, respectively.
new script action: UnlockGlossaryTopic. Unlocks a previously locked glossary entry so that it will appear in the player's glossary going forward. One parameter: Topic ID.
new script action: SupplementGlossaryTopic. Allows the description in a glossary topic to be dynamically supplemented with additional information mid-playthrough. Two parameters: Topic ID and Supplemental Description.
new script actions: IfRelationshipLabelGoTo and IfRelationshipLabelRun. These let you produce special dialogue or effects based on whether characters share a special type of relationship. The same as every other kind of If action, but the relevant parameters to check are Character 1, Character 2, and the relationship label to check for (concerning what label character 1 has for character 2, not vice versa).
new optional parameter for the AddReply script action: Add at Position. This lets you pick a spot in which to insert the reply. (Without this, new replies created via AddReply always get added onto the end of the existing options.)
if the branch parameter for AddReply is left blank and the Conv ID parameter is also blank, the game will now default to adding the reply to whatever the current branch of the current conversation is.
created a new dialogue trigger specifically for the destruction of non-character units: OnObjDeath. Used when you want something to happen upon the destruction of an object, not a character.
the OnSkillUsed dialogue trigger now has an additional, optional parameter: exclude counterattacks. If set to true, this causes the game to ignore skill usage for purposes of the trigger if the skill was not used actively by the player, but rather was used automatically as part of a counterattack.
the game now supports custom campaigns starting out on a scene not named Introduction.
the engine now supports custom variable values for the roster assigned to each army in a battle.
custom integer values can now be pulled directly from custom lists in many more places in the engine.
previously, the game's prohibitions against opening menus applied even when every single army on the field was AI-controlled, preventing the player from opening the main menu and exiting the fight, changing settings, reviewing the objectives, etc. Now, during a fight with 100% AI-controlled armies, you can now hit the Escape key to open the main menu and the game will pause while you mess around in there.
Similarly, during a fight with 100% AI-controlled armies, you can now right-click characters to open their character screens and the game will pause while you look around.
And that's that! You might have noticed that a few of the fixes listed above seem to concern multiplayer. A multiplayer mode is not actually included in this update, buuuuut let's just say that I've been working on some other things which didn't make it into this update...
This is going to be the last monthly update until Together in Battle's version 1.0 release--that way, I can focus single-mindedly on getting all of the end-game content done and polished without having to keep temporarily walling things off for interim releases. But speaking of that big version 1.0 release...
β¨ I'm pleased to announce the official, final release date for Together in Battle: May 6th, 2025! β¨
Please go ahead and mark your calendars, folks; me and my whopping zero-dollar marketing budget are definitely going to need your help to get the word out. π
Until then, I'm always around listening to feedback and suggestions! Find the Sinister Design website here and the Sinister Design Discord right here. I hope to hear from you!
Yours in tactics,
Craig
Version 0.9.30: custom character dialogue, relationships screen, and more!
Greetings, tactics fans! I'm dropping this month's update super early because--on the day I'd usually push the monthly update--I will instead be moving (and probably not have internet, or my computer set up, or even a bed put together). And I've got to get ready for that move.
This update contains a new event, a new character class, a new skill, UI improvements, and so on--but there are a couple of marquee features in particular, those being customizable character dialogue and a proper relationships screen! Let's start with that first one:
You can now customize dialogue for your custom characters!
You heard that right: you can now write out what your custom characters will say under most common circumstances during the game!
when creating a custom character on the title screen, there is now a separate page you can access full of buttons to write or edit the following types of customized lines:
greeting lines, spoken when this character first introduces themselves to an ally (up to 3);
greeting response lines, spoken in response to another character's greeting lines (up to 3);
deployment lines, spoken sometimes when a battle begins with this character on the field (up to 3);
attack lines, spoken sometimes when this character is about to attack an enemy (up to 3);
victory lines, spoken sometimes when this character defeats an enemy (up to 3);
heal lines, spoken sometimes when this character is about to heal an ally (up to 3);
build lines, spoken sometimes when this character is about to create an object or place a trap in battle (up to 3);
friendly fire reaction lines, spoken when this character is hit by an ally's attack (up to 2);
ally defeat reaction lines, spoken when someone this character is close to falls in battle (up to 2);
a defeat monologue, spoken when this character falls in battle themselves; and
a secret--a line spoken in confidence to a good friend, only once per game.
the dialogue editing window includes a facial expression selector so you can customize the facial expression attached to each individual line.
this feature has full gamepad support, so you can dream up and edit custom character dialogue even while playing on Steamdeck or using a USB gamepad!
Pretty cool, huh? Now let's move on to that second marquee feature I mentioned before: the character relationships screen!
Your characters now have a screen laying out their friendships and feuds with other characters!
When in the character screen for folks on your team, you may notice something different: a big, shiny new relationships button. Click it, and the game will open up a new sub-window listing every other unique allied character they have interacted with!
These other characters will be listed roughly in descending order of how well your character knows them (and secondarily, how much they like them), with a short label describing how your character thinks of them.
And before anyone asks: no, this isn't like social ranks in Fire Emblem. Here, these values can (and often will be) be asymmetrical! Below, you can see that at this moment in time, Dipali views Vijay as a friend even though he only sees her as an acquaintance:
With the granular way that Together in Battle models social interactions, this screen makes it much easier to keep track of relationships between your characters. This can help you decide who to pick for certain events--and to predict who could be rendered unhappy by certain personnel decisions you might make...
On top of this, we have a selection of miscellaneous improvements and bits of new content!
There's a brand new engineer promotion path, a new random event, more polish in Psy Clash, improved threat-range checking in battle, and more--here's the full list:
when checking threat ranges for enemies, the game now ignores other enemies of the same army who are temporarily blocking their movement, allowing you to see what their full threat range will be once they're no longer hemmed in. This avoids situations where the game displays a misleadingly small threat range simply because other enemies are temporarily in the way.
new random event: Shipping! Two characters bond over a fan theory one of them overheard.
new promoted class for engineers: Machinist! Machinists learn Tune Up, a skill they can use to support golem allies.
skills that only affect targets with specific attributes are now supported.
new skill: Tune Up. Heals the target golem and grants it +25% Strength for one turn. Only affects golems.
AI optimization: the game now checks boolean values instead of strings for a couple more variables when calculating moveable spaces, speeding up processing times.
the game now supports custom relationship labels (i.e. those that can't be determined purely from familiarity, friendship, and romance values) for unique named characters vis-a-vis other unique named characters.
when a unique character is generated from another character's NPCs and they happen to be relatives, the game now automatically updates both characters with appropriate relationship labels (e.g. Brother, Sister, Father, Mother, etc.)
the wedding proposal event now updates the characters with a "Betrothed" relationship label if accepted.
simplified the game's collision damage formula and exposed it in a new early-game tutorial. Before, base collision damage was the skill's inherent damage plus the attacker's base Strength or base Psy, to a maximum of 33% of the target's max health and with a minimum damage of 6. This, then, would be multiplied by the number of spaces the unit was prevented from moving by the collision. Now, collision damage is much more straightforward: the base damage is simply the attacker's base Strength or base Psy (with a minimum of 6); this damage is now increased by 50% for each space of movement prevented beyond the first.
For example: a stone golem with base Strength of 10 will now deal 10 damage using Shove on someone against the edge of the map; 15 using Toss; 20 using Throw; or 25 using Hurl. (Previously, those damage amounts could have been capped by the target's maximum health, and would have increased much more dramatically with each extra space of knockback. Against a target with 24 maximum health, for instance, Shove would have had its damage capped at 8, Toss would have done 16, Throw would have done 24, and Hurl would have done 32--but against a target with 30 maximum health, they would have done 10, 20, 30, and 40 damage respectively.)
I'm especially curious to know how folks like this particular change, so please do leave me your thoughts once you've had a chance to try it out!
reorganized the character screen a bit to make better use of space. Equipment masteries now appear right above the inventory, where they logically ought to, while physical traits now sit below skills in the top-right.
when playing with gamepad, if you select a healing skill, the game now goes out of its way to position the selector on a tile containing an ally who's actually been damaged.
when playing with gamepad, if the game automatically selects a skill to target an enemy multiple spaces away, the game now auto-adjusts the camera to try to keep both the target and the selected character visible onscreen.
finished creating the Dese Palace tile (and associated fill tile) and getting them working in-engine as a prerequisite for designing the final battles.
there is now a chance for character friendships to increase when they practice together.
characters can now only be the subject of an Ally Gift event if they've spoken about their miscellaneous like at some point in the past.
cleaned up the character screen layout a bit; equipment masteries are now located right above the inventory box, skills have been moved into the top-right, and physical traits now sit just below skills.
wrote a new ally-defeat response line specifically for Hot-tempered characters.
increased the size of the particle effects in Psy Clash to make hits feel more satisfying.
minions in Psy Clash now have distinct sound effects for when their attacks land (i.e. they no longer all sound like they're attacking with swords).
minions in Psy Clash no longer produce an attack sound effect during combat exchanges if they have a power of 0.
in Psy Clash, if the AI player plays the same card multiple times in a row, the messages now fade out in between each to make it clearer that there are multiple instances of the card being played.
Next, we have bug fixes:
fixed: after switching the character screen to an enthralled enemy using the mouse wheel, subsequent switching via the mousewheel would show other units in the enthralled character's normal army instead of the army which currently had them enthralled.
fixed: when playing with gamepad, the behavior to automatically select a skill if an enemy was in skill range after moving a character could sometimes fail if multiple enemies were within the skill's range in theory but not all of them were actually targetable in practice.
fixed: when playing with gamepad, in some scenarios, the game could throw a null error when searching for targets in range after moving a character.
fixed: when playing with gamepad, there was an error in the scripting for the tutorial dialogue tree teaching auto-move-and-attack preventing the player from exiting the dialogue tree.
fixed: the code for pulling a character's nickname during dialogue inappropriately reversed the roles of the two speakers.
fixed: adding a character nickname during dialogue would not update the character's nickname for purposes of the remainder of that same dialogue tree.
fixed: in Psy Clash, if the AI opponent was left with only Focus in their deck, they could end up in an infinite loop of just playing Focus over and over again. The game now counts how many times an AI player has played the same card in any given turn and will rule it out as a possibility after playing it 5 times.
fixed: due to a change in the Psy Clash code, it had become possible to fill up your lanes with minions, then repeatedly click a minion card in your hand possessing an "on played" effect (such as a gasul) to receive the effect over and over without ever actually clicking a minion to replace.
fixed: in Psy Clash, the Gasul sprite would not show up when the AI played the Gasul card.
fixed: in Psy Clash, a discrepancy between two different algorithms the AI used to evaluate moves could, in rare circumstances, cause the AI to get caught in an endless loop of thinking it had a valid move with a card and then rejecting that move, ad infinitum.
fixed: when in deployment and playing with gamepad, it was not possible to open a character's details screen with the Y button.
fixed: the gamepad cursor was not aligned correctly to the physical trait buttons in the character details screen.
fixed: the gamepad cursor was not aligned correctly to the item buttons in the character details screen.
fixed: when selecting a character for a one-on-one in camp, the game would show a message about right-clicking characters to see their stats in detail even if the player was playing with a gamepad.
fixed a small timing issue where the victory screen waited too long to show the aura won.
fixed: custom portrait clothes assigned in the custom character editor would not reappear upon reloading the character in the editor later.
fixed: the custom character creator was overriding a character's chosen default facial expression upon saving the character.
fixed: if, upon opening the game, the very first thing the player did was go to edit an existing custom character rather than creating a new one (or playing a campaign), the game would fail to load the necessary data from XML and would freeze.
fixed: a few of the buttons in the custom character creator were missing sound effects for being clicked.
fixed a typo in one of the variants for one of the response lines for pessimistic characters upon being told sad information about an ally's background.
And finally, we have new goodies for people making their own custom campaigns:
new sound effects: Hammering Fast and Ratcheting.
new skill button graphic: Tune Up.
new script action: SetRelationshipLabel. Sets a custom relationship label between two unique characters. Three parameters: character name, second character name, and the relationship label. Optional fourth parameter: is mutual. If true, the label will be applied to both characters; if false, only to the first. (By default, relationship labels are mutual.)
new script action: RemoveRelationshipLabel. Removes the custom relationship label from a unique character. Two parameters: character name and second character name. Optionally, the third parameter can be a relationship label--if the first character's relationship label for the second character doesn't match this parameter, then nothing happens.
new attribute type supported for the UnitsToList script action: Spoke. Narrows down by characters who've spoken a particular type of generated dialogue in the past (Greeting, Like, Hobby, Background Where, Background What, Background Family, Nickname, Secret, etc.)
updated in-game documentation to discuss the effect of character nicknames on special characters like -NAME- and -CHAR2-.
the engine now has the groundwork laid to support Fire Emblem-style movement rules (i.e. where characters in the same army can walk through one another); expect the option to turn this on in a future update!
And that's it for January!
What's next!
So, where does this leave us? I've now plucked all of the low-hanging-fruit from my wishlist and laid the groundwork for designing the final battle and the scenes that lead up to it; next up will be actually writing those scenes, designing that battle, and writing the ending, polishing and fixing any remaining bugs as I go.
I also have some m...muh...ahem. Excuse me for a moment while I gag. π« I have some...marketing...to do. (You know: capturing screenshots, editing video footage, posting to social media, sending emails--all of the relentlessly dull, soul-crushing tasks necessary to ensure that people actually know this game exists.)
We're getting close, folks! I'll be announcing Together in Battle's actual, version 1.0 release date soon; keep an eye open for it! π
Tactically yours,
Craig
Version 0.9.10: battle MVPs, Steamdeck improvements, bug fixes and more!
Happy holidays, tactics fans! As I predicted last month, this month was extremely busy for me with real-life stuff--and I wanted to get this latest patch out before the holidays hit so that players trying out the game for the first time could enjoy it in the most stable, complete state possible.
As a result of all that, this update was pushed out on a tighter time frame than usual; as such, it is on the smaller side. Still, there's some good stuff in here--follow along as I regale you with all the cool new thingies!
First up, we've got a couple of big items that I've had on my personal wishlist for the game for some time now...
...combat performance tracking and post-fight MVP awards!
I know this goes against my past declaration that I'd be focusing on content and polish rather than new features, but I realized I could fit this in with only a day or so of work, and it really adds an extra jolt of "heck yeah" to the victory screen while simultaneously providing another vector for connecting with your characters. Seemed like a bit of a no-brainer! So here are the details:
the game now tracks battle performance stats on a per-character basis, both for the current battle and cumulatively across the whole game. The new battle performance stats tracked include:
total damage dealt,
total enemies defeated,
total enemies debuffed,
total collision damage dealt to enemies,
total falling damage dealt to enemies,
total healing provided, total energy provided,
total allies buffed,
total damage taken,
total damage dodged,
total damage blocked,
total sacks grabbed,
total traps placed,
total objects created,
total characters summoned,
total number of times they've held spaces,
total number of times deployed, and
total number of times defeated.
the game now hands out little "MVP" awards on the victory screen at the end of each battle based on how much (and in what way) the characters left on your team contributed! Up to 8 different awards can be handed out at the end of each battle, with the categories depending in part on what your characters did during the fight.
Now, you may be wondering: can these new features later be harnessed as grist for post-fight character interactions and random events? You bet! And will I eventually do that? Mayyyybe... π
In the meantime, I spent time this month focusing on adding a bunch of fixes and improvements to the game experience for folks playing on Steamdeck or with a gamepad!
when using gamepad controls, the gamepad cursor now properly disappears from the screen when transitioning to a new scene.
when using gamepad controls, after moving a character with a knockback skill, if there is not a direct-damage skill available, the game now auto-selects the knockback skill for use on an enemy who can currently be damaged by being knocked into an object or character, off of elevation, or into an environmental hazard. (This makes it much easier and more enjoyable to play with kineticists when playing with gamepad controls.)
fixed: when using gamepad controls, after moving a character with a healing skill, the game would not auto-select a Shield skill for use on a damaged ally in range unless the ally belonged to a different army.
fixed: when playing on Steamdeck, the gamepad cursor was not aligned quite right on item options buttons (Use, Give, Drop, Cancel, etc.)
fixed: when playing on Steamdeck, the gamepad cursor was not aligned correctly to the item buttons in the character inventory inspection window in the reserve supplies screen.
fixed: when playing on Steamdeck, the gamepad cursor was not aligned correctly for the day cells in the calendar screen.
fixed: when using gamepad controls, after exiting the game settings menu in a cutscene, the game would inappropriately return gamepad focus to the underlying scene rather than the main options menu (which remained open onscreen).
fixed: when using gamepad controls, the B button would behave like the A button during dialogue even in contexts where this made no sense.
fixed: when using gamepad controls and selecting from a list of units in dialogue, if the dialogue tree returned to the list of units, the tooltip for the last selected character would still be showing onscreen.
fixed: when hiring out characters, the game would show a message about right-clicking characters to see their stats in detail even if the player was playing with a gamepad.
fixed: the Together in Battle demo was not defaulting to gamepad controls on Steamdeck as intended.
Next up, we have a bunch of other miscellaneous improvements!
My favorite of this bunch are the new random physical traits characters can get, wherein characters have special reactions to certain types of food. (I've had allergies on my list of traits to add to this game since all the way back in 2011, when I first created the design document for this game!)
new physical trait characters can be generated with: Fruit Allergy. Gains the Sick status effect upon eating mangos or apples.
new physical trait characters can be generated with: Sugar Fiend. Gains the Move Bonus status effect upon eating Cake, Cookies, or Pie.
during the blacksmith rescue mission, there is now alternative dialogue for Dhatuu Dil if you speak to him with a golem or a spirit.
you can now back out of the recruiter without losing a time point if you click it by mistake.
reworked the pixel art a bit for puddles: reduced their size so they don't visibly hang over the edge of elevated terrain tiles, and improved the animation for them. (I have an artist working to make them look even nicer, but we will have to wait for that to be completed.)
the game now auto-updates glow values for spirits from older versions of the game.
added scripting to mark objectives reached for characters who take down an enemy idol or inspirational leader in the arena, or who recruit their sibling there.
added scripting to mark objectives reached for characters who achieve certain objectives in the monkey league qualifier, battle in the dissidents' den, blacksmith rescue fight, golem attack, revenge quest battle, and battle in the northern stepwell.
And as usual, we have miscellaneous bug fixes aplenty (special thanks to this month's top bug hunter, Tacitus)!
Oh and by the way, before we get to those bugs: some of you might recognize Tacitus as the creator of the extremely cool custom campaign Fate of the Wayward. If you want a new adventure to play while waiting for Together in Battle to be completed, why not go download Fate of the Wayward from the New Game menu? Trust me, it's worth your time!
All right, now on to the bug fixes:
fixed: when generating a spriggat without a proper spriggat class name, the game could throw a null error upon attempting to update the spriggat's portrait palette.
fixed: the logic used by the danger displayer had ceased counting knockback skills as attack skills, causing the displayed move-and-attack range of enemy kineticists to appear misleadingly small.
fixed: because the Kill-All Victory condition was turned off for army 0 in Attack the Idol matches, destroying the idol would not actually cause the player to win after it resulted in army 1 being wiped out.
fixed: if, during a Psy Clash match, you had multiple minions with free-targeting (e.g. bowmen or crossbowmen) in play and the opponent ran out of minions for you to target in the middle of free-targeting, the game would softlock.
fixed: if, during a Psy Clash match, the AI opponent had multiple minions with free-targeting (e.g. bowmen or crossbowmen) in play and you ran out of minions for them to target in the middle of free-targeting, the game would freeze.
fixed: during a Psy Clash match, if the enemy AI chose to play a card that both affects one or more minions and a player but minions of the appropriate type did not exist in play, the game would recognize this as a valid move but would then get caught in a loop upon trying (and failing) to find a minion to target.
fixed: during a Psy Clash match, you could click a card in your hand during the opponent's turn and the card would be played (and would behave as if the opponent had played it).
fixed: receiving a Psy Clash deck from Rohit during the Festival of the Ascendant Lights would cause the game to overwrite whatever assorted Psy Clash cards the player may have accumulated up to that point.
fixed: the icons for food and aura would sometimes fail to appear in the info bar, particularly when playing on Steamdeck.
fixed: in proc gen battles where the player's characters auto-deploy and the final character in the roster had a wound level greater than 1, the game could throw an out-of-range error when queuing up the characters to spawn.
fixed: during the free-roaming bits of cavern exploration, the introductory text had ceased to coexist peacefully with the free-roaming tutorial text.
fixed: defeating all enemies on the first floor of a cavern would send the player back to camp instead of down to the second floor.
fixed: the file containing the data for the Poison Needles skill had gone missing from the game.
fixed: during recruitment, the little portrait frame that normally appears on the current selected character had stopped showing up.
fixed: when reporting to Manbir Raksha following the attack on the royal guard informant, if the informant was not saved, certain dialogue replies led to the wrong part of the dialogue tree, causing the conversation to proceed as though the player was speaking to Prince Ajit.
fixed: during the interrogation with Malatose about Dayaan, it was possible to navigate the dialogue tree's branches in such an order that you could end up in a spot with no available replies, forcing the scene to end prematurely.
fixed: in the blacksmith, attempting to exit when choosing a weapon for engraving would still direct the player to the dialogue branch where they pick a name to engrave rather than canceling out. (Note for modders: this now requires dialogue trees ensconcing the blacksmith to have a branch for canceling the engraving process named "Cancel Naming"; otherwise, exiting out will return the player to branch 0 of the dialogue.)
fixed: typing words with 'L' in them in the dialogue input field would cause the game to inadvertently save log files.
fixed: during the Stat Advice camp event, if one of the stat possibilities was Counter Limit, the game would fail to display the correct icon alongside it.
fixed: one of the greeting line variants for Imaginative characters was missing a period.
And finally, what would an update be without some new improvements for folks making their own custom campaigns in the campaign creation suite?
new script action: ReplaceInList. Systematically goes through a custom list and, upon finding a particular entry value, replaces it with a different value. Three parameters: List Name, Entry Value, and New Value. Optional fourth parameter: Allow "Contains" Matches. (If this last parameter is set to true, the game will count any value containing the Entry Value as a match.)
new script action: MarkObjectivesReached. Sets a special internal stat for the named character of the type "Objectives Reached," stored alongside other battle stats and used in the algorithm for determining MVPs at the end of a victorious fight. Two parameters: Character Name and, optionally, Amount.
new optional parameter for DamageUnit, DamageUnitAtCoords, DamageCharAtCoords: Attacker ID. Allows you to supply the unique ID of a unit and have the game treat that unit as the one producing the damage.
new unit tag supported: ModItemSFX. The tagged character gets a specific status effect whenever they use an item of the named type.
fixed: shops in the cutscene editor had broken, throwing a null error when displayed.
That's all for this month, folks! Enjoy the holidays to come and I'll have more for you soon! Just FYI, I'm going to be moving in January, so I'm not sure how much I'll be able to squeeze in, but my plan is to focus less on QOL stuff and more on creating endgame content.
We'll see what I can make happen. Until next time...
Tactically yours,
Craig
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 Chicago Indie Game Showcase 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!
First, there's new events and late-game character advancement content!
wrote multiple new investigation scenes following up on the Wailling interrogation!
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 lot 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:
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
But that's not all...
I also boosted the selection of battle conditions that can occur during arena fights to keep things fresh in the mid and late game:
new arena battle condition that can appear starting in Monkey League: Inspirational Leader. 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.
new arena battle condition that can appear starting in Gharial League: Attack the Idol. 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 two 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.
On top of that, I made a slew of UI improvements:
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.
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.
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.
And on top of that, we also have a variety of miscellaneous additions and improvements!
wrote a new late-night random event that can occur if the player has recruited a spirit.
performance optimization: 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.
performance optimization: certain properties of skills are now checkable as booleans to reduce the amount of time the game AI needs to check them.
AI improvement: 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.
new AI behavior supported: 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).
new AI behavior supported: AI controlled units can now be forced to use Create skills via SkillPreference 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 single 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.
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 Happy and HappyAbout 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 absolutely wrecked 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.
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.
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.
We have quite a few bug fixes:
fixed: 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.
fixed: 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 can reach the target, then will auto-move-and-attack with that skill.
fixed: destructible objects belonging to army 99 were being disregarded as targets by the AI even if an army was assigned to protect them.
fixed: 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.
fixed: 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.
fixed: 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.
fixed: when shoving an object across a rug or other treat-as-floor object, as the game would mistakenly treat the rug as a collidable object blocking the knockback from occurring.
fixed: you could right-click a character and open their character screen in the middle of an AI army's turn.
fixed: the level of thieves spawning in the arena during Snow Leopard League remained unchanged from Gharial League.
fixed: 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.
fixed: the game wasn't taking ModSkillKnockback tags into account when showing predictions of knockback and collision damage for skills.
fixed: bonus fire damage and burning status effect were not being applied to Thrust for the unique sword Jwalaa.
fixed: Place Timed Charges had ceased to point to the correct script to actually light the charges on fire.
fixed: Place Timed Charges was missing an animation attribute for the character using it.
fixed: there was no day log created for winning or losing the initial qualifier match--or the two hand-designed tutorial fights that follow it.
fixed: it was possible to perform the summer palace investigation again after successfully escaping.
fixed: 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.
fixed 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.
fixed a scripting error that prevented individualized character morale penalties from occurring in reaction to a character's dismissal from the team.
fixed: the lighting effect for the heatwave event could fail to reapply when returning to town after a 1-time-point activity.
fixed: characters could start conversations with spirits beyond just the initial greeting.
fixed: when using an item that grants the users tags, the game was applying two copies of each tag instead of one.
fixed: the localized battle warning pop-up messages had a missing space.
fixed: Mind Shock's tooltip description incorrectly listed the base chance of stunning the target as 50% rather than the actual base chance (75%).
fixed: 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).
fixed: there was no sound assigned to play when clicking the reserve supplies button in the deployment screen.
fixed: text set via the AddObjective script action was not being processed for special characters.
fixed: 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.
fixed: 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.
fixed a scripting error in the summer palace investigation that caused the wrong speaker name to appear alongside dialogue about the locked drawer.
fixed: 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.
fixed: the game would generate item descriptions with a missing spot where the last name should go for lissit characters receiving a unique family mace.
fixed: 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.
fixed: characters could gossip about other teams or their odds of winning the tournament even after the championship match had already concluded.
fixed: a camp talk narration for characters with an unrequited crush had incorrect romance value requirements, ensuring that it would almost never be selected.
fixed: character familiarity comparisons were being calculated incorrectly for purposes of swapping roles prior to initiating the Talk activity.
fixed incorrectly formatted dialogue upon refusing to let a character leave during the Sick Parent event.
fixed potentially awkward wording of a dialogue variant in one of the branches of the Ally Gift event.
fixed: dialogue responses to the arena manager during the second scheduled league match of Snow Leopard and Tiger leagues were incorrect.
fixed: the default character approach lines for floating and non-floating characters were erroneously sharing an ID, potentially leading the engine to confuse them.
fixed: Ishita Svaamee's last name was misspelled in day logs memorializing the events where she appears.
fixed the spelling of the character name Soumil in the character name bank.
fixed: processing of localized UI text was preventing SPRITE[] special characters from working properly in such text.
fixed: a few pixels on the face of the female crossbowman sprite's downward-facing rest pose were not palette swapping.
And finally, we have--what else?--improvements for people using the campaign creation suite!
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: LearnCounterAttack. 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: IfTilesetGoTo and IfTilesetRun. Battle only. Checks if the map has a certain tileset, then runs the script if it does.
the UnitsToList 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 AddPortrait: 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 ChangeArmyAI script action so that the first parameter now asks for army number instead of army name.
new condition: Show Objectives. One boolean parameter. If set to false, the game won't auto-display the objectives for this map.
the Capture Char 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: Path. Like Patrol, but non-cycling. When the tagged unit reaches the final destination in the sequence, the Path tag is automatically removed.
new AI profile: Protective. 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: Afraid, Angry, AnnoyedAt, and HappyAbout.
created in-game documentation of the game's different mood types, now available in the Guide in the campaign creation suite.
added Can Attack to the game's list of accepted post-usage behaviors in documentation for the ModAfterAttack unit tag.
clarified the difference between the LearnCampActivity and AddCampActivity actions in the in-game scripting documentation.
fixed: 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.
fixed: you could only set a single custom parameter in IfListHasRun actions unless the Check For Absence parameter was set to true.
fixed: the game was missing support for the name NPC attribute via the -NPC:X- special character.
fixed: 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.
fixed: the game was missing documentation for the first name and last name NPC attributes used with the -NPC:X- special character.
Phew! All right, I think that's everything.
So where are we now?
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
Version 0.7.90: new balancing, new investigation, new battle, new ending!
Greetings, tactics fans! As October draws to a close, I've updated Together in Battle with another month's worth of progress. There are new investigation scenes, a new plot battle, a new ending, balance improvements, AI improvements, bug fixes, and more. There's a fair bit to cover, so let's get into all the changes!
First up, here's the new content:
created a new investigation scene where you must scour an empty palace under time pressure! Where will you search, and in what order? Your choices affect the outcome!
created a new plot battle where the outcome affects the scenes to follow!
created a new, branching cutscene following the plot battle!
created a new, second "bad" ending to the game!
created two new conspirator enemy types: Silent Serpent and Silent Rider.
created a new scene that occurs if you visit the recruiter after you get locked in to the game's first bad ending.
new achievement: A darker fate.
Next, we've got balance changes to keep runs from capsizing due to excessively bad luck:
during caravan battles, the game now dynamically adjusts the number of AI-controlled ally guards on the battlefield based on how many characters you're fielding, making it much less risky to send only two characters.
made some tweaks to the "numerous" condition in caravan guard battles to make it less likely to generate scenarios where the player is quickly overwhelmed by enemies.
when "thieves" are chosen as the condition in arena battles, the enemy team now ignores chests. (This keeps arena opponents from busting open chests and thieves immediately swooping in, grabbing the loot, and vanishing before the player can react.)
during buyout offer events, Ishita Svaamee will now specifically offer to buy out either your highest-salary or your lowest-level character(s) rather than just choosing a character purely at random.
scheduled league matches now award extra money to the player relative to pickup matches, provided the player wins. The further up the ranks the player rises in a given league, the more the scheduled-match prize for victory increases (+45 aura per scheduled match won in Monkey League; +60 aura per scheduled match won in Gharial League; +75 aura per scheduled match won in Snow Leopard League; and +100 aura per scheduled match won in Tiger League.) This is intended to provide a cushion to help players afford a replacement if they should lose a character during the course of any given league.
the game now tracks if you lost the last qualifier match and--if it finds that you did--it won't grant the victory bonus for repeating scheduled league matches prior to re-attempting the qualifier. (This is to avoid a situation where losing qualifier matches becomes economically optimal.)
late-night battle events (currently, Thief Attack and Thief Attack 2) will no longer occur if both (1) a battle event already occurred earlier in the evening, and (2) a scheduled league match either occurred earlier in the day or will occur the following day. (Three forced fights in a row without time to recover is simply too much to put on the player.)
when initiating the first late-night thief attack event, the game now checks to make sure you have at least 6 characters available with health of 10 or more; if you don't, it aborts the event.
when initiating the second late-night thief attack event, the game now checks to make sure you have at least 8 characters available with health of 10 or more; if you don't, it aborts the event.
increased the minimum available characters necessary for the smuggler's den event to occur from 5 to 6.
when counting the characters available for the smuggler's den or thief attack events, the game now only counts characters who have at least 50% of their health and 25% of their energy. (Previously, if a character could be fielded at all, then they would be counted toward the minimum number of characters.)
We also have a variety of miscellaneous improvements, including several to the game's AI:
AI improvement: when an AI-controlled army is tasked with protecting a unit as part of their victory/loss conditions, the AI will now prefer moves which bring its characters closer to the unit they must protect (with the strength of the effect scaling off the defense weight for that army's AI profile). Among other things, this means caravan guards are now more likely to actually stick around the caravan wagons they're supposed to defend.
AI improvement: the AI now scores moves which bring characters closer to their allies somewhat more highly.
AI improvement: character sensitivity to the danger a space represents now scales down proportionally based on much health the character has left, with full-health characters factoring it in at roughly 1/10th its normal strength. (This makes enemies at or near full health far less likely to simply run away on their turn.)
when in town, the game now warns you if you try to visit the recruiter with your roster already full (18 characters).
added a dialogue choice during the interrogation of Prince Ajit wherein the player considers attempting a scan.
cleaned up the dialogue in the Finding Malatose cutscene a bit.
added multiple new family background dialogue variants for characters who (a) were raised by both a mother and father, and (b) feel sad about one parent and anger toward the other.
added a loading screen tooltip about the effect (and value) of surrendering arena fights.
updated the ending credits.
And of course, we have bug fixes! (Shout-out to Titanium Legman and Koankitsune, our top bug hunters for this month!)
fixed: if a character had less than 40% health left, they would always rest instead of performing a forced camp activity (including activities they were ordered to perform via a one-on-one).
fixed: when surrendering a match while playing with a gamepad, the game would inappropriately switch gamepad focus from the defeat window back to the battlefield, effectively freezing the game.
fixed: when surrendering a match while still in deployment, the deployment window would remain onscreen and obscure the defeat screen, as well as any OnVictory dialogue triggered by the surrender.
fixed: when surrendering a regular arena match prior to reaching Monkey league, the game would inappropriately show a little dialogue box that read "Defeated..." prior to showing the actual defeat screen.
fixed: the game could freeze when checking for terrain properties after removing a character from the battlefield as part of OnReachingArea dialogue.
fixed: thieves in the arena had such an overwhelming preference for attacking chests that they would always choose to bust open another chest over simply grabbing loot from a chest that had already dropped.
fixed: custom, player-created spirits and golems possessed an ongoing salary after being recruited.
fixed: the game could trigger a heatwave during the day (or, conversely, could untrigger an existing heatwave) if the player visited someplace and then left without using up a time point.
fixed: preemptive strikes were not working properly against Charge and other move-to-target attacks.
fixed: text overlay messages about preemptive strikes were being cut off early by text overlay messages with the name of the preempting attack.
fixed: if the team leader in the Monkey League qualifier was generated with Stimulate or another buffing ability, they could prematurely move toward the center of the map to buff an ally, immediately making the battle far harder than intended.
fixed: attacking a target tagged with Pursue would cause the game to remove Passive tags from the target as intended, but not Immobile or Inactive tags; instead, the game would remove Immobile and Inactive tags from the attacker.
fixed: characters created via script actions at the start of a battle could spawn on top of deployment tiles, blocking characters from being deployed there.
fixed a scripting error in the revenge quest battle impacting the team morale penalty for attacking a civilian bystander.
fixed a graphical blemish in the generic male and female swordsman portraits.
fixed: the bodies on generic portraits were getting base scale variations not matched by the hair layer.
fixed: changing a unit's army color mid-battle would cause their hair and skin palette to reset to default values rather than their actual skin and hair color.
fixed: hair and skin palettes for characters from older saves were not getting set based on their portrait values as intended.
fixed: opening and closing the battle menu during deployment would cause the game to inappropriately show the actions bar.
fixed: when switching between multiple successive dialogue branches where the speaker is left blank, the game would begin to inappropriately play babble speech sound effects alongside the dialogue text.
fixed: the game would detect displayable dialogue (and therefore show the dialogue window) despite detecting an immediate conversation-ender in branch 0 even if there was no speaker and no dialogue text, just so long as there existed a single reply with any characters in it at all.
fixed: the game would not copy knockback timing values when cloning AttackInfo data.
fixed: localized text for participation aura awarded after losing an arena match had a spacing error.
fixed a typo in the Trailing Malatose cutscene narration.
And finally, we have new goodies for people making their own custom campaigns in the campaign creator:
created a turquoise variant of the in-game rug object.
new sound effect added: Drawer.
new sound effect added: Prison Door Close.
new script action: ScalePortrait. Allows you to adjust the size of an existing character portrait at runtime. Two parameters: portrait name and scale. (By default, most portraits have a scale of 1.0, though this can vary for proc gen and custom portraits.)
new script actions: HighestStatUnitsToList and LowestStatUnitsToList. Gets the characters in the specified army or roster tied for the highest or lowest value in the specified stat, then adds their name to a custom list. Parameters: list name, roster or army number, and stat name.
new script actions: HighestStatUnitsInList and LowestStatUnitsInList. Pulls the characters from an existing list who are tied for the highest or lowest value in the specified stat, then adds their names to a new list. Parameters: existing list name, new list name, and stat name.
the SpawnUnit, GenerateUnit, and GenerateUnique script actions now accept integer ranges for their x coordinate and y coordinate parameters, letting you randomize character spawning within a defined area.
fixed: documentation for the NextFrame action was missing from the campaign editor guide.
And that about covers the changes for this month!
Featured coverage!
I'm now going to shout out Titanium Legman again here for his delightful coverage of Together in Battle over the past month, including
this lovely overview video (I quote: βIt makes for a very compelling, one-more-battle type of feeling that I haven't gotten from a strategy RPG in a good long whileβ) and
this SRPG tier list video where (spoilers!) he ranks Together in Battle in A-tier alongside Fire Emblem Three Houses, Fire Emblem Awakening, and Fire Emblem Path of Radiance--even in its unfinished, early access state! (I quote: "Phenomenal.")
As the kids say: what an absolute king! π
What's next
We're on track to hit the full version 1.0 release in Spring 2025; and as it happens, that is precisely when I was hoping to release the game. So I'm feeling pretty good about that!
For our final updates leading up to that launch, my goal is to get the last investigation mission completed; get the last bits of new art and music into the game; create the final plot battle; write the good ending; write the scene with the big post-championship speech to your team; and add in one last event that can occur with Ishita Svaamee if you cross her. (Needless to say, I will also keep polishing the game with balance tweaks and bug fixes, and may throw in some new random events and dialogue as well if the mood strikes.)
As always, feel free to help me out by sending in reports of any bugs you run into, and--if the spirit moves you--by giving the game a nice Steam review. Such things are immensely helpful to a small indie dev like me! Until next month, my friends.
Tactically yours,
Craig
Version 0.7.50: new investigation scenes, new character dialogue, and more!
Hey there, tactics fans! This month's update is a little on the short side because (drum roll, please)...I'm getting married this Saturday! Still, I've got some good stuff here that I hope you enjoy.
The two biggest additions are simply new investigation cutscenes:
wrote a new interrogation scene with Malatose.
wrote a new interrogation scene with Wailling.
Both of these scenes provide information important to the conspiracy investigation and set up new main plot missions that I'm planning for the next update. π
Miscellaneous features, improvements, and balance changes:
generic unit portraits now shift skin and hair color to match their sprites!
updated to a newer version of Unity.
reduced frame drops that had started occurring during combat zoom-in and zoom-out.
both proc gen characters and custom characters are now assigned a sad info response line when they are created. These responses are now used after particularly dark background dialogue in camp. (If the responding character comes from an older version of the game and therefore lacks a sad response variant, they'll just respond with a normal response line that generally won't acknowledge the seriousness of the disclosure.)
wrote new nickname response lines for characters with the compulsive, empirical, imaginative, jokester, arrogant, serious, disciplined, sensitive, and vindictive personality traits! This means that a little more then one-third of all new characters will now have distinctive, personality-based responses to being nicknamed. (Characters from previous versions, by contrast, will all have responses picked from the same pool of half a dozen or so generic replies.)
wrote a new talk narration for narcissistic characters.
wrote new, self-loathing "fantasize" camp activity narrations for characters fantasizing about another character with whom they have a romance stat of 0 or lower.
when characters are lined up to have dialogue with one another in camp, if the game detects that there is no valid dialogue they can have together, the game now tries to give them a narrated "small talk" activity instead of having them say "Actually, I have nothing to say."
when premade generic units promote to classes that have new default weapon skills (e.g. the Blackguard with Throw Knife or Mantis Knight with Halberd), if they don't spawn with droppable weapons equipped, they now gain those new default skills as natural skills.
generic Marauders and Berserkers now have Throw Axe as default weapon skills.
improved the descriptions on certain personality traits for purposes of the character creator.
A quick note about the new response lines: if you have a custom character you made in a previous version whom you'd like to receive those new response lines, just open the character in the custom character creator and re-save them; the game should assign them new dialogue lines (including the new response types)!
Numerous bug fixes!
Thanks to me not adding any big new features this month, I was able to spend a good bit of time focused on knocking out a lot of bugs with highly specific reproduction conditions (plus a few that cropped up due to recent changes in the code):
fixed: the game had begun triggering visual and audio cues for characters dropping into chasms when merely moving onto bridges above (or, in the case of flying units, flying onto) chasm tiles.
fixed: the code which made the traveling merchant event more commonplace had a typo, essentially adding a nonexistent event into the event hopper and making the game skip to the next day whenever it came up.
fixed: it was possible for the game to select a heatwave event upon returning to camp in the evening, which would throw an error and cause the game to skip the evening's events.
fixed: if you recruited the enemy kineticist during the Monkey League Qualifier, they retained a script ID tag that could cause the game to inappropriately make them deliver lines intended for enemies during subsequent battles.
fixed: regular, non-dialogue camp activities intended to alter characters' familiarity, friendship, and romance were misformatted and so were not actually altering these values.
fixed: certain response lines incorporating the speaker's non-verbal tic were getting the entire line replaced with just the tic narration.
fixed: certain response lines incorporating the speaker's specific laugh were getting the entire line replaced with just the laugh description.
fixed: if a character got the random "romantic crush" event in camp, then lost their romantic feelings for their crush before they could fantasize about them (e.g. via the crush turning them down for a date or saying something unkind to them), the game would fail to find any valid "fantasize" narration in camp when the fantasizing character came up during free rein, thereby freezing the game.
fixed: if a character asked another character out on a date, the game could leave a forced "fantasize" camp activity tag on the character despite removing the associated camp activity from their "free rein" activity list.
fixed: the Trailing Malatose event could be triggered repeatedly.
fixed: the game was triggering an event where the player receives a letter from Manbir about Malatose much too early.
fixed: if they hadn't been triggered beforehand, Ishita Svaamee's buyout offer events would remain in the random event hopper even after the championship battle.
fixed: a bunch of potential character interests were missing from the "ally gift" event.
fixed: when generating a unique named knife for the "family weapon" event, the game would assign the wrong image name, causing the weapon to display no image in inventory screens.
fixed: a change in the last update broke the NPC attribute special character in dialogue, causing NPC pronouns in proc gen character dialogue (particularly background lines concerning family members) to simply not appear.
fixed: many day logs for investigatory visits to the palace were being cut off.
fixed: custom variables and other special characters within map objectives were not being processed during auto-displaying of objectives at the start of a battle.
fixed: default lines and attributes from the game's placeholder CharAttributes.xml file could be loaded alongside campaign-specific lines and attributes even when they shared the same ID.
fixed: as of the last Unity version update, objects assigned to a player army (e.g. the statue in Defend the Idol) were using a material containing the wrong render order, leading to these objects always displaying behind characters even when they should have displayed in front.
fixed: in rare circumstances, the game could still fail to display the counterattack sprite when showing reasons why a character wants a piece of equipment.
fixed: when playing in gamepad mode, the gamepad cursors were misaligned to buttons in the new turn box and the actions bar.
fixed: when loading a previously created custom character in the custom character creator, the game was not loading tooltip data for the personality and physical trait pickers.
fixed: tooltips for personality and physical attributes could appear below the portrait pickers in the character creation screen.
And finally, we have a few improvements for campaign makers:
if the game detects a plural in the Relationship parameter for an -NPC:x- attribute special character in dialogue (e.g. when the NPC relationship is "mom and dad" or "aunt and uncle"), and the Attribute Type is a special character pronoun, the game will now supply the appropriate they/them plural pronoun.
fixed: the campaign creation suite was not loading campaign-specific custom character classes upon loading up a campaign for editing.
fixed: a null error was preventing the cutscene editor from working properly.
That's all for this update! As I mentioned last month, all the big-ticket features are in-game at this point, so from here until release, it's just churning out content and polishing things up.
I'm going to take a little time to enjoy the whole "getting married" thing, but I'll be back to working on Together in Battle soon enough! I'm looking to get two new main-plot missions done for next month's update--and if there's time, maybe another non-main-plot event or two. Until next time!
Yours in tactics,
Craig
Version 0.7.00: character creation, hair and skin tone matching in sprites!
Greetings, tactics fans! I've spent this past month overwhelmingly focused on two complicated, big-ticket features for the game--things I've received numerous requests for, and which--in one case--I've been wanting to implement for years now.
So let's talk about those two big items...
...Character creation and skin/hair palette swapping for battlefield sprites!
there is now a character creator button accessible on the title screen that lets you create and manage custom characters, each with their own name, species, gender, class, portrait, personality, physical traits, romantic preferences, and stat growths!
Whenever you visit the recruiter in-game, if the game detects custom characters, there is an 80% chance that the game will pull one of them to appear among the procedurally generated characters. (If there are two or more custom characters, there's a 20% chance that the game will pull two of them instead!)
human character sprites now support hair and skin palette-swapping! This manifests in a few different ways, but the most immediately obvious and impactful one is that battle sprites for your recruited characters now have skin tone and hair color that match their portraits, This really helps make characters feel like unique individuals in battle, helps sell the setting, and--perhaps most importantly--makes it much, much easier to tell who is who (especially when you have multiple instances of the same class on your team).
by that same token, arena opponents now have randomized skin tones and hair colors, and premade unit types native to Kalkerapur now use region-appropriate skin tones and hair colors for their sprites.
Miscellaneous changes and improvements:
designed a new palace intrigue battle (not yet reachable in-game, but in preparation for main plot events to come in the next month or two)!
the likelihood of getting the merchant side quests now increases with each week or so that goes by without the player getting them.
further increased the likelihood that characters will choose to interact with other characters with whom they are already friends or lovers.
added a tutorial explaining how to check enemy ranges.
added tooltips to the main menu buttons on the title screen.
updated the localization file to account for the new UI elements on the title screen.
the game now creates a directory for mods when it is run if it doesn't detect one. (This is currently used only for custom characters, but forms a technical basis for supporting mods specific to the main campaign going forward!)
Bug fixes:
fixed: Silent Wings would not auto-promote upon reaching level 20 due to having the wrong class name.
fixed: when explosive charges detonated on their own due to Burning status and thereby destroyed bridge tiles with characters on top of them, those characters would not fall fully into whatever hazards lay beneath.
fixed incorrect palette highlight coloration for pants in the photokurios/photarch sprite.
fixed: in rare circumstances, when slaying an enemy using a knockback attack into water, if the enemy had a defeat bark, the game could throw a null error.
fixed: when clicking quickly through a late-night event with queued-up Wait actions (such as the "nightmare" event), it was possible to end the scene before the wait commands were fully cleared from the action runner, resulting in the next day's scripts not running and the game locking up.
fixed some errors in the female kineticist Levitate animation.
fixed some issues in the mentalist walk and cast animations.
Campaign creator improvements:
new script action: ShowCharCreator. This summons the new character creation screen, allowing players to create a custom character during your campaign! Parameters: load ID to supply the created character, and list name for permitted species (in case the player should be limited to certain species for their character). Cutscenes only.
premade characters can now have a range of possible skin and hair palettes assigned to them, allowing their sprites to match their portraits.
expanded the Map Settings screen in the map editor; added a fifth objectives field and a new field to assign a battle background (i.e. a flat image that surrounds the battlefield and pans around with it when you move the camera).
battle backgrounds can now be moved toward (or away from) the camera on a map-by-map basis to better align with the shape of the battlefield.
new battle background: Garden.
new destructible object: lavender flower bush.
And that about covers it!
Where we're at
With this update, all big-ticket engine features planned for the game's version 1.0 release are now in. From this point on, it's officially just designing cutscenes and battles to round out the main plot, along with the odd random event.
With this benchmark reached, I've taken the liberty of bringing Together in Battle's price in line with what it will cost upon final release (i.e. $19.99). If you already own the game, then congrats: you got it at a big discount and nothing about that changes! If you don't already own it, then congrats: you get the benefit of buying the game when it's good and polished and plump with content!
Either way, thanks to everyone who's supported Together in Battle so far, and thanks to everyone who decides to jump in and support it going forward. I couldn't do it without you! Until next month...