1. Together in Battle
  2. News

Together in Battle News

Version 0.2.09: repair kits, broken weapons, and further AI refinement!

Greetings, tactics fans! Real life has once again been interfering more than I'd like (the curse of being a solo dev with a day job), but I still managed to make time to add in more requested features, improve existing ones, and fix some bugs. It's a shorter update this week, but hopefully you enjoy it:

- the game now supports an alternative set of weapon breakage rules: when a weapon breaks, instead of completely disappearing and leaving the equipped character with no usable attack skills, the weapon reforms into a "broken" version of itself. This allows the character to still use weapon-dependent attacks, but the broken weapon will have no stat bonuses, tags, or scripts; no resale value; and a -4 Strength penalty.

- weapon breakage rules now differ between difficulties: Brutal retains the old "broken weapons vanish" rule, but lower difficulties adopt the new "broken weapons reform as a weakened version of themselves" rule. (Note that the new "reform broken weapons" rule is now the default; you will have to start a new Brutal run to get the old rule to apply.)

- weapon breakage rules are now settable as part of custom difficulty.

- new item: Repair Kit. A consumable item that restores 20 uses to the user's current equipped weapon, up to the weapon's ordinary maximum number of uses. (But beware: it does not work on broken weapons!)

- the shop now has a 60% chance of carrying a single repair kit on any given visit, while the traveling merchant has a 100% chance of carrying 2 or 3 of them.

- made a difficulty-scaling pass on all of the game's side quest battles. They now all scale in difficulty based on time passed so as to present an appropriate challenge if they happen later in the run.

- it took refactoring of some code, but I further improved the AI's anti-trap checks. Enemies now avoid wandering into fire in a wider variety of situations.

- the AI now inherently values any move that results in a character moving off of a damage-dealing space, even if the move provides no other benefit. (The game already did this for characters submerged in water or lava, but for obvious reasons, the "swim to safety" behavior doesn't work with fire.) This should address the phenomenon of passive enemies on a fire tile without an enemy in range simply ending their turn instead of moving to safety.

- reworded "save scumming" to "manual saving" during the introduction scene. (Apparently there were players who interpreted the phrase as some kind of personal insult, which was definitely not the intention!)

- fixed: clicking on an Immobilized character would not show the character's attack range.

- fixed: a typo in the classes file was causing the game to skip promotions (among other possible issues).

- fixed: Shield skills that didn't affect health or impart a status effect (e.g. Static Shield) wouldn't grant experience unless the target was missing health.

- fixed: the OnTurn and BeforeTurn dialogue triggers had stopped being repeatable.

- fixed for 0.2.09a: a change to the AI in the last patch resulted in the AI triggering a null error when trying to swim out of water.

- fixed for 0.2.09a: if you reclassed a lissit to any of the main psy-user classes, it would change their character sprite to a human's and mess up their character portrait.


And specifically for campaign creators:

- new script action: WeaponBreakageRules. Changes the rules governing weapon breakage game-wide. If Rule Type is set to Destroy, broken weapons will disappear; if Rule Type is set to Reform, broken weapons will remain but will lose all stat benefits, status effects, tags, etc., will have a sell value of 0, and will impose Strength -4, but will allow the character to keep using weapon-dependent skills.


As mentioned, this is a smaller update, but hopefully you appreciate the changes! This should be the last major systems-focused update I make for a while; going forward, I'll be shifting to updates focused on adding new events, side quests, and main plot scenes and battles. I'm also going to shift from weekly to monthly updates so I can take the time to thoroughly write, design, balance, and test all those new events, cut scenes, and battles.

Until next time!


Craig

Version 0.2.08: campaign downloading and AI improvements!

Greetings, tactics fans! I'm back with another update to Together in Battle. Today's update includes the ability to download custom campaigns, some requested AI improvements, new spriggat abilities, new inter-character arguments, and more!

Let's start with the AI. I'm usually loathe to touch the game's AI, as the systems involved are quite complicated and risky to mess around with--however, the AI's difficulty navigating fire on Gharial League maps was annoying enough that I decided to just dive in and make changes. After many hours of AI hell, I emerged victorious with a number of fixes and improvements!

- the AI now actively avoids wandering through non-player-created fire and traps when making "long range" moves (i.e. moves that won't bring it into range to immediately use a skill on anyone). This won't prevent you from baiting nearby enemies into preexisting fire and traps, but enemies should no longer randomly wander into fire or traps when they're nowhere near you.

- reduced the weighting that the AI gives to ally-buffing moves by 80%, meaning that the AI should now pretty much always favor direct attacks against characters within move-and-attack range when given the choice.

- fixed: in situations where the AI evaluated potential knockback moves that would collide the target against a damaging object (e.g. a spiked barricade) or character with a counterattack, the game would actually queue up the object or character's counterattack as though the knockback move had already been chosen and executed. This resulted in phantom counterattacks sometimes going off seemingly at random during the enemy turn.

- fixed: in some circumstances, AI-controlled characters who walked into fire would not continue their turns afterwards.

- fixed: the AI was not evaluating energy-draining skills correctly. It was checking the energy drain against total health instead of total energy for purposes of gauging efficacy, and did not account for overflow damage from energy-draining skills dropping the target's energy below zero.

- fixed: the AI was treating energy-draining skills as though they would be effective against inanimate objects (which they are not).

- fixed: the AI wasn't accounting for the dodge bonus granted by tall grass when weighing different attack options.


Those are the AI improvements, but wait--there's more! We also have new features, skills, event variations, and more. Let's start with the big marquee feature--browsing player-made campaigns!

- in-game browsing and downloading of player-made campaigns is now working! Click the blue flag button in the New Game menu to browse campaigns that other players have uploaded.

- new advanced spriggat skills: Fire Breath 3, Frost Breath 3, Dark Breath 3, and Light Breath 3. These all deal damage in a cone pattern that covers nine spaces.

- spriggats now learn their third-tier breath attack if they promote to greater spriggats, or else learn the multi-target hit-and-run melee skill Claws if they promote to an elemental claw class.

- doubled the psy buff for promoting to a greater spriggat and doubled the strength buff for promoting to an elemental claw. This should make these classes stronger and help to further differentiate their roles.

- reduced the amount that Strength contributes to a spriggat's base salary by about 33%.

- increased the floor (i.e. lowest allowable value) for starting energy on spirits and the major psy classes to 12. (This should prevent the game from generating psy healers, kineticists, and other primary psy users with 5 maximum energy.)

- increased the energy cost of Light Bomb from 18 to 20.

- increased the energy cost of Fury and Stimulate from 5 to 6 and reduced the duration of Strengthened and Lucid from 4 rounds to 3.

- in the shop, reduced the spawn chance of Runner's Cleats to 4% and Binoculars to 8%.

- fixed: the PICKFROMLIST{} special character would never pick the last entry in the list. This was causing the game to ignore the second "generic" argument in the argument event, all but ensuring that only one argument ("unwanted advice") was ever chosen unless the game happened to randomly draw two participants with clashing personality traits.



- re-scripted the camp "argument" event so the game will always choose characters with clashing personality traits to participate if available. (This will cause unique arguments tailored to each character's personality to show up much, much more often.) Moreover, personality-conflict arguments between two characters in the argument event will now always trump other arguments.

- wrote two new personality-conflict argument variants for religious and empirical characters, bringing the total number of unique arguments that can be chosen for this event up from 12 to 14.

- when a camp activity affects more than one social stat (familiarity, friendship, or romance) at once, the game now staggers the pop-ups a bit to make everything easier to see.

- fixed: level-ups and promotions produced by items used via a character screen from within reserve supplies menu would not "stick."

- fixed a range error produced when enemies applied a status effect under fog of war and were then revealed (manifesting primarily as fog tiles no longer being removed).

- fixed: cosmetic bridge connections spawning below ground level on solid terrain could override the space's ordinary elevation with a lower one.

- fixed: the game wasn't accounting for the dodge bonus granted by tall grass when displaying attack accuracy upon mousing over an attack tile.

- fixed: it was possible to stall until after the Festival of the Ascendant Lights to trigger the surprise camp visitation plot event.

- fixed: players with OSes set to countries that habitually use a comma to denote a decimal point would have their machine parse certain numbers incorrectly (which I suspect was responsible for messing up the timing of certain actions in combat for European players).

- fixed: the mentalist headband portrait accessory was misaligned on one of the male human head variants.

- fixed: the game's "check ahead for conversation-ending script actions within called scripts" functionality was not interacting correctly with conditional Run-type actions (e.g. IfValRun, IfStringRun, etc.)


And as usual, we have some goodies for people using the campaign creation suite:



- I created and uploaded a short example campaign to Steam Workshop demonstrating how to make use of the Together in Battle engine's most unique features (like recruitment, the calendar, and camp interactions). Open it up in the campaign creator to see how these things are done!

- new script action: PairToList. Winnows down an existing list of characters to two who meet distinct, specified sets of attribute requirements, then send their names to a new list.

- scripting improvement: you can now specify the name of a list for purposes of LASTINLIST[] special character using a custom string variable.

- scripting improvement: you can now use a custom integer value within an ID[] special character.

- fixed: the CombineLists script action did not work properly when combining more than two lists at once.

That's all for now--I have more things planned for the next update. Until next time!


Tactically yours,

Craig

Version 0.2.07: Custom difficulty!

Hey folks! Real life stuff interfered quite a bit with this past week, but I did still manage to add a much-requested feature: you can now create runs with custom difficulty!

Here are the changes:

- added custom difficulty to the difficulty selection! You can now create a new run with customizable AI difficulty, death rules, item prices, food prices, salary bases, training costs, and starting aura, as well as the option to turn off weapon durability.

- boosted training costs by 10% for brutal difficulty (applies to new runs only).

- broke up the arena manager's dialogue in the Qualifier Scheduling scene upon losing the Monkey League Qualifier into two branches, making it easier to see that the qualifier won't be rescheduled until the player goes back and wins another non-league match.

- updated in-game documentation to more clearly explain what each level of the AIHandicap script action does.

- fixed a typo in the tooltip for Relaxed difficulty on the difficulty selection screen.

- fixed an error in the way the game checked for level-specific skills in the progression which could cause a freeze upon promoting certain classes (such as bowmen).

- fixed a typo in the animated calendar for days 21, 22, and 23 of each month.

- fixed: cross-fading music during promotions was not behaving as intended, leaving two tracks playing simultaneously.

- fixed: cross-fading music was causing the new track to play too quietly.

- fixed: faded-out music could unexpectedly start playing again during scene transitions.

- fixed: the game was reconnecting and spawning a brand-new instance of the Steamworks manager class every time the player returned to the title screen.


As mentioned, this is a shorter one, but I hope you enjoy the new custom difficulty options. There's more to come!


Tactically yours,

Craig

Version 0.2.06: Plot progress!

Happy Monday, tactics fans! I've been continuing to work very hard on Together in Battle, adding more content, improving balance, and fixing bugs. This update came together a bit slower than I wanted due to real-life stuff (and also because I took the time to push three rounds of hotfixes to the last update)--but now that it's here, I'm pleased as punch to tell you everything new!

First and most significantly, the next main plot event is now in the game! I won't say anything here about what it is, but it occurs on the day after the Festival of the Ascendant Lights. (If you have a playthrough where a match is already scheduled for that day, just be aware that you won't be able to trigger the event--but the game will avoid scheduling fights on that day for subsequent playthroughs.)

In addition to this, there's a new Axefighter skill and new items can appear in the shop. I also made a few more balance tweaks and fixed a whole bunch of bugs. Without further ado, here are all the changes:

- throwing a character onto a space occupied by an object with "flying" passability now produces a context-dependent effect: if the character is an ally, they are thrown on top of the object as normal; but if the character is not an ally, they will now be thrown into the object instead for collision damage (and--if the object is spiked--additional piercing spike damage).

- new skill: Grappler Stance. Places a hold on one adjacent space, keeping enemies from moving away from (or through) it. This skill is learned by axefighters.

- skills which creates Holds can now be targeted on spaces occupied by other characters.

- helms can now get modifiers as part of the procedural generation process! Modifiers currently supported include Stylish (+1 morale), Beautiful (+2 morale), Gorgeous (+4 morale), Visored (immunity to Blinded status), and Calming (+1 energy regen).

- item quality in the shop now automatically increases upon getting into Snow Leopard League and upon successfully completing the Nihal's Bandits side quest.

- new accessory worn on the head: Bifocals. +10% Accuracy, can be equipped by anyone.

- added bifocals and torches to the shop's pool of "miscellaneous" items; reduced the odds of runner's cleats showing up in stock to 5%.

- toned down the photokineticist's Dazzle skill: it now applies Blinded only once with a base 100% chance (removing the additional 50% chance to apply it a second time) with a 50% chance to apply Distracted once (instead of one to three times).

- changed the way the game handles thieves in arena fights: instead of allying them with the enemy team, thieves now have ignore tags for both armies and a target value of 0. This should keep the enemy team from seeing healing or buffing thieves as a good move.

- pay for hiring out now scales more slowly with strength and caps out at 75 aura per character instead of 90.

- characters now only give a friendly fire reaction when allied skills with the element "Falling" (e.g. Kinetic Gust, Shove, Throw) deal more than 5 damage to them.

- rewrote religious attack, deployment, and victory barks to bring them more in line with the particular doctrines of each given character's religion.

- the info bar in the top-left of the screen now auto-updates food consumption and payroll info as soon as you dismiss a character.

- updated the trainer's dialogue a bit to explain that characters undergoing paradigm training will keep their old skills and masteries, but will learn new ones exclusively in their new class going forwards.

- boosted the amplitude of the song "Conspiracy" to better match the amplitude levels on other tracks.

- fixed: Golem and Spirits could be selected for the Sick Parent event in camp, which would result in the game freezing when it came time for them to talk about their parents (since spirits and golems do not have parents).

- fixed: when an enemy applied a status effect under fog of war, the game would not load the associated status effect icon for the targeted character at all. This would then cause a range error when the affected character came into view and the game tried to display the nonexistent (but expected) status effect icon, in turn causing a cascade of other issues like fog of wars tiles no longer being removed.

- fixed: ranged attackers could sometimes counterattack after being shoved into water or lava.

- fixed: surrendering in the Monkey League Qualifier would not send the player back to the qualifier scheduling scene as intended.

- fixed: characters ending a battle while swimming would have their movement type appear as swimming during deployment for the next battle.

- fixed: the cavalier and mantis knight sprite animations for Mega Charge were wrapping up about 4 frames too early.

- fixed: the special Day 1 daytime text in Kalkerapur ("The tournament begins tomorrow and you need a team. Time to go recruit some fighters!") was no longer appearing.

- fixed: the arena manager was not saying the day of the month that league matches were scheduled for due to a formatting error.

- fixed: characters could sometimes ignore orders given during one-on-ones due to leftover ForceNextCampActivity tags from previous one-on-ones or random events.

- fixed: the RemoveTag script action was not splitting up tag parameters, leading to situations where it was failing to remove specified tags (most notably, ForceNextCampActivity tags).

- fixed: you could mess up the ordering of nighttime camp events if you happened to click the background during the 1/100th of a second delay before character dialogue appeared onscreen.

- fixed: skills, masteries, and other things learned at specific levels (such as Book of Power mastery or the Assassin's Leap skill) would get reintroduced into a character's skill progression upon promotion, leading to that character learning a duplicate of that thing upon reaching level 2 of their promoted class.

- fixed: the upper UI buttons in recruitment had become unusable when a character was selected during recruitment.

- fixed: even if slain before turn 5, the Monkey League Qualifier team leader would still issue a taunt.

- fixed: losing fights or winning league qualifiers would modify golem morale.

- fixed: characters' steps taken would be reset to 0 upon promoting mid-turn in battle.

- fixed: if the skills bar was set to a character's second page of skills and they were thrown into water or lava, the game would still display their second (now blank) page of skills upon selecting them, making it impossible to command them to swim.

- fixed: the game was not recognizing player-placed Caltrops as traps for purposes of warning the player about moving their own units into them.

- fixed: when fire was spawned in front of elevated terrain, its smoke particles would aggressively clip through the terrain.

- fixed a formatting error in the character dialogue responding to a player's decision not to reclass a character in camp.

- fixed: the logger was not saving the version number in log files.

- fixed: status effect immunity popup text was misformatted.


For the campaign creation suite, we have a few improvements:

- the map editor now supports loading and saving a discrete defeatScene attribute for battles, allowing you to easily set a next scene dependent on the player's defeat without using conditions.

- new script action: SetDefeatScene. Sets the defeatScene attribute to a different scene for the current battle.

- new script action: AddStock. Programmatically adds stock to an existing shop in the scene. Lasts until the scene ends.

- new tag supported: Immunity. Grants status effect immunity to the tagged unit.

- new tag supported: AreaPreference. Alters the AI's calculated value for moves in which the tagged character ends their move in the named Area. You can use to nudge particular AI characters toward choosing moves that place them in specific areas of the battlefield; or alternatively, to dissuade them from pursuing moves in certain areas.

- new usable skill icon: Grappler Stance.

- new usable item icon: Bifocals.

- fixed: the character creator could roll up generic units with morale above zero (i.e. neutral).


And finally, we have some progress on gamepad support. (Gamepads aren't officially supported in-game as of yet, but hey--progress is progress):

- rather than duplicating the left trigger's zoom function, the right trigger is now mapped as an automatic "End Turn" button.

- the game now automatically repositions the gamepad cursor when auto-panning the camera during in-battle dialogue.

- fixed: gamepad controls were not functioning properly in the shop tutorial.

- fixed: the gamepad would sometimes be locked out of movement during deployment due to an internal failure to clear dialogue triggered at the start of turn 0.


[h2]Reviews![/h2]

TIB is already garnering some great reactions from content creators less than a month out from its early-access launch, including this one-two punch of positive launch review and even-more-positive follow-up vid from delightful SRPG channel 89 Games:

[previewyoutube][/previewyoutube]

There have been some very nice reviews from players as well--today I'll highlight this one, which I really loved:



If you haven't done so yet and you're enjoying the game, please consider leaving a review of your own. Positive player reviews like this make a world of difference (as do gentle nudges to your favorite content creators to check out the game, *wink* *wink*).

Anyway, that's all I have for this update, but there is much more to come. Thanks for your support--I'll see you in the next one! 😉


Tactically yours,

Craig

Version 0.2.05: More--and more varied--battles!

Greetings, tactics fans! I'm still putting out updates at a rapid pace here: today's update adds more variety to the arena fights, with faster progression between leagues and more variation in the types of fights that can occur, as well as a new league: Snow Leopard League!

There are other changes too, but let's start with the additional battles and battle variation changes:

- Snow Leopard League is now in-game! You can now progress through Snow Leopard League all the way up to the Tiger League Qualifier.

- new arena match type: Defend the Idol. This spawns a golden statue about 2-3 turns away from the enemy's spawn points and tasks you with defending it from destruction.

- new arena match type: 4-on-4. This limits each team to only 4 characters! Enemies are a bit stronger than normal, there is an accelerated timer, extra destructible objects (like tall grasses, spiked barricades, and traps) are dropped around the arena, and bonus chests are dropped as well (at least two of which are guaranteed to contain money).


On top of this, this update offers a variety of changes to improve balance and pacing:

- perhaps the most noticeable alteration is a change in the game's pacing: the number of league wins it takes to progress to the next league's qualifier has been shortened from five to four. This means quicker access to the next league qualifier's prize pool, easing the economic difficulty somewhat; shorter time in which to grind up levels, increasing the combat difficulty in the later leagues somewhat; and in general, less time to get bored of any one league. 😉

- experience scaling is now 15% per level of difference in both directions (as opposed to being a 15% per-level bonus when lower level and a 10% per-level penalty when higher level), making it a bit harder to blast past the game's experience curve.

- team leaders are now more likely to spawn with extra items in arena fights.

- the cavalier skill Charge was proving a little too oppressive in the game's tight arena maps, so I dropped the damage on Charge from 1.5x strength to a more reasonable 1.25x strength.

- fixed: traps and holds were not interrupting self-move skills (like the cavalier's Charge) as intended.

- added a new skill: Mega Charge. Deals 1.5x strength and has two 75% chances to inflict stun. This one is learned exclusively by cavaliers after promoting.

- buffed the swordsman's swordmaster promotion to make it more competitive with the blade dancer:
swordmasters now get Hold added to their skill progressions.

- buffed the cavalier's mantis knight promotion to make it more competitive with the mant lancer: mantis knights can now use another skill in the same turn after using Lance.

- you can now train accuracy at the trainer, making status-effect builds more reliable and offering more options for addressing enemies with high Dodge.

- added in 0.2.05a: increased the uses on Eye Drops, Caffeine Pills, Lead Ointment and Thermal Paste to make consumables more economical as a counter to enemy status effects.

- added in 0.2.05b: the elevation tutorial now spells out the formula for how much damage is caused by falling.


And what would an update be without bug fixes? I already mentioned the fix about cavaliers charging through traps unaffected, but there are more:

- fixed: the game was inappropriately treating scripts containing the SetNextScene action as if they actually contained NextScene, which caused the game to stop updating the dialogue menu, effectively glitching out the game. (This would occur most consistently at the trainer.)

- fixed: the trainer was inappropriately including stat modifiers granted by equipment when determining the level of certain stats for purposes of calculating training costs. This was making strength, especially, much more expensive to train than intended.

- fixed a bug in the game's battlefield generation logic that was causing counterattack-possessing objects like Spiked Barricades and Fire to always cluster within two spaces of the player's deployment spots instead of being scattered around the map.

- fixed a typo in the class requirements for bowmen that made positive psy growth a requirement for the class instead of positive strength growth. This led to the game generating bowmen with no strength growth at all.

- fixed: characters in classes that normally have two skills at level one would start off missing their second level-one skill if they had Motivate.

- fixed: characters could get activity narration forbidden by their biographical details in camp (e.g. religious characters offering prayers belonging to the wrong religion).

- the game's calendar system now distinguishes between actual events and simple reminders (e.g. about characters returning or shops not being open); the game will now schedule exclusive events (like league qualifiers) on days which contain reminders.

- fixed in 0.2.05a: the game would sometimes throw a range error during character promotions.

- fixed in 0.2.05a: the game would throw a range error during recruitment if the total number of initial recruits was not neatly divisible by 6.

- fixed in 0.2.05a: in rare instances, 2D particles could cause the game to throw a null error.

- fixed in 0.2.05b: changes to the scripting in the last update made it so that fighting pickup matches while waiting for the Monkey League Qualifier would cause the game to reschedule the Monkey League Qualifier.

- fixed in 0.2.05b: the Protect Char condition was not working on destructible objects, resulting in the Defend the Idol loss condition never triggering.

- fixed in 0.2.05c: Defend the Idol matches were being chosen much too often in Monkey League.

- fixed in 0.2.05c: the game was not taking minimum distance rules into account when spawning the idol for Defend the Idol.



Finally, we have improvements for folks using the campaign creation suite:

- objective reticles may now be placed and removed using a character name (or ID[] tag) instead of just x and y coordinates.

- RemoveSpawn may now take the loadID parameter "Deployment" in proc gen maps to remove procedurally generated deployment spots.

- added in 0.2.05a: updated the default introduction scene so it's more useful right out of the gate.

- added in 0.2.05a: characters created with the character creator now have an appropriate babble voice set assigned to them.

- added in 0.2.05a: new reply type, cut scene only: Next Frame. Ends the current dialogue and proceeds to the next frame of the cut scene.

- added in 0.2.05a: updated usable skill icons with the new Mind Domination and Mega Charge icons.

- fixed in 0.2.05a: "duplicate dialogue branch" functionality was not working correctly in the dialogue editor.

- fixed in 0.2.05a: moving a branch downward within a dialogue tree would produce a range error.

- fixed in 0.2.05a: the game would not recognize premade characters for purposes of the AddPortrait script actions if the game hadn't already saved loaded characters at least once.

- fixed in 0.2.05a: the game did not clear the New Roster tag when hitting New Scene in the cut scene editor, resulting in an already-open scene's new roster carrying over to the new scene as well.

- fixed in 0.2.05a: typing the letter 'L' in the cut scene editor would still trigger the game's "save log" functionality.


That's it for this update, folks! I was originally planning to wait a bit longer and include some new main plot stuff, but I don't want to delay dropping an update with critical bug fixes, so the new plot stuff will be coming in the next update instead. I hope you enjoy the new content--I'll see you in the next update!


Tactically yours,

Craig