Now that I've announced the game and its identity is no longer a secret, I'll be continuing the old developer's log (http://sinisterdesign.net/forum/index.php?topic=1769.0) here! (Wow, has it really been more than three and a half years since I started that thing?! Sheesh!)
We'll start modestly:
-- fixed: inventory buttons would inappropriately display in the recruitment screen when a recruit had nothing in their inventory.
-- created a new visual effect for when character relationships improve! :)
-- changed some log commands that were inappropriately labeling normal outcomes as errors.
-- increased the deployment barks each procedurally generated character has from 2 to 3.
-- fixed: Unity was rounding 0.5 down to 0 instead of up to 1, which is apparently because Mathf.RoundToInt() just uses C#'s default rounding (https://forum.unity.com/threads/mathf-roundtoint.491182/), which was designed for banks and not for games.
-- added some extra UI sound effects that were missing for the army overview and reserve supplies screens.
-- improved the "relationship improving" visual effect; added a sound effect accompanying it.
-- new script action: PortraitParticles. Lets you spawn 2D particle effects around a character's face in their portrait. Two parameters: portrait reference name, and particles preset name.
-- continued to improve the "relationship improving" visual effects.
-- added subtle blob shadows below 2D characters and objects.
-- fixed: the swordsman's Shove animation sprite sheet was being compressed inappropriately, leading to it not being palette swapped as intended.
-- fixed: the promotion process would throw a null error when undergone by characters without a Starting Skills stat (i.e. most premade, non-generated units).
-- fixed: save file slots would allow long campaign names to overflow into subsequent lines.
-- created a new camp activity, Restaurant, in which one or more characters heads into town and spends the evening trying out a new restaurant.
-- added the restaurant activity as a potential outcome to the evening event where a character asks another character out on a date; wrote new dialogue variants for the event.
-- added "relationship improving" visual effects to the variants in all random scripted events where character relationships improve.
-- the game now keeps the existing talk symbol between lines of dialogue where the speaker doesn't change.
-- fixed: the talk symbol would continue to pulse over talking characters even as the dialogue interface disappeared while they moved from a MoveUnit action.
-- fixed: purely narrated, dialogue-free camp activities were not affecting character familiarity, friendship, or romance values.
-- when displaying a dialogue branch with multiple replies, the replies are now hidden until the text finishes animating (or you click to skip the animation), at which point they visibly fade in over a fraction of a second. (It looks much, much nicer this way, and doesn't block the entire scene from the outset.)
-- new script action: SetNPCAttribute. Lets you change the value for an attribute belonging to a character's NPC (for instance, changing associated feeling from angry to happy, or alive from true to false). Parameters: (1) Character Name, (2) NPC Name, (3) Attribute Type, and (4) New Value.
-- new script action: AddNPC. Lets you add a new NPC to a character. Parameters: Character Name, NPC First Name, NPC Last Name, NPC Nickname, Relation, Species, Gender (Male Female or None), Alive (true or false), Location, and Associated Feeling.
-- broke the test settings interface out from the campaign editor into its own module so that instances of it can be placed within the map editor and cut scene editor for faster testing of scenes.
-- you can now test scenes directly from the cut scene editor and map editor.
-- when you return from testing a scene, you return to the editor you hit Test in and the scene you were working on is automatically reloaded.
Sketched out plans for procedural battle generation that builds upon the existing proc gen terrain, player spawns, and randomized enemy spawn code. Drafted up a contract for a programmer to come in and help work on that while I focus on the...everything else.
-- fixed: running a GiveItem action directed at the reserve supplies for the current roster while the shop interface is open in a cut scene would cause the item to never show up in the reserve supplies.
-- fixed: loading a cut scene that calls UnitsToList in the cut scene editor could make the game throw a null error.
-- fixed: a particular snow-water transition tile was incorrectly rotated.
-- fixed: the options screen was calling the wrong function to return to the options screen from within cut scenes.
-- fixed: changes to the dialogue and script editor from a few weeks ago apparently did not populate to the instance within the cut scene editor, causing it to throw null errors when creating new dialogue or scripts.
-- adjusted the sound effect timing on Wrench, Mind Blast, and most axe-based attacks to more closely match up with their animations.
-- added in some missing interface sound effects.
-- fixed: the spearman's Spear attack animation wasn't getting palette swapped due to incorrect compression settings on the sprite sheet.
-- fixed: compression settings on the Mind Blast animation were causing visual artifacts to appear during the animation.
-- fixed: it was possible for skills granted to characters by life background, personality, or physical traits with placement intended for early on in the skill progression to supplant starting skills, resulting in characters not having access to crucial abilities at level 1.
-- fixed: music tracks that began playing while the game's global music volume was set to 0 would not become louder when going into the options menu and increasing the global music volume.
-- fixed: the "done typing" reply wasn't fading in on dialogue branches with text input enabled.
Hired the aforementioned programmer; worked on getting the game set up for Unity Collaborate so that said programmer can work on code alongside me.
-- Create skills now create whatever they're creating with timing appropriate to the Build animation.
-- improved a few character barks.
-- improved the "familiarity/friendship up" sound effects, as well as the "mantis gallop" sound effect.
-- fixed: the game was double-counting starting skills granted to characters by life background, personality, or physical traits, resulting in those characters knowing more skills at level 1 than they should have.
-- fixed: dialogue speech bubbles would sometimes fail to appear when they should.
-- fixed: Create and Move attacks weren't queuing up sound or visual effects.
-- condensed the sprite sheets for Cryo Cross, Dark Vortex and Light Bomb for performance reasons.
-- added visual effects for Cryo Cross, Dark Vortex and Light Bomb into the game.
-- added a height offset parameter to visual effects to adjust the positioning of certain attack VFX which were not displaying in the correct spot.
-- updated the SpawnVisualEffect and SpawnVisualEffectAt script actions with the new parameter.
-- fixed: VFX for Mind Blast spawning too high, Mind Shield spawning too high, and the various stages of each elemental Blast skill spawning either too low or too high.
-- fixed: AOE skills whose last targeted space was empty would register as not hitting anyone for purposes of visual or sound effects, and they would not play any.
-- fixed: the Cryo Cross AOE was misconfigured so that it struck the user as well.
-- fixed: it was possible to click "through" the actions bar in battle.
-- created a "breathing" idle animation via squash-and-stretch, automatically applied to characters while they are in the Rest state.
-- gave the Mentalist a new Energy-draining skill: Nauseate. Less powerful than the Spirit's Drain skill, but it has range comparable to Terror and Dazzle, and can cause Slowed and Sick. Speaking of which...
-- the status effect Sick can now be caused by skills; it lasts 3 rounds and does the same thing as when it is placed via AddMood (that is, it doubles the energy cost of skills and causes resting to not restore energy).
-- created the Nauseate icon.
-- buffed the Spirit's Drain skill by giving it free targeting and doubling its ability to cause Clouded.
-- added Slowed, Weakened, Clouded, and Sick to the status effects that destructible objects are immune to.
-- the properties of status effects can now be altered on an ad hoc basis by appending |Length:x, |Power:x, and |Chance:x to the status effect name (where x is the new value to use for the status effect's length in rounds, power, or chance out of 100 to take effect). For example:
Strengthened|Length:1
This will apply the Strengthened status effect and cause it to last for only a single round (instead of its default length of 4 rounds).
-- the SpawnFloatingText script action is now supported in cut scenes, where it spawns pop-up text over the named character portrait.
-- the game now explicitly states via pop-up text when camp activities and events alter character familiarity, friendship, or romance.
-- new supported pop-up text color: pink.
-- when skills affect stats other than health or energy, the game now explicitly lists the affected stat after the number in the "damage" pop-up.
-- new skill: Defiant Stance. The unit ends their turn but gets +25% Strength until their next turn (effectively buffing up the power of all their counterattacks).
-- every class that automatically got Preemptive Stance in its skill progression now has a 50/50 chance of getting either Preemptive Stance or Defiant Stance.
-- Dazzle now has a base 100% chance of causing Blinded; Nauseate now has a base 75% chance of causing Sick.
-- the skill editor now lets you copy the sound and visual effects from one of the game's default skills.
-- added support for tabbing between fields to the skill editor.
-- added support for tabbing between fields to the item editor.
-- improved the look of familiarity, friendship, and romance pop-up text.
-- 2D particles can now be set to change color over their lifetime.
-- created and implemented a new "hearts dropping and dying" visual effect for when inter-character friendship or romance values drop due to a camp activity or event.
-- cleaned up the "Sinister Design" intro sound and improved the "Breaking" sound effect.
-- there is now a sound effect accompanying the "hearts dropping and dying" visual effect when inter-character friendship or romance values drop.
-- new skill: Quick Shot. A half-damage bow attack with slightly reduced range that lets the user keep moving and use another skill afterwards. Bowmen now have a 50/50 chance to learn this in place of Split Shot 2 late in their skill progression.
-- rewrote the way the skill tooltip displays "damage to energy" for skills that affect energy. Instead of just displaying the energy icon in the damage slot, the game now maintains the damage icon and adds the energy icon as well after the number.
-- cleaned up a few of the procedural character dialogue lines.
-- fixed: the text next to the range icon on skill tooltips would sometimes get cut off on some displays.
Ran a playtest last night to catch bugs and play experience issues before PAX, and today is devoted to fixing as many of them as humanly possible!
-- added a "whiff" sound effect to accompany a dodged attack.
-- added a sound effect to triggering snare traps.
-- applied new pop-up text and "dying heart" particle effects to narrated camp activities as well (in addition to dialogue and random camp events).
-- slowed down pop-up text in cut scenes and just generally improved the presentation of "relationship up" visual indicators.
-- sped up the blinking status effect indicator in battle.
-- halved the delay on displaying "Click to continue" in dialogue and narration boxes.
-- reduced the length of character sickness from random events.
-- renamed the skill Melt to Defrost to make it clear that it's not an offensive skill.
-- the game now changes the text that says "Salary" to "Price" in the recruitment screen when inspecting golems and spirits (who don't have ongoing payroll expenses).
-- adjusted the size of the salary text box to keep text sizing consistent for salaries over 999.
-- updated the mouseover description for the Arena to make it clear that it no longer necessarily boosts team morale.
-- added the "talking" indicator to all of the arena manager's cut scene dialogue.
-- upped the opacity of redded-out buttons in the item expandable options to 100%.
-- fixed a few typos.
-- fixed: due to a misformatted script action, it was sometimes possible to make a character bunk with themselves during a particular camp event.
-- fixed: the event music from plot event 1 would keep playing after it ended.
-- fixed: the game would try to generate bio details and NPCs for spirits and golems, and then throw errors when it couldn't generate golem family members.
-- fixed: drop shadows would display incorrectly on low graphics settings.
-- fixed: the camera would jump when moving the cursor over the Actions Bar while click-and-dragging terrain.
-- fixed: when an attack was canceled from the window warning about attacking an ally or healing an enemy, the character would lose the attack cost in energy as if they'd gone through with it.
-- fixed: load save game slot 4 was directing to slot 0 for some reason.
-- fixed: the game was announcing the same status effect twice via pop-up text under certain circumstances.
-- fixed: the game was sometimes leaving bar spawners in place after a combat exchange, resulting in static health bars appearing (and remaining) in inappropriate locations after moving a unit who had just been in that exchange.
-- fixed: changes to the game's "round float to int" code resulted in negative numbers being rounded incorrectly, causing various scripted events to not escape properly when necessary preconditions were not met.
-- fixed: Mechanic portrait inappropriately remained onscreen when recruiting golems in camp event.
-- fixed: one frame of each elemental Blast attack was misaligned.
-- fixed: when a character reacted to a friend falling in battle, the reaction line would delivered by the attacking enemy unit instead of the friend.
Created a demo version of the game for PAX East!
-- it is now possible to use a list of characters as part of the stat name parameter for SetStat with the Familiarity, Friendship, and Romance stats. In place of a character name, simply use List:List Name.
For example, this will create a list of every unit other than Larry, name it IntroduceToLarry, then set a familiarity floor of 5 for Larry with respect to all those units in the list:
Action>UnitsToList/IntroduceToLarry,,Race:true:Golem|Race:true:Spirit|Name:true:Larry</Action>
<Action>SetStat/Larry,Familiarity List:IntroduceToLarry,f:5</Action>
-- the recruitment interface can now be passed a minimum recruitment value; the player must recruit at least that many characters in order to leave the interface.
-- made the introvert character greetings more interesting.
-- fixed a small typo in one of the blunt character greetings.
-- fixed: it was possible to bypass cut scenes with menus by clicking the background at the exact right moment between when the scene faded in and the menu appeared onscreen.
-- fixed: code for the SetStat with the Familiarity, Friendship, and Romance stats was not correctly set up for the formatting currently used by those actions.
-- fixed: cut scene dialogue in a frame of narration that automatically ran and then closed via EndConvImmediately would lock the player out of clicking the background to advance the narration.
Designed, ordered business cards. On the development front:
-- added the all-important time-out timer to the PAX demo. (After 1 minute of inactivity, it resets itself to the title screen. Without this, I have to run around manually resetting the demo over and over all weekend!)
-- added email sign-up functionality to the PAX demo. (Signing up adds your name and email to a text file whose contents I can later copy-paste into Excel.)
-- spruced up some more of the proc gen character dialogue; applied a missing personality requirement to the Depressive general response line, applied a sad face to the regretful victory lines for Kind characters.
-- improved the Battle at Grabber's Grove.
-- fixed: characters burning to death at the start of a turn would not actually be removed from the battlefield until someone attacked.
-- hitting enter when the email sign-up screen is active now checks the contents of the fields and, if they're complete, submits them as if you'd hit the "done" button.
-- adopted some of the pacing changes from the demo into the main campaign to make interesting event variants start appearing earlier and with greater frequency. Gatherings now set a familiarity floor of 5 for all recruits relative to all other recruits; group practice is unavailable the first two days.
-- you can now attach multiple warning conditions and multiple gray-out conditions to the same cut scene menu button! Simply delimit each with a vertical bar (|).
I have returned from Boston and PAX East! What a whirlwind of a week. I talked to hundreds and hundreds of people over those few days, signed up more than 525 people onto the email list (I'm told that 100 email list sign-ups is more typical for a PAX weekend?!), and gave several impromptu previews of the game to passing games journalists and streamers.
As part of the process of getting the booth ready to go, I had to throw together a rough trailer providing an overview of the game. It came together surprisingly well considering what a rush job it was. I plan to polish it up, add in a few things, and then release it to the wider internet as a "sneak peek" trailer. Hopefully that'll come later this week.
In the meantime, it's back to work on the game itself!
-- added particularized backgrounds to more camp activities.
-- the game now also checks the actions contained in scripts called by Run actions in the first branch of dialogue for EndConvImmediately, NextScene, and the like when determining whether to pop up the dialogue window. (If any are found, it won't start to open the window.)
-- skills now support separate knockback and impact timing attributes.
-- created a separate Shove animation for the Stone Golem class.
-- fixed: the timing on several abilities (including all of the Stone Golem and Kineticist knockback abilities) was off.
-- fixed the vertical alignment on the Mind Shock visual effect.
-- fixed: Feedback and spriggat breath attack visual effects were not showing.
-- fixed: the game was failing to select variants within certain particularly long proc gen dialogue lines.
-- fixed: the game was sometimes hanging after a character burned to death at the start of an AI-controlled turn.
-- fixed: certain character sprite sheets weren't using the correct compression settings.
-- fixed: skills could appear redded out within the level-up screen.
-- fixed: clicking a non-selectable character in exploration mode without a selectable character selected would result in a null error being thrown.
Recut the PAX show floor trailer into a version I will release to the wider internet tomorrow! Also:
-- fixed: characters could use items while frozen or stunned.
Released the alpha teaser trailer (https://www.youtube.com/watch?v=BXwhr1hUnDY).
-- improved the impact timing on explosive attacks.
-- got the Charge, Leap, and Shadowport skill timings to sync up correctly with their respective character sprite animations.
-- fixed: the map editor and cut scene editor load menus were listing loadable and unloadable scenes incorrectly.
-- fixed: status effect icon timing was off, and would sometimes fail to display at all.
-- started writing a new side quest with accompanying battle.
-- fixed: the "army color" indicators in the map editor's army sub-editor ended up with compression settings that messed up their palette swapping.
-- fixed a couple of formatting errors that had recently crept into the camp activity narrations xml file.
-- the game's bespoke 2D particle system now supports multiple distinct groups of particles with different settings all tied to the same particle effect. Laid groundwork to support custom effects.
-- created a new particle type for when characters gain familiarity to better distinguish it from gains to friendship and romance.
-- better error handling surrounding malformed camp activity narration xml.
-- added a "copy skill attributes" function to the skill editor. This lets you select an existing skill (including any of the game's default skills); whatever skill you select, the game will populate every field in the Edit Skill window (except for skill name) with the attributes of that skill. You can then easily edit the values to your liking and save the skill as its own distinct skill.
-- added in Knockback Timing as a field in the skill editor. The skill editor now correctly loads and saves knockback timing for skills.
-- updated the in-editor description for impact timing in the skill editor to reflect the new seconds-based timing system.
-- fixed an annoying little UI thing: when you used a hotkey to select a skill with your cursor was already over the target, the attack tile would spawn without displaying damage or accuracy info, nor would it spawn the hit reticles (because spawning with the cursor already there would not trigger the mouseover listener).
-- did the same for move tiles, as when selecting a character via the "next character" hotkey.
-- made improvements to the particle system.
Worked on the Steam page. Additionally:
-- fixed: if you loaded a map with deployment set to true but no deployment tiles, the game would not let you proceed.
-- fixed: due to a dumb typo in the code, particle effects in battle and in the map editor on long, narrow maps could produce null errors.
I finally finished making the frankly ludicrous array of different graphics Steam requires for a "Coming Soon" page, then submitted the page to them for review! On the "actual game development" front:
-- 2D particle effects now have an optional "enforce minimum distance" attribute that prevents them from randomly spawning clustered too close together (as was happening sometimes with some of the floaty heart and exclamation point particles).
-- improved the look of the exclamation point particles.
-- fixed: chasm tiles no longer have landing particle associated with them.
-- fixed: tile data was missing for the most common cave-chasm transition tiles.
-- fixed: the "select next unit" function would trigger pop-up text over every character it checked who was frozen, stunned, or had ended their turn.
The Steam page was approved! Got my video editing software set up on my new dev computer so I can improve upon the alpha teaser for the Steam page.
-- added a bit to the list of possible human character names.
-- wrote some more camp activity narration.
-- created a new life skill: gambler.
-- the attributes in camp activities (e.g. fam1, mor1, food, aura, etc.) can now use custom integer variables.
-- fixed: attack tiles registered a click upon mouse down rather than upon mouse up, which could cause situations in which you clicked to attack an ally or heal an enemy, and then--unintentionally, with the same exact click--instantaneously selected a button in the resulting warning pop-up window either canceling or proceeding with the attack.
-- the attributes in camp activities (e.g. fam1, mor1, food, aura, etc.) now support the use of the RANGE[] special character. For instance, having this attribute in a camp activity narration...
aura="RANGE[25-75]"
...will randomly provide the player between 25 and 75 aura when it is chosen.
-- new script action: AddCampActivity. Adds a new activity narration with a particular character to the current camp activity sequence. Three parameters: character name, activity name, and partner name (if it's a partnered activity).
-- fixed some issues with the new gambler camp activities.
Phew! All right, I'm back. I had to take a little bit of a mental health break there while I adjusted to our new, weird, quasi-apocalyptic real-life circumstances vis-a-vis the coronavirus. But I'm ready to continue development now. Here's what I got done today:
-- wrote new attack and victory barks, focused mainly on characters with the gambler life skill.
-- improved the game's sound and visual effects when characters land on a chasm tile. The impact sound is now a dropping whistle, and they visually fade to black to simulate their fall into the darkness.
-- camera shake values from different sources of damage landing at the same time are no longer cumulative--the largest shake duration and magnitude value from any one source are used, and the other values are ignored. (This fixes situations that have resulted in annoyingly long camera shake.)
-- fixed: multiple different health bars spawned when attacks that dealt damage multiple times landed; the game now consolidates all damage into one health bar (and the same for energy effects).
-- fixed: the impact sound was being played twice upon landing on a space after a knockback or move ability.
-- fixed: it was possible for the dialogue menu to throw a null error under certain circumstances.
-- fixed: getting thrown onto a bridge or other destructible object sticking out of a chasm would result in the game treating that character as if they'd been thrown into the depths of the chasm.
-- fixed: characters could get knocked onto objects and bridges located over chasm tiles, and the game would still treat the end elevation as if it were the bottom of the chasm.
-- fixed: flying characters would fade to black when shoved or pulled over a chasm tile even though they didn't take falling damage.
-- fixed: it was possible for the same enemy death from a multi-damage-source attack to trigger a victory bark more than once.
-- improved the the promotion screen design to make it easier to tell what class you're selecting for promotion.
-- proc gen characters with a forced class now derive their available potential species from class info rather than from a hard-coded list.
-- added an appropriate sound effect to the Shove skill.
-- getting moved onto a bridge or destructible object in the middle of a hazard tile now produces smoke puffs as if the character had been moved onto ordinary land.
-- characters that lose Flying status (whether from the Heavy status effect or something else) over a chasm tile now drop in and take fatal falling damage appropriately.
-- fixed: the character generator was not obeying the "force species" restriction for procedurally generated unique characters.
-- fixed: there are no longer impact sparks upon landing in a chasm tile from being pulled, shoved, or thrown.
-- fixed: improper compression settings on certain frost spriggat sprites were preventing palette swapping.
-- fixed: Gravity Spike and other Heavy-causing skills of element Falling would damage destructible objects with passability of flying as if they were flying characters.
-- rewrote the placeholder "create ice bridge" routine. Ice bridges are now created at the skill's moment of impact, with an attendant sound effect and shower of snow particle effects.
-- some further aesthetic improvements to "falling into a chasm" moments: status effect icons no longer appear as the character is falling, and the screen shake is greatly toned down.
-- changed the formatting on serialized character dialogue lines to support vertical bars for use with special characters like PICK{}.
-- fixed the knockback timing on the spriggat Dive skill.
-- fixed a rogue hotkey that was interfering with normal typing in the map editor.
-- fixed: any proc gen dialogue that used formatting within variants would produce strange results.
Finished up a shorter (1:08 long) Together in Battle trailer for Steam. I've tried to upload it 4 or 5 times now, each time unsuccessfully. Trying one more time...
After some back and forth with Steam tech support (and two separate fixes on their end!), I finally got the new trailer uploaded!
-- the "random factor" in salary calculations is no longer a one-off black box calculation. Instead, it's now based upon a new, hidden character stat called Materialism. A Materialism value of 100 is "average," in that it won't affect the character's salary. A value of 0 means the character won't get paid anything at all; a value of 200 means they demand twice as much money as average. As a character stat, this can be accessed (and altered) the same as any other stat, so scripted events can take into account how materialistic a character is--or change it.
-- the effects of class and stats on calculating a character's salary are no longer hard-coded; instead, these can now be manipulated on a per-class basis!
Here's how it works: the game now looks to two new attributes in each character class in Classes.xml to calculate a character's salary, baseSalary and salaryStatValues.
First, baseSalary, sets the salary for a hypothetical character of that class possessing 100 Materialism and 0 in all other stats. Very straightforward.
Next, salaryStatValues allows stats to factor in. It works like baseStatModifiers, but instead of the value in the key-value-pair being an operation, it's simply a float. The float value is multiplied by the named stat for that character, then rounded to the nearest integer and added to the character's salary. ("Res." is a catch-all key to refer to every resistance a character possesses.) For instance:
salaryStatValues="Health,0.4/Energy,0.5/Strength,30/Counter Limit,35/Res.,1"
If a character belongs to the class that uses these salaryStatValues and the character possesses 20 Health, 10 Energy, 5 Strength, 1 Counter limit, and 5 Slash Resistance (but 0 in every other resistance), that character would get +8 to salary from their Health (0.4 x 20), +5 to salary for their Energy (0.5 x 10), +150 to salary for their Strength (30 x 5), +35 to salary for their 1 counterattack, and +5 for their 5 Slash resistance.
Whatever the result, the character's Materialism stat then acts as a multiplier to produce the final salary.
-- updated all 72 classes in the game's default Classes.xml with appropriate baseSalary and salaryStatValues values.
-- new script action: GetNewSalary. Have the game calculate what a character's salary theoretically ought to be based on their current class and stats. Four parameters: character name, percentage salary multiplier (optional -- if not used, the game will use 100 by default), low morale effect (optional -- increases a character's new desired salary by X% per point of morale below 0 where X is the integer you supply), and variable name to store the value in (optional -- if not used, the game will store the new salary value under _NewSalary).
-- rewrote the Wanting a Raise event to calculate the desired raise as the difference between the new calculated salary and that character's current salary. The event won't trigger if the chosen character's prospective raise is too small; but the event also now gets added to the events list every single week, ensuring that it happens with some regularity. The extent of the low morale penalty used in the calculation depends upon the game difficulty level chosen.
Uploaded a better seelction of screenshots to the Steam page for its "Coming Soon" publication tomorrow!
-- fixed: the game would lock up upon loading OnLoaded dialogue without a convID.
-- remade Battle with Gunther to ensure that neutral thief units that loot treasure chests work correctly in the new engine. (They do!)
-- added support for -ANY- as the item name in an OnGrab dialogue trigger.
Finally added a Together in Battle banner to the main page of the website! :)
-- thought up a new event to script.
-- began writing and scripting the new event.
-- remade the Lift Weights camp activity as a project with multiple potential outcomes each time it's chosen. Upon successful completion, it now increases the character's Strength stat by 1 or Health stat by 2.
-- camp activities now support the runScript attribute. Place the name of scripts accessible to camp activity scenes that you wish to immediately run upon a character performing this camp activity.
-- new supported attribute types for the script action SetStringByNPC: himer, hiser, and heshe. Returns the appropriate pronoun of the specified type.
-- used the new capability above to improve the writing (and add new variants) to the letter event.
-- there is now more space between lines in the dialogue window.
-- shops now support a mixture of items that cannot sell out and those which are in limited supply within the same category.
-- improved the writing and scripting for the lift weights camp activity.
-- improved the layout of Battle at Grabber's Grove somewhat.
-- fixed: the game was not choosing from between alternate like text explanations.
-- fixed: a couple of small typos.
-- worked on a new event/side quest.
-- fixed: a null error could occur with procedural character generation under certain circumstances.
-- unique portraits can now be assigned a species attribute to ensure that eye-palette swapping is handled correctly for shadowlings and spirits.
-- finished creating a rough draft of the new side quest's battle.
-- fixed: if you capitalized the facing of a portrait in the AddPortrait or AddSpeakerPortrait script actions, the portrait would always face right.
-- fixed: the dialogue editor would inappropriately create two dialogue boxes in the editor when validating a new dialogue tree.
-- worked on the side quest battle a bit more.
-- fixed: the new "unique" boolean on portraits wasn't accounted for in the save and load routines, leading to unique portraits not loading in some situations.
-- fixed: the dialogue editor would sometimes have to edit you edit the wrong dialogue or script when clicking a dialogue or script box after narrowing the available options via the search box.
-- the first of the species-specific side quests is now done! Completing it successfully results in shadowlings becoming recruitable. :)
-- fixed: Feedback animation timing and positioning were off.
-- fixed: the game would demand that the player deploy a Protect Char unit even if that unit wasn't in the player's roster, preventing them from continuing the game.
-- fixed: mid-battle saves didn't take account of changes to the music mid-fight.
-- fixed: using a condition with a missing parameter could cause the game to throw a null error when saving mid-battle.
-- fixed: loading a mid-battle save that was saved on the turn reinforcements spawned would result in the reinforcements being duplicated.
-- fixed: the game was mishandling OnVictory dialogue triggered at the same time as a character level-up, popping up both simultaneously.
-- fixed: shadowling psy users were being generated with speed values appropriate for humans.
Corresponded with an artist about the possibility of improving the look of the game's UI, and and talked to a potential programming intern who could help me out. Meanwhile, in actual development:
-- improved crossbowman Crossbow animation positioning.
More artist correspondence. In the meantime:
-- implemented a handy little interface feature I'd long been wanting: when characters get new items in their inventory, a little symbol now appears over them indicating that they are new. The item remains marked with this symbol until the player mouses over (and off of) the item. This happens both to items characters grab off the battlefield and to items that are given to characters in the reserve supplies screen. This feature makes it extremely easy to tell what a character's gotten from grabbing an item sack, or which weapon or piece of armor you just gave them.
Ran another virtual playtest over Discord on Wednesday.
-- began refactoring the bespoke 2D particle system code so that 2D particles will be framerate-agnostic. (This should eliminate that annoying effect where 2D particles spawn and move way too fast on fast machines, and way too slow on slow machines.)
-- you can now mouse over a character's class in the character screen to get a tooltip description of their class just as you can in the recruitment screen.
-- there is now a "shop guide" overlay to introduce new players to the various features of the new shop interface. It can be called automatically with a 4.5 second delay using a new boolean parameter in ShowShop, or the player can access it themselves by hitting the new '?' button in the shop interface:
(http://sinisterdesign.net/_TogetherInBattle/_Promo%20Assets/Together%20in%20Battle%20-%20Shop%20Guide%20%28Small%29.gif)
-- advice events no longer foreclose Gatherings.
-- added a pop-up animation to the New Turn box in battle.
-- fixed: the dialogue box wasn't using the smooth disappear animation in battle, and instead relying on an outdated "instant disappear" function from early in development.
-- finished reimplementing the bespoke 2D particle system!
-- recreated all the particle system presets with new values that create the intended effect within the new framework.
-- you can now click to skip through the "day changing" animation in the calendar.
-- improved the click-and-drag camera panning code. It now takes account of the framerate and zoom-out level, and adjusts click-and-drag-pan distances proportionally. This makes click-and-drag camera panning feel much smoother and more related to your inputs.
-- the cursor now changes to a grabby hand while click-and-drag panning the camera around.
-- there is now a "recruitment guide" overlay to introduce new players to the various features of the recruitment interface. The player can access it themselves by hitting the new '?' button in the recruitment interface.
-- added a damage fall-off tutorial to Battle at the Oasis.
-- added appear and disappear animations to the terrain inspector when it's toggled on and off to make it easier to see what change is occurring.
-- added the star icon alongside character level in the character screen, level-up screen, and recruitment info displayer in order to be consistent about its usage and ensure that the player can more easily infer what the icon refers to.
-- fixed: scaled-up instances of the bespoke 2D particle system spawned particles at the larger scale, but their velocity remained unchanged, causing them to appear to move much too slowly relative to their size. (Their starting velocity and gravity values are now scaled proportionally to fix this.)
-- fixed: it was possible to trigger part of an earlier tutorial in the qualifier fight after effectively skipping it.
-- created a new game setting UI element for changing the game's control scheme based upon a list of Mouse and Keyboard plus whatever gamepads are connected.
-- the game now saves your choice of controller based on your selection and loads it upon restarting the game.
Oof. It turns out, coding gamepad controls for a ton of different menus is a real pain. Still, I'm making progress, slow as it may be!
-- you can now navigate the title screen's main menu, new game menus, and load game menu entirely using a gamepad. The left joystick and D-pad move from UI element to UI element, the confirm button selects, and the cancel button closes out the current menu.
-- you can now navigate cut scene narration entirely using a gamepad by using the confirm button to advance.
-- you can now navigate dialogue trees entirely using a gamepad; the selectable entries reflect the number of replies available. The left joystick and D-pad move from reply to reply and the confirm button selects.
-- you can now navigate custom cut scene menus entirely using a gamepad; the selectable entries reflect the number of buttons shown. The left joystick and D-pad move from button to button, prompting their pop-up tooltips, and the confirm button selects.
-- fixed some issues in the gamepad movement behavior, including (but not limited to) tweaking timing and dead zones and detecting when the player likely intends to only move vertically or horizontally and locking out diagonal drift. The player can now easily just hold down in a direction to go through a menu quickly without sacrificing the ability to easily tap to go one entry at a time. Due to all this, the gamepad controls now feel much, much smoother and more predictable.
-- the game now systematically detects when page-advancing arrows are not present in the UI and disables their associated menu elements so the player doesn't end up selecting non-existent arrows with the gamepad.
-- record a little "tick" sound effect for moving the cursor to a new UI element in gamepad mode; it's now implemented in-game and working nicely.
-- you can now navigate the recruitment interface using a gamepad.
-- the mouse cursor is now locked and invisible when in gamepad control mode.
-- fixed: the game was sometimes ending up with the last menu element in a menu selected in gamepad mode when said element was disabled.
-- more work on gamepad navigation of the recruitment interface today, primarily focused on getting navigation behaviors consistent with what I would expect. Made good (but annoyingly slow) progress.
-- further improved gamepad navigation behaviors through menu elements laid out non-linearly in 2D space.
-- finished up the recruitment interface--you can now navigate around and inspect all of the character stats, skills, and inventory items for each recruit before hiring.
-- you can now navigate to the settings screen on the title screen, and can navigate the settings screen itself and change settings, using the gamepad.
-- the gamepad can now be used to skip the game's intro movie.
-- began work on gamepad controls for battle.
-- received new, painterly interface art from Franklin Chan that better matches the aesthetic of the cut scene backgrounds. Spent all day incorporating it into the game's battle interface.
-- got revisions to new interface art; still integrating.
-- fixed: the game would display fake cursors on interface elements even when not in gamepad control mode.
Submitted a build of Together in Battle to indiecade! As my last acts prior to doing so:
-- continuing to integrate new interface assets into the game; all of the main game menus, tooltips, cursors, etc. are now converted to the painterly interface art.
-- got the main campaign editor screen converted over to the new interface art, along with the the item editor, skill editor, and dialogue tree editor.
-- fixed a wide variety of bugs and small graphical glitches that I don't feel like individually documenting here.
-- spent the past few days modeling, texturing, and animating cloth banners in Blender, then importing them into the game. They now appear on the new turn box, and in my opinion, they look pretty fantastic. :)
-- fixed a silly little bug where the hourglass cursor would inappropriately change back to the default cursor early on in AI army turns.
-- created alternate colors of the new turn box banners for each possible army color; the game now selects the animated cloth banner of the color matching the army whose turn it is.
-- created animated cloth banners for the victory screen with alternate colors for the victorious army.
-- improved the look of the victory screen victory fireworks.
-- you can no longer create an ice bridge in a space where a character is currently swimming.
-- doubled the strength of qualifier opponents in the Qualifier when playing on challenging difficulty.
-- the player now starts off with 5 bandages already in reserve supplies when playing on relaxed difficulty.
-- reduced the ringleader's strength in the "save grandpa" battle when playing on relaxed difficulty.
-- fixed: the "save grandpa" battle wasn't using death rules appropriate to the chosen difficulty level.
-- fixed: the character screen inventory sub-window was obscuring character physical attributes.
-- fixed: the sub-menus for each item button in the character screen inventory sub-window was missing its background image.
-- fixed: the shop tutorial had become misaligned.
-- fixed: terrain inspector could appear below victory screen.
-- fixed: the global lighting in each level was affecting the appearance of the 3D animated banners on the turn and victory UI elements.
-- fixed: particles in the bespoke 2D particle engine weren't retaining their z axis position, resulting in issues when used in canvases set to World Space mode.
-- increased grandpa's health in the "save grandpa" battle when playing on relaxed difficulty.
-- wrote a new set of greeting responses for imaginative characters.
-- created a separate boolean variable to track whether a game demo is an online demo or a convention demo, then switched on/off various behaviors as appropriate to the setting.
-- fixed: there wasn't a yellow hue variant for the turn box and victory banners.
-- fixed: the friendly greeting approach lines described the character smiling, but the portrait did not actually smile.
-- added some code to the procedural character generator to prevent the game from randomly generating more than a few recruits of the same class in the recruitment interface at any one time, ensuring the player always has a good variety of classes to choose from.
-- tweaked unit placement in Battle at the Oasis for Brutal difficulty and for the online demo.
-- wrote new approach line variations and info response line variations for proc gen character dialogue.
-- updated the map editor with all the new interface art!
-- finally, definitively fixed the issue where unit tooltips could show up partially offscreen in battle. (I hope.)
-- fixed a spot in the AI code where a divide-by-zero error could occur, freezing the game.
-- fixed: the victory banners would sometimes appear momentarily when loading a mid-battle save.
-- fixed: mid-battle saves did not capture the currently playing sound loop, resulting in the sound loop's absence upon reloading mid-battle.
-- you can now make only one mid-battle save per round. (Previously, you could fill up as many slots with copies of the current round's save as you wanted before proceeding, which opened the door to opportunities to cheese the game's RNG.)
-- new script action: WaitForDialogueEnd. This is a timing action that pauses the execution of all subsequent actions until the current dialogue text has finished animating onscreen.
-- placed WaitForDialogueEnd before animated status bars and pop-up text actions in camp activity dialogue; this should make it much easier for players reading the dialogue to catch the effects of the conversation.
-- added a new, optional integer "spawn delay" parameter to the PortraitParticles script action.
-- added to the camp activity narration for sewing to make it clear that the character's morale was increasing.
-- darkened the grayed-out tint on shop equipment no one can use a bit more to make it more easily distinguishable at a glance.
-- fixed: the scene transitions in the demo weren't adjusted to account for the extra battle I'd thrown in.
-- fixed: the end-of-demo scene was still displaying the (local to the machine) email sign-up form from PAX.
-- fixed: if the last AI-controlled enemy died of environmental hazard or status effect damage before their move processing had completed, the game would stall forever as it waited to finished processing moves for that now-nonexistent character.
-- fixed a null error that was accidentally introduced by an earlier code tweak.
-- updated the character creator and the cut scene editor with all the new interface art! That's the last part of the game that needed the new UI art implemented.
-- made the Awkward personality trait mutually exclusive with Narcissistic due to wild inconsistency in outwardly expressed character self-image in the dialogue associated with each.
-- placed WaitForDialogueEnd before animated status bars and pop-up text actions in random event dialogue.
-- added confirmation windows to the shop and recruitment interface when the player selects the Exit button, warning them that if they leave they won't see those characters or items again.
-- added a dedicated Exit button to the Reserve Supplies screen.
-- fixed a typo in the card games hobby "like" dialogue text.
-- fixed: a null error could result when using a one-use item that was still marked "new" within a character's inventory as the game tried to mark the item no-longer-new after it was removed from the inventory.
-- fixed: GoTo-type actions would not remove themselves from the action queue until after going to a new branch, which would clear the actions queue and repopulate it with other actions. Since the original actions no longer existed in the queue, these new actions from the destination branches would be inappropriately removed from the actions queue instead.
-- fixed: the female spearman's shove sprite sheet was compressed, leading to failed palette swapping during the animation.
-- caught and fixed some missing tooltip textures in the item and skill editors.
-- caught and fixed some missing cursor textures in some of the editors.
-- fixed: a null error when randomly generating a generic character in the character creator.
-- fixed: a null error in the cut scene editor.
-- fixed: the confirm and cancel buttons in the load scene menu in the cut scene editor had broken.
-- fixed: the confirm and cancel buttons in the load scene menu in the cut scene editor had been reset to load battles instead of cut scenes.
-- fixed: the title text overlapped the sub text in the "save before creating new character?" pop-up window in the character creator under certain circumstances.
-- added support for the player reference string to the character creator. The game can now successfully save that value to XML and will load it from XML when loading a premade unit.
-- caught and fixed a few remaining missing UI textures hidden in a few nooks and crannies of the character creator.
-- caught and fixed a few remaining missing UI textures among the map editor's army sub-editor's button tooltips.
-- added mouseover tooltips to the music selection submenus in the map and cut scene editors.
-- improved tooltip placement in the cut scene info bar.
-- improved tooltip scaling and placement in the army overview window.
-- the game now checks premade characters to see if they're lacking a default skill animation; if they are, the game now attempts to find and plug in the default skill animation for their class.
-- fixed: the game was accidentally deleting all of the item templates when generating characters for testing within the campaign creation suite, causing characters to all spawn without the items and equipment assigned to them in the character creator.
-- fixed: characters in the character creator were not having their default skill animations saved during the save process.
-- fixed: the character creator was failing to remember that randomly generated generic characters had generic portraits, and then therefore saved their portraits incorrectly.
-- the time that combat barks remain onscreen now changes based on the length of the bark. The longer it is, the longer it remains onscreen before disappearing.
-- fixed: changing the sound effects volume wasn't affecting the volume of currently playing sound loops.
-- fixed a typo in one of the camp narration variants for word games.
Sent out contracts to voice actors; gave feedback to artist and composer.
-- fixed: the space selector was remaining onscreen during combat exchanges.
I had to give myself a little break from development there--I didn't want to burn out after that big push for the summer Steam Game Fest event. But I'm back!
-- scripted a custom effect for Create Bridge and Create Barricade skills: the max health of the object created now depends upon the combined strength and psy of the character creating it. (Weapons are taken into account--an Engineer with a more powerful Wrench will build sturdier battlefield constructs.)
-- scripted a similar custom effect for Solid State Shield, but it only takes into account the character's Psy.
-- fixed a graphical blemish on the male engineer portrait background.
-- fixed: a seemingly innocuous change in code order had caused the game to cease respecting false Kill-All Victory conditions.
Gave my voice actors feedback. In the meantime:
-- incorporated six new cut scene backgrounds from Franklin Chan into the game; put the new daytime docks background into the introductory cut scene.
-- the AI now scores moves involving a character standing still and using a turn-ending Shield skill a lot lower to discourage enemies from wasting entire turns just buffing themselves.
-- fixed: the AI was weighting status effects way too heavily when scoring different moves.
-- created a new "drowning" sound effect that triggers when a character takes drowning damage in water.
-- fixed: it was possible to click outside of yes/no screens in the reserve supplies screen without resolving the question posed.
-- fixed: null errors could result when characters died from status effect damage during an enemy turn on certain Death Rules settings.
-- fixed: the Axefighter ability animations weren't getting palette swapped.
-- fixed: you sometimes couldn't swap items in the reserve supplies screen during deployment in battle.
-- fixed: the AI would grab an item sack on the destination space after using Swim.
-- fixed: a range error could occur when the AI used Swim to self-target a unit on a water tile and the game checked for ice bridge creation.
Received the last of the "generic" voice over performances!
-- fixed: shoving a character into the edge of a map would sometimes throw a range error.
Hey folks! I'm back. If you've wondered where I've been, I've been struggling pretty hard with keeping up the motivation to continue developing games lately, what with American society teetering on the brink of complete collapse these past few months. I'm here now, though, and I'm working on procedural battle generation.
To that end:
-- I finished up the map editor's map generation window interface for generating enemy (and allied) armies.
-- the game now stores up to 3 groups of units for each army in the interface. It now remembers them and re-displays them when switching between armies in the interface.
I'm glad to hear you're ok! Remember, personal well being matters more than this.
Thanks Sythion. :)
More progress:
-- the battle generator now successfully spawns one or more enemy armies onto the map. Unless the map is too small for all the units on it, all (or nearly all) enemies will be placed out of immediate move-and-attack distance of any human players.
-- a graphical improvement: lava tiles now have emissive materials (meaning they appear to be self-lit regardless of surrounding lighting conditions, and without you having to manually place lights over them). They also actually emit light and softly pulse.
-- the map editor now auto-adjusts the global lighting to either Night or Cave (depending on whether the cave tileset is being used) by default when lava tiles are used as the hazard tile to generate new terrain.
-- updated the map editor's map generation window interface for generating destructible objects on the battlefield.
-- the procedural battle generation algorithm can now spawn destructible objects around the battlefield, and can probabilistically place items within subsets of those objects (e.g. chests or barrels) to drop upon their destruction.
-- improved the army placement algorithm for proc gen battles featuring more than two armies. Armies now "clump" together more in their starting positions, and are now less likely to spawn scattered amongst enemy armies.
-- fixed: the game was ignoring other units spawned within the same group for purposes of determining available spaces.
-- found, fixed a couple of incorrect or missing dirt tile transitions in the snow tileset.
-- proc gen armies generated in the map editor are now formatted with extra data to allow them to be saved successfully into map files and loaded in-game with the same spread of levels and classes that were chosen in the map editor.
-- proc gen destructible objects generated in the map editor are now formatted with extra data to allow them to be saved successfully into map files and loaded in-game with the same spread of types and inventory that were chosen in the map editor.
-- tweaked the default map generation values to ensure that you can produce interesting maps easily without too much work.
-- fixed: the deployment space placer needed to be tweaked to account for the new proc gen destructible objects.
-- fixed: the Generate Map window wasn't auto-closing when opening a different menu in the map editor.
-- fixed a bunch of little null and range errors that can occur when attempting to load improperly formatted units into a battle.
-- you can now flag a battle as "proc gen"; if you do, the map editor will save the most current "Generate Map" settings in the map file itself so the game can use them to generate a new map whenever the scene is loaded.
-- the game can now save proc gen settings to XML and parse those settings upon loading the level.
-- the game can now randomly place items into the inventories of characters within proc gen armies in a manner similar to that of proc gen destructible object groups.
-- you can now load a level marked as proc gen within the map editor, and it will both generate a new map within your specifications and also auto-populate the Generate Map window with those same settings for editing.
-- chests are now treated as having move-and-attack range of 5 to ensure that they never spawn within 5 spaces of the player on a proc gen map.
-- the battle generator can now place bridges onto proc gen maps!
-- the battle generator now defaults toward orienting player deployment spaces vertically when they are closer to the left or right edge of the map than to the top or bottom edges.
-- the battle generator will no longer spawn characters on spaces where they have no moves available.
-- all characters placed by the battle generator now spawn facing their closest enemy rather just facing the center of the map.
-- reduced the maximum health on trees to make chopping them down less slow and burdensome.
-- fixed: it was possible for destructible objects to spawn on the same space as a deployment tile.
-- got proc gen battles generating and loading in the main game (as opposed to just the map editor).
-- destructible objects created in proc gen maps are now automatically tagged so that the AI will consider them viable attack targets if a) they contain items, or b) they have health of 12 or less.
-- fixed a bunch of bugs in procedural battle generation.
-- adding "threat" to objects and units can now be accomplished via the BaseThreatRange tag. For example: BaseThreatRange,6 will make it so that the tagged unit or object will never spawn closer than 6 spaces away from the player in proc gen maps.
Continued AI work!
-- fixed a typo in the AI code that was responsible for making units run toward healers when low on health.
-- optimized the base target value lookup routine in the computer AI code.
-- I've got a new, important AI feature working; when a unit has no moves available to them because they're blocked in by destructible objects, the game will now "sniff out" multiple blocked paths that the unit could take to a desired target; the unit will then target those destructible objects with attacks to open up a path! (They will do this even with objects that are not player-created or tagged with TreatAsArmy.)
See: https://twitter.com/sinisterdesign/status/1315806939037790214 (https://twitter.com/sinisterdesign/status/1315806939037790214)
-- renamed the shopkeeper from Ghani to Nihal based on feedback.
-- new parameter added to the NewBackground/ChangeBackground script action: skip transition. A boolean that either causes the background to transition normally (if left false), or to flip instantaneously (if set to true).
-- you can now mouse over physical attributes in the character screen for a tooltip explanation of what each does.
-- you can now mouse over physical attributes in the recruitment screen for a tooltip explanation of what each does.
-- updated physical attribute descriptions to be more accurate and comprehensible.
-- fixed: the game no longer waits until a cut scene has finished fading in to run dialogue actions, thereby allowing the "lights to come up" on a scene that's already been altered by script actions.
-- added the first true proc gen arena battle to the level progression.
-- fixed: the game was initiating the first turn prematurely in battle after running OnLoaded dialogue.
-- the proc gen map algorithm now favors placing player deployment spots closer to the edges of the map.
-- proc gen maps now support an integer range for the variables hazard frequency, hazard area, maximum elevation, elevation smoothing, and number of deployment spawns, allowing for a greater variety of possible results from any given map.
-- added a new "grouping size" parameter that periodically reverses the "proximity to allies" placement bonus to encourage enemy clusters in distinct locations around the map.
-- fixed: the proc gen map algorithm was inappropriately disregarding player deployment spots when placing enemies in-game.
-- fixed: the proc gen map algorithm was failing to consistently test proximity to all player deployment spots when placing enemies in-game.
-- fixed: the game was inappropriately placing hazard tiles at the same elevation as the bridges above them when generating proc gen battlefields in the main game.
-- player deployment spawn points are now factored in when determining initial enemy facing in proc gen maps.
-- fixed: player deployment spawn points weren't being assigned a facing direction in proc gen maps in the main game.
-- worked on the AI some more.
-- wrote a little in-battle event for flavor and plot in Battle at Double Bridge.
-- fixed a visual glitch that was causing the victory box banners to appear onscreen for a fraction of a second at the start of battle.
-- fixed: the "background chatter" sound loop from the Adelbrae tavern scene was continuing after the first encounter with Gunther began in The Vengeance of Emma Strider.
-- the AI will now attack destructible objects to clear a path to targets who would otherwise be within immediate move-and-attack range. (Among other things, this makes the Zash and Red battle much more interesting if you go for the chest!)
-- the AI will now consider more alternative routes to a target when testing out path-clearing moves. (See e.g. the swordsman in the bottom-right here (https://twitter.com/sinisterdesign/status/1321509944613605376).)
-- added facial expressions to Zash's combat dialogue.
-- improved the look of bottom-row chasm tiles.
-- fixed: if an AI character got themselves killed during their turn, the AI move following it would not take into account that character's death (e.g. assuming that that character's space was still blocked).
-- fixed: stopping all sound loops via a global StopLoops action would not clear the "active loops" reference list, resulting in those loops remaining saved as the active loops for mid-battle saves going forward into the game.
-- fixed: there was a missing background on one of the dozens of tooltips in the character screen.
More work on recreating Telepath Tactics in the new TiB engine!
-- began recreating the Rescuing Meridian battle along with the cut scene leading into it.
-- fixed some facial expressions in the Silithis and Ambuur Sang cut scene
-- fixed: the Silithis and Ambuur Sang cut scene no longer leads an "end of demo" scene.
-- implemented the AddTagToArmy action; it behaves exactly like AddTag, but it takes an army number as its first parameter instead of a character name. Whatever tag you want to add, with its attendant parameters, becomes the remaining parameters of the script action. That tag gets added to every unit in the specified army. (You can achieve the same thing now with ForLoop and AddTag, of course, but AddTagToArmy is just plain faster and easier.)
-- AI tweak: improved scoring for path-clearing moves to exponentially weight the relative damage the character can do to an object, thus preventing the AI from attacking objects it'll take many turns to break (e.g. using swords or bows on boulders) unless there are really no better moves available.
-- fixed: the space selector could appear and move around onscreen in dialogue during a MoveCam action.
-- fixed the pivot point on the crossbowman Bayonet animations.
-- fixed the alignment of arrow and crossbow projectiles during Bowman and Crossbowman attack animations.
-- when you knock a unit into another unit, it now animates the knocked-back unit going into (and then rebounding out of) the adjacent space to visually represent the collision.
-- the game now detects knockback into a space with elevation too great to move into as knockback into a wall, and adds collision damage appropriately.
-- the game now recognizes -ANY- as a valid input for the first parameter in the OnReachingArea dialogue trigger. This causes dialogue to trigger no matter where the character moves, thereby effectively replacing the old OnMoveCompleted dialogue trigger.
-- implemented script ID support for use as character names in all remaining dialogue triggers.
-- fixed: the game wasn't checking for unfinished forced movement as part of a combat sequence after running dialogue triggered mid-sequence, resulting in certain things (like impact sounds for characters pushed into water) not always playing when they were supposed to.
-- fixed: if you triggered the first pyrokineticist in the Rescuing Meridian battle, it wouldn't remove passive behavior from the surrounding units.
-- fixed: the game was playing a clicking sound twice in succession when switching pages in the campaign editor scene testing menu.
-- when a computer-controlled character's Passive tag is removed during the AI's turn, the game will now check to see if it previously skipped over that character due to having no short-range moves available for it. If it did, the AI will recalculate that character's move without the Passive tag limiting it to only short-range moves.
-- added text pop-ups accompanying the use of stat-altering items in battle.
-- tightened up the timing on inter-unit collisions with knockback attacks.
-- improved the timing on kinetic knockback skills.
-- fixed a null error that could occur in cut scenes.
-- created sound effects for using bandages, swallowing pills, drinking liquids, using a whet stone, and using keys.
-- added a sound attribute to items. The attribute designates a sound effect to play when the item is used, and without having to rely on the runsScript attribute.
-- increased the effect of a negative physical growth trait on the affected stat; it now imposes a growth ceiling of 2 instead of 3.
-- adjusted positioning of physical trait buttons in recruitment interface.
-- fixed: the game wasn't correctly repopulating the personal equipment and sellable properties of items upon reloading a saved game.
-- fixed typos in a couple of the "like" lines for pessimistic characters.
-- updated Unity to the latest version.
-- spent a few hours squashing bugs resulting from the update.
-- updated the engine to use Unity's new Universal Render Pipeline.
-- switched over the game from gamma to linear color space for more accurate colors, lighting, and post-processing.
-- wrote a new world position UV shader in Shader Graph to handle terrain tiling in the universal render pipeline.
-- wrote a new variant shader for liquid terrain that animates the liquid slowly sloshing back and forth.
-- new tag: StopsCounters. One parameter: Skill Name. This makes it so enemies cannot counterattack the tagged character when the character uses the specified skill (or skills which depend upon it).
-- increased the likelihood of proc gen weapons and armor having attributes.
-- new proc gen weapon attribute: Blinding. An even stronger version of Brilliant, it boosts Dodge by 15%.
-- new proc gen weapon attribute: Staggering. Boosts damage at the cost of reflexes and energy even more than Heavy does, and also prevents enemy counterattacks.
-- new proc gen armor attribute: Camouflaged. Causes the unit to be valued 10% less by the AI when choosing targets.
-- new proc gen armor attribute: Aquatic. Causes the unit to gain 100% resistance to Drowning damage.
-- trees and foliage now visibly sway in the wind (https://media.giphy.com/media/YT1DKLAu5UkpdbGNd9/giphy.gif) during battle.
-- updated liquid shaders for in-game lava; lava now glows in a fashion that reflects its visual appearance.
-- nerfed the psy fighter classes slightly by making them vulnerable to slashing damage, closer to how they're balanced in Telepath Tactics.
-- the item editor now has a field where you can customize an item's "use" sound effect.
-- the item editor now has a sound effects browser where you can play all of the game's sound effects and select one to use.
-- created new "Sound Effects" button graphic for the button that opens the sound effects browser.
-- fixed: it was still sometimes possible for the game to throw a range error during a certain part of procedural character creation.
-- proc gen shields and armor can now have the attribute Beautiful, which raises the wearer's morale by 1 when equipped.
-- began the process of breaking apart character background dialogue into distinct subcategories (hometown, vocation, family, etc.) to add more depth and variety to inter-character dialogue.
-- it is now possible to directly insert biographical details into text using the special character -BIO:X-, where X is a valid biographical detail type (e.g. region, hometown, raised by, siblings, worships).
-- it is now possible to require certain biographical details for certain character dialogue (and to require the absence of other biographical details) when characters are procedurally generated.
-- added fire sway and smoke particles to the lit campfire object.
-- fixed: got bloom effects working in battle; impact sparks in combat now visibly glow!
-- fixed: got step text and reticle overlay text displaying over everything else correctly.
-- fixed a null error that occured when the game tried to check for a renderer for swaying animation purposes on a 3D destructible object.
-- began writing a new evening event: a merchant approaches you to deal with employees carrying on a strike.
-- improved the sale evening event to make more narrative sense, and to offer a spread of potential discounts (between 15% and 30% instead of just always being 20% off).
-- the smoke-emitting property for destructible objects is now saved, ensuring that it carries over for mid-battle saves.
-- after an extended struggle, I have rewritten the palette-swapping system in the game from scratch to be compatible with the new rendering pipeline. Character sprites once again appear the color corresponding to their army (as opposed to everyone being violet).
-- finally got palette swapping for character portraits working again after completely rewriting the logic for it from scratch.
-- manually replaced character portraits in the cut scene dialogue and recruitment interfaces.
-- added in layers for glasses and hats as accessories for character portraits.
-- finished converting all of the old palettes into a format the new palette-swapping shader can use.
-- finished reconstituting the skin, hair, and eye palette-swapping logic for portraits of humans, lissit, and spriggats.
-- fixed bugs in the new palette swapping logic.
-- painted a new, higher resolution "frame background" for character buttons in the deployment and reserve inventory screens.
-- updated to the new character portraits in the Character Screen, Level-up Screen, Army Overview Screen, Reserve Supplies screen, Deployment Menu, and Actions Bar.
-- updated the portrait background frames in the Reserve Supplies screen and Deployment Menu.
-- got selection circles in battle palette-swapping again!
-- fixed pop-up text position and kerning in character portraits.
-- fixed animated bars clipping through the ground in battle.
-- fixed: character noses were not showing up in dialogue portraits.
-- added a glow effect to combat visual effects. (They look much cooler now!)
-- further improved the look of the "attack hit" shower of sparks.
-- fixed portrait palette-swapping issues for Shadowlings.
The forums have been down for a bit, so there's a lot here that's missing. Suffice it to say, I migrated the site to a new hosting service; fixed an absurd number of bugs; made it so you can use items in the reserve supplies screen; finished the strike-breaking mission; added/tweaked some dialogue and event content here and there; and uploaded a new demo for the game to Steam for the Steam Game Festival Winter 2021! Go ahead and play it there (https://store.steampowered.com/app/1267210/Together_in_Battle/?beta=0)--it'll be taken down on the 9th.
-- wrote some new character lines and fixed a few typos.
-- characters without any counterattacks whose counter limits rise from 0 to 1 via a status effect or other contrivance now get a temporary counterattack in the form of whatever attack skills their equipment gives them, or if no such skills exist, then in the form of whatever their cheapest natural attack skill is.
-- fixed: characters whose counter limits rose from 0 to 1 upon learning a new counterattack on level-up were not keeping these gains.
-- the game now displays correctly on 16:10 display resolutions!
-- you can now change the game's display resolution at runtime from inside the Game Settings menu.
-- fixed: units were sometimes getting generated without essential starting skills or counterattacks available to them at level 1.
-- overhauled the game's "click on a unit behavior" so that you can click and drag anywhere onscreen (including on characters, bridges, and other objects) to pan the camera around.
-- boosted the likelihood of the AI choosing backstab moves proportional to its aggression factor.
-- fixed: the SetNextScene script action wasn't working in battle scenes.
-- fixed: some of the game's portraits were looking a bit janky due to filtering settings.
-- fixed: coloration was off on the hands of generic shadowling portraits.
-- the game now saves your last selected display resolution and restores it upon restarting the game.
-- some balance tweaks for psy healers and gasul: reduced the power of Mind Shield by 30%; increased the maximum range of Mega Shield to 2 while reducing its power slightly and increasing its cost to 6; increased the cost of Long Shield to 7, Static Shield to 12, and Titan Shield to 16. Over all, these tweaks should help ensure that remaining stocked on bandages remains a priority even if you have a healer.
-- fixed: left-clicking units was causing the cursor to flicker the "grab hand." The game now waits for the cursor to be held down a fraction of a second before it changes to the grab hand.
-- balancing tweak: Frozen status now increases the victim's Pierce Res. and Slash Res. by 50% while the status effect lasts, and reduces Crush Res. by 25%.
-- when mousing over equipment in the shop, there is now a pop-up that tells you which of your characters can use it.
-- fixed: there was a color missing from the army color palette for character portraits that sometimes showed up in accessories.
-- fixed: the status effect icon was displaying above the new turn box in battle.
-- fixed: spirits and golems picked up via the recruitment interface were getting bio details and family members.
-- fixed: golems were getting likes and hobbies during character generation.
-- increased the sophistication of the "Interested in this equipment" shop pop-up: the game now not only looks to which characters can use the equipment, but also checks to see if they have that equipment slot filled already--and if they do, whether the equipment in that slot is less valuable or is close to breaking. (If a character can use the equipment but already has something better equipped that's not close to breaking, they won't be listed as interested in it.)
-- reworked the "new item" symbol a bit. It's now a less-alarming orange color (as opposed to the bright red it was before).
-- fixed a range error that could occur during evening gatherings with golems on the team.
-- fixed: golems could be chosen to approach for Talk activities despite having no approach line.
-- fixed: the additional color added to the army color palette for portraits was preventing lissit spines from palette-swapping properly.
-- received new deployment music from Ryan Richko; made it loop and added it into the game.
-- incorporated procedurally generated battles into the arena battle hopper for the first time!
-- scripted an informal "timer" event for arena battles where the crowd eventually gets bored and starts booing you if you take too long, followed shortly thereafter by ever-increasing loss of prize money.
-- changed the text description for Decoy, added a swaying visual effect to the Decoy Shadowling sprite.
-- fixed palette issues in some of the unique shadowling portraits.
-- fixed: I had accidentally broken the bit in character generation where character likes are saved to the unit data.
-- fixed: the game could choose the wrong sort of gambling narration for characters going into town to gamble on their own behalf.
-- tightened up a few variants in certain lines of proc gen dialogue.
-- fixed typos in a few lines of proc gen dialogue.
-- fixed: the Grapple Pull chain animation wasn't playing.
-- tightened up the timings and positioning data for the Grapple Chain visual effect.
-- fixed: one of the "New Item" symbols was incorrectly assigned in the individual character inventory sub-window of the Reserve Supplies screen, causing it to not react to the item being moused over.
-- the engine now supports degradation of all skill-granting equipment, regardless of whether it is equipped in the Weapon Hand!
-- skills now support skill tags! Under the new attribute skillTags, you can now create skill tags by delimiting the following values with commas: string stat name (e.g. Class); string stat value; operation; and thing to affect with that operation if the string stat value matches (Damage or Accuracy). Delimit individual skill tags with forward slashes.
-- Lockpicks no longer grant the ModDmgVsClass tag; instead, Pilfer itself now has the skill tag Class,Chest,+:50,Damage.
-- Lockpicks are now equipped to the Off Hand.
-- improved the sound effects and visual effects associated with Pilfer.
-- the recruitment interface now shows a character's salary using the aura symbol instead of displaying the word "aura."
-- restaurants are now a distinct hobby characters can get.
-- fixed: the game was sometimes having characters visit restaurants in town when it was trying to have them rest.
-- fixed: the ranged damage fall-off tutorial was still showing up in Battle at the Oasis even if you'd turned off tutorials.
-- fixed a range error that could occur in rare circumstances during processing of attack damage.
-- fixed: it was possible to skip over a cut scene by double-clicking very quickly at just the right moment.
-- fixed: sometimes you could click a character and the space selector would remain elsewhere.
-- new skill: Shove 2! Shoves the target 2 spaces instead of 1 at a cost of 4 energy.
Most melee classes have a chance to learn this skill, but Stone Golems are the best at it: they can use this ability for a mere 1 energy due to their immense size and strength.
-- the anim attribute for skills now supports alternative animations for skills that can be used by multiple classes without the same animation sets. Each animation to be used is delimited by a forward slash.
-- the recruitment tutorial now shows up automatically the first time you go to recruit characters in the main campaign.
-- fixed unwanted highlighting behaviors in the recruitment interface.
-- fixed compression settings on a few portraits.
-- fixed: it was possible to produce tooltips by mousing over units in the middle of attack sequences, thereby obscuring attack animations from view.
-- fixed an edge case where characters with both Shove and Cast could use the wrong animation.
-- changed minimum recruitment in the recruitment interface from a hard limit that prevents you from leaving to a warning pop-up that you can choose to ignore.
-- put a minimum of 6 on main campaign recruitment in case the player misses the recruiter's team size recommendation.
-- the level-up screen now announces it when a character has acquired a new ModSkill tag, informing the player which skill has improved and in what way.
-- added a bunch of new physical traits to the game, increased the importance of a handful of existing traits.
-- made the intro cut scene less needlessly verbose.
-- fixed: starting tags weren't being applied to proc gen characters.
-- fixed: the game threw a range error when units collided from a ranged pulling ability like Grapple Pull or Kinetic Pull.
-- fixed: status effect popups and environmental damage pop-ups were occurring at the start of a turn, prior to the turn box being cleared.
-- fixed: the map editor would prevent you from painting a bridge or other passable object onto the same space as an existing character.
-- fixed: pushing or pulling a unit onto a bridge would always result in falling damage regardless of the elevation change.
-- fixed: you could effectively freeze the game by attempting to test a new map within the map editor that you had not yet saved. The game now first checks to make sure that your map exists when you attempt to test it.
-- fixed the delay on displaying sparks and damage when skills smash characters into each other.
-- fixed an annoying visual glitch where characters traveling upwards across grass or flowers would render beneath the foliage.
-- edited the portrait shader to support glow effects for spirits, and for shadowling and spriggat eyes.
-- fixed a graphical issue with the large window background graphic.
-- fixed: the dark colored portion of the spriggat horn images was slightly miscolored, leading to palette swapping errors in spriggat portraits.
-- fixed: recruiting a spirit could cause the game to throw a null error.
-- character portraits now bob when moving during cut scenes to give the illusion of walking (as opposed to smoothly gliding from spot to spot).
-- the game now supports mid-battle saving with proc gen maps.
-- fixed: certain dialogue was being chosen too prevalently during character creation.
-- fixed: text was inappropriately overlaying other graphical elements.
-- fixed: status effects were inappropriately overlaying other graphical elements.
-- character portrait bob no longer occurs for spirits and shadowlings, which glide through the air as normal.
-- character portrait bob is now accompanied by footstep sound effects synced to the animation.
-- improved the visual effects for Solid State Shield, Static Shield and Juxtapose.
-- fixed: Static Shield tooltip didn't display correct icon.
-- fixed: Juxtapose would sometimes swap the wrong character.
-- fixed the timing on Shadowport sound effects.
-- fixed the kerning on some tooltip titles in the recruitment screen.
-- recorded new sound effects for Smash, Juxtapose, Mind Control, Possess, Throw Voice, and Terror.
-- updated sound effects for Soul Suck and Douse.
-- fixed: character sort order could be put out of whack by teleportation effects like Shadowport and Juxtapose.
-- fixed: attack sequences could conclude prematurely when smashing an enemy capable of counterattacking into something else via a knockback attack.
-- created a new, more fitting skill button graphic for Juxtapose.
-- fleshed out more of the faith traditions in Cera Bella.
-- added more explicit references to a character's patron deity in religious dialogue.
-- improved the knockback timing on Smash.
-- improved the visual effects on Pyro Hail.
-- fixed: offset data for TowardCenter visual effects was only affecting the spawn location of the effects, not its travel target.
-- fixed: playing a custom campaign, quitting to the title screen, and then visiting the campaign editor would cause the editor to auto-load that campaign.
-- fixed bug: the game was not properly assigning promotion levels to procedurally generated characters, leading to incorrect stats (and a displayed level somewhere in the negatives).
-- created a new animated projectile for Pyro Hail.
-- got visual effects for Pyro Hail synced up and working in-game.
-- got visual effects for Light Bomb synced up and working in-game.
-- catalogued the game's visual effects in Assetnames.xml along with an attribute denoting whether each is directional or not.
-- fixed a serious visual glitch with text in item tooltips.
-- moved the visual effects catalogue out of Assetnames.xml and into its own VisualEffects.xml file; added an attribute glowColor with a custom value for each visual effect.
-- the game now pulls directionality out of the XML file; there is no longer a need to add "Dir" to the end of directional VFX in Attacks.xml.
-- VFX glow now renders based on the glowColor set for each VFX in VisualEffects.xml. Certain effects (e.g. Light attacks) have really high glow, others (e.g. arrows, crossbow bolts, and throwing axes) have none at all.
-- fixed: a misnamed loop variable deep in the damage-processing code could sometimes cause the game to throw a range error on AOE attacks.
-- fixed a visual glitch in the level-up screen.
-- turned off random nose size variance in the character portrait generator for the time being. (It was sometimes causing noses to not align correctly with faces, and its contribution to character variety was minimal anyway.)
-- improved the coloring and glow setting on the victory fireworks after battle.
-- improved sequential visual effects timing.
-- fixed some text overlay issues in the UI.
-- fixed some 2D particle velocity settings that were no longer working quite right in the new canvas screen space.
-- fixed eye/nose placement data on certain human proc gen portraits.
-- added new date activities: stargazing and cooking.
-- added reverse match parameters to the IfStringContainsGoTo and IfStringContainsRun script actions.
-- I apparently forgot to code the IfAttributeRun script action. Oops! Well, now it's in-game. Parameters: (1) Character Name, (2) Attribute Type, (3) Attribute Value (string), (4) Script Name (use | delimiter for multiple scripts), (5) Reverse Match (true or false -- optional), (6) Parameter Name (optional), and (7) Parameter Value (optional).
"Now what are those last two parameters about?" you might be wondering. Well:
-- most Run-type script actions* now have a couple of optional parameters stuck at the end letting you set a custom variable in the same call: Parameter Name and Parameter Value. This allows you to pass information to a script in the same action where you call it.
Parameter Name and Parameter Value work like this: the game checks Parameter value to see if it is an integer; if so, it essentially calls SetVal to set a new variable name and value corresponding to Parameter Name and Parameter Value. If it is not an integer, it does the same thing but with SetString instead. The game then runs the script(s) specified.
Parameters set in this way are global in scope and persistent, just as if you'd called SetVal or SetString.
* the script actions now supporting this are Run, IfStringRun, IfStringContainsRun, IfValRun, IfListHasRun, IfStatRun, IfAttributeRun, IfInAreaRun, and IfGoneRun.
-- fixed: the "must be equipped" parameter in IfItemGoTo and IfItemRun wasn't working right.
-- fiery embers from the "Ash" weather type now visibly glow when spawned in cut scenes.
-- 2D particles can now fade in over time instead of just popping in onscreen.
-- new 2D "weather" particle: Fireflies!
-- the new parameter-passing functionality of Run-type script actions now supports parameter values that include commas.
-- fixed: text displaying prices in the shop interface was glitched out.
-- fixed: the date nighttime event wasn't working as intended.
-- wrote a new evening event: camp is visited by a wild chital.
-- created new Go On a Date camp activity, where characters with an established romantic relationship can independently continue to ask each other out on dates and further build their romance.
-- new script action: LearnCampActivity. This allows a character to pick up a new hobby or behavior manifesting in how they spend their evenings at camp. Two parameters: Character Name and Activity Name. (The second parameter can be multiple activities delimited by vertical bars for multiple learned activities.)
-- added documentation on the Wound Level stat to ActionsReplies.
-- fixed: events were not checking the character Wound Level stat properly.
-- got voice-over dialogue working in the game's sound manager!
-- recorded some temporary voice-over narration for the game's introduction; found and messaged a voice actor to do something more professional for the final draft.
-- added in the visual effects for Fire Gate, scripted them so they're now in-game and looking good!
-- created a new "ring of light" pixel animation as a visual effect for Titan Shield; scripted Titan Shield's visual effects so they are now in-game as well!
-- visual effects can now be scaled in size.
-- lowered the strength and increased the cost of generated crossbows somewhat to make them less overpowered.
-- if you have hunter characters, one of them can now interact with the wild chital event.
-- added the chital event to the game's random event hopper.
-- fixed a timing issue with the skill Drain.
-- fixed: the game would still do combat zoom-in on abilities with really huge AOE, cutting off visibility of the attack's full effects.
-- fixed: the overlapping positon of health and energy bars was causing clarity issues with certain events affecting both (e.g. eating food or being drained below 0 energy).
Put out a call (https://www.reddit.com/r/HungryArtists/comments/m1y5fy/hiring_semirealistic_video_game_portraits/) for portrait artists!
-- character selection icons now visibly glow when a character is selected, making it easier to see at a glance when a character is selected.
-- improved the "does a character want this equipment?" algorithm. Instead of just relying on raw comparative item value, the game now actually checks the relative stats, tags, and skills granted by each item grants to see if the new one offers any kind of advantage that the existing one does not. Any sort of advantage will make the character want the item, even if its overall value is technically lower.
If no advantages are found, there must now be a value difference of greater than 19% before the game will assume there's some kind of other advantage to the item the analyzer can't see (as opposed to just natural variation in the pricing algorithm).
-- the ModDmgVsWeapon tag now looks for whether the equipped weapon grants the named base skill (or whether the unit has that skill naturally) rather than looking for the weapon type within the weapon's name.
-- the DmgIgnoreRes and IgnoreStatFXRes tags now apply both to the named skill and any skills dependent upon it.
-- applied a "for AI" flag to certain tags to speed up the processing of unit tags during AI decision-making.
-- fixed: IgnoreStatFXRes tag was applied to the wrong skill type during counterattacks.
-- fixed outdated formatting for RangeBonus tag processing in AI.
-- filled in gaps in the Tags documentation in ActionsReplies.xml, and fixed a few incorrect parameters.
Updated the game to Unity version 2020.3.0; this has no real benefits in terms of new features, but it's an LTS (long-term support) release, so this should be helpful regardless!
Received voice-over work from Anupam Dhyani (https://twitter.com/AnupamDhy), and spent time interviewing some very talented portrait painters. (Fingers crossed!)
-- edited the new voice-over clips, incorporated them into the game's introduction.
-- added post-processing to the character creator so you can see character portraits with anti-aliasing and glow effects intact.
-- fixed a UI glitch in the character creator.
-- fixed: accessories in the portrait builder screen of the character creator hadn't been updated to the new palette-swapping method.
-- fixed incorrect layering in the character promotion screen.
-- experimented with a system of "babble speech" to accompany character dialogue. I've got it sounding pretty passable now, I think! (For human females, specifically. Others will need more work.)
-- created some custom inspector elements in the editor to allow faster and easier experimentation with babble parameters.
-- the babble speech is starting to sound pretty passable. I have both male and female flavors of babble speech in the game now (https://youtu.be/suqCR_0vLV0).
-- when dialogue interrupts other dialogue, the game now quickly fades out the old dialogue instead of just abruptly stopping it. This makes those transitions much smoother.
-- new script actions supported: StopDialogue and FadeDialogue. StopDialogue immediately stops all dialogue currently playing; no parameters. FadeDialogue causes all dialogue currently playing to fade toward a target volume level at a specified rate. Two parameters: target volume and fade rate. (Fade rate is optional; if unused, the game will default to a fade rate of 8.0.)
-- voice set and voice pitch are now aspects of a character that are saved along with them.
-- you can now specify a premade character's voice set and vocal pitch using the attributes voiceSet and voicePitch.
-- proc gen characters are now generated with a voice set and voice pitch appropriate to their gender.
-- in dialogue, the game now automatically checks the speaker name to see if it matches a character--and if it does, the game initiates babble in that character's voice for as long as the dialogue text continues animating.
-- the game checks animating dialogue for square bracket (denoting narrative description), and will stop the babble speech while it is typing out the text within those brackets.
-- new script action supported: Babble. This will cause vocal babble to accompany animating text in the dialogue menu. Two parameters: voice set and vocal pitch. (1.0 is the default pitch for any given voice set.)
-- created two new voice sets--LissitFemale and LissitMale--with placeholder recordings.
-- the game now imports species data from XML (instead of relying on hard-coded values).
-- wrote a proper conclusion to the traveling merchant bandit battle. The player's reputation with shopkeepers around the city now improves when this battle is won.
-- wrote a third event in the traveling merchant event chain.
-- added a chime glissando sound effect to the "sparkles bursting out the end of the experience bar" visual effect.
-- renamed "Whet Stone" to Whetstone; increased its maximum uses from 1 to 2 in order to make the item more useful.
-- added voice set and voice pitch to the attributes saved to PremadeUnits.xml by the character creator.
-- fixed: the music was fading out partway through plot event 1.
-- fixed: 2D particle emitters were spawning their static "reference" particle visibly in the middle of the screen.
-- fixed: babble would start and then quickly cut off for dialogue beginning with exposition in square brackets. (Now it simply doesn't start until it hits the end bracket.)
-- fixed: upon promoting shadowlings, the game was setting their new base stat values as if they were humans.
Spent a bunch of time agonizing over who to hire (https://twitter.com/sinisterdesign/status/1371490882982137856) for the portraits. In other news:
-- wrote a new side quest you can perform for the shopkeeper.
-- roughed out a new side quest battle.
-- new tag: AggroGroup. This basically just automates the tedious process of assigning script IDs to clusters of Passive units and writing a bunch of dialogue triggers to strip away the Passive tags from them all if one member of the group loses Passive status. One parameter: group number.
-- fixed: proc gen growths generation was throwing an infinite loop after the changes to species data in the code.
Ultimately landed on Georgi Minkov (https://www.artstation.com/georgiminkov) to redo the portraits in a painterly style. :)
-- if you supply more than two tilesets for a proc gen battle, the game will now pick two of them at random to use.
-- new script action: SetStringByList. This makes it easier to randomly select things from custom lists; you simply supply the name of the list and the game will automatically select a random entry from that list to set a custom string. Two parameters: (1) string name, and (2) list name.
-- added booing events to all the remaining arena battles.
-- added alternate conditions that can occur in the proc gen league 0 arena battle: fog of war, rainy weather, or opponents move first.
-- edited the proc gen league 0 arena battle a bit for difficulty.
-- juiced up the attack sound effect for Terror some more.
-- boosted the glow on the Feedback visual effect.
Gave artist feedback.
-- created AI profiles, now residing in
AIProfiles.xml! These are presets which weight certain AI considerations to produce different battlefield behaviors. As of now, AI profiles include:
- Balanced - Weighs opportunities for damage against defensive considerations.
- Aggressive - Prioritizes opportunities to deal damage over all other factors.
- Homicidal - Nothing matters but inflicting enemy casualties.
- Defensive - Prioritizes the survival of characters over all other factors.
- Greedy - Prioritizes the acquisition of items over all other factors.
- Unpredictable - Moves are chosen rather capriciously, making behavior difficult to predict.
- Stupid - Ignores most factors influencing a move; priorities might as well be random.
You can now create your own custom AI profiles in custom campaigns, and the game will load them.
-- the armies editor within the map editor now allows you to set AI profiles on a per-army basis. The map editor now correctly saves each assigned AI profile with the other army data, and loads it again when the map is loaded.
-- the game now passes along the AI profile for each AI-controlled army when it initiates move calculations, using the settings in the profile to weight the player's moves.
-- as the "Greedy" profile above suggests, AI now possesses a "greed constant" that causes characters to prioritize (to greater or lesser degrees) attacking destructible objects containing items. The more items an object possesses, the more weight it is given as a target.
-- new special character:
-WINAURA-. Gets changed to the amount of aura the player is currently due to receive if they win the battle. (In cut scenes, this number is simply 0.)
-- new script action:
AddArmy. Lets you add a new army to a battle midway through. Parameters: Army Name, Army Color, AI Controlled (true or false), AI Profile Name, and--optionally--Names of Allied Armies. If the new army has multiple allies, delimit the names of allied armies with vertical bars (|).
-- new script action:
RemoveArmy. Lets you remove an army from a battle midway through. Two parameters: (1) Army Name and (2) Kill Units (true or false, optional). If Kill Units is set to true, all units in the army are treated as having been killed rather than merely retreated.
-- new script action:
ChangeArmyAI. Lets you change an army's AI profile during battle in response to battlefield events (or for any other reason!) Two parameters: Army Name and AI Profile Name.
-- added more random events to proc gen arena battles: thieves appear to loot chests; a fan throws an item onto the field;
-- adjusted battle progression in the arena.
-- fixed a bug in proc gen character class selection that arose after the changes to species data in the code.
-- added crowd sounds to Kalkerapur.
-- added new sound loops to the game: Waves, Ship, and Seagulls.
-- mid-battle saving now correctly saves each army's current AI profile. These AI profiles are now restored upon loading a mid-battle save.
-- updated babble speech to use clarinet sounds (https://twitter.com/sinisterdesign/status/1372696298990735360), making it a bit less overtly cartoony while still retaining roughly vocal tones and cadence.
-- doubled dialogue text speed.
-- character moods can now be explicitly tied to other characters. New optional parameter for the AddMood action: Concerning Character. If you put the name of a character, the first character's mood will be linked to the second named character.
-- new mood: Jealous. Can cause characters to spend evenings feeling jealous.
-- new camp activity: Jealousy. Will cause a character to waste the evening stewing in feelings of jealousy.
-- new special character: -MOODCHAR-. If the trigger character is in a mood tied to another character, this will sub in the name of the character linked to that mood.
-- new special character: -MOODCHAR2-. Same thing, but does it for the secondary character in the conversation instead of the trigger character.
-- added secondary-character variants to the special characters -GOD- and -BIO:-, named -CHAR2GOD- and -CHAR2BIO:- respectively.
-- you can now customize the game's dialogue animation speed, speeding it up by up to 4X. Babble speed increases to match. Dialogue animation speed is now saved and loaded along with other game settings.
-- added babble speech to the arena scene.
-- added babble to NPCs in random events.
-- added some missing sound effects to the shop.
-- changed the recruitable unit in the league 1 qualifier to a human kineticist (a class I want all players to experience, and who can make good use of the terrain in that fight as well as potentially use Gravity Spike to great effect against the boss).
-- did a bit of rebalancing of the alternate promotions for psy fighters.
-- mocked up a character creation screen.
-- fixed: dialogue would start animating prematurely (i.e. before the window had fully popped up) in dialogue trees where Branch 0 actions immediately shifted to a new branch.
-- fixed: babble would start prematurely (i.e. before dialogue had begun animating) when initiated via the Babble action at the start of dialogue.
-- fixed: the light bomb explosion visual effect was appearing too low onscreen.
-- fixed: promoting a human would throw a null error at the base stat modification stage.
-- fixed some small presentation issues with the mid-battle save screen.
-- when characters die, the mourning mood of their surviving friends and lovers is now linked to the decedent.
-- when a character dies, lesser friends and new lovers who aren't close enough to go into mourning will now become depressed for a shorter period.
-- moods acquired via camp activities can be now linked to an activity partner.
-- the Teach Law and Teach History camp activities can now go badly with a second character if that character is arrogant, empirical, or narcissistic; the characters can get into an argument about whether the lecturing character is correct, thereby hurting their friendship and romance scores.
-- if you click a skill and then shift-click an enemy, the game will specifically assess moves using the selected skill for auto-move-and-attack (as opposed to considering all available skills, as it previously did).
-- the report screen now has its "writing out" speed tied to whatever the setting is for dialogue animation speed.
-- the report screen now plays a sound loop reminiscent of a quill on parchment while its contents are being typed out.
-- added Attacker Army parameter to the OnCharDeath, OnCharAttacked, and PostCharAttacked dialogue triggers. All now have the following parameters: (1) Army Number, (2) Character Name, (3) Character Class, (4) Attacker Army, (5) Attacker Name, and (6) Excluded Attacker Names (each delimited with a colon).
-- new sound loop added to the game for general use: Writing.
-- fixed: beep speech had stopped working with combat barks.
-- fixed: in rare circumstances, an attack with knockback could conclude without associated falling damage being processed, resulting in the attack's damage and/or experience gain abruptly happening during the next character's attack.
-- fixed a parsing error when deserializing unit tags.
-- the game now places down "hold tiles" to visually indicate which spaces are currently subject to a use of the Hold skill.
-- holds now immediately vanish when the originating characters moves (or is moved by someone else!)
-- nerfed Hold somewhat; it now costs 6 energy rather than 2, and it only produces a hold on 3 sides of the user instead of 4. (The space behind the character, specifically, is no longer held.)
-- the game now shows stat symbols rather than text when an ability directly affects a stat other than Health or Energy.
-- fixed: the game was parsing "blank" skill status effects incorrectly, leading to phantom status effects.
-- fixed: characters hit with a skill with knockbackTiming set after its impactTiming (e.g. Charge) would check for a counterattack before the knockback began, resulting in characters who were being knocked out of counterattack range nonetheless counterattacking during the knockback.
-- fixed: characters could remain "selected" within the game's logic when dying during a combat exchange that they initiated, and would reappear within the Actions Bar afterwards even though they were gone.
-- fixed: holds were not behaving properly on characters who started moving from a held space.
-- fixed: 0-range skills faced in an arbitrary direction rather than the direction the user faced in. (This effect was noticeable only with asymmetrical AOE reticle patterns.)
-- fixed some tooltip titles that were truncating incorrectly in the campaign editor.
Gave artist feedback. Meanwhile:
-- received the final, mastered musical track Maharaja from Ryan; incorporated it into the game.
-- new sound effect added to the game: Store Bell. Little bells of the sort that often hang on the doors at the entrances to shops and jingle when someone enters or exits. Now plays when you go to the shop or the recruitment office in Kalkerapur.
-- new sound effect added to the game: FootstepsFading_Outdoors. Footsteps fading off into the distance. Now plays when you go to the arena in Kalkerapur.
-- new sound effect added to the game: Steamthopter. The sound of a steamthopter powering up its rotors. Now plays when you use the Hover skill.
-- edited some of the intro narration to make it smoother.
-- fixed: the game was not playing impact sound effects or spawning impact particles for destructible objects with a passability type of "Flying" that had been pushed, pulled, or thrown via a character skill.
-- fixed: the Crowd loop was not looping smoothly due to silence at the start and end left over from its tenure as an mp3.
-- fixed: it was possible for characters chosen to get both Strength and Psy growths to end up without one or the other due to really high growths being chosen for the other stats, resulting in a null error when the game checked for one of these stat growths expecting it to be there.
-- created a new trap type: Caltrops. These damage the target and inflict Slowed status.
-- new Engineer skill: Place Caltrops. (This replaces Build Wood Bridge as a starting skill for proc gen Engineers, as Build Wood Bridge is too situational and advanced to serve as a good introductory skill for players new to the Engineer.)
-- decreased the delay before tutorials show up when you first enter the shop and recruitment screens.
-- removed compression for the cancel and confirm buttons, as artifacts were appearing when these buttons were displayed at large sizes.
-- increased the volume of the intro narration voice-over.
-- programmatically intervened to prevent repeat consonants at the intersection of the beginning and end parts of combinatorial last names.
-- fixed: you could attack your own spiked barricades without being damaged.
-- fixed: it was possible to throw objects onto other objects with a passability of "Flying."
-- created unique sprites for the Caltrops object and for the Place Caltrops skill button.
-- quadrupled the rate of overnight energy recovery for all characters in the Telepath Tourney campaign.
-- gave Pessimistic characters a chance to interrupt their negative thought train during the Naysay camp activity, producing no morale loss (but some lost energy).
-- rewrote the code for procedurally generating equipment, making it miles more efficient and easier to read.
-- transferred the effects of weapon/armor materials from hard code into XML, making it dramatically easier to create new weapon-material combos (and also opening up dramatically more of the equipment generation process to modding).
-- adjusted the effects of materials on proc gen weapons and armor to make the materials used more significant.
-- fixed: when tripping a pressure trigger via unit movement, if the triggered script didn't stun or freeze the enemy, the AI would just carry on with that unit's move as if the unit had successfully reached its intended destination (sometimes attacking a unit it never actually reached!)
-- fixed: burning damage had ceased playing the accompanying sound effect.
-- fixed: Frozen objects (e.g. Spiked Barricades) would not counterattack.
-- save slots now display the scene name in dark red if a battle, dark blue otherwise.
-- save slots now support a custom string displaying some relevant information from whichever campaign they belong to.
-- save slots for the Telepath Tourney campaign now displays the player's team name.
-- new action: ChangeSaveString. One parameter: the name of a custom string variable. This causes the game to get the current value of a chosen string variable whenever the game is saved--the value saved under that variable will be displayed in the current save slot as an identifier for the state of the game whenever you go to the Load Game screen.
-- wrote some new greeting response lines (particularly for introvert characters, who had none!)
-- fixed visual effects alignment for Gravity Spike and Gravity Well.
-- added Clarified to the list of status effects that destructible objects cannot be affected with.
-- flagged the Introduction as non-saveable.
-- fixed: the game would display redundant status effect pop-ups if the unit took damage from multiple sources in a single exchange.
-- finally fixed that dumb bug from upgrading to the URP where shadows from 3D objects and terrain no longer appeared in battle.
-- fixed: skill tooltips in the character screen and level-up screen were out-of-date, as were the skill tooltips in the various skill selection submenus within the campaign creation suite.
-- fixed: save slots in various parts of the game UI were out-of-date.
Did a podcast interview (https://youtu.be/LQiYg1Ikc5s) with Game Wisdom about Together in Battle and about SRPG design generally. :)
Captured a bunch of game footage for an updated game trailer.
-- fixed: the game would give you a pop-up warning when directing an Enthralled character to attack a unit one of its normal allies.
-- fixed: the AI wasn't considering certain newer status effects when weighting various moves.
Finished the new trailer! :D Also:
-- wrote some new plot dialogue.
-- when playing a sound effect, the game now checks to see if that same sound effect was just triggered a tenth of a second ago or less; if it was, rather than playing a second instance of the sound a fraction of a second later (and producing a grating "reverb" effect), the game simply boosts the volume of the original sound effect by 20%.
-- toned down the glow effects on lava somewhat to make surrounding units easier to see.
-- painted a "lone drop of sweat" particle to use with the new painted portraits in cut scenes.
-- fixed: light bulb icons were visible on lava tiles.
-- fixed: I'd accidentally broken single-space collision movement and backstab pop-ups with earlier fixes.
-- fixed: a typo in one of the branches of side quest dialogue.
-- adjusted the Feedback build-up sound effect and Feedback sound effect timing to better match the visual effect.
-- adjusted battle pop-up text size to help keep damage pop-ups legible when multiple adjacent characters are struck in battle.
-- adjusted health, energy, experience, and morale bar widths to help keep things legible when multiple adjacent characters have things going on with these in battle.
-- adjusted Ash weather particle settings.
-- fixed a formatting issue in Materials.xml.
Switched back to working on Telepath Tactics for a bit!
-- got unique character sprites for Emma and Sabrina Strider (https://pbs.twimg.com/media/ExgYdcmXAAYaH1o?format=jpg&name=large) into the game! :)
-- assigned babble voice data to the game's whole cast.
-- dialogue babble now pauses during scripted unit movement in battle cut scenes.
-- the game now assumes that dialogue babble is no longer present when the speaker changes and it can't find a matching character, preventing unwanted babble sounds during tutorials and such.
-- updated early cut scenes with babble voices.
-- tweaked Emma's portrait data to make her face more anatomical.
-- broke all the palette-swapping code off into its own class for easier editing and management.
-- new tag: TargetPreference. This allows you to make individual characters value other individual units on the battlefield more or less as potential targets. Two parameters: (1) target name or script ID, and (2) float operation to perform on the target's base value for move calculation purposes with the tagged character.
-- placed a TargetPreference tag on Lakshmi in the Caravan Battle to ensure she doesn't wander off the reservation and get herself surrounded in the first few turns.
-- put together new sound effect: Crowd Cheering.
-- Crowd Cheering now plays upon victory in arena battles in Together in Battle.
-- fixed: campfire smoke wasn't emitting.
-- made drag-panning around the battlefield way snappier and more responsive!
-- when you click enemies, it now shows you spaces they can reach (https://pbs.twimg.com/media/ExmGCpJXEAcgLXE?format=jpg&name=large) with their longest-range and shortest-range attacks in addition to those within their movement range.
-- put the firelight "flicker" effect (https://twitter.com/sinisterdesign/status/1376208191441227783) for self-lit objects into the game. :)
-- fixed: the game was sometimes making character babble overlap.
Gave artist feedback. On the coding front:
-- the game now fully supports Use triggers! :D
-- the mouse cursor now changes to a sword whenever you mouse over attack tiles.
-- the mouse cursor now changes to a sword when mousing over an enemy while a skill is selected.
-- if you left-click a character while a skill is selected, instead of showing the clicked character's move range the game will now behave as though you'd shift-clicked that character, moving your current selected character into range and queueing up the selected skill for use on the target.
-- the game now distinguishes between left-clicking an enemy and clicking an ally from another army. With enemies, it only takes offensive skills into account when displaying spaces the unit can attack outside of move range; with allies, it accounts for healing abilities, buffs, and other non-attack skills.
-- new tag: LevelTo. Behaves like LevelUp, but instead of silently gaining a set number of levels, the unit will gain however many levels they need to reach a designated level. (If they are already at or beyond that level, they will not level up.)
-- the game now supports dynamic changing of sprites not just for characters, but also for objects (as well as changing models for 3D objects).
-- fixed knockback timing on skill Pull.
-- fixed: the SpawnUnit script action would always produce a brand-new copy of a character when used! The action now first checks to see if the character already exists from prior use--and if so, it simply loads that character instead of producing a clone of them.
-- fixed: the map editor was not saving per-unit trigger data when saving a map.
-- fixed an edge case where an AI-controlled unit wandering into a trap that stunned or froze them could produce a range error.
Received hurt pose sprites donated by Sean Hayden (Rad Codex)! Gave artist feedback to Franklin Chan. On the coding front:
-- the AI now accounts for the potential to deal falling damage and inflict falling-related status effects when scoring potential moves. (Which is to say: it'll now take opportunities to shove your characters off of cliffs.)
-- did a bunch of work on making the game support doors.
-- new tag: Locked. Causes a door to start off locked when the map loads.
-- script actions Lock and Unlock have been added to the game. As their names imply, these lock and unlock a specified door. Two parameters--Y coordinate and X coordinate--as well an optional third parameter, Object Name.
-- the game now consolidates damage pop-ups for skills that deal damage from multiple sources simultaneously (e.g. with a BonusDmg tag, or by dealing falling damage in addition to regular attack damage).
-- the game now consolidates pop-up announcements for those times when a character gets hit with multiple doses of the same status effect. (E.g. instead of getting two "Stunned!" pop-ups in a row, you'll now get "Stunned X2!")
-- fixed: the move analyzer wasn't accounting for allied armies when analyzing movable spaces.
-- doors are now fully supported in the game! :)
-- fixed: character sprites could sometimes clip through tall cliffs behind them, or through the ground when attacking downward.
-- updated formatting for the character death monologues in The Vengeance of Emma Strider campaign.
-- added facial expressions to the character death monologues in The Vengeance of Emma Strider campaign.
-- levers now always play a sound effect and produce smoke particles when triggered regardless of what other scripts are attached to them.
-- floor buttons now always play a sound effect and produce smoke particles when triggered regardless of what other scripts are attached to them.
-- new dialogue trigger: OnDoor. Trigger dialogue when a character interacts opens, closes, or unlocks a door. Parameters: Door Y coordinate; Door X coordinate; Door Name (or -ANY-); Door State (or -ANY-); Character Name (or -ANY-); and Army Number. All parameters are optional. Door State can be Open, Closed, or Locked.
-- raised the volume on the lava splash sound effect.
-- added an audio browser menu to the dialogue editor that now appears automatically when adding a PlayMusic, PlayLoop, or PlaySound action.
Made a fun little April Fool's video (https://www.youtube.com/watch?v=BOiM-b6GDrU). :D
-- new script action: Wait. Causes the game to wait a certain amount of time before it resumes executing script actions. One parameter: time (in seconds). Can be left blank, in which case the game will wait 1 second by default.
-- script action Open has been added to the game. This fully opens a specified door (rather than merely unlocking it). Two parameters--Y coordinate and X coordinate--as well an optional third parameter, Object Name.
-- new tag: Open. Causes a door to start off open when the map loads.
Gave Georgi artist feedback on character portraits. (Proc gen stone and bronze golem portraits are just about complete now!)
-- added a "duplicate scene" function to the campaign editor.
-- added tooltips to the delete and duplicate buttons within each entry in the campaign editor.
-- added a "duplicate character" function to the campaign editor.
-- fixed a bunch of little issues with how doors behave visually when opened/closed.
-- implemented open-close behaviors for the game's gate objects.
-- created alternate facing Wood Door objects, allowing for structures with double doors.
-- the "which direction should I face" AI algorithm is now dramatically more efficient where there are lots of enemies for whom the character is not within move-and-attack range, and a bit more efficient in all other circumstances.
-- fixed an AI issue in the Battle with Gunther.
-- got the Igor and Fera cut scene working, as well as Gunther and Emma. Added portrait expressions and animations to both cut scenes.
-- fixed: characters were no longer appearing partially submerged when on a water or lava tile.
Had an exchange with Unity technical support about a weird glitch in the Replace Color shader node that's causing problems with character portraits. In the meantime:
-- got a new cut scene background from Franklin Chan: the Dese Palace Balcony, along with three variants. Added it to the game.
-- got the giant campground chat dialogue tree working in Telepath Tactics. Added in character facial expressions and animations to match the old dialogue.
-- began recreating the Defend the Camp battle from Telepath Tactics.
-- dialogue trees now support a theoretically unlimited number of replies! You can cycle through "pages" of replies (with up to 5 showing at a time) using arrow buttons that now appear when the option is available.
-- did some necessary rebalancing (https://twitter.com/sinisterdesign/status/1380228610838163459) on the Defend the Camp battle.
-- new script action: FaceArmyToward. This is exactly the same as FaceUnitToward, but it affects an entire army rather than a single character. Same parameters except for the first, which takes an army number in lieu of a character name.
-- new optional parameter in the ShowReserveSupplies script action: character name. This tells the game that only a single character on the roster is currently able to access the reserve supplies due to their position on the battlefield. (This parameter does nothing in cut scenes.)
-- tripled the number of frames in the looping Pyro Hail fireball animation, smoothing it out substantially.
-- quadrupled the number of frames (https://twitter.com/sinisterdesign/status/1380296316618731524) in the Power Up visual effect animation, rendering it silky smooth; boosted its glow value and improved its alignment.
-- fixed the scripting and dialogue in the Defend the Camp battle in the Telepath Tactics campaign.
-- fixed: using an object with a Use trigger but without a "Used" sprite variant would produce a null error.
-- fixed: changing an object sprite to something that didn't exist just in general would produce a null error.
-- I realized that the game logic hadn't been updated to reflect the new, army-dependent nature of the Kill-All Victory condition; overhauled a big chunk of it to support that.
-- realized that I was using move turn as a shorthand for the army number of the current player; a big mistake that would inevitably produce bugs when armies got eliminated in battles with more than two armies and the battle didn't immediately end. Spent a bunch of time rewriting code to address this issue.
-- new special character: -PLAYERARMY-, as distinct from -PLAYERTURN- (which is the equivalent of move turn).
-- fixed: the "writing" sound loop stopped playing when advancing to subsequent pages of a report.
-- fixed: certain scene data wasn't always being made accessible to the action runner depending on the context.
-- finished getting the Defend the Camp battle working in the Vengeance of Emma Strider campaign.
-- got the cut scene Silithis Gets to Adelbrae working in the Vengeance of Emma Strider campaign.
-- got the cut scene Emma and Sabrina 1 working in the Vengeance of Emma Strider campaign.
-- got the cut scene Bandit Fortress Outer Wall working in the Vengeance of Emma Strider campaign.
-- fixed: the AI would add the "grab sack bonus" to moves that made no sense, occasionally producing bizarre short-term moves in situations where a character had no good short-term moves but did have a loose item sack nearby.
-- fixed: in circumstances where an AI-controlled character died of a status effect resulting in a player character level-up, the game could fail to restart the AI decision-making process upon the level-up screen closing.
-- fixed: when a character had dialogue in battle, moved, and then a different character became speaker via the ShowTalking action, the moving character would inappropriately display their speech bubble along with the actual speaker.
Got my first dose of covid vaccine over the weekend, so I'm recovering and not working as hard for a few days. Still, got this done:
-- proc gen characters now have a bark they'll say when hit by friendly fire in battle.
-- the game now detects when "a" is used as the article before a word starting with a vowel, then corrects it (https://twitter.com/sinisterdesign/status/1381663316012101639).
-- fixed: dialogue in the cut scene editor was throwing a null error when attempting to start or stop dialogue babble.
-- fixed: the dialogue editor was throwing a range error when attempting to delete a newly loaded dialogue or script.
-- proc gen characters now have a bark they'll say when hit by friendly fire in battle.
The ff could be switched on/off?
The multiplayer will have an option to disable the random object drops?
Will be there any secret spider cave :)?
Thank you for the updates and looking forward to hearing from you and for the game as well!!
Ha ha, thank you! :D
Quote from: installdisc on April 13, 2021, 03:01:36 PM
The ff could be switched on/off?
The multiplayer will have an option to disable the random object drops?
Will be there any secret spider cave :)?
Friendly fire is always on; there's no switching it off. However, there's no
random friendly-fire in the game--if a character hits another character, it's because you deliberately chose to have their attack hit an area containing a friendly character!
I'm not sure yet how I'm implementing multiplayer--in contrast to how I developed the Telepath Tactics the first time around, that's gonna be the last thing I tackle here.
It wouldn't be a secret if I talked about it here, now would it? ;)
-- new script action: WaitForPostDialogue. Pauses the execution of all subsequent script actions until the dialogue menu is closed (as via EndConv).
-- renamed the WaitForDialogueEnd action to WaitForDialogue to avoid confusion with WaitForPostDialogue.
-- combat barks with associated morale or other effects now delay displaying those effects using WaitForPostDialogue.
-- camp dialogue now waits an additional second to display pop-ups and such after the text finishes animating.
-- friendly fire reactions now occur for skills that inflict negative status effects, not just damage.
-- fixed: capitalization-insensitive text-matching processes in the game weren't working under certain circumstances.
Thank you for the answer. Can not wait for this game!! and the remake!!
Got the forums fixed! :D Reached out to Lorne about creating a few new unique sprites for Together in Battle. Also:
-- decided on the name for a yet-to-be-revealed unique character.
-- fixed the portrait data for a yet-to-be-revealed unique character.
Quote from: installdisc on April 15, 2021, 02:24:38 AM
Thank you for the answer. Can not wait for this game!! and the remake!!
Thanks so much! ;D
-- began refactoring the way unique dialogue is stored and called from character data in order to better support future additions to generated character dialogue.
-- added in support for the remaining dialogue line types in premade characters.
-- new proc gen dialogue type: Teach Response. The character reacts to the offer of being taught a new skill.
-- wrote a new, Narcissistic variant on the Volunteer camp activity.
-- fixed a visual glitch in the left-facing Sword animations for Emma and Sabrina caused by sprite sheet cell alignment.
-- added a new "castle wall" fill below non-transitioning castle tiles to allow for variable height castle structures.
-- split Hobby off from Like into its own proc gen dialogue type.
-- split off special characters -HOBBY- and -HOBBYTEXT- from the original -LIKE- and -LIKETEXT- (which now exclusively refer to the miscellaneous non-hobby thing the character likes).
-- fixed some formatting issues in CharAttributes.xml.
-- new script action: CreateUniqueItem. This procedurally generates a unique piece of equipment with custom parameters. Parameters: Character Name or Reserve Supplies or Roster Number, Item Name (use RANDOM to have the game generate one for you), Material, Quality (0-10), Category, Eq Slot, Required Masteries, Stat Bases, Grants Skills, Grants Tags, Base Durability, Base Value, Image, and Description.
E.g., this will procedurally generate a powerful steel axe and give it to the character Bob Bobbington:
CreateUniqueItem/Bob Bobbington,RANDOM,Steel,10,Weapon,Weapon Hand,Axe,Strength:2.0|Health:12.0,Axe,,0,800,Axe Duoterre,A legendary axe handed down from ancestors of the Bobbington family.
-- new proc gen weapon modifier: Glimmering. Causes all skills deriving from the weapon to cause Distracted status.
-- three new proc gen weapon modifiers: Axe-catching, Spear-catching, and Sword-catching. Each grants +6 damage against opponents equipped with the specified weapon type.
-- added a new "quality" step in between Superb and Peerless for proc gen equipment modifiers: Masterful.
-- added a new "balance" step beyond Graceful for high-quality proc gen weapons modifiers: Effortless.
-- added a new "counterattacks" step for higher-quality proc gen weapon modifiers: Vengeful, with +2 counterattacks. (The +1 counterattacks modifier is now called Vindictive.)
-- added a new "reflexes" step for higher-quality proc gen weapon modifiers: Hair-trigger, with +2 reflexes.
-- extremely high-quality proc gen weapons and armor will now be created with more than just the standard 1-2 modifiers, with items of quality level 10 or above getting a whopping 3-4 modifiers.
-- when using GiveItem or CreateUniqueItem for a character whose inventory is full, the game now automatically puts the item in the current roster's reserve supplies instead.
-- created a calendar interface showing individual days of the month and what, if anything, is scheduled for each day.
-- new script action: Schedule. Lets you add an event to the game's calendar. Three parameters: Day Number, Event Name, and Can Share (true or false). Day Number is the numbers of days passed since the start of the game; Event Name is simply a string. Can Share is optional; set to false if the event must occur on a day when no other events are scheduled, and the game will check for the first day with no scheduled events.
-- new optional parameter for CreateUniqueItem: Personal Item. Set to true if you want this weapon to be locked to the character you're giving it to.
-- greatly expanded the pool of pieces from which randomized unique weapon names are created.
-- integrated the new calendar UI into the existing calendar animation. It now remains onscreen until you click, allowing you to examine it for as long as you need. The current day now visibly pulses, drawing the eye.
-- added a new parameter to the Schedule script action: event icon. This allows you to display an icon on the calendar for that event's day. Each day can display up to 3 icons.
-- improved the logic for handling calendar events.
-- new script action: GetEventDate. Sets 3 string variables (CalendarDay, CalendarMonth, and CalendarYear) for the first day on which the named event is scheduled on the calendar. One parameter: Scheduled Event Name.
-- various scheduled events in the main campaign now appear on the calendar.
-- laid the groundwork for in-game books to contain actual, readable text.
-- arrogant and narcissistic characters now have a chance to take a morale hit when losing games played with other characters.
-- new event added to the campaign: a beggar asks the player for money. Characters with certain traits will have differing reactions to the player's choice.
-- fixed a portrait compression issue that was affecting palette swapping for certain portraits.
-- added Memory as a new supported attribute type for the IfAttributeGoTo, IfAttributeRun, and UnitsToList actions.
-- characters now create a memory of the occasion when the player refuses to grant them a raise.
-- fixed: persistent dialogue, persistent scripts, and portrait placement data weren't reliably reloading when switching campaigns.
-- fixed: the dialogue menu wasn't quite centered onscreen.
-- fixed: event icons weren't aligned correctly on certain cells in the calendar UI.
-- characters can now get into a small argument over the beggar event.
-- new script action: EventsToList. Allows you to input a range of days; the game will then collect the names of all events scheduled across those days and place them in a custom list. Three parameters: List Name, Days Passed Start, Days Passed End.
After a vacation visiting my father out of state, I'm back and fixing stuff!
-- added new hometown background dialogue variants.
-- fixed up some existing dialogue variants.
-- fixed: recruits were being generated without likes.
-- fixed: the scene transition fade-out didn't stretch quite far enough on certain displays.
-- fixed: axes were being generated without correct images.
-- fixed: Plated Boots were incorrectly described as Heavy (rather than Medium) armor.
-- fixed: there was some incorrectly formatted XML in the CharAttributes file causing problems.
-- fixed a range error with the self-lighting code in battle.
Had an online playtest with some friends last night which yielded loads of stuff to fix! To start:
-- when I renamed Whet Stones to Whetstones, I apparently forgotten that they are referenced by name in several battles and cut scenes, leading to errors in each of those spots. They are now fixed.
-- fixed: due to a dumb typo, unpromoted proc gen shadowlings and spriggats were getting generated with 19 and 25 Speed, respectively.
-- fixed: a typo was causing the game to come up empty when looking for character Defeat Response dialogue in battle.
I was out of commission for a few days there recovering from my covid vaccination, but I'm once again back at it!
-- new special character supported: -NPC:-. This allows you to directly access an attribute of one of the triggering character's NPCs. It is formatted like so:
-NPC:Attribute Type|Name,Relation,Location,Species,Gender,Is Alive-
The Attribute Type can be any of those supported in SetStringByNPC. All of the parameters after the vertical bar are used to narrow down the NPC to pull from--none of them are required, but you'll want to use at least one of them if you want the game to find the right NPC.
-- tweaked VFX positioning on Hover skill.
-- added VFX to Engine Boost skill.
-- fixed: the broken-up background sub-topics had no narration topic summary.
-- fixed: it was possible to get the "pencil scribbling" sound loop from the report screen stuck permanently on by clicking through too fast.
-- fixed: the "pencil scribbling" sound loop on the report screen would continue after clicking to skip the text animation.
-- when you blow up a bridge tile holding characters or objects, the game now visibly drops them onto whatever lies below the former bridge.
-- fixed: characters attaining the ability to counterattack could end up counterattacking with weak debuff skills instead of actual attacks because the debuffs were cheaper. The algorithm for picking a counterattack skill is now smarter, prioritizing damaging skills over debuffs.
-- fixed a handful of situations where the game would inappropriately remember the last skill button clicked, producing situations where attempting to move into tall grass or onto a bridge would instead cause the character to move next to it and select an attack to use on it.
-- fixed: certain hard-coded loop sound effect triggers could override scene-specific scripted sound loops. These hard-coded sound loops now use one dedicated channel, with the remaining 3 available for volitional loops.
-- fixed: sound loops faded to a volume of 0 would remain "playing" in their respective channels between scene transitions, and could interfere with future attempts to fade out future instances of said loop.
-- fixed: when you unclicked a previously selected unit in the recruitment interface, the game would no longer highlight that character's portrait on mouseover.
-- fixed: the game was not displaying danger tiles for spaces characters could reach with attacks (but not movement) without moving at all. (See attached image for an example.)
-- fixed: the game wasn't saving the source of tags granted by equipment.
-- fixed: the bonus damage from a Bonus Damage tag was reapplying the base attack's status effects, effectively doubling them with every hit.
-- fixed: weapons generated with Poisoned or Burning attributes weren't being assigned the correct tags to add their respective status effects to associated attack skills.
-- fixed: the game wasn't allowing equipping and unequipping of items in the character screen outside of the reserve supplies during cut scenes.
-- fixed: BonusDmg tags were being applied to skills which they should not have been applied to.
-- fixed: generic unit portraits were being inappropriately compressed, leading to palette-swapping artifacts.
-- the game no longer displays a mood preface for characters who are unconscious and recovering from wounds in camp.
-- fixed a couple of formatting errors in the condition-choosing script for the proc gen battles in leagues 0 and 1.
-- fixed a couple of formatting errors in the "gambling on the player's behalf" evening activity.
-- fixed formatting for interjections by pessimistic characters during the beggar evening event.
Dropbox produced conflicted versions of certain game files on my desktop last night, necessitating a few hours of confusion followed by deletion, renaming, and reconnection of assets to get everything working again. That SNAFU aside:
-- fixed: bridges in proc gen maps weren't being spawned with unique IDs, producing weird bugs when mousing over (or otherwise interacting with) them.
-- calendar now has a two-phase click reaction; if you click during the day-change animation now, it skips to showing the calendar instead of ending the scene entirely. If you click while the calendar is showing, however, it progresses to the next scene as normal.
-- tweaked the speed values of attack projectiles to make them feel more impactful.
-- added a new projectile to the game for the Spear attack. (It's a spear.)
-- fixed: the game was not accurately gauging distance to target for projectile VFX, leading to wildly disparate projectile travel speeds depending on facing direction. (Most notably, up-facing attacks traveled noticeably slower than in every other direction.)
-- fixed an error in the logic for the rewritten Kill-All Victory condition.
-- fixed: character babble could be unintentionally cut off via the Wait script action.
Gave Georgi a bunch of portrait feedback! Also:
-- the game now plays a "nope" sound if you try to change a character's equipment after their turn has ended.
-- fixed: null error in the character creator caused by the switch to the new proc gen dialogue system.
-- fixed: range error in the character creator when browsing pages of accessories for portraits.
-- responses to character dialogue are now regenerated after each use to decrease repetition.
-- fixed: second-character pronouns (heshe2, himer2, etc.) weren't getting processed properly.
-- fixed: the game was using the wrong approach type for characters whose familiarity rating put them past the greeting dialogue stage.
-- fixed: items weren't responding to mouse clicks due to a bug I accidentally introduced earlier today.
-- fixed: the first proc gen battle didn't have a nextBattle parameter.
-- fixed: the bandit side quest battle was locking up due the accidental addition of a second OnLoaded dialogue.
-- fixed a typo in one of the Awkward character lines.
-- fixed: the character creator was throwing a null error when confirming character dialogue entries due to changes in character dialogue generation elsewhere in the code.
-- fixed: the character creator had stopped generating generic characters successfully due to changes elsewhere in the code.
-- fixed: a typo in the CharAttributes XML file was causing weird errors.
-- the game now has generic placeholder lines for when it can't find character dialogue it needs. (Before, the game would just effectively freeze when this happened.)
-- fixed: a variety of circumstances where the game could run into null errors when trying to format dialogue for characters missing certain parameters (like tic and laugh lines).
Back to focusing on the Telepath Tactics remake!
-- spent hours working on the free-roaming bandit fortress section. However, it's clear that that sequence is going to require a lot of work on various aspects of the engine, so I'm skipping over it for the moment to get more scenes working using the core stuff that's already in-engine.
-- got the bandit fortress outer wall battle working. :)
-- fixed: it was possible for dialogue without a specified Conv ID to retrigger itself mid-dialogue by performing script actions that theoretically trigger new dialogue (such as opening a door), thereby trapping the game in a loop.
-- fixed: the game was tying triggered instances of dialogue to the parent dialogue data, which could result in errors trying to access the dialogue after removing it from the triggered dialogue queue.
-- got the five short cut scenes that follow the bandit fortress outer wall battle working! :)
Created a spreadsheet with every scene in Telepath Tactics to chart my progress getting them all working in the new engine.
-- reformatted the remaining shop cut scenes from Telepath Tactics to work in the new engine.
-- wrote some new attack barks and variations for personality traits that had fewer than others.
By my count, I've now got 39 scenes out of 79 total scenes working in the Telepath Tactics main campaign.
Recreated the Five Guardians battle in the Telepath Tactics main campaign.
Gave Georgi a ton of portrait feedback over the past few days!
-- Burning no longer stacks; applying additional Burning status to a Burning target will now merely extend the duration of existing Burning.
-- fixed: camp activities would display a "blank" portrait for some narration that didn't have a particular character attached.
-- fixed: the fix to dialogue retriggering itself midway through resulted in the game not recognizing that conversations had ended at all in some circumstances.
-- fixed: the game would not remove the grass patch objective reticle in the Qualifier if you skipped certain steps in the tutorial due to certain script actions referencing the wrong coordinates.
-- made bushes, trees, and other living plants more resistant to Pierce damage.
-- fixed: the shop tutorial had certain elements misaligned.
Geez, this month has just been terrible for productivity--so much time has been eaten up by having to watch videos to meet my requirement for 30.0 hours of CLE credits! Still, I'm making little bits of progress; mainly a lot of artist feedback. (Good grief are there ever a lot of portrait assets to remake.)
I've received the last of the proc gen portrait art from Georgi! :D While he works on the generic unit and unique character portraits, I'm going through and replacing the old assets with the new ones.
-- heads can be positioned and scaled along the x and y axes just like other portrait elements now!
-- got the new portrait assets for proc gen golem characters in-game and working.
-- began the process of incorporating the new proc gen human portrait assets into the game.
-- added dents and scratches to generated golem portraits.
-- got male and female human portrait assets in-game and with updated positioning data. :)
-- updated human portrait accessory positioning data.
-- got male and female lissit portrait assets in-game; updated male lissit positioning data.
Artist feedback stuff, yada yada. Also:
-- finished up all the portrait positioning data for the new lissit portrait assets!
-- got the new shadowling portrait assets in-game.
-- got the new male and female spriggat portrait assets in-game.
-- got the new male and female spirit portrait assets in-game.
-- updated spirit portrait asset positioning data.
-- improved some of the portrait asset positioning data for female humans.
-- made a bunch of revisions to portrait assets.
-- finished up all the portrait positioning data for the new shadowling portrait assets!
-- finished up all the portrait positioning data for the new spirit portrait assets!
-- finished up all the portrait positioning data for the new male spriggat portrait assets.
-- finished up all the portrait positioning data for the new female spriggat portrait assets!
With that, Georgi is finishing up the unique character portraits while I figure out a new color-tinting shader using masks.
-- fixed a typo in the code that was preventing the game from deserializing head data for portraits correctly.
-- improved positioning data for various shadowling portrait elements.
-- coded support for dedicated glasses and hat portrait elements.
-- fixed: shadowling horns were now interacting incorrectly with mentalist and photokineticist headbands due to the fact that they now throw shadows. Put them on their own, new layer.
-- received unique character portraits with alternate expression assets; gave artist feedback on unique character portraits.
-- received, implemented updated scar assets for shadowlings.
-- received, implemented updated earring assets for spirits.
More Telepath Tactics work:
-- got the Battle with Gulch Prelude scene working
-- recreated the battlefield for Battle with Gulch.
-- added a console to the game for easier testing of various situations.
-- received unique portrait assets from Georgi Minkov! Stuck them in the game.
-- gave portrait asset feedback re: an unreadable file; received a fixed file, added it to the game.
-- gave more portrait asset feedback re: asset mask colors. (Unity is very particular about your Rs, your Gs, and your Bs!)
Began the slow, laborious process of recreating all of the asset positioning data for unique character portraits so they don't look like Picasso paintings.
-- recreated portrait positioning data for the recruiter.
-- recreated portrait positioning data for the arena manager.
-- recreated portrait positioning data for the merchant.
-- recreated portrait positioning data for the messenger.
-- the Enter and Escape keys now work with the console.
-- recreated portrait positioning data for Emma Strider.
-- recreated portrait positioning data for Sabrina Strider.
-- recreated portrait positioning data for the shadowling child.
-- recreated portrait positioning data for Ishita Svaamee.
-- recreated portrait positioning data for Praetor Nero.
-- recreated portrait positioning data for the king of Dese.
-- fixed a couple of bugs with the console.
-- created portrait positioning data for Manbir Raksha.
-- recreated portrait positioning data for the king's brother.
-- recreated portrait positioning data for the Lakshmi Bana.
-- recreated portrait positioning data for merchant 2 and merchant 3.
-- more miscellaneous fixes re: missing or incorrectly formatted portrait assets.
-- recreated portrait positioning data for the lissit child.
-- recreated portrait positioning data for the spriggat child.
-- recreated portrait positioning data for all 6 generic villagers.
-- recreated portrait positioning data for all 6 Dese villagers.
-- fixed: the game was overwriting portrait data for certain unique portraits with out-of-date default values.
-- fixed: portraits lost the ability to bob when moving at some point due to some nonsense relating to Unity prefabs.
-- recreated the terrain for the Hills of Coria battle.
-- recreated the terrain for the Coria Bridge battle.
-- recreated the terrain for the Coria Dogs - Ground Level battle.
-- recreated the terrain for the Coria Dogs - Basement battle.
-- recreated the terrain for the Battle with Ebon Raban.
-- recreated the terrain for the Rescuing Sarn Kamina battle.
-- recreated the terrain for the Battle with Archos.
Gave Ryan feedback on some new music.
-- created a triplanar shader to replace the deprecated triplanar shader being used for cave wall assets.
-- recreated the terrain for the Mines Entrance battle.
-- fixed: Unity had inappropriately applied specular highlights to cliff and cave fill materials.
-- recreated the terrain for the Battle with Tarion.
-- edited the terrain for the Battle with Tarion to throw in more tactical wrinkles; removed a few rows and columns to make the map more compact (from its original 45 x 26 to 41 x 23).
-- fixed all of the remaining materials whose shaders were broken when upgrading to the universal render pipeline.
-- in the map editor, you can now click the battlefield while in the Edit Light Properties window to reposition point lights.
-- gave artist feedback to Ryan Richko on the new, in-progress festival theme.
-- gave artist feedback to Georgi Minkov on portrait hue-shifting masks.
-- gave artist feedback to Georgi Minkov on generic portraits and hue-shifting masks.
-- received the new generic portrait assets.
-- gave artist feedback to Georgi Minkov on hue-shifting masks.
-- incorporated the new generic unit portrait assets into the game.
-- got army color palette-swapping working on character clothing in portraits! Player characters are now garbed in blue and enemies are now garbed in red (rather than the default violet). :D
-- spent days getting the hue-tinting shader to work correctly in all possible cases, especially for skin tone across 6 different species. (This is much harder than it sounds due to the fact that shaders don't support branching logic). Well, it's finally working--and playing nice with portraits that don't support hue-shifting to boot! :D
-- expanded the number of human skin tones from 5 to 7.
-- fixed a few greeting responses that used the wrong gender referent.
Collected a bunch of artist feedback on small technical issues as I...
-- got hue-shifting for non-human, non-lissit portraits working!
-- fixed: hue-shifting for portraits wasn't working in the campaign editor suite.
-- wrote a new plot event for Together in Battle helping to establish the existence of a conspiracy against the crown.
-- fixed some stray marks in the proc gen bronze golem body.
-- fixed: the game was supplying the wrong mask for unique character portrait mouths, making it look like everyone was wearing black lipstick.
-- fixed: it would crash the game if you loaded a custom campaign without a Maps subfolder.
-- fixed: I had commented out the pixel art palette-swap code to avoid accidental editing, but then forgot to...un-comment it. :o
-- wrote about a dozen unique variants on the "where am I from" background conversation for proc gen characters getting more into the nitty-gritty of what different in-world places are like.
-- reconfigured the relationship stats attending various camp conversations to make more sense and to cut down on repetition.
-- fixed: the game could freeze under certain circumstances when more than one dialogue was triggered at the same time in battle.
-- fixed: portraits had gone out of alignment within deployment tiles.
-- units now visibly step out of the way when dodging attacks.
-- units now visibly stagger backwards when struck by attacks.
-- new parameters for the DamageChar and DamageCharAt actions: direction. This causes the affected unit to visibly stagger in that direction when damaged.
-- created masks for human, lissit, spriggat, and shadowling neckwear, hair accessories, scars, moles, beards, and tattoos; got hue-shifting working for them all.
-- fixed scaling and positioning data for the male human bandana.
-- fixed a layering issue with human male hair 7.
-- fixed eyebrows and mustaches showing up might too bright with some human hair colors.
-- fixed some unwanted hue-shifting going on with certain unique portraits and neckwear.
-- fallen soldier objects are now automatically palette-swapped to match whatever army they're set to.
-- fixed a long-standing issue with flyer elevation when moving from a hazard tile onto land.
-- fixed: it was possible for destructible objects to be (uselessly) affected by New Turn status.
-- fixed: bonus damage (e.g. from poisoned or burning weapons) wasn't getting included in the damage preview of skill tooltips.
-- each character now visibly approaches via portrait animation when delivering an "approach" line.
-- improved the "cooking reaction" dialogue.
-- improved the game's behavior handling reports coming up mid-dialogue.
-- fixed scripting for "Plot Event 0."
-- fixed a graphical glitch that was causing gray-haired characters to shift hair colors after more than one line of dialogue.
-- when building a bridge over a water, lava, or chasm tile, the game now sticks extra cosmetic bridge objects on adjacent land tiles to visibly connect the bridge to the land.
-- wrote a new Loyal defeat line.
-- took out the hit stagger animations; they just didn't look right with Unity's auto-smoothing.
-- improved the dodge animations.
-- fixed: it was possible to skip over script actions on hold via a Wait action by simply progressing to the next branch before they executed.
-- the game now supports Shield skills that damage the target. (They require a negative strength damage factor or psy damage factor.)
-- new skill: Adrenaline. Gives the target Move Bonus status until the end of the turn, but deals them 1/3rd of the user's Psy in damage.
-- added Adrenaline to the skill progression for mentalists, with a 33% chance of it appearing in lieu of Stimulate or Clarify.
-- got the bandit fortress entrance working in the Vengeance of Emma Strider campaign!
-- fixed: using skills during exploration mode would still give experience, allowing players to easily level up infinitely using zero-energy abilities like Shove/Pull/etc.
-- fixed: the character creator had ceased to save head information correctly in character portraits due to changes in how that information was formatted elsewhere in the game.
-- clicking on a character you can talk to in exploration mode will now automatically trigger dialogue after the selected character moves over to them.
-- added support for the Use Once trigger type.
-- wrote documentation for the unit trigger types Use, Use Once, and Pressure.
-- fixed: the OnDoor dialogue trigger wasn't completely implemented.
-- fixed: triggering a Use or Use Once trigger would "end the character's turn" in exploration mode.
-- fixed: it was possible for the RemoveUnitAt script action to produce a null error if the correct coordinates weren't specified.
-- got the bandit fortress barracks working in the Vengeance of Emma Strider campaign.
-- got the Meeting Teresa and Phoebe cut scene working in the Vengeance of Emma Strider campaign.
-- fixed: AddSpeakerPortrait and the talk symbol weren't attaching to the correct generic enemy characters during dialogue triggered based on script ID.
-- got the bandit fortress second floor working in the Vengeance of Emma Strider campaign.
-- new condition: Bar Skills. Bars the use of character skills in a map. Parameters are simply exceptions to the bar, which characters may use. (This is intended for use in exploration maps, but may be used in battles as well.)
-- when mousing over units in exploration maps, the cursor now changes to a Talk bubble if the selected character can talk to that unit.
-- when mousing over units in exploration maps, the cursor now changes to an Inspect symbol if the unit has a Use or Use Once trigger.
-- when clicking an object with a Use or Use Once trigger in exploration mode, the character will now move to the object and automatically attempt to use it.
-- when clicking a door in exploration mode, the character will now move to the door and automatically attempt to open/close it.
-- when mousing over doors in exploration mode, the cursor now changes to an Inspect symbol.
-- fixed: the game would display mouseover tooltips on characters if you moused over them during scripted movement within active dialogue.
-- the game now supports stairs!
-- added Wood Stairs and Castle Stairs destructible objects into the game with 4 directions each.
-- all unit tags with an operation parameter now support multiple operations in sequence.
-- new tag: AdjustElev. Allows you to string together a series of operations affecting bridge elevation.
-- added documentation for the Elev tag into the game.
-- fixed: the game's movement logic was not taking bridge elevation into account when calculating moveable spaces for characters.
-- fixed: when mousing over a bridge in battle or in the map editor, the terrain inspector would show the elevation of the tile below the bridge rather than the elevation of the bridge itself.
-- fixed: sound loops from testing a map would continue playing upon exiting to the map editor.
-- fixed: the game would refuse to spawn bridges on the same tile as a wall or a barricade if those objects spawned first.
-- fixed: the game was ignoring bridges for purposes of determining elevation on various spots for attacking.
-- finished updating the scripting and adding in the new stair objects to the bandit fortress entrance and bandit fortress second floor in the Vengeance of Emma Strider campaign.
-- got the bandit fortress basement and Fera's room working in the Vengeance of Emma Strider campaign.
-- wrote new dialogue for the bandit fortress.
-- the game now auto-selects the first character on the player's army upon loading a scene in exploration mode so you don't have to click someone to get started exploring.
-- new proc gen armor property: Cushioned. Basically a better version of Padded, it offers +30 Crush resistance.
-- started working on integrating the Fencer sprites into the game.
-- fixed: the new click-to-move-and-interact logic was preventing the player from moving onto item sacks or other spaces containing objects with an "All" passability.
-- fixed: click-to-interact wasn't working with objects directly adjacent to the selected character in exploration mode.
-- fixed: the game was allowing destructible objects to initiate dialogue with adjacent characters under certain circumstances. ;D
-- fixed: the game was skipping certain steps when initiating dialogue bootstrapped from a script via the LoadConv action in battle (such as hiding the Actions Menu and unhiding the dialogue portraits layer).
-- fixed: a couple of edge-case situations could cause move tile arrows or step symbols to remain displayed even after they'd been moused off of.
-- fixed: the GiveItem script action would always equip the given item regardless of the parameters used, even if it was an item that could not be equipped (such as a consumable)
-- increased the default unit move speed by 25%.
-- created (and made pixel art for) new item: Key Ring. A key with 5 uses.
-- added some missing enemy masteries in the Vengeance of Emma Strider campaign.
-- fixed up a bunch of scripting in the bandit fortress basement.
-- tweaked the self-lighting values on various destructible objects.
-- added facial expressions to the Vengeance of Emma Strider death monologues.
-- fixed: the game was playing the weapon break sound effect and giving the weapon break pop-up when using a key to unlock a door.
-- fixed: the game was playing sound effects when setting up door Locked/Unlocked/Closed/Open status during OnLoaded actions, resulting in a flurry of weird sound effects when first entering a scene with such actions applied to doors.
-- fixed: the game wasn't referring to the number of participants in a line when deciding whether to show a second character portrait.
-- fixed: the game wasn't recognizing the human player as having lost after an enemy army won via the Defeat Army condition.
-- fixed: the game would still treat a skill as having been selected for attacking after undoing or deselecting the unit.
-- fixed: typos in Emma Strider's death monologue.
-- fixed: upon switching to exploration mode during battle when all characters had acted, the game would still ask you to automatically end the turn...and lock up the game if you didn't select yes.
-- fixed: upon opening or closing a door, the move tiles would not automatically update.
-- got the Bandit Fortress Entrance Battle working in the Vengeance of Emma Strider campaign.
-- remade the Out of Food Battle as a normal, non-proc-gen fight.
-- when mousing over a door, the game now displays whether it is Closed, Locked, or Open in the tooltip.
-- created a couple of new modules for golems: Rubber Gasket (+4 to max energy) and Solar Module (regain +1 energy every turn).
-- added two new proc gen shield modifiers: Rounded and Convex, each of which increase Slash and Pierce resistance for the user at the cost of some bonus health.
-- added two new proc gen main gauches: Sharp and Deadly, each of which increase Strength for the user.
-- did a bit more balancing on the bandit fortress sequence: the prison guard now always has the same stats, and the player can find a Convex Shield in Fera's room to help with the fight in case Emma is underleveled.
-- fixed: in battle, the Recover condition was being applied before deployment, only to characters already on the battlefield.
-- fixed: the game was showing stats modified by +0 in item tooltips, taking up spots needed to display stats actually affected by the equipment.
-- fixed: the game wasn't pulling an army's "using roster" value for deployment, and was instead looking to a (now deprecated) parameter within the Deployment condition itself.
-- fixed: the game wasn't pulling an army's "using roster" value for the reserve supplies screen during deployment in battle, and was instead looking to a (now deprecated) parameter within the Deployment condition itself.
-- fixed a typo in the experience gain pop-up from using battle primers.
-- fixed: if a character leveled up after a turn-ending attack and the battle then switched to exploration mode, that character would remain grayed-out and unusable.
-- fixed: the game was improperly treating the penalties of low morale in damage calculations as a bonus instead.
-- fixed: most of the "ModDmg" tags granted by weapons were not applied to particular skills, causing the engine to not recognize them when calculating final damage.
-- fixed: the Range tag and most of the "ModDmg" tags were not coded so as to apply to the skills dependent upon the base skill named in the tag.
-- the game now saves objective reticles active on the battlefield during mid-battle saves; it now reloads them upon loading a mid-battle save.
-- spent time further improving the game's AI.
-- implemented the Attack Bridges condition.
-- improved the scripting on the Bandit Fortress Outer Wall Battle.
-- the AI now plays nice with a friendly unit receiving a New Turn (e.g. from Motivate) during an AI-controlled turn.
-- fixed: the AI would score skill status effects without regard to whether the target was immune to those status effects.
-- fixed: the AI would score New Turn-granting skills like Motivate highly even for units whose turn had not yet ended.
-- fixed: the algorithm for weighing the danger of various spaces in the AI was including allies in the pool of potentially dangerous units.
-- fixed: the WinBattle/EndBattle/LoseBattle reply types wouldn't actually end the battle because the game would detect an active conversation.
-- got the Battle with Gulch working in the Vengeance of Emma Strider campaign.
-- added new light animation type: Pulse. Causes the light to softly grow and shrink (as opposed to the more erratic, open-flame like animation pattern of Flicker).
-- the army overview screen now displays a tooltip when mousing over Wounded characters.
-- further AI fixes and improvements.
-- added new script action: ReturnToShop. Reopens the shop interface without re-randomizing the inventory.
-- added an opportunity to return to the shop before leaving Agarwal's in the Telepath Tourney campaign.
-- in the first shop scene in in the Vengeance of Emma Strider campaign, added an extra warning that it may be some time before the player gets to shop again; the player is given a second chance to peruse Goniff's wares before leaving.
-- incorporated updated masks for lissit bodies, spirit eyes, human eyes, and human mouths into the game.
-- incorporated updated assets for proc gen shadowling eyes into the game.
-- did some more work on the new Out of Food Battle, adding tags, adjusting positioning, and adding enemy reinforcements.
-- added support for multiple pages worth of characters in the deployment and reserve supplies screens. (Previously, these were capped at 18 characters apiece.)
-- the game now automatically sorts characters in the deployment screen to ensure that characters who must be deployed are listed first.
-- new tag: Pursue. This causes the tagged unit to automatically remove any Passive tag it might possess upon attacking or being attacked (and to do the same for any other units in its AggroGroup, if any).
-- incorporated the last of the proc gen and generic portrait fixes. Work on Telepath Tactics unique portraits has begun!
-- fixed: the AggroGroup tag would only trigger on certain turns.
-- fixed: the game would sometimes select the wrong skill for determining maximum and minimum range when displaying enemy danger tiles.
-- did some more balancing and tweaking on the remade Out of Food Battle; it is now complete!
-- the OnGrab dialogue trigger now sets an integer _NumGrabbed equal to the number of the named item that was grabbed within the sack. (This lets you track if/when a player grabs more than 1 of an item within a single item sack.)
-- added Cave Stairs and Limestone Stairs destructible objects into the game with 4 directions each.
-- the terrain inspector now says Bridge when mousing over a tile covered by bridge.
-- fixed up the scripting on the Merchant 2 scene; finished adding it to the Vengeance of Emma Strider campaign.
-- created portrait data for Goniff Bastid's new art.
-- fixed up some of the terrain in Battle with Cloch.
-- fixed: the game would let you build a bridge on a space already occupied by a bridge tile.
-- fixed some buggy highlighting behaviors in the deployment screen.
-- added Caduceus and Shadowheart sprites into the game.
-- began the process of adding Mantis Knight sprites into the game.
-- new script action: AggroGroup. Manually triggers aggression in characters tagged as being in the specified AggroGroup. One parameter: AggroGroup Number.
-- added support for the info bar to battle scenes.
-- ShowInfoBar and HideInfoBar now work in battle.
-- optimized fog of war tiles for better performance; replaced the particle effects with a shader that makes the tiles sway and distort, using up way fewer resources.
-- optimized fog of war tile placement and removal logic to minimize the number of Instantiate and Destroy calls, massively boosting performance when updating the fog of war.
-- the player can now click and drag fog of war tiles to pan the camera.
-- fixed: fog of war had somehow ceased to work at some point over the preceding months.
-- fixed: fog of war wasn't loading upon loading of a mid-battle save.
-- fixed: fog of war tiles would partially sink into 0-elevation hazard tiles, revealing the presence of those tiles.
-- fixed: I had somehow neglected to give Silithis Predat the mastery required to use Fangiss Ka. ;D
-- finished up the updated scripting for and finalized more cut scenes for The Vengeance of Emma Strider.
-- fixed up scripting on the Battle with Gulch, which I've renamed to Moonless Hunt. It is now complete.
-- fixed: fog of war tiles would display over the top of the new turn box.
-- in the Vengeance of Emma Strider campaign, a variable number of proc gen recruits now show up to join the player if their force is too small after winning the Caravan Battle (and further supplemented if the player fails to recruit Lakshmi and unlock her side mission, which provides its own recruits).
-- the computer will no longer rate skills that grant Focused, Lucid, or Clouded highly if the target possesses no Psy-based skills.
-- the computer will no longer rate skills that grant Strengthened or Weakened highly if the target possesses no Strength-based skills.
-- the computer will no longer rate skills that grant Levitating highly if the target already has a flying move type; and it will no longer rate skills that grant Heavy highly if the target is not flying.
-- the computer will no longer rate skills that grant Distracted highly if the target does not have counterattacks or reflexes remaining.
-- properly centered the dialogue window in battle.
-- fixed: it wasn't displaying a "used such-and-such" pop-up when enemies used items in battle.
-- fixed: it wasn't playing item sound effects when enemies used items in battle.
-- fixed: the tags parameter in GenerateUnique was not working.
-- fixed: materials and quality parameters for generating unit inventory with GenerateUnique were not working if the unit was generated outside of battle.
-- fixed: the way the game was calculating time passing while executing script actions was inaccurate, resulting in appropriate detection of infinite loops with large numbers of actions that did not take much real-world time. Reduced the "infinite loop suspected" cut-off time to 12 real-world seconds.
-- fixed: the game's dialogue and scripting engine was not able to reference units generated during the course of the same dialogue tree.
-- fixed: the reserve supplies screen would still close if you clicked anywhere on the background.
-- fixed: returning to a shop within a given scene would not update its internal version of characters and reserve supplies.
-- fixed: the game would not flag a cut scene as "shopping" when returning to a shop, resulting in purchased items not appearing in the reserve supplies screen.
-- fixed composition and placement of reserve supplies character tooltips.
-- fixed: the map editor wasn't pulling from army info when determining the color of units shown in each army.
-- got the Flashback 1 cut scene working in the Vengeance of Emma Strider campaign.
-- got the Hills of Coria battle working in the Vengeance of Emma Strider campaign.
-- portrait movement now only triggers the "walk" animation if the portrait moves horizontally.
-- new optional parameter added to MovePortrait: glide. Can be true or false; if set to true, it disables the walk bob animation while the portrait moves.
-- bridges are now always built at the elevation of the builder, regardless of the elevation of the terrain below.
-- in single player maps, the game now recognizes the death of a Human-controlled army as a player defeat even if it doesn't technically trigger victory conditions for any of the enemy armies (e.g. if there are multiple armies left, each hostile to one another, and none have a Defeat Army condition for the player's army).
-- the map editor now has a check box in Map Settings that lets you mark the map as multiplayer.
-- fixed: the game would not recognize Protect Char conditions for units who were neither spawned on the battlefield from the start nor queued up as reinforcements (i.e. for characters placed via deployment).
-- fixed: morale loss and morale gain were turned on for The Vengeance of Emma Strider maps.
-- the map editor now has map settings fields for Victory Morale and Loss Morale; these are populated when a map loads and their contents are properly saved with the map when it is saved.
-- if the player deletes Introduction in the campaign editor, clicking it now automatically opens up the cut scene editor with a new, blank Introduction.
-- fixed: Next Scene icons had somehow gotten disconnected from their parent slots in Unity.
-- spent more time balancing AI values and tweaking enemy behavior to keep enemies from looting chests and other things that are supposed to be reserved for the player. The AI now ignores chests and objects with items inside unless set to either Arena or Greedy AI profiles.
-- did a bit of balancing on Hills of Coria to make falling into the water later on in the map less of a death sentence.
-- you can now click cliff faces to initiate camera pan dragging.
-- filled out the skill progression for certain Telepath Tactics characters will fewer skills.
-- fixed: Swim had ceased functioning.
-- fixed: under certain circumstances, characters could suffer damage from environmental hazards twice when their turn came at the end of a round.
-- fixed: the game was making Extinguished, Thawed, Unslowed and Unblinded not take effect 50% of the time.
-- fixed: character portraits were using the wrong lookup table for army color palettes.
Telepath Tactics unique character portraits are starting to come in from Georgi Minkov! Gave him feedback on a set of 5 characters.
-- got the Flashback 2 cut scene working in the Vengeance of Emma Strider campaign.
-- began getting Coria Bridge Battle working as intended.
-- boosted the volume of the music track "Enslaved," which was decidedly too quiet relative to the game's other music.
-- improved healer AI to get them to stay within move-and-heal range of allies.
-- when move or attack tiles are onscreen, right-clicking a bridge is now treated as a "cancel" right-click rather than opening the character screen.
-- fixed: the game would stop all ambient sound loops any time a shadowling finished moving because they had no move sound and stopLoop() run with a blank string is a signal to stop all loops.
-- fixed: clicking a character in the deployment screen and then clicking on a second character would leave the first character tinted green if that character had already been deployed.
-- fixed: the AI was starting its turn before the turn box vanished offscreen.
-- fixed: bridge tiles would show mouseover info when mousing over a move tile on their space (which would often obscure more important information).
-- fixed: it was possible under rare circumstances to get a null error when left-clicking an enemy to show their move and attack range.
-- got the scripted event where an enemy engineer places explosive charges in the Coria Bridge Battle map working!
-- added IfPathClearRun to the game. Battle only; this checks to see if the named character has a clear path to a specified set of coordinates. If so (or if Reverse Match is set to true), the specified script(s) is(are) run. Parameters: Character Name, Y Coordinate, X Coordinate, Script Name, and Reverse Match (true or false -- optional).
-- you can now designate -ANY- as the character for IfInAreaRun and IfInAreaGoTo.
-- when spawning a new unit via a script in the middle of an AI turn, the AI now adds the unit to its list of potential targets.
-- fixed: some of the code governing the operation of a TargetPreference tag in AI could lead to the game freezing.
-- updated the scripting governing timing of pop-ups and morale bars during events in Together in Battle.
-- golem portraits are now displayed 15% larger in dialogue to give a more accurate sense of scale.
-- fixed: camp dialogue was creating a duplicate of the second character's portrait on branch 1.
-- fixed: infinite loop detection wasn't accounting for the game's various Wait actions. It now resets to zero whenever a Wait-style action is executed.
-- doubled the camera zoom-in speed when an attack is initiated; cut the delay before initiating the skill animation by more than half when combat camera zoom is enabled.
-- adjusted some more of the Coria Bridge Battle scripting.
-- attack tiles for building bridges now always appear at the builder's own elevation.
-- new tag type: MoveFirst. During its turn, the AI will always move all characters tagged MoveFirst before moving its remaining characters.
-- finally finished getting the Coria Bridge Battle working in the Vengeance of Emma Strider campaign.
-- fixed: the game would process environmental and status effect damage at the same time as triggered OnTurn dialogue.
-- fixed: the game was spawning flyers too high above water due to some holdover code I forgot to nix.
-- remade Red's portrait using the new proc gen portrait assets.
-- improved some of the scripting in the Training and Zash and Red battles.
-- fixed: the game would not re-highlight the selected character upon conclusion of a non-turn-ending attack.
-- fixed: Unity had broken a component in cut scenes that was required for the NewRoster level tag to work.
-- fixed: loading up premade characters in the character editor could produce a null error if the character had no inventory defined.
-- fixed: the game would treat combat barks as available if the character had completely blank atkBarks, vicBarks, etc. attributes contained in PreMadeUnits.xml.
-- got the Coria cut scene working in the Vengeance of Emma Strider campaign!
-- added Photokurios sprites into the game.
-- added new parameter to MoveCam script action: Speed. (By default, this is 1.0.)
-- added sound effect when changing browsing categories in the shop interface.
-- wrote some more attack barks for Jokester characters. :D
-- fixed: the dialogue menu would still accept inputs while characters were moving around onscreen.
-- fixed: talk symbols produced by the AssignSpeaker action would disappear and not reappear again after scripting character movement during dialogue.
-- fixed: it would play the "clicked move tile" sound effect when doing scripted movement during dialogue.
-- got the Merchant 3 cut scene working in the Vengeance of Emma Strider campaign.
-- finished adding Fencer and Mantis Knight sprites into the game.
-- added Bowmaster sprites into the game.
-- added Mindjacker sprites into the game.
-- barks for premade characters now support facial expressions.
-- documentation for adding facial expressions to barks added to character creator.
-- added facial expressions to every victory bark within the Telepath Tactics cast.
-- if an army has no characters available for that player to control, the game now skips directly over that army's turn without displaying the new turn box.
-- if a character is on top of an item sack, mousing over them now displays the items in the sack at the bottom of the character tooltip.
Experimented with some changes to make maps with extreme elevation differences more playable:
-- tilted the camera an extra 10 degrees closer towards an overhead view; this allows a 0-elevation space to still be visible (and selectable!) behind 3-elevation terrain. This had a bunch of really annoying knock-on effects throughout the engine that I spent hours addressing, but I seem to have gotten it all sorted out now...fingers crossed.
-- mousing over a cliff face now treats the selector as though it were over the space directly below it.
-- fixed: the idle "breathing" animation somehow got removed from the character animation controller.
-- fixed: the game was not serializing and deserializing army AI profile information correctly during mid-battle saves.
-- added army AI profiles to each of the battles currently in Together in Battle.
-- added a light animation selector to the Light Properties window in the map editor. Lights can now be designated Static, Flicker, or Pulse.
-- created separate visual effects for the level 1 and level 2 breath attacks to match their respective attacks' range.
-- fixed a ton of skill visual effects that no longer aligned correctly after the Great Camera Tilting of Two Days Ago.
-- fixed compression settings that were making a few of the visual effects look bad.
-- fixed an annoying behavior where the game would switch the active character after using a skill in Exploration Mode with multiple characters under the player's control.
-- fixed: self-move attacks (like Charge) were still delaying the self-move by 1 additional second for combat zoom-in even though combat zoom-in had been cut by more than half, leading to incorrect timings.
-- fixed: skills affecting Max Health or Max Energy (e.g. Static Shield) did not correctly display the stat's icon in pop-up text.
-- fixed: Energy-draining attacks were rolling over into Health damage when taking Energy below 0 not just for characters, but for destructible objects as well.
-- fixed: it was possible for animating bars to produce an NaN error by starting with a scale determined through dividing by 0 when using Energy-reducing skills on targets with 0 energy.
-- fixed scripting in the Coria Dogs - Ground Floor battle in the Vengeance of Emma Strider campaign.
-- rewrote (and optimized) the code for determining where characters can target their attacks. In the process, fixed: ranged attacks could pass through walls under certain circumstances.
-- fixed: health bars were no longer displaying above 3D objects.
-- fixed: unit tooltips would display for units below the actions bar when mousing over the actions bar.
-- fixed: the status effect displayer for units could clip through walls behind the unit.
-- the game now pans the camera to AI characters using an item before moving.
-- fixed: the game could freeze if the computer tried to score moves for an AI-controlled character with duplicates of the same skill.
-- fixed: non-flying units in liquid were not spawning down within the liquid.
Corresponded with Georgi about the new Telepath Tactics portraits, reached out to Egle Moskaite about doing new key art for the game. Meanwhile, on the dev front:
-- fixed alignment on Sword animations for the Fencer.
-- got the Coria Dogs - Ground Floor battle fully working in the Vengeance of Emma Strider campaign.
-- new script actions supported in-game: IfBlockedGoTo and IfBlockedRun. These check for the presence (or absence) of a character or impassable object blocking the specified space; if present (or Require Blockage is false), then go to a dialogue branch or run a script. Each starts with the same three parameters: Y Coordinate, X Coordinate, and Require Blockage (true or false).
-- wrote new character dialogue for the conclusion of the Coria Dogs - Basement battle.
-- got the Coria Dogs - Ground Floor battle fully working in the Vengeance of Emma Strider campaign.
-- got the Coria Tavern and The Next Morning cut scenes working in the Vengeance of Emma Strider campaign.
-- new golem module for Together in Battle: Pressure Sensor. Equips to the torso, grants the golem +2 to Counter Limit.
-- new item for all campaigns: Medicated Bandages. These restore up to 28 health and have 3 uses (versus 12 health and 2 uses for normal Bandages), but they are also more than 3 times as expensive. Intended to help counter-balance the new engine's limit on using items more than once per turn for late-game battles.
-- fixed: level-ups were triggering prior to the experience bar filling up following attacks with short animations.
-- fixed: the game wasn't deleting the 2D particle system's "reference" particle after animated experience bars cleared post-level-up.
-- fixed: the map editor would not let you place characters onto non-bridge objects while in Edit Unit mode.
-- fixed: the map editor would let units with coordinates off the edge of the map remain as part of the level, which would in turn produce a range error when loading the level in the main game.
-- fixed: the talk indicator could clip through walls when appearing on units in battle.
-- improved the scripting in the Battle with Ebon Raban in the Vengeance of Emma Strider campaign to make the fight more dynamic and tense. Enemy groups now coordinate to flank you; reinforcements keep the pressure up; and the main enemy force charges you much sooner. Added new treasure to various parts of the map to encourage tackling both routes at once and pushing through rather than turtling.
-- implemented the IgnoreArmy tag, made it affect AI behavior.
-- the AI now takes into account whether a target already has a status effect when scoring potential status effects granted by skills.
-- tagged Ebon Raban so he doesn't use Defensive Stance every turn.
-- got the Battle with Ebon Raban fully working in the Vengeance of Emma Strider campaign.
-- increased the camera pan speed during AI-initiated turns.
-- fixed: you couldn't reference units created by SpawnUnit actions within the same dialogue tree where they were created.
-- fixed: the game was formatting pop-up text with item usage inconsistently between player-controlled characters and AI-controlled characters.
-- fixed: a null error could occur when checking animated experience bars to see if they'd finished animating.
-- fixed: especially long skill animations could result in the game not triggering a level-up.
-- fixed: Shadow attack tooltips inaccurately listed the chance of Immobilized taking effect as 50% instead of 75%.
-- fixed: the game would sometimes initiate drag-panning upon clicking an enemy to show move-and-attack range.
-- fixed: the game would sometimes produce range errors after deleting rows or columns in the map editor.
-- got the Coria Harbor cut scene working in the Vengeance of Emma Strider campaign.
-- got the Emma and Harriet cut scene working in the Vengeance of Emma Strider campaign.
-- got the Silithis Stows Away cut scene working in the Vengeance of Emma Strider campaign.
-- added lines for Naila Hashmal and Edwin Gabbergast to the Coria Harbor cut scene to give them a bit more "screen time."
-- added a few short conversations with some of the villagers to the Battle with Ebon Raban.
-- got the Flashback 3 cut scene working in the Vengeance of Emma Strider campaign.
-- got the Emma and Sabrina 2 cut scene working in the Vengeance of Emma Strider campaign.
-- got the Emma and Silithis cut scene working in the Vengeance of Emma Strider campaign.
-- added Iron Claw and Steel Claw items to the game.
-- recreated the Beach sound loop from Telepath Tactics (which had gotten lost somehow).
-- added a toggle to the terrain generator letting the user select from among different generation logic archetypes when creating a map: Open (the default) and Dungeon.
-- fixed: an inappropriate mask was being applied to destructible object previews appearing in the character screen.
-- fixed: the game would detect false positives when checking for conversation-ending actions if custom variables contained the names of script actions that end a conversation somewhere within them (e.g. "NextScene").
-- fixed: specular highlights remained inappropriately set to "true" for certain cave cliff-face materials.
-- fixed: tooltips for the play button on audio tracks within the audio browser were not aligned quite right.
-- fixed: generating proc gen terrain within the map editor would cause any active global lighting or weather conditions to disappear.
-- fixed: upon loading a proc gen map in the map editor, the map editor would disregard the intended map size in favor of a default map size.
-- fixed: the character creator was not saving the unit sprite property correctly when creating a unique golem character.
-- the engine now correctly handles path checking for pull-type abilities with a knockback magnitude greater than 1. (Previously, if the puller's path was blocked, the puller would pull anyway and the pullee would dragged into them, dealing impact damage to both characters; now, the game treats the blocked pull path the same way as a blocked path for Charge or other ToTarget skills.)
-- new skills: Pull 2 and Stick-and-Drag 2.
-- Pull 2 can now appear in the skill progression in lieu of Preemptive Stance or Defiant Stance for Axefighters, Barudit, and Swordsmen.
-- Stick-and-Drag 2 can now appear in the skill progression in lieu of Preemptive Stance or Defiant Stance for Spearmen.
-- altered Spearmen's skill progression so they always get Stick-and-Drag, but now get either Pinning Thrust or Hold (but not both).
-- drag panning now cancels out any auto-panning that may be happening with the camera when initiated.
-- fixed: Mechanic Spriggats in The Vengeance of Emma Strider had the wrong sprite data.
-- fixed: a range error could occur when attempting to regenerate custom barks for premade characters.
-- fixed: adding new units to the battlefield would change the coloration of palette-swapped objects.
Gave artist feedback.
-- added a conversation between Sarn Kamina and Siripent; she can now recruit him in the Rescuing Sarn Kamina battle.
-- fixed some of the scripting in Rescuing Sarn Kamina.
-- added some more interesting loot to Rescuing Sarn Kamina.
-- got the Rescuing Sarn Kamina battle finished and working in the Vengeance of Emma Strider campaign.
-- got the Gratitude cut scene working in the Vengeance of Emma Strider campaign.
-- created a unique graphic for the Claws skill.
-- new weapon attribute: Pipe-breaking. Grants +10 damage against golems, but less durable.
-- improved the alignment and font size of the "no items in category" message in the shop interface.
-- fixed: Unity was blending the Dodge and Idle animations in a way that sometimes caused characters to clip through the ground.
-- rewrote the dodging code so that dodging and then checking for a counterattack are timed to the ordinary moment of an attack's impact.
-- all sound effects and "non-impact" visual effects now play during a dodged attack.
-- fixed: the game would make an error noise when shift-clicking an arrow in a number picker that would send the value beyond the amount permitted. Now it just constrains it to the permitted value range with a normal "click" sound.
-- fixed: the map editor had ceased to allow changing a character's army via the Edit Character Properties window.
-- got the Merchant 4 cut scene working in the Vengeance of Emma Strider campaign.
-- scaled the snowflakes in battlefield snowy weather effects to better match the original look of the effect in Telepath Tactics.
-- wrote new battlefield dialogue for Archos.
-- fixed: danger tiles for units with AOE skills were only taking into account the spaces the attack could be targeted at, not the spaces it could hit.
-- did some rebalancing on the Battle with Archos; frost spriggat reinforcements early on in the battle are now more spread out, and new events later in the battle put pressure on the player to wrap things up quickly.
-- reduced the damage done by Feedback for balance reasons, as it is no longer limited only to damaging based on damage received.
-- increased the damage done by Gravity Spike and Gravity Well since they are so situational.
-- fixed: the AI was not taking TargetPreference tags into account when making "long-range" moves.
-- fixed: the game wasn't correctly wiping out AI-controlled enemy armies that had lost their Protect Char unit, as it was leaving reinforcements intact (which in turn prevented proper detection of victory).
-- got the Battle with Archos fully working in the Vengeance of Emma Strider campaign.
-- added Arbalist sprites into the game.
-- fixed sprite alignment for Bronze Golem and Stone Golem rest poses.
-- improved the look of Blizzard weather effects in battle.
-- added howling wind and a blizzard to Clash at the Mines Entrance to add some extra drama to the fight.
-- changed the passability of all wooden barricades from Shoot Through to Flying. (It simply didn't make sense for assassins not to be able to Leap over them.)
-- fixed a bunch of scripting in Clash at the Mines Entrance, did a bit of rebalancing for the sake of pacing.
-- got the Clash at the Mines Entrance fully working in the Vengeance of Emma Strider campaign.
-- fixed: snow terrain particles were using the incorrect material.
-- fixed: killing a character with an attack dealing damage of multiple elements at once would trigger their OnDeath dialogue multiple times.
-- fixed: there were situations in which EndConvImmediately did not work properly.
-- added Megalith sprites into the game.
-- Sarn Kamina now grants the player a 20% discount at the final shop if Siripent has been recruited and is still alive.
-- changed the costs and sale price values for shops to percentage integers out of 100 (as opposed to decimal float values). Added support for custom values (e.g. -VAL:-) to the shop sub-editor within the cut scene editor.
-- the game can now update shop prices based on custom integer values changed within the same scene.
-- rebalanced the reinforcements in Battle with Cloch to make it less of a slog.
-- got the Battle with Cloch fully working in the Vengeance of Emma Strider campaign.
-- fixed: on AI turns where the game couldn't make any moves at all, it would skip right over the bit where it steps status effects and applies environmental damage to characters in the army.
-- fixed: generic shadowling portraits had broken.
-- fixed facial expressions in the death monologue response lines.
-- fixed: I had accidentally broken the code that lets OnTurn and BeforeTurn dialogue execute on multiple different turns by using a custom integer as the turn number.
-- fixed: characters in a defensive stance could block attacks even if being backstabbed.
-- got the Harriet Spots Malcolm cut scene working in the Vengeance of Emma Strider campaign.
-- got Battle with Malcolm working in the Vengeance of Emma Strider campaign.
-- got the Emma Reaches the Slave Quarters cut scene working in the Vengeance of Emma Strider campaign.
-- got the Tragic Reunion cut scene working in the Vengeance of Emma Strider campaign.
-- for balance reasons, updated Cryo Cross so it prevents counterattacks. (Otherwise, it had an unfortunate tendency to prove immediately fatal for the user due to all the melee counters it would draw!)
-- fixed: running WinBattle in dialogue mid-combat would cause the camera to remain zoomed in during the victory screen, since combat technically hadn't ended.
-- fixed: dialogue that began with character movement would pop up the dialogue screen, hide it a fraction of a second later, and then show it again after characters finished moving. Now, the dialogue screen remains hidden the whole time until character movement is completed.
-- added unique sprites for Tarion and Pathos to the game.
-- added Greater Red Spriggat sprites into the game.
-- when an enemy uses a skill, the game now speeds up auto-panning proportional to the distance the camera must travel. This ensures that an enemy move far away from the camera won't happen offscreen while the camera is still panning over to it.
-- added new in-battle conversations to the Battle with Tarion. (Among other things, Tarion now has a unique exchange with Sabrina and Harynx if attacked by either of them.)
-- added a Shredwing Axe to the Battle with Tarion.
-- fixed: camera zoom-in wouldn't quite capture 100% of the action for attacks occurring along the very left- or right-most spaces of the map.
-- fixed: Shadowporting a shadowling onto lava would result in them being placed too low, not accounting for their flyer movement.
-- did a bit of optimization work, turning off certain packages the game doesn't use and disabling Unity's built-in physics simulation.
-- new script action: PromoteUnit. The named character will immediately adopt an advanced class based on their current class--even if they are not at the minimum level normally required to promote to that class.
-- new item: Book of Power. Promotes the user immediately upon use. Requires Book of Power mastery to use, which all characters now automatically gain upon reaching level 10.
-- new item graphic variant: Book Black.
-- added three Books of Power to the Vengeance of Emma Strider campaign in challenging locations; one in the Bandit Fortress Outer Wall Battle, one in the Battle with Ebon Raban, and one in Clash at the Mines Entrance.
-- created a second promotion option for Emma and Sabrina: Liberator. Gives fewer stat bonuses overall than Champion, but provides +1 to maximum movement and takes 2 off the energy cost for Motivate, Inspire, Place Snare Trap and Place Iron Jaw Trap.
-- added some really neat little visual effects accompanying a character promotion in battle. :)
-- fixed: the game wasn't actually changing character sprites upon promotion.
-- fixed: the game was splitting damage popup text across two lines for amounts exceeding 99.
-- got the Battle with Gunther fully working in the Vengeance of Emma Strider campaign.
-- got Defending the Camp fully working in the Vengeance of Emma Strider campaign.
-- item buttons now create popups when the player tries to do something with them that isn't allowed, explaining why they can't do the thing. (For instance: if a character has already used an item or grabbed a sack that turn, attempting to use another consumable will produce pop-up text that says, "Already used or grabbed an item this turn!")
-- new popup text color supported: maroon. Essentially, it's red but at 45% lightness.
-- fixed: the "saved at time" text in save slots could overflow the bounds of the save slot on particularly long dates and times.
-- fixed a range error that could occur when undoing unit movement.
-- fixed up some remaining issues with the way destructible objects are visualized within the character screen.
-- the game now uses the correct sprite for both unpromoted and promoted shadowlings belonging to the various psy classes.
-- refactored the code that handles skill/mastery/proficiency acquisition at certain levels to make it more robust and less of a mess. (This meant rewriting a lot of code.)
-- massaged the experience formula. Big AOE skills no longer provide quite such massively disproportionate experience gains; skill cost now factors into experience gains only once regardless of the number of targets affected.
-- fixed: range-altering unit tags did not affect the range displayed in skill tooltips.
-- fixed the way negative damage values are displayed in targeting reticles.
-- fixed the way damage from shield skills are displayed in damage pop-ups.
-- fixed: the game was not calculating starting skills correctly for promoting characters, leading to them sometimes not receiving all of their intended bonuses right away.
-- fixed: right-clicking an unselected character and using an item would cause the game to highlight the new character without unhighlighting the previous selected character.
-- fixed: the game did not display experience out of 100 in mouseover tooltips for characters based on whether they were unique and human-controlled, but based on whether they were in army 0.
-- fixed a typo on one of the proc gen character expletives.
-- changed the Liberator advanced class for Emma and Sabrina; it now provides much lower stat bonuses, but gives +1 to maximum movement and turns Sword into a "Use Once" skill a la the rapier's Thrust.
-- finished up the promotion visual effects, timing the sprite change to match them and creating accompanying sound effects.
-- the game now tracks your total score for each battle you win.
-- the -SCORE- special character is now working. When used, the game displays the player's cumulative score across all battles won.
-- got the ending scene working in the Vengeance of Emma Strider campaign.
Gave composer feedback.
-- added Recurve Bows to the last two shops in the Vengeance of Emma Strider campaign.
-- got "scrolling text" cut scenes working in-engine.
-- got the end credits working in the Vengeance of Emma Strider campaign.
-- hand-designed a new version of Crypt Diving. It is now fully working in-game, which means that the Vengeance of Emma Strider campaign is now fully playable from start to finish! :D
-- enemy units now dynamically appear and disappear when making moves that take them out of (and into) fog of war.
-- fixed: the game would overwrite conditions added via the AddCondition action run in OnLoaded dialogue as it attempted to incorporate new variable values also set in OnLoaded dialogue.
-- fixed: characters covered by fog of war would freeze the game when trying to move.
-- added a fifth setting to text speed that makes it appear instantly without animating.
-- added Whisper sprites into the game.
-- fixed: max steps were not getting updated alongside changes to Speed via the SetStat action or class changes.
Gave Georgi artist feedback on a new batch of portraits.
-- made some improvements to the character promotion interface.
-- made it so Dazzle no longer ends the user's turn.
-- added Greater Dark Spriggat sprites into the game.
-- added Greater Frost Spriggat sprites into the game.
-- added corpses to the default list of premade destructible objects; made them movable.
-- fixed: Gunther would say dialogue when attacked over and over again in the Battle with Gunther in the Vengeance of Emma Strider campaign.
-- fixed: using LoadConv under certain circumstances would essentially freeze the game.
-- the game now tracks how many times a given skill is used on a given character over the course of a battle, as well as cumulative uses over the course of the game.
-- skills used on the same target over and over (or in the case of Create skills, used at all) now offer diminishing returns on experience: -12.5% with each successive use, meaning that the experience gained drops to 0 after 8 uses of the same skill on the same target. This helps prevent farming experience indefinitely by just repeating the same actions over and over.
-- increased the base experience for Create skills from 12 to 15 to help offset this effect for "creator"-type units.
-- standardized skill descriptions for skills with Unlimited, Use Once, and Can Move after-attack attributes.
-- fixed: characters got experience for using Shield skills on enemy characters.
-- fixed: the code to reset certain unit stats after battle was incorrectly written.
-- fixed a handful of scripting issues in the Rescuing Meridian battle.
-- fixed: slain caravan guards weren't getting palette-swapped in the Caravan Prelude scene.
-- fixed: the hotkey numbers on skill buttons in the Actions Bar blocked raycasts to the skill buttons underneath. (This means that if you moused over a hotkey number, the game would behave as though you'd moved the mouse cursor off of the skill button.)
-- fixed: auto-looting collected automatic items from loose item sacks into reserve supplies rather than triggering them. This meant that coins would appear in reserve supplies rather than being added to the player's money total.
-- fixed: the "close window" button for the Cut Scene editor's shop sub-editor's items window didn't have a function assigned.
-- fixed: the tooltip for the Door button in the Actions Menu had text overflowing the background.
-- added Cryokurios sprites into the game.
-- added Pyrokurios sprites into the game.
-- added Skiakurios sprites into the game.
-- added Puppetmaster sprites into the game.
Gave Georgi artist feedback on a new batch of portraits; spent some time creating a huge image with every unique character portrait in the game for reference (and marketing) purposes.
-- added Greater Golden Spriggat sprites into the game.
-- added Drake sprites into the game.
-- added Machinist sprites into the game.
-- updated the Engineerand Machinist's Wrench attack animation with a smear frame and an elongated wrench on the "hit" frame to make it feel more satisfying.
Only four more promoted class sprite sets left to integrate! :)
-- added Marauder sprites into the game.
-- added Sentinel sprites into the game.
-- added Specter sprites into the game.
-- added Titan sprites into the game. Annnnnnd that's the last of the promoted unit sprites! :)
-- updated Classes.xml so that promoted units now all use the correct sprites.
-- improved the AI's defensive facing algorithm.
-- when aggroing a group, the AI now reconsiders moves for characters in the AggroGroup it had previously skipped over due to a Passive tag.
-- fixed some of the scripting in the Rescuing Meridian battle.
Gave artist feedback.
-- fixed a bit more of the scripting in the Rescuing Meridian battle.
-- fixed: the formula for factoring in AI aggression when scoring attack damage was multiplying the target character's base value along with the damage factor.
-- fixed: when multiple dialogue trees were triggered from the same interaction and the first one contained the EndConvImmediately action, the game would fail to recognize that the second dialogue tree was still queued up to trigger.
-- fixed: the game would treat multiple instances of pop-up text spawned based on coordinates rather than being linked to a character as being themselves linked to a single, wholly non-existent character, resulting in them all appearing sequentially on the same space as the first pop-up.
-- made weapon degradation toggle-able using the new script action WeaponDurability. One parameter: true or false. If set to false, weapons will no longer lose uses or break when the player attacks with them.
-- added Talkable status to Sarn Kamina and Siripent in Rescuing Sarn Kamina, and to Doran Chamberlain in Battle with Archos. (The conversation with Naila remains deliberately hidden, however.)
-- fixed: the x axis on status effect sprites was flipped. (It took a while to notice this due to most status effect icons looking perfectly normal this way!)
-- fixed: under certain circumstances, Cavaliers could still charge at targets to which they had a blocked path.
-- fixed: the game was producing a prolonged pause between an attack's knockback and collision between the knocked-back target and whatever is behind it.
-- fixed: health bars and pop-up damage text were appearing at the point of collision when a character was shoved into someone or something rather than on the character's space. (This made it quite difficult to read what was happening when one character was shoved into another, as the pop-up text and health bars would overlap.)
-- improved the difficulty selection interface at the start of the Vengeance of Emma Strider campaign.
-- fixed a small, cosmetic scripting error in the post-Caravan Battle cut scene.
-- new parameter supported for the Death Rules condition: Max Health -1. A character who falls in battle will return, but with 1 less maximum health.
-- updated the scripting to ensure death rules are applied uniformly whether a character is premade or proc gen in the Vengeance of Emma Strider campaign.
Gave Georgi artist feedback on unique character portraits.
-- when a character gives another character an item they can equip during battle, the game now prompts you to have them auto-equip it. If you hit proceed, the character automatically equips the item they were given without you having to go into their inventory.
-- set 640 x 400 as the absolute bottom limit on selectable resolutions for the game.
-- fixed: it was possible for level geometry to clip through the new turn and victory windows if at a high enough elevation in the middle of the screen.
Gave Georgi artist feedback on unique character portraits.
-- cleaned up Axefighter animations.
-- fixed the Walk animation on all unpromoted spriggats.
-- added a third option for the Combat Zoom setting intermediate between On and Off: Attacks Only. This causes the game to zoom in only for skills that can deal damage, targeted at an enemy.
-- fixed: there were no "clicking" sound effects for text-picker UI elements.
Ran a public playtest for Telepath Tactics: Liberated Edition! Found a bunch of bugs and things to fix, but overall I'm quite happy with the state the game is in. :)
-- increased the number of character deployment slots for the Battle with Gunther (in case the player is using a lot of level 1 villagers and needs the extra manpower).
-- changed Meridian's class name to reflect the new naming conventions for spriggat classes.
-- changed Harynx's class name to Psy Healer.
-- Louise Legerdemain now starts out with Focus Pills in her inventory.
-- fixed: characters were not recovering health after the Defend the Camp battle.
-- fixed: characters could open and close doors across large elevation differences.
-- fixed: the game was freezing every time a character leveled up and it couldn't find promotion options for that character's class.
-- fixed: the game was not restoring character health under the Max Health -1 death rules, leading characters to spawn with 0 health.
-- fixed: the AddTextOverlay script action could mess up the game if its parameters were incorrectly formatted.
-- fixed: the game was not recognizing Blank tiles as walls, leading enemies to inappropriately shove characters into these spaces as though they were chasms.
-- greatly increased the speed on WASD and controller stick camera panning.
-- resolved jerkiness in WASD camera panning.
-- massively improved the responsiveness of WASD camera panning.
-- Throw Axe and Halberd no longer have an accuracy penalty.
-- fixed: entering exploration mode during an AI player's turn would lock up the game.
-- fixed: using an item in exploration mode would prevent the character from using other items in exploration mode.
-- fixed: characters could use the Talk command across large elevation differences.
-- fixed: characters could use the Use command across large elevation differences.
-- fixed: the game would bring back the "Give item to whom?" text overlay upon ending dialogue occurring after a Give action.
-- tweaked the way the level-up screen behaves when a character promotes.
-- fixed: the game wasn't dynamically adding or removing fog of war when maps used the AddCondition or RemoveCondition script actions.
-- fixed: Moonless Hunt was still trying to use the now-deprecated ChangeCondition script action to lift fog of war.
-- fixed a couple of typos in the inventory slots for enemies in Moonless Hunt.
-- fixed: rather than colliding, destructible objects could be knocked onto the same space as other destructible objects.
-- fixed: running a script action to rotate a character not present on the battlefield would result in the game throwing a null error.
-- fixed: hotkeys were not properly linked to the current page of character skills for units with more than 9 skills.
-- fixed: under certain circumstances, auto-connection bridges linking up to land would spawn at the wrong elevation.
-- fixed: when trying to Create an object on a space already containing an object, the game would use the reinforcement-spawning rules and create it on the closest free space. Instead, the game simply won't put anything down.
Marketing nonsense (created more portrait glow-up images); gave artist feedback to Georgi. Also:
-- created a distinct skill button for Timed Charges.
-- updated the "place trap" skill descriptions to indicate what each trap does.
-- fixed some scripting in Caravan Battle.
Gave artist feedback to Georgi.
-- received the bulk of the final unique portrait assets!
-- created portrait data for Gavrielle Hashmal, Farasat Hashmal, Louise Legerdemain, Madeleine Strongarm, Scarlet Etoile, Ambuur Sang, Harriet Glaive, Tremolo Phalanges, Phoebe Wittler, Teresa Dayo, Gunther Lathe, Gulch, Fera, Igor Bloodbeard, and Zash.
-- Lakshmi and Scarlet now give death monologues if they fall in the Caravan Battle even if the death rules are not set to permadeath.
-- fixed: the game was removing armies from its list of armies when an army was defeated, which caused it to mark the number of turns passed incorrectly. Instead, the game now marks a defeated army as defeated and skips it while keeping the turn count consistent between rounds.
-- fixed: upon leveling up after using a skill with a "Can Move" after-attack type, if the character gained a new skill the skill would be immediately usable.
Received the remaining unique portrait assets from Georgi!
-- tweaked text alignment on cut scene menu buttons.
-- moved the enemy reinforcements in Defending the Camp back one turn so the player has a chance to react to their appearance.
-- created portrait data for Silithis Predat, Des Serret, Hee'la, Silas Harrowbeak, Rebecca Flare, Zimmer Thrawn, Meridian, Harynx, Lord Dakarai, Vitalia Spring, Umber Gnawbone, Naila Hashmal, Edwin Gabbergast, Oliver Spenks, Sarn Kamina, and Siripent.
-- created portrait data for Sarn Kamina Hooded, Doran Chamberlain.
Gave artist feedback.
-- created portrait data for Tarion, Tarion Dark.
-- added a SkillPreference tag to Lakshmi in Caravan Battle to keep her from choosing suicidal Bayonet moves in the opening turns.
Gave artist feedback.
-- the Adelbrae Battle now gives a game over if any character dies, not just Emma or Sabrina.
-- created portrait data for Annel Stormhunter, Archos, Pathos, Medomai, Nikolai, Tarn Strider, Tarn Strider Sick, Samir Hashmal, Cloch, Dale Spenks, and Emma Child.
-- fixed: the game would check for a kill-all victory on maps even when exploration mode was turned on, resulting in a victory screen popping up upon entering empty rooms in exploration mode.
-- fixed: the game wasn't passing through species data on unique portraits for palette-swapping purposes.
-- fixed: when accessing the reserves supplies during deployment, the game was using the wrong army number when trying to determine the correct roster to use for the reserve supplies screen.
Running the second public playtest for Telepath Tactics: Liberated Edition!
-- gave Light Armor mastery to a bunch of enemy unit types that should be able to equip Leather Armor.
-- added Iron Spear to the weapons available at Merchant 2; added proc gen spears to all merchants after Merchant 1.
-- fixed: the Merchant 3 scene had an XML formatting error that prevented it from being loaded.
-- fixed some minor scripting issues with the Coria and Merchant 3 scenes.
-- fixed: Burning status on Timed Charges would end after only a single turn.
-- fixed a bunch of range errors that could occur with satchel charge explosion chains.
-- fixed: the game would mistakenly regard consumable items as equippable in some circumstances.
-- the 10-degree camera angle change resulted in MoveCam coordinates no longer looking correct in a bunch of scenes; fixed this for a handful of scenes.
-- there is now a toggle in the Options screen to switch the game into windowed mode.
-- reduced the value given to healers and heroes by the AI to make it less predictable in its targeting priorities.
-- fixed: the Talk button would remain lit up when OnTalk dialogue partners were next to each other even after they had exhausted their OnTalk dialogue.
-- fixed: you could undo moves after using the Give command in battle.
-- fixed: you could Give items to a character even if the recipient's inventory was full.
-- fixed: Fera was lacking masteries.
-- fixed an inaccuracy in the description for Deep Breath.
Spent a bunch of time diving into the math used for character promotions and class changes:
-- fixed: the "change class" algorithm was reversing stat-based operations but not reversing the order of those operations, resulting in some deeply wonky results for classes whose stats are subjected to multiple operations of different kinds (i.e. golems).
-- fixed: the "change class" algorithm was naively applying multiply/divide operations to the character's current base stats rather than to their starting stats. The game now tracks each character's starting stats and uses those instead when altering stat values for class changes.
-- fixed: the "change class" algorithm was reversing and reapplying stat modifications between classes even when those operations were identical in each class, sometimes leading to incorrect stat changes due to rounding errors.
-- fixed: when generating the new skill progression for a character changing classes, the game wasn't culling duplicate masteries or duplicate counterattacks.
-- fixed: when generating the new skill progression for a character changing classes, the game didn't recognize already-known skills within a branch; it would either choose the existing skill, creating a duplicate, or else choose the other skill and thereby allow the character to gain both skills in the branch.
-- fixed: the game wasn't giving characters a counterattack skill upon gaining Counter Limit above 0 during promotion.
-- fixed: the game wasn't displaying a counterattack in the promotion screen for promotions in which the Counter Limit increased above 0.
I'm back after a short vacation seeing family for Thanksgiving!
-- fixed: Meridian never learned Wing Armor Mastery (necessary to equip her with Wing Armor).
-- fixed: Teresa Dayo was missing Light Armor Mastery.
-- fixed: the five guardians and Malcolm Eichan were missing their masteries.
-- fixed: Vitalia Spring's crew had outdated portrait info.
-- fixed: the palette mask for Edwin Gabbergast's portrait was improperly formatted.
-- fixed: Oliver Spenks's portrait data for his glasses was wrong.
-- added a tutorial about opening doors and using switches to Rescuing Meridian.
-- added that same tutorial to Coria Dogs - Ground Level, with an auto-skip if the player saw it already from Rescuing Meridian.
-- updated the Talk tutorial in the Caravan Battle.
-- automatic-type items are now automatically used when grabbing an item sack even when grabbing all of the items in the sack would exceed the character's available inventory space.
-- fixed: trying to push/pull an item sack onto a character's space would fail and damage the character in the process.
-- fixed: lists within class info were being edited destructively, producing deeply weird results when culling duplicate operations during a promotion.
-- fixed: the mastery requirement for Meridian's Art Materials was incorrectly formatted.
-- fixed: the map to the mines could be traded off of Emma.
-- fixed: the map to the mines could be sold at a shop.
-- fixed: the Shadowheart's up-facing Rest sprite was missing.
-- new difficulty level added: Observer. It's the same as Recruit difficulty, but Emma and Sabrina are given Plot Armor that gives them Dodge and Mental Res. +100. :D
-- fixed: the game was replacing unique barks for premade units with generated barks when promoting those units.
-- fixed: a character that reached 0 maximum health under the Max Health -1 death rules would remain on the roster as though still alive. The game now treats such a character as truly dead.
-- fixed: the formula for panning the camera to focus on a named character during dialogue was off by about half a tile on the y axis.
-- fixed Leon Hart's portrait data.
Received revised portrait assets from Georgi!
-- added the Sabrina Child portrait to the game.
-- updated portrait data for Emma Child, Madeleine Strongarm, Annel Stormhunter, and Doran Chamberlain.
Received Malcolm Eichan portrait assets from Georgi.
-- added the Malcolm Eichan portrait to the game w/ updated portrait data.
-- at the end of Clash at the Mines Entrance, the game now checks to make sure Sarn Kamina is still alive. If she isn't, the Merchant 5 cut scene is now skipped.
-- fixed a couple of scripting errors in Clash at the Mines Entrance that prevented the map from being successfully completed.
-- fixed: the howling wind loop from Clash at the Mines Entrance wasn't getting stopped in the Merchant 5 cut scene.
Gave a few rounds of feedback on new Telepath Tactics key art Georgi's creating. :)
-- laid groundwork for campaigns to sport their own attached descriptions.
-- fixed: tooltips for unit buttons within the Reserve Supplies screen would become "stuck" when flipping between multiple pages of units.
Gave more feedback on the new Telepath Tactics key art.
-- fixed: Oliver Spenks was being "recruited" using an outdated map condition no longer supported by the engine.
-- fixed: the engine was treating Move Bonus as a non-stackable status effect.
-- boosted the amount of Strength/Psy that Gasul get upon promoting to make them more effective in their choice of specialization.
-- updated the Throw Axe skill description to reflect the fact that it now has 100% accuracy.
-- added a Psy component to the damage done by the Crossbowman's Piercing Bolt skill.
-- fixed: Gunther Lathe had no weapon equipped in Adelbrae Battle.
-- fixed: the turn time limit on Adelbrae Battle was slightly too strict to allow plundering of the lowermost chests on the map.
Gave feedback to Ryan Richko on a new Promotion theme that plays when a character promotes.
-- the Throw Knife skill now possesses the same backstab and sidestab bonuses as Knife.
-- new item added to the Vengeance of Emma Strider Campaign: Duoterre Throwing Knives, available in Merchant 4 and Merchant 5.
-- Duoterre Knife can now be plundered in Battle with Tarion.
-- added facial expressions to the player's dialogue with Fera.
-- fixed: in the Vengeance of Emma Strider Campaign, assassins did not gain Brittleknife Mastery upon promotion; crossbowmen did not gain Steam Crossbow Mastery; spearmen did not gain Brittlespear Mastery; etc.
-- AI improvement: enemies will no longer use pure status effect buff skills (e.g. Fury) on allies unless there is an enemy within 2 turns' worth of move-and-attack range of the buff's target.
-- fixed: the AI would consider it useful to reduce a target's Counter Limit by 1 via Distracted status even if the target did not have the counterattack skill necessary to counterattack with in the first place (e.g. if their weapon broke).
-- fixed: if a character gained more than 1 item past their inventory limit in battle via the GiveItem script action, it would cause an error that could softlock the game. (The game now successfully shunts all such excess items to reserve supplies.)
-- added half a dozen new sprites to the game's emoji table: Clarity, Clouded, Regenerating, Aptitude, MoraleLow, and Door.
-- removed Mental Resistance from Coria Dog Thug's potential growths.
-- reduced the damage on Vengeance to reflect the fact that it now always deals damage, unlimited by damage taken.
-- reassigned the default skill animation for Assassins from Stab to Ability.
-- fixed: a couple of enemy types in the Vengeance of Emma Strider Campaign had their class misidentified as "thief" (which doesn't exist as a class) instead of "Assassin."
-- fixed: the Assassin's Ability animation was displaying the army palette incorrectly.
-- reduced the damage on Feedback to 90% of Psy as a balancing move.
-- added mastery descriptions to weapons that require special masteries in the Vengeance of Emma Strider campaign.
-- replaced Guard Stance with Sprint in Naila's skill progression, as Guard Stance effectively duplicates Awareness.
-- fixed: blowing up a bridge above a chasm with a non-flying character standing on it would drop the character into the chasm, but the character wouldn't suffer "falling into a bottomless chasm" damage and would continue to live (albeit as an invisible shadow).
-- fixed: game was inaccurately describing the effect of Move Bonus as +50% max move when it is only +40%.
-- fixed: Caffeine Pills did not affect Immobilized status in the Vengeance of Emma Strider campaign.
-- fixed: the Wrench skill button was incorrectly sized.
-- fixed: Archos, Pathos, and Tarion were missing Orb masteries.
-- fixed: Whispers and Blackguards had Whisper as a promotion option, resulting in the promotion screen popping up whenever a character of that class leveled up.
-- fixed a typo in one of Sarn Kamina's victory barks.
Received new key art for the game; integrated it into the title screen! :D
-- fixed: when mousing over units covered by fog of war, the game would show a mouseover tooltip, display a health bar, and position the cursor over them.
-- fixed: you could left-click enemy characters covered by fog of war to display their threat range.
-- fixed: you could right-click units covered by fog of war to open the character screen.
-- fixed: Cloch's portrait mask was unformatted, preventing army-color palette swapping.
-- fixed: the reserve supplies screen allowed the player to give additional items to characters with full inventories.
Broke off the devlog into a separate thread here (https://sinisterdesign.net/forum/index.php?topic=3563.0) until Telepath Tactics Liberated is complete.
Gave Ryan feedback on new music for Together in Battle.
Switching back to TiB development for a bit to get a demo ready for Steam's upcoming roguelike and roguelite festival!
-- added the TiB demo to the game.
-- updated loads of out-of-date XML files so the demo would run correctly in-engine with its current feature set.
-- added a little team-size indicator to the Army Overview button in the recruitment interface.
-- fixed: the game was calling the incorrect method on calendar events to serialize them for saving.
-- fixed: reference to the "recruited" particle system in the recruitment interface had become lost somehow.
-- fixed: expletives incorporating the name of the character's chosen god were not processing the -GOD- special character when getting displayed onscreen.
-- added some basic difficulty options to the demo.
-- fixed: the proceed anyway button on the "insufficient recruits" warning in the recruitment menu was incorrectly formatted.
-- fixed: returning to the shop would not return the info bar to the screen.
-- fixed: the mechanic portrait would not reappear after finishing up shopping for golems.
-- fixed: tics and laugh phrases could end up displaying the wrong pronouns when used in a response line in camp.
-- fixed: the game would not process the approaching character's name when supplying a generic approach line for the character after failing to find a specific one.
-- fixed some issues with the Save Grandpa mission that cropped up due to changes to the game over the past year.
-- fixed: Hide was in the skill progression for both Blackguards and Whispers, rendering the Whisper promotion choice redundant.
-- created a Drowning Res. icon, added it to the game.
-- fixed outdated description for the Bad Joints trait.
-- fixed: the game was not parsing the -CLASS2- special character in dialogue.
-- fixed: certain response lines were using the wrong pronoun special character, causing the game to refer to the listener instead of the speaker.
-- tweaked the design of Battle at Grabber's Grove to open up more avenues for movement and make things a little more interesting for most players.
-- fixed: the game could choose a narrated "idle chatter" presentation for character conversation with characters who had never met before (for whom no such narration exists). This would result in the game displaying a placeholder narration a la "X and Y performed the activity Talk."
-- added some new physical traits to the game.
-- new tag added to the game: ModSkillKnockback. Modifies the knockback value of a skill (and those dependent upon it).
-- added a new proc gen weapon modifier: Colossal. Adds +1 knockback to skills of the type the weapon grants (and those dependent upon it).
-- fixed: certain response lines incorporating character-specific tic, laugh, or expletive phrases with pronouns could mistakenly use the listener's pronouns instead of the speaker's.
-- added new laugh types and edited some existing ones.
-- improved some proc gen character dialogue.
-- changed the way CompatibleUnitsToList works; by default, it now returns all characters compatible with the named character. Added a fifth, optional boolean parameter, "Must Be Mutual." Only if this parameter is set to true will the game account for whether the listed characters are themselves compatible with the named character.
-- added a new deity, The Giver.
-- "Shops Closed" events are now added to the calendar when Jigna gives you info on when they're closed.
-- the Schedule action now prevents adding duplicates of an event on a specific day by default. Added a fifth, optional boolean parameter, "Allow Duplicate Events." Only if this parameter is set to true will the game add another copy of an event to a given calendar day.
-- wrote more chital event dialogue.
-- added Burn as a "counterattack" to lit campfires, candelabras, braziers, and stoves; these objects now deal heat damage to characters who attack them in melee, or who are knocked into them.
-- updated the introduction with a proper difficulty selection menu.
-- it is now possible to toggle ironman mode on or off independently of the base difficulty setting.
-- saved games now display the selected difficulty.
-- fixed some typos.
-- more physical skills (e.g. Double Strike) now derive bonus damage from the attacker's Psy stat.
-- wrote a marriage proposal event!
-- new script action: RemoveCampActivity. Works the same way as LearnCampActivity, but removes the activity instead.
-- the game now correctly narrates character moods predicated on their interactions with another named character (e.g. "A is feeling upset with B").
-- fixed: outdated script action formatting was preventing random events from directly altering characters' familiarity, friendship, and romance levels with one another.
-- fixed: a formatting error was interfering with the correct functioning of event dialogue in which characters reacted to another character's cooking.
-- fixed: character-specific mood text was inappropriately carrying over to other characters' moods.
-- increased the weight given to dialogue generation based on character personality from 3x to 4x.
-- created a close-up tabletop texture.
-- fixed a few typos in the marriage proposal event.
-- updated the event scripting so characters who are engaged are now tagged "engaged" and won't propose to each other again later. An engaged character will now automatically refuse a marriage proposal from another character.
-- added marriage proposal to the random events that may be chosen after a certain point in the game.
-- boosted the maximum reflexes gainable through character leveling up from 1 to 4.
-- added a menu option for training to Kalkerapur...
-- fixed: the "babble" speech sounds were hooked up to the game's deterministic random number generator, rendering it possible to manipulate the random number generator by speeding up dialogue and thereby alter the events and dialogue variations at camp on a given evening.
Worked on creating a new trailer.
-- updated the tutorial to reflect the new supported "double-click to auto-move and attack" controls, and to communicate the ability to auto-move-and-attack with specific skills by clicking the skill and the target.
-- the game now weights camp activities based on whether another character is already performing them, making it less likely that you'll have everyone in camp doing the same thing each evening.
Worked on the proc gen battle algorithm!
-- the game now gives unnamed proc gen enemies names based on class and army name.
-- the game now places enemies in proc gen maps with much greater sensitivity to the pacing of these battles. Based on aggressiveness setting and how many enemies there are relative to the number of player characters, the game now places a certain proportion of enemies further away from the player spawns and automatically tags them with Passive, Pursue, and AggroGroup.
-- added an aggressiveness field to the proc gen map window in the map editor. The game now saves and loads the aggressiveness value range for each proc gen map.
-- added a fourth group of objects to the "Select Objects" portion of the proc gen map window in the map editor.
-- the game now serves up 100% proc gen arena league battles post-qualifier when the player opts out of tutorials.
-- balanced proc gen arena league battles for the correct difficulty.
-- nearly doubled the speed of the "fade out" animation for menus, making it much much harder to notice individual character portrait elements going transparent during the fade.
-- characters can no longer receive a wound level greater than 9.
-- began finally writing the Festival of the Ascendant Lights plot event.
-- created a Crowd Booing sound effect.
-- the game now actually plays a booing sound effect when you take too long in arena fights.
-- wrote a rough draft of the game credits.
-- removed Battle at Grabber's Grove (which simply wasn't as fun as the other early arena fights, in my opinion) and folded its tutorial on opening chests into Battle at the Oasis.
-- added a time limit to the league 1 qualifier battle.
-- added the booing sound to all demo fights as well.
-- added long grass to the proc gen arena battles.
-- the game can now generate distinct battle names for each instance of a proc gen battle, taking into account the most predominant tileset used in the map.
-- the game can now store scene names distinct from the file name of the current scene, and will default to displaying those player-facing names in the main game interface when they differ from the file name.
-- tweaked some of the AI's move-valuing formulas to further cut down on instances where the game thinks it's a good idea to have characters randomly attack bits of scenery.
-- fixed: the game was attaching TreatAsArmy tags to low-health destructible objects on proc gen battle maps.
-- fixed: the text overlay for the "double-click to auto-attack" tutorial was too long.
-- fixed: the game would delete the player's saved game after losing a battle in ironman mode even if the battle lost had a "defeat scene" specified.
-- made Battle at the Dry Mounds the last tutorial battle in the main campaign.
-- further increased the fade out speed of closed menus.
-- fixed inconsistent spelling of "maharaja" in some game events.
-- fixed MoveCam coordinates for the "grabbing item sacks" tutorial dialogue in Battle at the Oasis.
-- fixed: non-golem characters were able to get the physical traits Sturdy and Corroded.
-- fixed: the pessimistic practice camp activity narration had a variant that used "her" instead of the placeholder pronoun "hiser."
-- fixed: the game was overwriting generated map names upon reloading proc gen maps.
-- fixed: proc gen deployment barks broke during an upgrade to the character dialogue storage-and-retrieval system some months back.
-- removed a few Kind deployment lines that didn't fit the context of Arena battles.
Capturing footage for a new trailer! In the meantime:
-- fixed: levitating characters moving onto a fly-only object, then moving off of it after Levitate wore off would sink into the ground. Flying characters now display above fly-only objects when they move onto the same space as them, the same as non-flying characters.
-- fixed: an outdated version of a character name was showing up in a plot-related cut scene.
-- fixed: the game was detecting forced seeds on proc gen maps even where none were specified, forcing all such maps to generate using the same seed.
-- bumped up the knockback on Kinetic Gale to 3; created a new kineticist skill called Kinetic Wind with knockback 2 to replace it, and learned earlier on.
-- fixed: the proc gen map name function was producing null errors when used without a biome specified for the map name generation.
Got the new trailer up and released the demo for Steam Next Fest!
-- added 1 space of knockback to Trueshaft and slightly lowered damage.
-- added a specific sound effect that plays when small plants are destroyed.
-- added a specific sound effect that plays when objects made of stone are destroyed.
-- added a specific sound effect that plays when trees and objects made of wood are destroyed.
-- fixed: the game wasn't saving or loading unit-specific particle effect settings. (This wasn't a problem before, as they weren't being used for anything--but now they're used to determine which destructible objects should make the above sound upon being destroyed.)
-- fixed: bonus damage from colliding with a damaging object (e.g. Spiked Barricades) was not being applied when the character had been knocked back multiple spaces due to the game checking the wrong space for purposes of "counterattack" range.
-- fixed: Together in Battle was connecting to Steam as Telepath Tactics Liberated.
-- fixed: the game was creating cosmetic connectors on land tiles for bridges being built at elevations above the land.
-- laid some groundwork for an in-engine card-based minigame.
-- added a new Stone Golem skill: Hurl. It's basically Throw, but it goes 4 spaces and deals twice as much damage.
-- adjusted Stone Golem skill progression so they start with Shove at level 1 and gain Toss or Throw in the early levels following.
-- fixed: the tooltips for the item buttons for individual character inventories within the Reserve Supplies screen were formatted slightly differently than the tooltips for item buttons everywhere else in the game, causing them to not display the third line of text for longer item descriptions.
-- fixed: you could get a character to learn Book of Power Mastery very, very early via the "skill advice" event. The event now prevents Book of Power Mastery from appearing among the options for what the character should learn next.
-- came up with the names and core principles of the religions attached to the world's various deities.
-- religion is now a bio detail created when proc gen characters are generated.
-- improved the religious "practice" camp narration variations by adding in references to a character's specific god and religion.
-- wrote new religious "pray" camp narration variations for each specific religion.
-- differentiated the religious death monologues by character religion.
-- the game now makes a note of hometown size when generating background dialogue for characters.
-- added a new location characters can be from: Screwtown, the shantytown located outside the Psy Academy walls.
-- wrote more proc gen background dialogue variants.
-- wrote a new nicknaming dialogue variant for serious characters.
-- wrote a new "weapon warning" camp activity variant for vindictive characters.
-- wrote a new secret dialogue variant for kind characters.
-- wrote some new compulsive "cleaning" camp narration variations.
-- fixed a typo in one of the religious "practice" camp narration variations.
-- rewrote a rather awkward "like" line.
-- religious characters can now spend the evening searching for--and, once they find one, visiting--a temple to their deity in town. (Characters who worship deities native to Dese will have a much easier time finding a temple.)
-- added an "associated feeling" parameter to the NPCsToList action, allowing the game to narrow NPCs by whether a character associates happiness, sadness, or anger with them.
-- added an "associated feeling" parameter to the -NPC:X- special character, allowing the game to narrow NPCs by whether a character associates happiness, sadness, or anger with them.
-- the game can now take a character's relationships with members of their family into account when procedurally generating dialogue and barks.
-- proc gen character dialogue about their family background now changes based on how the character feels about the people who raised them.
-- substantially expanded the pool of proc gen character dialogue about family backgrounds.
-- finished up the basic set of family background dialogue variants.
-- changed the Avalanche prestige class for Stone Golems; instead of getting Charge, they now get to use Toss without ending the turn and get 50% off the energy cost of Throw.
-- adjusted spriggat portrait size to more accurately reflect their scale.
-- fixed: the game wasn't tracking league progress from beating proc gen arena battles, and wouldn't trigger related plot events.
-- fixed: sound loops from proc gen battles weren't being stopped upon return to camp.
-- removed the "howling wind" sound loop from storms during proc gen battles, as it was overly loud.
-- fixed: the game was no longer correctly referencing activity narration for the solo gambling camp activity.
-- fixed: elevated spaces in proc gen battlefields weren't having their flyer elevation set, resulting in flying characters and fly-only objects sinking into elevated terrain.
-- altered the very first proc gen arena battle to align with the organizer's dialogue (i.e. it's easier and you mostly fight engineers).
-- arena battles now start to scale in difficulty a bit the further along you get in a league.
-- fixed: fruit trees in proc gen arena battles weren't dropping fruit when destroyed.
-- began creating the Trainer cut scene.
-- the news ticker now differentiates between TTL and TiB.
-- split up some more of the "character dismissal" dialogue, as it was exceeding the available space in the dialogue window.
-- the second arena battle now always has the "weather" condition.
-- the game now offers a bit of narration when an arena battle features the "go first" condition.
-- tweaked the save slot formatting to better accommodate long scene names.
-- fixed: proc gen battle would sometimes display the wrong tile type adjacent to water, lava, or chasm tiles.
-- fixed: undoing a flyer's move off of a fly-only object would result in them being reset to the wrong elevation.
-- adjusted the numerical calculation for status effect icons in the character screen to more accurately match up with the rounds remaining.
-- designed card back and front graphics for a card-based minigame.
-- created "card draw" and "card play" sound effects.
-- designed 27 cards for the minigame.
-- programmed basic systems for importing card data and populating the player's hand with cards.
-- cards react to mouseover and being clicked.
More mini-game progress!
-- created basic UI for each player showing name, health, energy, and remaining cards in deck.
-- created a turn system; the AI player goes first 50% of the time. (Whoever goes second starts with more energy to make up for it.)
-- created a working Continue button that ends the player's turn when they're done with their actions.
-- added a text overlay announcing when the player turn changes.
-- cards can now be played from the player's hand.
-- there's now an animation for when cards are played from the player's hand.
-- cards which correspond to in-game skills now load that skill's button graphic as placeholder card art.
-- cards which directly affect a player's health, energy, or cards in their hand now do what they're supposed to do upon being played.
-- cards which place a unit now place a unit.
-- got the logic of attacking and blocking working. Attacks which are not intercepted damage the other player; those that are intercepted damage the intercepting minion, who then retaliates against the attacker if they survive.
-- cards intended to return to the deck after being played now do so.
-- created a very rudimentary AI for the mini-game for testing purposes.
-- cleaned up the 2D "sparkle" particle.
-- created minion objects to represent summoned minions.
-- minion objects now appear on the board when minions are summoned.
-- the game now prevents minions from being summoned if there are no lanes available for them.
More mini-game improvements! It's getting close to being fully playable at this point. Among the many improvements:
-- you can now target minions directly with cards.
-- cards that target all enemy minions now work as intended.
-- minions are now displayed as distinct character sprites which match their name, palette-swapped to match their player's color.
-- minions now move forward during an attack and then return to their line.
-- minions can now successfully switch lanes.
-- minions now disappear when killed.
-- damage to minions and players is now punctuated by little bursts of sparks.
-- you can now replace a minion when playing a new minion after all lanes are filled.
-- added new "hits first" and "can't attack" properties to some minions, as well as supporting effects triggered when a minion is intercepted during an attack.
-- minions now eachhave their own mouseover tooltips.
-- improved the mini-game AI.
-- it is now possible to actually win or lose!
-- the mini-game now has 37 different cards.
-- gave the mini-game a name I'm reasonably happy with: "Psy Clash."
-- got free targeting of enemy minions (as with bowman and crossbowman minions) working.
-- fixed a thing that was preventing the "draw more cards" card effect from working.
-- the game now saves proc gen battle battle names at the start of combat, meaning that the save slot won't display "RANDOM" prior to mid-battle saving anymore.
-- new script action: CardGame. Initiates a game of Psy Clash in a cut scene! Has 11 parameters, all optional: Win Conv ID, Loss Conv ID, Player Deck List Name, Opponent Name, Opponent Color, Opponent Health, Opponent Energy, Opponent Deck List Name, Opponent Portrait Name, Draw Per Turn, Energy Per Turn. (If Win Conv ID and Loss Conv ID aren't supplied with arguments, these will default to "Won Card Game" and "Lost Card Game".)
-- after a game of Psy Clash ends, the game successfully reverts to a different cut scene dialogue tree depending on whether the player won or lost.
-- added a branching activity to the Festival of the Ascendant Lights event in which the player is gifted a Psy Clash deck and gets to play for the first time!
-- cleaned up scripting for the Festival of the Ascendant Lights event.
-- your opponent's portrait's facial expression will now change depending on circumstances during the card minigame, and will adopt a grimace for a few seconds when taking damage.
-- opponent AI in the minigame can now target minions with direct-effect cards.
-- added sound effects to cards.
-- fixed a few remaining bugs in the card minigame.
-- created a new random event in which a fan mails the player a deck of Psy Clash cards as a gift.
-- created a new pair of events in which a character with the "card game" hobby challenges the player to a friendly game of Psy Clash.
-- added a sound effect marking the conclusion of a card minigame match.
-- added some new variations to proc gen names for proc gen battles.
-- fixed some formatting errors in the scripting for a few random events.
-- created a new random event. The player is asked to play Psy Clash on the street--but this time, there are stakes. The player can win money, lose money, win a card, or lose a card!
-- expanded the "card gift" event so that if the player already has a Psy Clash deck when it happens, they receive two random bonus cards instead.
-- added a bit to the Psy Clash AI so the computer knows when to use cards that affect all enemies (like Dark Vortex).
-- the Psy Clash AI now plays as many cards as it can each turn instead of just randomly picking one to play.
-- the Psy Clash AI now prioritizes playing cards which grant it extra energy as early as possible (provided that the AI player needs more energy).
-- the Psy Clash AI now prioritizes playing minion cards if it has no minions on the field.
-- the Psy Clash AI now uses its direct-damage minions to damage enemies at range instead of just attacking with them.
-- added "bow hit" sound effects to direct-damage attacks in Psy Clash.
-- fixed: free-targeters (like bowmen and crossbowmen) would still attack even if they'd done direct damage the same turn.
-- fixed: the game could trigger the victory function in Psy Clash multiple times, once with each attack that brought the enemy lower below 1 health.
-- added the new Card Draw and Card Play sound effects to the in-game list of asset names.
-- added a new optional parameter to RemoveFromList: stop after. This allows you to easily remove only the first X entries in a list that match a string.
-- fixed: using CombineLists when the first list was not already set would cause an error. (Now when this happens, the game auto-creates an empty list to serve as the first list.)
-- fixed: using CombineLists when the second+ list was not set would cause the game to not create the destination list at all. (Now when this happens, the game simply clones the first list to the destination.)
-- made the "Continue Turn" button context sensitive, changing its tooltip based on what phase came next and changing its sprite entirely when the next click will end the turn.
-- aligned the opponent's name right in the Psy Clash interface.
-- fixed: tooltips for the AI player's UI in Psy Clash were appearing offscreen.
-- fixed: playing more than one Psy Clash game in the same scene would cause issues, as the game would not fully reset upon starting a new match.
-- fixed: issued with code timing could lead to opponents playing the same card twice before discarding it.
-- fixed: the game wasn't accounting for minions with the "can't attack" property when deciding whether to initiate an an attack phase in Psy Clash.
-- fixed: the "lower card" animation could be triggered for cards that had already been played but hadn't fully vanished from the hand yet.
-- fixed: the card description for Mind Blast was splitting up the "-" and "1" in "-1"
-- fixed some outdated scripting in the Festival of the Ascendant Lights event.
A few final UI niceties for Psy Clash:
-- added little lane markers to the table to make it more obvious which lanes exist and where they are.
-- when mousing over the Continue Turn button, if attacking comes next, the game now displays little arrows to preview which minions will be attacking and in which lane.
Annnnd back to the main game proper!
-- created new units for a new plot battle.
-- added a dramatic character reaction to the buy-out event if the player trades them to another team.
This week has been very busy between an out-of-state wedding and work for the day job, but I slipped in a small graphical improvement to Psy Clash:
-- minion cards now display the particular minion they summon instead of a placeholder graphic.
-- broke out athlete and dancer into their own separate life skills. Athlete now gives the character the Muscular trait; dancers now learn the skill Twirl.
-- create a new skill: Twirl. Switches positions with an adjacent target character. Costs no energy and ends the turn when used.
-- the game can now generate unit data for character NPCs, allowing them to show up in cut scenes and battles!
-- new script action: GenerateUniqueFromNPC. This generates a unique character out of an existing character's NPC. If the character is a blood relative, the game will alter their portrait so they look plausibly related to the original character.
-- new NPC attribute: blood relative. Can be true or false, based on whether this character is related by blood.
-- added new parameter to AddNPC specifying whether the NPC is related to the character by blood.
-- added new parameter to NPCsToList allowing you to grab NPCs based on whether they are related to the character by blood.
-- began adapting default, generic villager portrait bodies for use with proc gen portraits.
-- began scripting a new event where a character's brother or sister unexpectedly shows up in camp.
-- new destructible object added to the game: Rug.
-- added a new attribute to units: hasShadow. Can be set to true or false (unless found and set to false, this defaults to true).
-- added a new attribute to units: laysFlat. Can be set to true or false (unless found and set to true, this defaults to false).
-- fixed some jankiness in the way Spike Trap objects are displayed; removed the shadow from them and set them to lay flat.
-- set certain other objects to lay flat, including floor buttons, rubble, snare traps, iron jaw traps, and caltrops.
-- removed shadows from certain other objects whose bases are both visible and intended to blend in with the grass below (mainly flowers and reeds).
-- Psy Clash now supports "on turn" card effects that trigger every time your turn starts.
-- created new Bakery, Library, and Steam Engine minions; none of these can attack, but they give their owner +1 health, +1 card, and +1 energy, respectively, at the start of their turn each round.
-- created a new Iron Jaw Trap minion; cannot attack, but is guaranteed to deal 3 damage to an enemy minion it intercepts.
-- within Psy Clash, persistent effects on minions are now displayed in a blinking status effects icon that lists all of the active effects upon mouseover.
-- created a new Cryokineticist minion that permanently drops the opposing minion's power by 2 whenever they intercept or are intercepted.
-- created a new Photokineticist minion that can't be targeted by enemy direct effects; changed the Assassin's special ability to "switches lanes when intercepting an enemy minion."
-- placeholder minion card art can now be drawn from destructible object sprites as well as character sprites.
-- added support for the card minigame to battles as well as cut scenes! This way, it can be used in exploration mode.
-- started adding gamepad support for the card minigame...
-- finished adding gamepad support for the card minigame!
-- fixed: in cut scenes in gamepad mode, the Options button would sometimes inappropriately gain focus and open the options menu when selecting something else onscreen.
-- fixed: in Psy Clash, the player could directly target enemy minions with the "untargetable" trait.
-- added checks to the Psy Clash AI so it won't play effect cards on minions where that effect is already active (for instance, playing Terror on a unit that already can't attack).
-- finished creating 3D versions of the basic table, table with food, and table with beer (both regular and alt versions) that do not warp with camera perspective.
-- fixed: the Psy Clash AI could inappropriately double-play cards that grant energy or cards that summon minions in certain circumstances.
-- finished creating 3D versions of the table with dice, table with books, table with map, and table with papers that do not warp with camera perspective.
Hired a new pixel artist to help me produce new character sprites specific to TiB! Here's a sample of what he's produced so far:
-- received final sprites in all directions, integrated them into the game.
Hired an animator to create animations for the new sprites, negotiated for some further animations with a second animator.
-- fixed: there could sometimes be range errors when setting distance values in proc gen maps.
-- fixed: the game would sometimes fail to overwrite the scene display name upon loading a proc gen map, leading to it not generating a random name for the map.
-- fixed: the game wasn't correctly applying phase, particle, and impact sound properties to spaces in proc gen maps.
-- fixed: the game was not saving and reapplying the map seed for proc gen maps to mid-battle saves correctly.
-- fixed a dumb typo in the difficulty selection menus.
-- fixed: the game was determining facing incorrectly for AI-controlled characters using 0-range skills with asymmetrical AOE patterns (e.g. Hold).
-- fixed: the game was keeping the map seed for a proc gen battle in memory after beating that battle, meaning that any subsequent return to that proc gen map would reproduce the same battle from the saved seed.
-- fixed: when reloading a mid-battle save with holds active on the field, the holds would be placed but would not be visible to the player.
-- fixed: due to a typo, mood narration related to a specific character would display a placeholder phrase instead of the relevant character's name.
-- the enemy teams in arena matches now have procedurally generated names.
-- improved the backup routines for placing faraway enemy units in proc gen battles so they're less likely to end up being placed completely at random.
-- fixed: the "random drop" spawn algorithm wasn't playing nice with proc gen maps, resulting in units placed via the GenerateUnit and GenerateUnique script actions with coordinates of -1, -1 sometimes not spawning at all.
-- fixed: the ItemDrop script action wasn't functioning properly on proc gen maps.
-- fixed: the game was using the wrong name for league 0 proc gen maps if the player chose the tutorial track, leading to the game locking up after the handmade tutorial fights.
-- automated pop-up text about alterations to familiarity, friendship, or romance on the battlefield are now always locked to one line.
-- new parameter added to SpawnFloatingText and SpawnFloatingTextAt script actions: word wrap. Set to false to force pop-up text to remain single-line.
-- fixed: the game camera was cropping out important information when zoomed in to combat exchanges occurring on the bottom row of the battlefield.
-- when the player attacks a qualifier opponent in the qualifier tutorial map before destroying all of the dummies, the tutorial now skips ahead and activates the qualifier opponents.
-- when the player right-clicks a character and opens the character screen in Battle at the Overgrown Garden, the text overlay instructing the player to right0click a character now goes away.
-- added in a new proc gen arena map variant to League 0.
-- removed Battle at the Oasis from the tutorial rotation to get the player into proc gen maps faster, put some of the tutorial text from there into Battle at the Dry Mounds.
-- massively improved the water/lava shader; liquid terrain now undulates (https://mastodon.gamedev.place/@sinisterdesign/109542312839320928)! :)
-- improved the visuals for Twirl: added a character animation, improved the skill timing, and made the swapping occur visually (rather than via an instantaneous teleportation a la Juxtapose).
-- added a new script action: SwapUnitPositions. This causes two named characters to visually swap positions on the battlefield as described above for Twirl. Two parameters: character 1's name and character 2's name.
-- reworked the league 1 qualifier boss battle to make it more challenging and offer more tactical dilemmas to the player.
-- fixed an annoying bug where the game would sometimes initiate babble speech for the first branch of tutorial or event text even though no "speaker" character existed.
-- stat changes on the level-up screen now appear sequentially instead of just being there all at once when the screen opens. (Clicking will skip the sequence and display everything all at once.)
-- created a new "stat up chime" sound effect that plays during the level-up sequence.
-- added particle effects that play during the level-up sequence.
-- created a new DarkSmoke 2d particle effect, incorporated it into the stat-up particle effects for a more convincing effect and better visibility of the sparks.
-- updated in-game documentation with the new 2D particle preset and stat-up chime sound effect.
-- updated the end credits with additional sound effect credits.
-- fixed: rotating a unit while an attack tile for a self-use skill with an asymmetrical AOE pattern (like Hold) would result in the character rotating but the AOE pattern not rotating to match.
-- boosted the aggressiveness of experience scaling for characters who are behind the level curve to make it easier to train up characters who are lagging behind. (Characters who are overleveled compared to their opponents still get a 10% penalty per point of level difference, but characters who are underleveled now get a disproportionate 15% experience boost per level the opponent has over them.)
-- boosted the experience scale cap somewhat to 300%.
Gave feedback to artists about new animations. In the meantime:
-- added a new possible outcome for characters during the Rained Out event: characters who have a reading hobby can now relax with a book while stuck inside during the rain, boosting their morale a bit instead of hurting it.
-- began writing a new event where two characters get into a serious argument.
-- new skill: Trade. It's essentially Twirl, but it only works with allied characters (whereas Twirl can be used on enemies). Trade is now part of the Spearman skill progression, and can be learned by Swordsmen who promote to Swordmasters.
-- created a new WhistleDown sound effect, to be used when character friendship decreases in-game.
-- finished writing and scripting the first couple of variants of the "character argument" event; it can now appear starting on day 10 of the campaign.
-- Psy Clash now supports cards that allow you to steal a minion from another player.
-- new Psy Clash card: Mind Control.
-- Defiant Stance now gives +100% strength until the user's next turn, making it much more useful.
-- increased the base chance of applying Frozen status with Cryo Cross from 50% to 75%, making it less dangerous (and more beneficial) to use with large groups of enemies.
-- fixed: the gamepad cursor was appearing on the "continue" button in Psy Clash even when gamepad controls were not enabled.
-- fixed: in Psy Clash, untargetable minions (like the Photokineticist) were targetable by bowmen and crossbowmen.
Received a new commissioned animation: Gasul shove! (It still kind of blows my mind that I never had this commissioned for the original TT, but hey--better late than never, right?)
Also provided feedback on several other new animations: specifically, hurt and attack animations for several new characters specific to TiB.
-- new script action: InterfaceArmyColor. Lets you change the default army color used in cut scene interface elements like the recruitment screen or the reserve supplies screen from Blue to any other supported color.
I've been dealing with a shoulder injury that requires more than an hour pf PT and/or home exercises every single day, which has really been slowing me down lately.
Regardless, I've been providing artist feedback and getting more things ready behind the scenes! The latest:
-- worked some more on the Trainer scene.
-- hooked up a new reply UI type for dialogue where the game displays a list of characters by portrait with mouseover tooltips and the ability to right-click to see each one's character screen. Left-clicking a character will immediately set them as the trigger character for the dialogue going forward, then behave as a click on "reply 0" for dialogue tree navigation purposes.
-- got stat training working at the Trainer! You can now train Health, Energy, Strength, Psy, or Dodge for any of your characters. The price will scale with the stat's level; characters will be gone until the following evening while they train.
-- the game now supports creating arbitrary stats for characters using the SetStat action! These won't appear in the UI, but they can be used to invisibly store integers specific to each character (e.g. enemies they'll slain, days they've been on the team, etc.). These, in turn, can then be referenced by other script actions.
-- the game now processes special characters in the warning messages for custom menu buttons.
-- added specific facial expressions to more combat lines.
-- fixed: in some circumstances, re-recruiting a character whose data was already saved could result in more than one copy of that character being added to the roster.
-- fixed: it was possible for custom list data to bleed over from a saved game when starting a new game.
-- fixed a typo in a couple of flirtatious greeting variants.
-- fixed a typo in one of the "turning the asker down" variants of the "getting asked on a date" event.
-- roughed in scripting allowing the player to change a character's class at the trainer.
-- added Species to the attributes supported by the IfAttribute script actions.
-- fixed: the level-up screen was keeping "None" onscreen when first learning a new equipment mastery for a character without any masteries.
Received final animations for several new character sprites. :)
-- formatted the new sprite sheets for in-game animations.
-- finished getting class changes working at the trainer!
-- when characters are sent away to train, the date of their eventual return is now shown on the calendar.
-- wrote new arguments based on behavior by Narcissistic and Blunt characters, as well as arguments between characters with the Serious and Jokester personality traits.
-- added support for passing script parameters to IfItemRun.
-- for all IfXRun-type script actions which support passing script parameters (i.e. most of them), you can now pass an unlimited number of parameters; just keep adding pairs of parameter name and parameter value onto the end until you're done.
-- updated the basic Run action so you can pass an unlimited number of parameters as well.
-- fixed: members of army 99 (i.e. most destructible objects) with status effects, upon reloading a mid-battle save, would inappropriately step their status effects an additional time.
-- wrote new arguments between characters with the Natural Leader and Pessimistic personality traits.
-- finally fixed that annoying graphical bug where 2D particles would oftentimes lose their glow effect midway through animating.
-- commissioned unique qualifier opponent sprites.
-- added gamepad support for the new unit selector UI in the dialogue menu.
-- prettied up the mouseover tooltips for the -ShowUnits- reply interface in the dialogue menu.
-- fixed: the game would default the gamepad cursor to the dialogue box on branches with multiple replies.
-- fixed: you could select the dialogue box itself with the gamepad cursor on branches with a -ShowUnits- reply or with multiple regular replies.
-- fixed: tooltips for physical attributes in the character screen were not displaying correctly in gamepad mode.
-- toned down the magnitude of default screen shake for some of the heavier attacks.
-- added a new setting to the Settings screen that lets you halve the strength of the game's screen shake effects or turn them off entirely.
-- fixed: a character receiving damage and healing (or Shield damage) from multiple sources simultaneously would cause the game to lock up. (For instance: a character with both Burning and Regenerating status effects active at once.)
Announced the release date (https://sinisterdesign.net/together-in-battle-release-date/) today, and spent a considerable amount of time emailing outlets and updating defunct entries on my press mailing list. As for the game:
-- added support for a new dialogue trigger type: OnPanCam. It triggers dialogue as soon as the player pans the battlefield camera using the mouse or keyboard then releases the relevant mouse button/key. Optional parameter: turn number.
-- the text overlay reminding the player how to pan the camera is now removed upon panning the camera in Battle at the Overgrown Garden.
-- added a note to the town menu explaining that whatever option you choose, it will take up the day.
-- boosted the spread of sparkle particle effects on the army button upon recruiting a new character in recruitment so it's harder to miss.
-- boosted the spread of sparkle particle effects on the supplies button upon acquiring a new item in the shop interface so it's harder to miss.
-- reduced the speed of the "spending money" animation in the info bar so it's more satisfying and harder to miss.
-- boosted the glow of coins in the "coin fountain" effect when spending money to offset the effect of the fix below.
-- fixed: shader settings for different 2D particles were transferring between particles, leading to inconsistent and incorrect emissive lighting on particles.
Did more PR stuff today, pushed a TTL update. In addition:
-- fixed a graphical glitch involving the left- and right-facing visual effect animations for Light Breath and Light Breath 2.
-- created sprites for the A, B, X, and Y gamepad buttons; integrated them into the engine as text sprites.
-- the game now uses "Press (A)" instead of "Click" for continue prompts in the dialogue menu and cut scene narration box.
-- scripted alternative tutorial text for players who are using gamepads in the Qualifier, Overgrown Garden, and Dry Mounds battles.
Took a few days to check out what IS did with Fire Emblem Engage. Overall, not impressed.
-- successfully switched the cut scene backgrounds over to an asset bundle streaming system. This sort of thing is supposed to reduce build times, and can theoretically help with memory management on more resource-limited systems.
I investigated doing this same thing with the game's character portrait assets, but apparently Unity asset bundles break if any files have the same filenames even if they're in different directories. This would make this a huge pain the butt to implement.
-- camp activities that create items can now produce procedurally generated items with specific materials and at a specific quality level.
-- added a project to the Sew camp activity that can produce a leather vest upon conclusion.
-- created a new "make weapon" project type that blacksmith characters can partake in, wherein they'll rent slace in a smithy and create a new weapon for you over time.
-- new special characters supported: Momdad and Momdad2.
-- went through and combined family background variants using gender-variable pronoun special characters to make it easier to create personality-based variants of those lines.
-- added support for campaign-specific CharAttributes and CharNames XML files.
-- wrote new arguments between characters with the Friendly and Introvert personality traits.
-- wrote new arguments between characters with the Disciplined and Depressive personality traits.
-- wrote attack barks and victory barks for artist characters.
-- the AI will now equip weapons, armor, and other items if AI characters (a) have something equippable in their inventories and (b) they have the relevant equipment slot unused.
-- the game can now distinguish between weapon-based skills and non-weapon-based skills, and will now prevent characters from counterattacking with weapon-based skills while subject to the Disarmed status effect even if they don't have a weapon explicitly in their inventory.
-- created a Disarmed icon; the game now displays the Disarmed status effect for the rest of the turn when an enemy is disarmed.
-- changed the Disarm skill's element from Mental to Slash, increased the base chance of success to 100%, changed the cost to 4, made it end the turn, and added it to the Swordsman skill progression.
-- new skill: Disarming Strike. Deals basic sword damage with a 60% chance to disarm the target; can be used once per turn and doesn't end the turn, but it costs 6 energy. Now learned by characters upon promoting to Blade Dancer.
-- the spirit's Possess skill now causes the user to become Hidden until their next turn.
-- fixed: the game would strip Hidden status from attackers at the conclusion of an attack even if the skill they attacked with was the thing that gave them Hidden status to begin with.
-- fixed: the -ATTACKER- special character was inappropriately referencing the attack target instead of the attacker when used in skill scripts.
-- the skill target is now treated as the triggering character and the user of the skill is now the secondary character in skill scripts.
-- created a new event where a character asks for time off to return home and retrieve a powerful named weapon that's been passed down through their family for generations.
-- new script action: GenerateItemName. Causes the game to randomly generate a (hopefully) cool-sounding name for a unique weapon, then sets custom string _UniqueItemName with the name generated.
-- greatly improved documentation for the CreateUniqueItem script action.
-- fixed: a typo in the logic for CreateUniqueItem was causing it to disregard mandatory tags.
-- fixed: the reverse match method in CullListByList was not working properly.
-- added a DefeatScene condition to the arena battles so losing an arena fight in roguelike mode doesn't immediately end the run.
-- improved the recruitment and shop tutorials; each is now nicer-looking, spread across two pages, and provides more relevant information.
-- the game now remembers if you've completed the shop and recruitment tutorials and won't show them again on subsequent runs.
-- the game now remembers if you've completed the combat tutorials, and acknowledges that in the qualifier battle before asking if you want a refresher.
-- improved the look of the game's rain particles in battle.
-- fixed: it was sometimes possible to see the "corners" of the weather particle emitter box in battle under certain conditions.
-- refactored some of the character generation code so that the region of the world a character comes from is chosen before anything else, allowing it to factor into the remaining aspects of character generation.
-- the character generator can now take a character's native region into account when generating their name.
-- created a list of human first names specific to the region of Dese.
-- characters from Dese are now generated with Dese-specific names.
-- players can now open and inspect the current month's calendar manually when in Kalkerapur or Camp.
-- new script actions: ShowCalendarButton and HideCalendarButton, which can be used to toggle visibility on a button the player can use to examine the calendar during cut scenes.
-- added gamepad controls for the options menu and settings screen in cut scenes.
-- added gamepad controls for the calendar.
-- fixed: in cut scenes, gamepad focus would not be restored to custom menus when backing out of other gamepad menus.
-- made the options, army overview, and calendar buttons selectable with the gamepad when in a custom menu.
-- fixed: the game treated invisible custom menu elements as selectable with the gamepad cursor.
-- created a dedicated button graphic for the Calendar menu. Added it to the assets list for use in custom campaigns.
-- fixed the timing of portrait animations in the Argument event.
-- prettied up the 2D heart particles.
-- added a couple of extra preferred expletives that are specific to kind and cheerful characters.
-- added gamepad support to narrated camp activities.
-- fixed: the game would inappropriately switch gamepad focus from the dialogue menu to the narration menu when EndConvImmediately was called by dialogue during camp activities even if another dialogue tree was active and the dialogue interface remained onscreen.
-- made the options, army overview, and calendar buttons selectable with the gamepad when gamepad focus is in the dialogue menu, camp activities menu, or narration menu.
-- fixed: babble speak sound effects were still being triggered sometimes when there was no character designated as a speaker.
-- fixed: the wrong character's expletives were being used in cooking reaction dialogue.
-- fixed: end-of-dialogue routines were being called and advancing the narration frame even when the game was simply running a script (as opposed to ending actual written dialogue).
-- polished the dialogue sequence that follows dismissal of a character.
-- improved documentation of the LoadConv reply type.
-- you can now scroll through characters in the character screen while within the army overview screen using the mouse wheel (or, if in gamepad mode, the shoulder buttons).
-- added gamepad support to the info bar. When the info bar is visible in cut scenes, you can now "mouse over" the food and aura icons with the gamepad cursor to get their tooltips while in the shop, recruitment, custom menu, dialogue, or camp activities screens.
-- added gamepad support to the character overview screen.
-- fixed: the gamepad cursor was misaligned for the screenshake adjustment buttons in the settings menu while on the title screen or in battle.
-- fixed: the gamepad cursor had become misaligned for character screen elements while in cut scenes.
-- fixed: after using the start button to open the main menu in cut scenes, the game incorrectly treated game settings as the current menu for purposes of gamepad navigation.
-- fixed: the gamepad cursor could navigate to the "switch page" buttons in the reserve supplies screen even when they were invisible.
-- fixed undesirable gamepad cursor behavior when switching between dialogue branches with multiple replies and those without multiple replies within dialogue trees.
-- fixed: gamepad controls for the report screen did not function properly in cut scenes.
-- fixed: the game was inappropriately placing gamepad focus on narration at the beginning of nighttime camp activities even if the first activity was character dialogue.
-- fixed: in the character screen in battle, you could start the process of giving an item to an adjacent character by selecting Give for an item, then immediately reopen the character screen, use or drop the item, and finally return to the battlefield and click the red give tile to give a pristine copy of that item to an ally.
-- wrote two new events in which a spirit visits the camp and the player must decide how to deal with it.
-- wrote a new script to dynamically adjust the whole group's morale based on player choices.
-- prettied up the rain particle effects some more.
-- fixed: the game was not recognizing when a dialogue branch was marked for input text within PersistentDialogue.xml.
-- fixed: upon returning to the title screen from a game, remaining on the screen in a submenu for the length of the intro movie while using gamepad controls would result in the game inappropriately pulling gamepad focus onto the main menu.
-- new background added: Arena_Interior.
-- got background image compression working properly; converted the background asset bundle to use chunk compression.
-- fixed: it was possible to advance the scene by clicking the background while in recruitment.
-- fixed: head 12 in lissit portraits was missing data for mouth 8.
-- the NewBackground script action can now be used to display a specified cut scene background in the empty space around the battlefield.
-- scripted the arena interior background to appear behind arena matches.
-- scripted appropriate backgrounds to appear behind event battles.
-- made some more of the event battles increase a bit in difficulty once a certain number of days have passed.
-- named the four in-game arena leagues.
-- wrote arena organizer dialogue up through league qualifier #2.
-- updated the scripting in the qualifier scheduling scene to account for all four leagues.
-- scripted and wrote the conclusion of the steel supplier side quest for Nihal Agarwal.
-- set up triggers for the first set of 18 achievements in-game.
-- cleaned up the graphic for the 2D particle "Sparkle."
-- fixed: things which caused a character to be instantly placed on a specific space in battle (e.g. undoing) could sometimes mess up that character's z-sorting.
-- finally fixed that annoying bug where stray 2D particles could end up "stuck" at the top-left corner of the battlefield.
-- fixed: the Escape button would not act as a click on the report screen in cut scenes.
-- added a new random condition that can affect arena fights: impatient crowd. You'll have 2/3rds as many turns as normal before the crowd starts getting restless.
-- the game now prevents the same battlefield condition from affecting two arena battles in a row.
-- new script action: LevelUpArmy. Works like LevelUp, but it affects an entire army at once instead of just one character.
-- new special character: -ROSTERNUM-. Gets changed to whatever the number of the current roster is.
-- added three more achievements.
-- having a character share a tent with another character during the mustebeast event will now impact character morale based on whether they like the character you picked and whether the affected character is an introvert.
-- fixed a couple of typos in plot event 2.
-- fixed: the game would calculate total salaries for payday without accounting for characters who are technically still on payroll, but are temporarily off the roster due to being off training. The game now tracks such characters by whether they appear on the custom list _StillOnPayrollX, where X is the current roster number.
-- fixed: the special character -APPETITE- was returning the salary of the current roster, not its combined daily food consumption.
-- fixed a typo that was causing kind characters to sometimes get a narcissistic camp activity narration when volunteering.
-- fixed: when shoving an enemy into a spiked barricade, the game would throw a null error.
-- fixed: if a unit's skill progression list wasn't strictly in level order, the skill advice event could fail to reorder a unit's skill progression correctly.
-- fixed: the AI was recognizing automatic pick-up items (i.e. coins) as equipment.
-- adjusted the height of the elemental blast explosion animations to better align with the projectiles.
-- added a new option for camp in the evening: One-on-one. This lets you pick a character from the group to give orders to, to give a bonus to, or to give paid time off to; all other characters will have free rein.
-- updated scripting for the qualifier scheduling scene.
-- the Run reply type now supports passing multiple parameters.
-- clamped the value for the current arena battle to the size of the list, meaning that you can now never "run out" of fights within a league.
-- fixed: qualifier scheduling wasn't being triggered by the proc gen arena fights.
-- fixed some outdated formatting and scripting info in the Monkey League Qualifier battle.
-- fixed some outdated info in the in-game documentation relating to generate unit-type actions, specifically with respect to the first salary parameter.
-- fixed: a Wait action queued up after a WaitForDialogue action would cause the wait timer to run concurrently with the wait-for-dialogue condition; and if the wait timer counted down to zero before the dialogue finished animating, the game would proceed with executing actions anyway! The game now waits for dialogue to conclude if a WaitForDialogue action was executed before commencing the countdown for a subsequent wait timer.
-- received new staff fighter sprites for the introductory qualifier opponents, incorporated them into the game. :)
-- fixed: when using a gamepad, OnCharScreen dialogue would pull gamepad focus from the character screen and fail to restore it upon ending the dialogue.
-- the game now checks for Xbox-specific controllers and updates the gamepad layout if it auto-detects gamepad usage on the title screen while controls are still set to mouse and keyboard.
-- when opening the mid-battle save menu, the game now auto-resets the gamepad cursor to the first slot instead of leaving it on the confirm button from previous turns.
-- the game now plays a sound effect when toggling to and from the actions bar using the X button in gamepad mode, or when switchign to the actions bar by hitting A on an empty battlefield space.
-- the skill editor now has a checkbox that can be used to toggle whether a skill is considered a weapon skill by the game for purposes of the Disarmed status effect.
-- the LightBackground action now works for backgrounds in battle as well.
-- changed the lighting in arena battles taking place in the darkness.
-- added regular league match scheduling to the game.
-- new optional parameter in GetEventDate: get last instance of named event (instead of first) in the calendar.
-- finally received a commissioned pull animation sprite sheet for the Gasul class! (I can't believe it took me this long to get one made, but now it's finally done.) Integrated it into the game.
-- added Pull to the skill progression for proc gen Gasul units.
-- fixed a couple of scripting issues relating to new features that were causing improper options to be available in menus at game start.
-- adjusted parameters for Monkey League Arena battles.
-- wrote new "like" dialogue for imaginative characters.
-- improved some of the location-dependent background dialogue.
-- fixed a couple of typos in proc gen character dialogue.
-- created a Crowd Murmuring sound effect, added it to the "crowd grows restless" dialogue in arena fights.
-- reduced the volume on the Rain and Wind sound loops, preserving the old high-amplitude versions as Rain Loud and Wind Loud.
-- fixed: a league match could get scheduled during the Festival of the Ascendant Lights.
-- fixed: item button menus for the rightmost items in the reserve supplies screen had their positions reset, requiring me to once again go in and reposition them by hand so they wouldn't go offscreen.
-- fixed: music volume would reset to a level multiple times higher than the global music volume level under some circumstances.
-- fixed: units would sometimes fail to become tinted when spawning after deployment under alternate global lighting conditions.
-- updated game logic to let you schedule another league match and try again after losing one.
-- added icons to the reply options when a character asks which stat they should work on for their next level-up.
-- battlefield lighting is now set to overcast when there is a rain condition.
-- added specified animations to dozens more skills to allow characters to keep using them with reasonably appropriate animations after reclassing.
-- fixed: characters changing classes did not adopt the default skill animation of their new class's sprite set.
-- fixed: the game would not trigger OnVictory dialogue for any army that was not player-controlled.
-- fixed: surrendering would not trigger OnVictory dialogue for any enemy armies.
-- created a qualifier battle to get into Gharial League.
-- the game now tracks the total aura spent in shops, the total aura spent during the last shopping trip, the maximum aura spent in any one shopping trip, the total aura spent on recruitment, total characters recruited, the total number of characters recruited of each species, the total number of characters recruited of each base class, the total number of character promotions, the total games of Psy Clash won, the total number of characters who have permanently died, the total number of nights your characters have gone hungry, the total number of characters who have been dismissed, and the total number of characters who have resigned.
-- added an achievement for obtaining a deck of psy clash cards. There are now 23 achievements implemented.
-- new supported tag: ModTerrainModifier. Can modify the effect that terrain tiles have on a particular stat for the tagged character.
-- two new physical traits added: Diminutive and Broad. Diminutive adds +15% to Dodge when on terrain that modifies Dodge; Broad negates Dodge bonuses from terrain.
-- fixed: tall grasses were not applying their Dodge bonus to units standing in them.
-- the game no longer displays the names of skills being used under fog of war.
-- fixed: the blinking status effect displayer would appear even when the unit it was attached to vanished in fog of war.
-- fixed: pop-up text and animated health/energy bars would still appear over spaces covered by fog of war.
-- fixed: impact sparks and static visual effects would still appear over spaces covered by fog of war.
-- added an invariantculture argument to game's various float.Parse() calls to avoid issues with the game failing to parse decimals for European users.
-- coded battle background functionality into the game. Unlike cut scene backgrounds, these are paintings that lay flush with the level geometry, surrounding the battlefield on all sides, and pan around when you pan the game camera. These are designed to much more directly represent the environs surrounding the battlefield.
-- added a rough draft arena battle background into the game's arena battles.
-- made it so the player can hold one-on-ones even after events.
-- fixed: you could get the mustebeast event more than once.
-- fixed: the internal stat tracking system has a typo that was causing "key not found in dictionary" errors.
-- fixed: the lighting on lit tent objects was out of whack.
-- fixed: the thief attack battle did not have music.
-- fixed: the second wave of enemies in the thief attack battle did not target the player's tents readily enough.
Updated the website with a new version of PHP (plus updated the forums to version 2.1.3 after discovering that they wouldn't work with PHP 8.0). Now that the forums are working again, I can get back to posting about development progress. :)
-- got up to a full 70 achievements implemented!
-- started sourcing art for the achievement icons, which...is gonna take a while. 😅 (I currently have art for 24 of the achievements.)
-- made it up to 67 achievements with art now!
-- added a 71st achievement.
-- finished adding art for all achievements.
-- TiB now creates a custom Classes.xml file in all custom campaigns for easy access to class editing.
-- fixed: you could select the calendar and army overview buttons with the gamepad when in cut scenes even if those buttons were not visible.
-- fixed: calling up the main menu in battle during dialogue and exiting would cause the game not to restore gamepad focus to the dialogue window.
- turned off the ability to access the battle menu via gamepad when the new turn box is open, when the game is actively changing scenes, or when an AI turn is taking place.
- the game now supports looping pixel art animations for destructible objects!
- received an animated Fire sprite, integrated it into the game as the new Fire destructible object. Walking into fire causes 15 heat damage; attacking fire from melee causes the attacker to receive a 10-damage Burn "attack."
- received the last of the golem Stomp animations (for the Titan class), integrated it into the game.
- finished integrating royal guard animations into the game.
Gave a lot of artist feedback on the last few graphical assets I need for the EA release. In addition:
- battle backgrounds can now be scaled dynamically on a battle-by-battle basis.
- received portrait for the Staff Fighter, integrated it into the game.
- created a rough draft of parameters for proc gen Gharial League battles.
- Fire now deals ongoing environmental damage each turn a unit stands in it.
- the AI now recognizes Fire as an environmental hazard it can shove enemy units into.
- the AI now recognizes that flying enemies won't take environmental damage from being shoved onto terrain that flyers can naturally pass over (like water, lava, or chasms).
- the AI now accounts for environmental damage when evaluating the danger of ending its move on a space.
- fixed: characters being created from premade unit templates would have their tags applied twice.
- upon finishing deployment in a map with fog of war, the game now reveals tiles for the newly deployed characters automatically without you having to move them.
- fixed: the AI would not complete the turn of a character who wandered into a pressure trigger but didn't end up stunned or otherwise unable to act.
- fixed: using the B button to exit the main menu after opening it during dialogue would result in the dialogue box not regaining focus.
- the AddCondition script action now supports the Set Army Alliance condition.
- improved the Thieves arena battle condition.
- fixed: in some situations, it was possible for the AI to lock up at the start of its turn when BeforeTurn dialogue spawned.
- fixed: it was possible for a character to independently choose the Clean camp activity even if another character was already assigned to clean via a One-on-one.
- fixed: destructible objects in proc gen maps were being created with a blank facing instead of a facing of "None", which in turn would interact with the game's logic in such a way that attacks from assassins against them would be counted as sidestabs.
More artist feedback.
- wrote a new event in which an enthusiastic fan shows up to praise one of your characters.
- received Kalkerapur city battle background; incorporated it into the game.
- received unique Trainer portrait; incorporated it into the game.
- players can no longer name a spirit using the same name possessed by another character.
- new stat supported by UnitsToList: Health Left. This automatically calculates the character's current health by deducting Damage from Health.
- new stat supported by UnitsToList: Energy Left. This automatically calculates the character's current energy by deducting Drain from Energy.
- fixed: a typo meant that the game would consider characters with a wound level of 1 or greater available for nighttime events or training.
- fixed: characters with a health of zero but no wound level (because of playing on Relaxed difficulty) were deemed available for nighttime events or training by the game.
- finished up the enthusiastic fan event.
- moods may now block characters from engaging in the partnered versions of their chosen camp activities (or as partners for other characters' chosen activities).
- new mood supported in the game: EnviousOf.
- new camp activity: Envy. A character spends the evening stewing over feelings of envy for another character.
- received final sprites for new destructible objects Thorn Vines, Ice Spikes, and Sandbox Tree.
- created new destructible objects Thorn Vines, Ice Spikes, and Explosive Tree.
- added a small cut scene with a message for when the player has reached the end of the playable content in Together in Battle.
- the player is now directed to that scene after the cut scene where they are scheduled for the Snow Leopard League qualifier.
- increased the damage dealt by opponents in the initial qualifier in Challenging and Brutal difficulties so it's a tiny bit more of a challenge.
- fixed: the game would lock up when attempting to start a new game while not connected to Steam.
- on the highest AI settings, the game now accounts for collision damage it can cause via knockback skills (i.e. smashing characters into walls, objects, or each other).
- shuffled the AIHandicap values around a bit. They are now 0: full intelligence. 1: disregards space safety. 2: disregards backstab. 3: disregards lethal hits. 4: disregards knockback. 5: disregards attack effectiveness. 6: doesn't rotate to avoid backstabs. 7: doesn't prioritize healers or 'Protect Char' units. 8: actively avoids backstabbing. 9: disregards counterattacks and on-death attacks from enemies.
- Challenging difficulty now has an AI handicap of 3 instead of 5.
- the game AI no longer treats skill scripts as rendering a skill inherently useful even the skill does no damage and imparts no status effects. (This keeps the AI from constantly using Trade and Twirl when it has no better moves.)
- wrote new background dialogue for gambler characters.
- fixed: the in-game calendar UI was not scaling properly for 16:10 display resolutions.
- fixed: space selector appeared in the top-left of the map, not aligned to any space, prior to the start of turn 0 in battle.
- fixed: victory fanfare could sometimes start playing before the appearance of the victory box at the end of battle.
- fixed: the game still displayed -0 damage popups for skills that don't normally deal damage when those skills were used by the AI.
- fixed: one of the dialogue branches in plot event 2 was missing a Babble script action.
- fixed a scripting error where giving characters more than one day of vacation would still result in them returning the following evening.
- fixed: the game was generating golem characters without assigning them the golem babble sound set.
- added gamepad support for the calendar screen.
- physical attributes can now be excluded by certain life skills and/or can require certain life skills.
- fixed: it was possible for characters with the Skinny trait to be generated with a life skill of Athlete, rendering them both Muscular and Skinny at once and canceling out the two traits. Same with Bad Joints dancers and Aquaphobic sailors. This can no longer happen.
- fixed: it was possible to force availability of the Hold a Gathering evening activity even after going through a time-consuming random evening in camp by choosing Hold a One-on-One and then canceling out of it.
- fixed a couple of scripting errors in the Strikebreaking map.
- fixed some issues with gamepad support for the recruitment interface.
- fixed an inconsistency in the code that was causing flying characters spawning on spaces with a fly-only object to spawn one elevation level lower than intended.
- fixed a bug in which incomplete fading out of dialogue babble sounds would cause subsequent sound effects played in the same channel to play at the wrong volume.
Did a bunch of marketing work, emailing content creators and lining up coverage for the launch! Also, fixed a couple of bugs:
- fixed: the game could generate characters with the class Hero in recruitment.
- fixed: upon changing scenes in the middle of a fade-out of music or a sound loop, if the scene transition finished before the fade-out did, the game would reset that sound's volume to the default and prevent the fade-out from finishing.
More work prepping the game for release; fixed some issues relating to the Steam store page and captured footage for the early access release trailer.
- fixed: the food and money icons were sometimes not appearing in the info bar.
- fixed a typo in the character background data that was causing the game to treat Adelbrae as a village in Dese instead of Skolika.
- fixed a range error in the SoundManager class that could occur when logging a completed sound channel fade-out.
- fixed:a range error could occur when the game determined free-rein evening activities for characters in camp after sending a character off to buy an item on sale as part of a random event.
- wrote new variations for the narcissistic Volunteer camp activity.
- assassins now all learn Leap between levels 2 and 4 (instead of between levels 2 and 6, as it was previously).
- fixed: it was possible to undo after using Swim.
- fixed: dynamic palette-swapping during battle (e.g. when characters switch army allegiances) had gotten broken.
- fixed: Battle at the Overgrown Garden and Battle at the Dry Mounds were showing the arena cut scene background instead of the arena battle background.
- wrote new Heal bark variants.
- fixed: the game was including all units on targeted spaces (including objects) as secondary characters for purposes of Heal and Attack barks, which could lead to situations where the character saying the bark could address the inanimate object by name (e.g. telling "Reeds" that they were going to be healed).
- fixed: the -NAME- and -CHAR2- special characters would remain unchanged if the target unit had no name. These now display its class name in that circumstance.
- fixed: the game was not fully dropping flying characters into water or lava when afflicted with the Heavy status effect.
- fixed: the game was not fully dropping levitating, land-based characters into water or lava when the Levitating status effect ended.
- slowed down the battlefield cursor when playing in gamepad mode.
- improved the gamepad attack-tile selection behavior so it now "snaps" to the closest attack tile based on the direction you pressed instead of just cycling through the attack tiles in an arbitrary order.
- fixed an error in the game's method of determining whether attacks hit against targets with Dodge when made by characters with Accuracy above 100. The game had been giving characters with Dodge an inappropriately high chance of dodging relative to the attacker's accuracy.
- fixed: attacks against procedurally generated destructible objects could trigger a null error.
- reduced aggression coefficient for the Greedy AI profile.
- fixed a typo in one of the thief dialogue variations for league 1 and 2 battles.
- fixed: due to a scripting mistake, auto-looting of money sacks (e.g. at the end of the Thief Attack battle) was producing a null error caused by inability to parse the current army number.
- fixed: music cross-fading was not reliably playing tracks at the correct volume.
- fixed: arena manager was giving dialogue about being able to sign up for the Monkey League qualifier even after the player was already scheduled for said qualifier.
- increased the payout for winning arena matches.
- added some explanation of the exponential pricing for stat training to the trainer.
- wrote some new Arena Manager dialogue.
- the team now gains 2 morale upon beating a league qualifier fight.
- decreased the cost of bonuses from 100 aura per morale point to 75 aura per morale point.
- fixed: the game would throw a null error trying to store achievement stats if not connected to Steam.
- fixed: Arena manager dialogue wasn't quite matching up during the day or two after scheduling the Monkey League qualifier.
- increased the range of item rarities that may drop in Monkey League and Gharial League.
- chests may now drop money in addition to regular items.
- reduced the cost of training most stats, but the trainer now has a hard limit on how high she can train a character's dodge. (If a character has a dodge greater than 60, she won't be able to train it higher.)
- prettied up the scripting on the Letter event.
- early evening random events can no longer trigger on payday.
- fixed: the game was awarding victory spoils twice!
- fixed a scripting issue with alternate narration for the Sick event.
- fixed: the game was cutting off music abruptly upon selecting the Thief Attack event rather than fading it out.
- fixed: it was still possible for AI spearmen to use Trade all the time.
- fixed: the game could spawn enemies on top of traps when generating an arena fight.
- fixed: when failing to make payroll, the first regular evening activity was showing first before the group reaction to going unpaid.
- fixed: the game was re-adding dismissed characters (and those who quit on their own) upon return to camp each evening due to a scripting issue.
- expanded the varieties of consumables you can find in the shop.
- expanded the varieties of accessories you can find in the shop.
- lowered the cost of Hold from 6 to 5.
- fixed a few typos in the dialogue to recruit an enemy in the Monkey League Qualifier (including one which caused the higher salary offer to remain at the same level as the first one).
- fixed: Unity's built-in lighting system would screw up when too many lights were casting on the same object (typically in maps with lava tiles).
- fixed: a typo in the game's tile data meant that the game couldn't find tiles surrounded on three diagonal corners by cave tiles and would simply leave a hole in maps where such tiles appeared.
Released Together in Battle to early access!
- further increased the monetary rewards for beating the league qualifiers.
- increased the monetary rewards for beating the last battles in Gundhi Bug League.
- reduced salary costs somewhat for Challenging and Brutal difficulties.
- reduced item costs somewhat for Brutal difficulty.
- beating the tournament qualifier now gives the player 200 aura.
- toned down the potential added enemy types for the second battle on Brutal difficulty.
- fixed: the Sick Parents event would freeze if a character who was raised by both grandparents was chosen for the event.
- Brutal difficulty now has a minimum first-day recruitment of 4 units rather than 6.
- increased starting aura for Challenging and Brutal difficulties.
- reduced food costs for Challenging difficulty.
- reduced item costs for Brutal difficulty.
- training costs now scale with difficulty: 70% for Relaxed, 80% for Challenging, and 90% for Brutal.
- paradigm training now takes five days instead of a week.
- increased the number of uses Bandages have from 2 to 3 to make teams without a psy healer or gasul more viable.
- arena fights no longer spawn extra enemies on Brutal difficulty.
- doubled the morale effect of Beautiful weapons and armor from +1 to +2.
- new possible modifier for especially high-quality weapons and armor: Gorgeous. Grants the wearer morale +4 while equipped.
- increased the availability (and massively decreased the price) of Cheap Novels in the shop.
- imposed a hard cap of 5 on the morale penalty a character can take for falling in battle without dying.
- fixed: golems could take a morale penalty from falling in battle.
- laid some groundwork for an eventual custom difficulty selection mode.
- adjusted default expressions tied to a couple of personality traits.
- fixed: you could change a spriggat's innate type via training. Spriggats can now be trained as psy users instead.
- fixed: the game would treat voluntary surrender on roguelite mode as a normal defeat and delete the player's saved game.
- fixed: the game could cause a qualifier or league match to occur on a day where other events were scheduled even after pushing the event back on the in-game calendar.
- new script action available: SetValByEvent. Create or edit an integer variable by reference to the day upon which a scheduled calendar event will occur. The game will pick the first instance on the calendar by default; set Find Last Instance to true to find the last instance of the named event on the calendar instead. Parameters: Variable Name; Operator ( = + - * / etc); Scheduled Event Name; Find Last Instance (true or false -- optional).
For version 0.2.02:
- further increased Cheap Novel availability in the shop, and further decreased its price.
- increased the morale-boosting power of regular Novels.
- created a new Time icon.
- created a new time points system for the daylight hours. You have two points to spend, and activities can cost one or two points. You can spend the day on a single 2-point activity (e.g. going to the arena) or on a selection of two 1-point activities (e.g. shopping and training).
- new 1-point daytime activity: Labor. You can go down to the docks and hire out characters as laborers for the day in exchange for money. This will consume 20% of their remaining energy and they will return that same evening.
-the game now accounts for how far short of making payroll you fell when calculating the morale penalty for missing payroll. The minimum morale penalty is now -2 (as opposed to a shortfall of any size producing a full -10 drop).
- took Sprint out of the cavalier skill progression, as it was producing enemies that could cross the entire arena and charge down characters in one turn.
- the game now recognizes Health Left and Energy Left as stats for most stat-related script actions.
- fixed a couple of typos in camp narration/dialogue.
- made Toss a starting skill for Stone Golems.
- new supported text sprite: Time.
- fixed: the game was grabbing the wrong date for league qualifier matches in monkey league, halting forward progression.
- fixed: the game was inappropriately failing to give stone golems the tag that reduces the cost for Shove 2, and was instead giving it to them as an invalid skill at level 2.
- fixed: Throw appeared twice in the Stone Golem promoted class skill progressions.
- fixed: Trade, Twirl, and Juxtapose worked on objects, not just characters. The game now gives you a pop-up message explaining why it didn't work if you try this.
- fixed: Trade worked on enemies, not just teammates. The game now gives you a pop-up message explaining why it didn't work if you try this.
- fixed: if a character attempted to use a self-move skill like Stick-and-Drag or Pull while subject to a Hold effect, it would leave the attacker in place while telling the game they were in the process of moving, eventually freezing the game as it waited for expected character movement to complete.
- fixed: the game would reset a character's wound level to zero upon reapplying equipment effects, and opening the character overview screen in camp would reapply equipment effects, essentially auto-restoring wounded characters to normal with no recovery or risk of death.
For version 0.2.03:
- replaced the "reputation boost" of 10 morale with +20 accuracy.
- fixed: the game wasn't casting characters for late-night random events, resulting in the second apparition event spawning a blank character.
- fixed: it was possible to click another character and select them mid-combat animation, thereby messing up the game's tracking of who the current character was and causing the original attacker to get another action.
- fixed: the game would cease to display the effects of morale in the character screen if morale-altering equipment temporarily pushed the total value above 10 or below -10.
- created the Snow Leopard League qualifier battle.
- thieves in the arena should now focus exclusively on opening chests and should ignore player characters.
- Gharial League matches now have a 15% chance to spawn a royal chest with rare loot.
- changed the potential earliest timing of certain events.
- the Robber Boss is now scripted to stay perfectly still until turn 7 during the Thief Attack event (unless attacked).
- the aggression on the Greedy AI profile has been lowered further.
- fixed: the Sick Parents event would freeze if a character who was raised by both their aunt and uncle was chosen for the event.
- fixed: the pyrokineticist boss of the Gharial League qualifier spawned with a blank, invalid item in their inventory.
- fixed: the Robber Boss was spawning without a weapon during the Thief Attack event.
- fixed: the game wasn't picking portraits for promoted generic units correctly.
- fixed: on lower settings, the AI would not consider lethal blows against destructible objects a viable move.
For version 0.2.03a:
- increased the available uses for throwing axes, javelins, and throwing knives.
- doubled the chance of wrenches spawning in the shop.
- improved character vocation background dialogue a bit.
- increased the minimum energy cost to hire out from 3 to 5 so it's less of a free "print money" button.
- fixed: dialogue calling for a last name with spirits was causing the game to lock up when applied to the random-event apparition.
- fixed: when renaming a proc gen character, the proc gen character's own dialogue would have their old name baked in and left unchanged.
- fixed: swimming onto a land tile with a trap would not trigger the trap.
- fixed: when hiring out, the game was determining eligible characters inconsistently between the start of the scene and when asking if the player wanted to hire out someone else.
- fixed: hiring characters out would cause the game not to count those characters for purposes of predicting payroll until their return later in the evening.
- fixed: there was still a line on Monkey League qualifier fight were it said (incorrectly) that the kineticist was paid monthly.
For version 0.2.04:
- the map editor can now successfully save and load battle backgrounds with maps.
- you can now assign a percentage spawn chance to all army and object groups for proc gen maps in the map editor.
- fixed: instead of having a 15% chance to spawn in Gharial League, royal chests had a 100% chance to spawn and a 15% chance to contain an item.
- fixed a null error in the map editor when loading a map with a global lighting condition as its first condition.
- fixed a range error when cycling through permitted integers using a number picker in wrap-around mode via the "previous" button.
- added footstep sound effects to the game when going to the docks.
- boosted the heat and cold resistance modifiers from insulated armor from 15% to 25% each.
- boosted the light and shadow resistance modifiers from lead-lined armor from 15% to 25% each.
- the arena battlefields now grow slightly larger with each successive league.
- the game now saves the current map width and map height for proc gen battles, then uses those values when reloading the battle instead of using whatever the most current values are. (This will keep battlefields from getting scrambled if their dimensions shift again in future updates.)
- fixed: the arena manager was skipping his "tough break" dialogue after the player lost a league bout.
- fixed: match scheduling logic was sometimes not selecting the correct day when trying to pick the scheduled date on the calendar.
- fixed: the game was bypassing the victory screen when the player won league qualifier matches, resulting in no money being awarded.
- fixed: the game was not correctly detecting the new defeat scene after players surrendered in league matches.
- fixed: on lower AI settings, the game was actively valuing lethal blows lower than non-lethal blows (as opposed to merely not valuing them more highly).
- fixed: lead-lined armor was providing heat and cold resistance instead of light and shadow resistance.
- fixed: skills like Overheat could drop a character's energy into the negatives.
- fixed: destroying fire did not remove its environmental damage effect from the space.
- fixed: flying characters who had been Gravity-Spiked into water or lava and then swam back onto land would reemerge at the wrong elevation.
- fixed: you could shoot your own units with bowmen and crossbowmen in Psy Clash.
- fixed: looping crowd noises would continue upon returning to camp from the Festival of the Ascendant Lights.
- fixed: bonuses were providing a smaller morale boost than intended.
- league match scheduling is now weighted; you have 50% odds of the next league match being in 3 days, 33% of it being in 4 days, and only 17% of it being in 2 days.
- fixed: the "total battles fought" variable used to determine enemy level scaling in the league fights was not being reset upon entry into Gharial League, resulting in enemies being massively overleveled.
- fixed: when using a Book of Power in camp, the user's already-open character screen was not auto-updating with the new information following the promotion.
For version 0.2.04a:
- the game now checks for duplicate tags when generating a new skill progression for a character upon promoting or reclassing.
- new skill added to the game: Mind Domination. Same as Mind Control, essentially, only Enthralled has a base 100% chance to take effect and the skill costs 6 energy. Mentalists now learn this as part of their skill progression.
- made the Mastermind and Thoughteater advanced classes stronger; the Mastermind can now continue their turn after using Mind Control, and the Thoughteater now gets +6 damage on Mind Shock instead of +5.
- fixed: you could click on the main text box during character selection branches of dialogue and it would progress to the next branch of the tree with no character selected. If done during a one-on-one, this would cause the game to show a blank black placeholder portrait and call the character "FNAME"; or if done at the docks, would simply glitch the game out.
- fixed: the game would inappropriately send players to the Gharial League Qualifier in place of the Snow Leopard League Qualifier.
- fixed: the monetary reward for strikebreaking was being granted twice: once as a battle reward, and again in dialogue.
- fixed: some of the dialogue variants for a character asking another character out on a date were getting clipped.
- fixed: the game was displaying the wrong names for the Gharial League and Snow Leopard League qualifiers within save game slots.
For version 0.2.05:
- created the Snow Leopard League arena map template.
- you can now progress through Snow Leopard League, all the way up to the Tiger League Qualifier.
- team leaders are now more likely to spawn with extra items in arena fights.
- 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).
- fixed a bug in the game's battlefield generation logic that was causing counterattack-possessing objects like Spiked Barricades and Fire to cluster within two spaces of the player's deployment spots.
- created a new arena match type: Defend the Idol. This spawns a golden statue at least 2 turns away from the enemy's spawn points and tasks the player with defending it.
- created a new arena match type: 4-on-4. This limits the player to deploying only 4 characters and pits them against 4 stronger-than-normal enemies under an accelerated timer! Extra hazards and chests are dropped around the arena as well, at least two of which are guaranteed to contain a money drop.
- shortened the number of fights it takes to progress through each league; Monkey League, Gharial League, and Snow Leopard League now each progress you to the next league's qualifier after winning four league matches (instead of five).
- you can now train accuracy at the trainer.
- dropped the damage on Charge from 1.5x strength to 1.25x strength, as it was proving a little too oppressive in arena maps.
- new skill: Mega Charge. Deals 1.5x strength and has 2x 75% chance to stun. This one is learned exclusively by cavaliers after promoting.
- fixed: traps and holds were not interrupting self-move skills (like the cavalier's Charge attack) as intended.
- swordsmen now get Hold added to their skill progressions if they promote to Swordmasters.
- buffed Mantis Knights to make them more competitive with Mant Lancers: Mantis Knights can now use another skill in the same turn after using Lance.
- the game's calendar system now distinguishes between events and reminders, and will now schedule exclusive events (like league qualifiers) on days which contain mere reminders.
- fixed a typo in the class requirements for bowmen that caused the game to only select characters with a positive psy growth for the class instead of a positive strength growth, leading to many bowmen developing very little strength.
- 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: 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).
- 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 freezing the game.
For the map editor:
- 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.
For version 0.2.05a:
- fixed: the game would throw a range error during recruitment if the total number of initial recruits was not neatly divisible by 6.
- fixed: in rare instances, 2D particles could cause the game to throw a null error.
Campaign creation suite improvements:
- updated the default introduction scene so it's more useful right out of the gate.
- characters created with the character creator now have an appropriate babble voice set assigned to them.
- new reply type supported, cut scene only: Next Frame. Ends the current dialogue and proceeds to the next frame of the cut scene.
- updated usable skill icons with the new Mind Domination and Mega Charge icons.
- fixed: "duplicate dialogue branch" functionality was not working correctly in the dialogue editor.
- fixed: moving a branch downward within a dialogue tree would produce a range error.
- fixed: 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: 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: typing the letter 'L' in the cut scene editor would still trigger the game's "save log" functionality.
- 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.
- fixed: the game would sometimes throw a range error during character promotions.
For version 0.2.05b:
- provided the formula for how much damage is caused by falling in the elevation tutorial.
- fixed: 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: the Protect Char condition was not working on destructible objects, resulting in the Defend the Idol loss condition never triggering.
For version 0.2.05c:
- fixed: Defend the Idol was being chosen much too often in Monkey League.
- fixed: the game was not taking minimum distance rules into account when spawning the idol for Defend the Idol.
For version 0.2.06:
- began creating the next main plot event.
- 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).
- new tag type supported: Immunity. Grants status effect immunity to the tagged unit.
- item quality in the shop now automatically increases upon getting into Snow Leopard League and upon successfully completing the Nihal's Bandits side quest.
- fixed: status effect immunity popup text was misformatted.
Had to take a couple of days off due to illness and real-life nonsense, but now I'm back in the saddle!
- 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.
- 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.
- 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: ranged attackers could sometimes counterattack after being shoved into water or lava.
- 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 significantly, 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.
- new script action supported: AddStock. Programmatically adds stock to an existing shop in the scene. Lasts until the scene ends.
- 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--further spike damage as well).
- new skill: Grappler Stance. Places a hold on one adjacent space, keeping enemies from moving away (or through) it. This skill is learned by axefighters.
- skills which creates Holds can now be targeted on space occupied by other characters.
- fixed: the cavalier and mantis knight sprite animations for Mega Charge were wrapping up about 4 frames too early.
- fixed: Golem and Spirits could be selected for the Sick Parent event in camp.
- finished the fourth major main plot event, which now occurs the day after the Festival of the Ascendant Lights. (If you have a playthrough where a match is already scheduled for that day, you won't be able to trigger it--but the game will avoid scheduling fights on that day on subsequent playthroughs.)
- toned down Dazzle: 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).
- 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%.
- new AI tag: 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.
- boosted the amplitude of the song "Conspiracy" to better match the amplitude levels on other tracks.
- fixed: the character creator could roll up generic units with morale above zero (i.e. neutral).
- fixed: when enemies applied status effects under fog of war, the game would not load the status effect icon at all. This would then cause a range error when the affected enemies then came into view and the game tried to display the nonexistent-but-expected status effect icon.
- rewrote religious attack, deployment, and victory barks to bring them more in line with the particular doctrines of each given character's religion.
- 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.
- 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.
For version 0.2.07:
- added custom difficulty to the difficulty selection! You can now create a new run with custom 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 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.
For version 0.2.08:
- 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: the game wasn't accounting for the dodge bonus granted by tall grass when displaying attack accuracy upon mousing over an attack tile.
- fixed: the AI wasn't accounting for the dodge bonus granted by tall grass when weighing different attack options.
- fixed: it was possible to stall until after the Festival of the Ascendant Lights to trigger the surprise camp visitation plot event.
After hours spent in AI programming hell, I emerge with some nice 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).
- AI-controlled characters who walk into pressure triggers and traps that do not freeze or stun them will now continue their turns afterwards if able.
- 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).
- downloading player-made campaigns is now working!
- reduced the weighting that the AI gives to ally-buffing moves by 80%.
- fixed: the AI was not evaluating energy-draining skills correctly, checking the energy lost against total health instead of energy.
- fixed: the AI was treating energy-draining skills as effective against inanimate objects.
- 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%.
- 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.
Dark Breath 3.png Fire Breath 3.png Frost Breath 3.png Light Breath 3.png
- 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.
- wrote two new personality-conflict argument variants for religious and empirical characters.
- personality-conflict variants between two characters in the argument event now always trump other arguments.
- fixed: the mentalist headband portrait accessory was misaligned on one of the male human head variants.
- 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.
- fixed: the PICKFROMLIST{} special character would never pick the last entry in the list.
- uploaded a short example campaign to Steam Workshop demonstrating how to make use of the Together in Battle engine's more unique features (like recruitment, the calendar, and camp interactions).
- reduced the amount that Strength contributes to a spriggat's salary by about 33%.
- doubled the psy buff for promoting to a greater spriggat, and doubled the strength buff for promoting to an elemental claw class to make these classes stronger and help differentiate them.
- increased the floor (i.e. lowest allowable value) for starting energy on spirits and the major psy classes to 12.
- increased the energy cost of Light Bomb to 20.
- 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: in situations where the AI evaluated potential knockback moves that would collide the target against a damaging object (e.g. a spiked barricade), the game would actually queue up the object's counterattack.
- fixed: the CombineLists script action did not work properly when combining more than two lists at once.
- 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.
- re-scripted the 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 more often.)
- 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.)
For version 0.2.09:
- when a weapon breaks, instead of completely disappearing and leaving the equipped character with no usable attack skills, it now transforms into a "broken" version of itself with no stat bonuses, tags, or scripts; no resale value; and a -4 Strength penalty. (The character can still use it to attack, though!)
- 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. 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.
- 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.
- it took refactoring of some code, but I further improved the AI's anti-trap checks to avoid enemies 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. (Previously, the only mechanism for this was triggered by the game detecting a character submerged in water or lava.)
- 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!)
- 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.
- 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).
- the save grandpa, strikebreaking, and second and third merchant event battles now all scale in difficulty with time passed so they still present an appropriate challenge if they happen later in the run.
- fixed: Shield skills that didn't affect health or impart a status effect wouldn't grant experience unless the target was missing health.
- fixed: OnTurn and BeforeTurn dialogue had stopped being repeatable.
For version 0.2.10:
- wrote the Chital 3 event.
- wrote the Chital 4 event.
- new event: Nightmare.
- new event: Late Night Idea.
- added a new argument type that can occur with Sensitive characters.
- began writing a new random event: Treasure Hunt.
- added weapon repair kits to the item sale random event.
- when Damage or Drain is affected by a SetStat action in a cut scene, the game now automatically looks for the character's portrait and--if it finds it--animates the character's health/energy bar.
- when the GiveExp action is used in a cut scene, the game now automatically looks for the character's portrait and--if it finds it--animates the character's experience bar.
- fixed chital portrait scaling.
- fixed a scripting error that was preventing characters from getting speech bubbles and babble during chital events.
- fixed: in some circumstances, the game would remove script actions queued after a Wait action in dialogue initiated via a LoadConv action.
- fixed: it was still possible to accidentally skip nighttime camp events by clicking the background at the exact wrong moment.
- 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 portrait.
- fixed: the game would spawn units with zero (or negative) health during the thief attack battle as if they were able to fight.
- fixed: custom difficulty dialogue still referred to manual saving as "save scum mode."
- created a battle to cap off the treasure map event.
- characters now lose the ability to use books of power upon promoting, preventing the player from wasting them.
- new script action: ConsumeFood. Automatically reduces current food by the current roster of characters's collective appetite without initiating camp activities. Food will not go below zero, nor will a hunger event be automatically triggered.
- campfire objects now lay flat.
- fixed: smoke from non-flat-lying objects (such as braziers and stoves) was no longer emitting at the correct angle.
- fixed: characters who were ordered to do something via a one-on-one could nonetheless be dragged into another character's partnered activity, precluding them from doing the thing they were ordered to do.
- fixed: I accidentally left the chance of small talk set to 100% after testing, thereby preventing most post-greeting character dialogue from spawning.
- fixed: the tooltip for the "view calendar" button in town had a typo.
- fixed: a LoadConv call to dialogue that either does not exist or which had been removed due to being already used and non-repeatable would lock up the game. The game now simply ends the current dialogue when this happens.
- designed the Tiger League Qualifier battle.
- when removing a character from the active roster by reference to their name or loadID, the game now automatically checks for duplicates and removes those as well if found. (For reasons not yet discovered, duplicates can sneak onto the roster; before this fix, they could cause characters to stick around even after being removed from the roster.)
- fixed: the last-used windowed/fullscreen setting was not being saved as part of game settings.
- created the procedural generation rules for Tiger League matches.
- the arena plotline is now playable all the way through to right before the championship match.
- enemy levels in arena fights now scale up 17% slower than before.
- fixed: a change to the AI in the last patch resulted in the AI freezing when, in large battles (>8 characters in the enemy army), the first character to move wandered into a trap or other pressure trigger.
- finished balancing the treasure map battle and added a little extra scripting.
- added new music track to the game: Drawing Blades.
- integrated a new version of the Festival of the Ascendant Lights track into the game featuring a traditional Indian vocalist.
- Dacoit Cutters and Dacoit Slashers now gain a melee counterattack upon reaching level 5.
- being defeated in any of the battles where thieves or bandits try to rob the player now results in the player losing half their aura.
- fixed: the game was missing data for straight street edge tiles where the street was elevated above surrounding terrain.
- fixed: the game wasn't replacing script IDs with the names of unique characters in script actions within battle when the relevant characters were not already saved from a previous scene.
Fixed some formatting issues with the new battles. Also:
- expanded the pool of possible enemy team names in the arena.
- sentinels, pikemen, and swordmasters are now more likely to be generated with more armor and/or shields.
- when proc gen maps are created with multiple hazard terrain types, the game will now select a hazard terrain type at random from those listed.
- fixed: the AI treated Levitating characters as if they had an ordinary, permanent move type of Flying for purposes of determining which spaces were safe to move them to (which could lead to situations like the AI moving Levitating characters over lava or chasms only for them to drop in at the start of the next turn).
- fixed: automatic inventory generation for generic proc gen enemies placed via the map editor was not working.
- the calendar screen has been improved! There are now buttons to flip back to previous months and review the events that occurred; name of the current displayed month is now always visible at the top of the calendar screen.
- wrote alternate dialogue for recruitment attempts during the Monkey League Qualifier battle made by golems or spirits.
- wrote new dismissal response monologue variants for characters with the Arrogant personality trait.
- dismissing a character no longer reduces morale for other characters who have a negative friendship value with the dismissed unit.
- there is now a 1-in-3 chance that a high-level engineer will learn Place Snare Trap (the other 2 possibilities are either +1 range to Place Caltrops or learning a Wrench counterattack).
- buffed the Architect and Demolitionist classes (i.e. the Engineer prestige classes) so they each get more skills that let them continue using other skills afterwards. For the Architect, it's Build Wooden Barricade and Build Spiked Barricade; for the Demolitionist, it's Place Charges.
- added a new optional boolean parameter to the LevelUpArmy script action: Affect Reinforcements. If set to true, the level-up effect will be applied prospectively to characters of the chosen army who haven't spawned yet.
- used the new capability of LevelUpArmy to scale battles with enemy reinforcements.
- new class attribute: defaultWeaponSkills. Used to tell the game it should grant a Strength bonus and (a) natural weapon skill(s) to generic units of the class if they are created without an equipped weapon.
- generic Blackguards and promoted cavaliers without equipped weapons are now generated with natural access to Throw Knife and Halberd, respectively.
- fixed: the game wasn't compensating for promoted generic characters in a weapon-dependent class generated without an equipped weapon by boosting strength or granting their default weapon skill.
- fixed: when a character without a specific counterattack gained 1 or greater Counter Limit, the game could select a skill which did no damage but did impose a status effect (e.g. Throw Voice) as the character's counterattack.
-fixed: if you hired out everyone on your team and then returned to the docks for a second time in the same day, the game would effectively lock up.
- when a character receives a letter from a sibling, mother, or father, the game now remembers this--it then becomes possible to get an event where that character gets visited by the family member who wrote to them.
- finished writing the first sibling visit event with variants based on the kind of relationship the characters have and the player's choices.
- increased the chance of a talk event producing small talk to 25% from 10%.
- the LevelUp script action now works in cut scenes.
- new camp activity: Fury.
- the "AngryAt" mood now makes Fury one of the permitted camp activities.
- new stat supported in GetValByStat: True Level. Returns the character's current level combined with any hidden, pre-promotion levels.
- added documentation for read-only stats True Level, Health Left, and Energy Left to the in-game reference.
- finished implementing the GenerateUniqueFromNPC action in cut scenes.
- when a character is created via the GenerateUniqueFromNPC action, both they and the originating character now start with a mutual 20 familiarity, ensuring they won't engage in any basic "getting to know you" dialogue in camp.
- characters created via the GenerateUniqueFromNPC action who are related to the originating character by blood now inherit their own relevant NPCs and bio details from the originating character.
- the game can now automatically determine the reciprocal relationship term an NPC might use for a character related by blood.
- fixed some scripting errors in a couple of events.
- new event: Ishita Svaamee makes a second visit to the player's camp with a buyout offer. This second Ishita event is added to the list of possible events upon beating Snow Leopard League Qualifier.
- created another new event that occurs the morning of the championship fight (and that is all I am going to say about it here!)
- fixed for 0.2.10a: the game was spawning Heroes in recruitment.
- fixed for 0.2.10b: the variable tracking the day of the championship bout was not being set at the start of the game, causing the day-of-championship event to trigger on day 0 when starting a new game.
- fixed for 0.2.10c: losing a league match in Snow Leopard or Tiger Leagues could result in the game getting stuck in the Arena scene.
- fixed for 0.2.10c: repair kits (or any other item that alters the properties of character equipment) would be permanently stripped of their ability to alter other items upon transitioning scenes if kept in the reserve supplies.
- fixed for 0.2.10c: classes with multiple species-based sprite overrides were not registering sprite overrides for all species.
- fixed for 0.2.10d: a scripting error in the letter event could result in the game throwing a range error.
- fixed for 0.2.10d: the sidestab and backstab bonus from gap-seeking weapons was only being applied to base weapon skills, not to advanced skills for that weapon.
- fixed for 0.2.10d: the AI could reapply Immobilized status to characters subject to a Hold multiple times when calculating moves.
For version 0.2.11:
- began writing a new random event where you can help out an elderly shadowling lady.
- the game now checks ahead for the correct number of parameters when running IfStat-type actions.
- new script action: RestartBattle. Forces the current battle to restart, even if the player is playing on roguelike mode.
- new AI handicap level: 11. The AI will actively avoid using lethal attacks, preferring attacks that don't finish off enemies.
- Relaxed difficulty now sets the AI handicap to 11. Added an option to get an AI handicap of 11 in custom difficulty under the moniker "Lobotomized."
- fixed: the AI was reversing the value of healing moves used on enemies without first checking to make sure that the move already assessed as having a positive value. Under some circumstances, this could cause the AI to heal the player's characters.
- fixed: a couple of AI routines were set to be excluded at the wrong AI Handicap level.
- fixed: changes to the level-up screen code were causing the game to throw a couple of null errors when characters promoted via a Book of Power.
- wrote new plot event dialogue.
- new optional parameter for the SetStringByString script action: Strip Capitalization. By default, this parameter is false; if set to true, the resulting string will be in all lowercase letters for easier parsing (e.g. for checking passwords and player-created names and such).
- fixed: in some cut scenes, it was possible to click the background in the split second between the report screen vanishing and the dialogue menu reappearing and thereby inappropriately advance the scene.
- added items to the chest in the Strikebreaking map.
- fixed: pushing an enemy with reflexes into a spiked object would cause the enemy to turn and face the object. (Even worse: if the enemy had counterattacks left, they would counterattack while their back remained turned to the attacker!)
- fixed: the game was double-counting status effects that impact accuracy when displaying the accuracy of skills in tooltips.
- fixed: the game could display accuracies below 100% for mental attacks and shield skills in tooltips.
- new random event added to the game: Card Swindler.
- the game now supports group projects (i.e. projects that aren't tied to just one character) and camp activities tied to progress on those group projects.
- it now takes two or more consecutive nights of no cleaning for morale to start dropping from having a messy camp.
- fixed a typo in one of the introvert "like" dialogue variants.
- fixed: the AI was double-counting the back cover bonus for non-Shield skills, leading to it greatly over-preferring moves that put characters' backs up against things (especially the edge of the battlefield).
- commissioned and received two new cut scene backgrounds, added them to the game.
- integrated the new backgrounds into the relevant cut scene.
- energy regen visuals no longer appear for units under fog of war.
- particle effects no longer appear when units are destroyed under fog of war.
- particle effects no longer accompany units newly spawned under fog of war.
- fixed: item sacks dropping on a space covered by fog of war were visible to the player.
- fixed: attack animations for characters under fog of war would sometimes play upon the character's tile being revealed.
- fixed: the fruit tree in the thief attack battle contained no fruit.
I had a lot less time to work this month than expected due to the day job being unexpectedly busy, putting my home on the market (also unexpectedly), and then falling ill this past week (also also unexpectedly). Still, I put aside time today to get things done!
- I took a crack at painting new human nose types, 12, 13, and 14.
- added new data for the new noses to human portraits; human characters can now be generated with these nose types.
- refactored a bit of the proc gen character portrait generation code to make it easier to add in new facial feature variants over time.
- commissioned and received one new cut scene background, the Palace_Dese_Mentarium. Added it to the game.
- wrote the Parent Visit random event.
- proc gen character nicknames for their parents now subtly differ depending on the kind of relationship they have: "Mom" or "Dad" if they have a positive relationship, "Mother" or "Father" if they do not.
- fixed: minimum recruitment is no longer displayed in the recruitment scene when the player already has a roster larger than the minimum recruitment number.
- fixed inconsistent grammatical phrasing for dialogue where characters talk about liking cookies.
- painted noses 15, 16, and 17, added data for them, made it so they can be chosen for human portraits.
- painted chin hair 9, added data for it, made it so it can be chosen for male human portraits.
- painted bird wing hair clip, added data for it, made it so it can be chosen for female human portraits.
- there is now a deck viewer screen you can use to see the composition of your Psy Clash deck.
- new unique battle condition added to Snow Leopard and Tiger leagues wherein a surprising combatant shows up on the field...
- new mood supported: WorriedAbout. Allows a character to feel worried about a specific other character.
- the OnTalk dialogue trigger is now more robust! The game now allows custom variables in the trigger parameters, permitting the use of specific named characters based on prior events.
- when changing a character's army in battle, or when altering their salary or appetite, if the info bar is open, it now auto-updates salary and food consumption figures to reflect the changes.
- fixed: when calling the script action UnitsToList in battle during deployment, the game would not check undeployed characters in the roster for the specified army.
- fixed: proc gen characters forced into a promoted class because they were generated at or above level 20 were not having their displayed level reduced appropriately.
- fixed: the Talkable status effect could "run out" after 9,999 turns and had a displayed duration within character screens.
- fixed: the game would say "Talkable wore off" when removing the Talkable icon from characters.
For version 0.3.0:
- began creating the championship arena fight.
- when characters hit promotion level via the LevelUp and LevelUpArmy script actions, the game will now quietly auto-promote them to an advanced class consistent with their base class (if one exists).
- did some more balancing on the championship arena fight.
- scripted in-battle dialogue for the championship fight.
- AI improvement: the game no longer values the Move Bonus status effect positively for characters who are Immobilized or tagged as Immobile.
- created a background panel for the buttons at the top of the screen in the recruitment interface so it's easier to see them all. Added the new background to the recruitment interface, repositioned the buttons so the background wouldn't conflict with the character selection frames, and altered the recruitment tutorial to reflect the new positioning of everything.
- the game's handling of AddCondition/Global Lighting during battle is now much better; it now transitions to the new global lighting over a few seconds instead of immediately applying the new lighting setup.
- fixed a typo in a victory bark variant for characters with the "disciplined" personality trait.
- fixed: when multiple dialogue trees were queued up at once, the game was not triggering them in succession due to a mistake in the dialogue formatting process assigning all dialogue the same convID.
- fixed: a file with crucial scripts for in-game traps and space-swapping skills had accidentally been overwritten, causing the above-mentioned skills to no longer work correctly.
- fixed: auto-promotion via LevelUp was causing *every* character to auto-promote if within a campaign whose Classes.xml file didn't use the reqLvl attribute (e.g. Telepath Tactics Liberated).
- fixed: if a character's Speed was chosen to increase upon level-up it would increase by 5, not 1.
- created a short cut scene intro to the arena championship battle hyping it up some more.
- fixed some scripting in dialogue with Ishita Svaamee.
- added some new branches to pre-championship dialogue with her.
- if it doesn't find a loadID match first, the SpawnUnit script action now checks characters from prior scenes by name.
- fixed: the cut scene editor would remember the last cut scene you loaded and load its data when creating a new cut scene, resulting in the previous cut scene's narration, background, and other data showing up by default.
- fixed: the game would sometimes trigger traps for AI units where it calculated a move onto the trap as the best move even as it refused to actually move the character, resulting in the unit mysteriously suffering the trap's effects even as it stood totally still.
- fixed: with particularly long character movement ending in a trap, the AI could outpace itself and queue up an attack before the game was ready to launch it.
Created an updated free demo of the game!
Did some marketing work prepping for Steam Strategy Fest next week.
Emailed with Ryan Richko about a unique battle track for the arena championship.
Did a bit of biz dev stuff seeking out funding and marketing support.
Received rough drafts on some new character portraits; generated portrait data for them, tested them, provided feedback.
- fixed: species-based sprite overrides didn't work for classes with only a single species-based sprite override.
- received new character portraits, integrated them into the game: Sita, Dusht, Malatose.
- added new dialogue options to the Dusht random event.
- increased minimum impact damage in combat from 5 to 6.
- buffed a few Psy Clash cards: Smuggler (now has 1 power instead of 0), Iron Jaw Trap (now costs 0 energy instead of 1), and Focus (now gives +1 card draw in addition to +1 energy).
- Psy Clash AI improvement: when choosing a minion to target with cards or direct damage from bowmen or crossbowmen, the AI will now assess the target minions available and choose based on its assessment of who would be best to target instead of just choosing a target randomly.
- Psy Clash AI improvement: opponents will no longer play Fury on minions who cannot attack.
- fixed: in Psy Clash, the game could sometimes choose an empty lane that a minion had moved from when attempting to update that minion's changed health or power.
- new sound effect: Card Shuffle. Now plays during Psy Clash when a player's deck is shuffled.
- the game now keeps track of how many seconds it's been running across all play sessions.
- fixed: the game would not allow characters to push or pull item sacks off of other destructible objects due to item sacks always being treated as last for attack priority on a space. When an item sack is on top of another object that is not pushable or pullable, knockback now affects the position of the item sack instead of the object it's resting on.
- fixed: the DamageUnitAt script action had slightly different damage ordering priority rules than a regular attack.
- fixed: Crush Res. was not being applied to mitigate impact damage from units being smashed into each other (or objects, or the edges of the map).
- fixed: Falling Res. was not being applied to mitigate Falling damage, which resulted in item sacks inappropriately taking damage when falling from heights.
- reduced per-battle winnings for league arena fights (especially the later leagues) to help keep resource management a meaningful concern.
- painted flower-petal particles.
- began working on the cut scene following the championship battle.
- new 2D particle effects supported: FlowerBurstRed and FlowerBurstGold.
- new weather types supported: PetalsRed and PetalsGold. These shower the scene in flower petals (red or yellowish orange).
- fixed: league 4 battles were all being generated with snow-based names.
- fixed as hotfix 0.2.11d: when auto-promoting generic proc gen units, the game could throw a null error trying to update their non-existent character dialogue.
- toned down the level scaling for team leaders within arena leagues so you aren't regularly facing promoted enemies in the earlier leagues.
- created 3D meshes for the flower petals, made the particles in battle actual 3D objects.
- fixed: weather effects were not displaying with the same density in the map editor as in battle due to different emitter shape settings.
- new weather types supported: LeavesGreen and LeavesBrown. Causes 3D leaves (green or brown) to gradually flutter down from the top of the screen. Battle-only for now.
- added falling leaves to the Treasure Thicket map.
- the Fireflies weather type is now finally supported in battle! Causes fireflies to appear, flit about the battlefield seemingly at random, and disappear a few seconds later.
- added falling leaves to the Treasure Thicket map.
- added fireflies to the Thief Attack map.
- when changing between weather types using the same particle (e.g. Rain to Heavy Rain or Snow to Blizzard) there is no longer a delay before the change takes effect.
- fixed visual issue with snow and ash particles being stretched horizontally.
- added to Ishita Svaamee's pre-championship dialogue.
- improved the AI's ability to intelligently target skills with buffs and debuffs to Strength and Psy.
- added a fallback for those rare occasions where the actions bar fails to reappear after a round of combat: clicking to select a character who can still move or act now forces the actions bar to show back up.
- laid some groundwork for future, non-Steam versions of the game.
- finished the post-championship cut scene for if the player is victorious.
- fixed: upon going to the campaign editor and then returning to the title screen without the title music changing, the music would abruptly stop.
- adapted the Pierce visual effect to create a dedicated visual effect for spike traps.
Spike Trap.gif
- added the SpikeTrap visual effect to the game, tied to the triggering of spike traps.
- created a unique rapier, Jvalaa, for the sword dancer on the champion team.
Spent a good bit of time this weekend giving feedback to composer Ryan Richko and getting the new boss battle track Contest of Blood ready for the next update!
- finished the post-championship cut scene for if the player lost the championship fight.
- added a system for queuing up a specific evening event in camp based upon events in battle earlier in the day.
- fixed an inconsistency with the way that IfValGoTo and IfValRun treated custom integer values that had not yet been set. Both now treat custom values that have not been set as equal to 0. (Previously, only IfValRun did this).
- fixed: forgot to revert a change made for testing which was causing characters to say heal barks 100% of the time instead of 25% of the time.
- fixed: forgot to revert a change made for testing which was causing the game to throw null errors upon right-clicking destructible objects.
Pushed version 0.3.0!
For version 0.3.01:
- fixed: when fully zoomed out in the Thief Attack map, the edges of the background became visible.
- incorporated a new music track into the game: Incredible Danger.
- fixed: one-shot sound effects (most notably the battle victory fanfare) were abruptly cutting off upon transitioning to a new scene. The game now gracefully fades them out instead.
- began laying the groundwork for game localization, creating an XML listing all UI elements containing English text on the title screen.
- began listing all UI elements containing English text in battle.
- the game now auto-detects the user's installed system language (or, if they connect to Steam, their chosen Steam language) for localization purposes.
- the player's language is now saved along with all other game settings.
- reduced the number of personality traits characters are generated with from 2 to 1 to avoid tonal dissonance in character lines and reduce overlapping traits on larger teams. (Plus, having 2 personality traits per character wasn't increasing depth of characterization as much as I'd hoped.)
- worked on the localization file some more; added in pronouns, direct addresses for family members, and the bits and pieces used to assemble proc gen map names.
- got the localization system up and running, importing the localization XML file and auto-populating menu text based on entries in the XML matching the user's current language.
- got all of the title screen UI working with localization: the main menu, the two new game menus, the load game menu, the settings menu, and the download campaigns menu with search options submenu.
- fixed: user scores for downloadable campaigns were incorrectly scaled, leading to them appearing at 1/5th the value they should have.
- set up a bunch of UI in battle for localization: main menu, deployment menu, unit tooltips, the actions bar, new turn box, save game menu, all of the pop-up warnings, victory/defeat screen, and console.
- new random event: Golem Attack.
- refactored the code the game uses to pick activity partners during free rein in camp; characters are now more likely to select existing friends or lovers as activity partners. (Before, they had an equal likelihood of selecting any other character regardless of relationship.)
- wrote new dialogue variants for character reactions to winning the championship based upon personality.
- fixed: the report screen was not hiding the dialogue menu as intended when the ShowReport script action was used in battle.
- fixed: clicking units in the deployment menu was not making a sound.
- set up premade (i.e. not proc gen) items for localization.
- set up morale level descriptions for localization.
- set up skills for localization.
- set up about two dozen types on in-battle pop-up messages for localization.
- set up counterattacks for localization.
- set up the character screen, level-up screen, dialogue menu, cut scene main menu, and cut scene narration box for localization.
- fixed the level-up description for a skill gaining a new status effect.
- set up status effects for localization.
- set up procedurally generated battle names for localization.
- fixed: Immobilized characters were able to use Move skills (like Leap or Swim).
- fixed: a range error could occur when the game selected no special condition for an arena map.
- set up the in-game calendar, info bar, and promotion screen for localization.
- created a tutorial pop-up a week before the first payday which assesses the player's financial position and offers guidance based on how far off from making payroll they are. (Players with payroll costs greater than 3000 aura will be warned that their team is expensive for this point in the game, and will be notified that they might want to dismiss a character to stabilize their finances.)
- added "click to continue" text to the camp activity narration interface.
- fixed: frame alignment on the Sword animation for Swordmasters and Blade Dancers was erratic.
- began work on proc gen item localization. Proc gen item materials (e.g. leather, bronze, iron) now support localization.
- set up item tooltip text for localization.
- proc gen item attributes are now moddable!
- proc gen item attributes now support localization.
- reduced the base levels of enemies in the arena leagues a bit.
- reduced base character salaries in Challenging and Brutal difficulties.
- the league qualifier matches now give more money.
- gatherings now increase group morale by 3, a 50% bump in efficacy.
- failure to clean camp on a night when it's clean no longer guarantees that the camp will become dirty--there is now a 1-in-2 chance that everyone will have simply picked up after themselves, leaving the camp clean regardless.
- fixed: self-focus skills (such as Soul Suck and Transfer) were inappropriately affecting maximum energy, not just current energy. This was caused by changes in the code allowing for rollover damage from sending a character into negative energy.
- new daytime option in Kalkerapur: Infirmary! This lets you spend a time unit (and some money) to drop characters off at the infirmary, where they will receive treatment for their wounds. This will accelerate recovery times and--if playing on Challenging difficulty--guarantee a successful recovery for characters who are at risk of dying.
- the arena championship match now gives much more money.
- it is now cheaper to train a character's Health and Energy.
- wrote a few new Heal combat bark variations.
- added a few new attributes for proc gen equipment.
- fixed: the player's team name was not appearing in the new turn box for the Treasure Thicket battle.
- fixed: the Idol's health was not scaled appropriately for Defend the Idol maps in Snow Leopard League or Tiger League.
- fixed: the spirit's portrait could disappear after naming in the Apparition 2 event.
- fixed a range error occurring when triggering dialogue in the Battle with Bandits 1 event.
- fixed: auto-looting was not turned on for either of the bandit battle events.
- fixed: healers would sometimes say their heal bark even when only healing themselves.
- fixed: when right-clicking a space with both an object and an item sack, the game would show the object's character screen rather than the item sack's.
- fixed: gamepad "click to continue" text would show up in the dialogue window when in the shop even if no gamepad was connected.
- fixed: in rare circumstances, the actions queue could remain uncleared when changing scenes, leading to the game refusing to process actions in the next scene under the belief that it was already in the middle of processing script actions.
- improved documentation for the generate inventory parameter for the GenerateUnit, GenerateUnique, and GenerateUniqueFromNPC script actions.
- fixed: the Regenerating sprite was missing from the campaign creator's TextSprite documentation.
- custom menus now support hidden buttons: buttons that are defined but not shown to the player unless unhidden via a script action.
- the "hidden" property of custom menu buttons may now be edited within the cut scene editor.
- the cut scene editor now supports an unlimited number of gray-outs and warnings for each custom menu button (with each delimited by |s).
- new script action: ShowMenuButton. Shows a hidden button within a custom menu. One parameter: button name.
- new script action: HideMenuButton. Hides a visible button within a custom menu. One parameter: button name.
- new stats supported by Stat script actions: Health % Left and Energy % Left. These return a number between 0 and 100 reflecting the percentage of a character's health or energy that remains.
- created a new random event: Recruitment Duel.
- cleaned up some of the more awkward "like" dialogue; excluded the one generic line from being selected if personality-specific variants were available.
- replaced the "Labor" daytime option with a Jobs Board. Every day, a selection of different ways to make extra money will present itself...
- new job type available: working as caravan guards. You pick two characters to accompany a caravan and help green units fend off a bandit attack.
- increased the maximum range on Grapple Pull to 3.
- proc gen battles can now account for a third, allied army when determining unit positioning (a necessity for making proc gen three-army battles that aren't just free-for-alls viable).
- fixed: one of the "like" dialogue lines for imaginative characters inappropriately referenced hobbies instead of material things.
- fixed: in some circumstances, non-golem, non-spirit proc gen characters could be spawned with a salary of zero (e.g. from the GenerateUnique script action).
- fixed: the randomly chosen socioeconomic class of proc gen characters could override the inventory quality parameter in the GenerateUnique script action.
- fixed: the graphic for steel mail was missing.
- fixed: choosing to proceed with a custom menu button selection in the face of a pop-up warning would not close the pop-up menu if proceeding meant staying within a custom menu.
- custom strings can now be used as the loadID for unit spawns in battle.
- new optional parameter for GenerateUnique and GenerateUniqueFromNPC script actions: Force Personality. This forces the character to be generated with one particular personality type that you specify.
- proc gen battles now accept premade character types, not just proc gen characters. (Just use a loadID in place of the character class, with a : in place of the /.)
- proc gen battles now accept destructible object assignments to particular armies.
- the game now supports designated "spawn regions" for deployment spaces, groups of characters, and groups of objects within proc gen maps, forcing each to spawn within certain defined areas of the map. (Spawn regions are defined the same way as custom areas are.) This makes proc gen defend maps much more doable.
- added in a check so that any given non-labor job can't be performed more than one day in a row.
- custom integer values can now be used in place of victory aura, victory morale, and defeat morale effects for battles.
- fixed: it was possible for spirits to be generated with personality-based camp activities (e.g. volunteering, praying, worrying, nursing grudges...)
- AI fix: the "move again" modifier was being applied to Bow and Lance attacks against allied characters, which in some circumstances could result in the AI viewing these as good moves.
- the daytime town menu now reveals an option to investigate the conspiracy once you've accepted Manbir Raksha's request.
- began writing the scene where the player interrogates Malatose.
- fixed: religious characters unable to find a temple in the evening were gaining 1 morale instead of losing 1 morale.
- fixed: the side quest to restore steel items to the shop was not triggering due to a missing variable in the game's introductory scene.
- fixed: players were not receiving the "Tutored" achievement upon completing all in-game combat tutorials unless playing with a gamepad.
- fixed: due to a typo, players were not receiving the "Get decked" achievement upon acquiring a deck of Psy Clash cards.
- fixed: promoted characters could retrain to the base version of their current class at the trainer.
- new special character supported in dialogue: -BASECLASS-. Like -CLASS-, but it gets swapped to the base version of the character's current class instead.
- spriggats now retain their sprites when reclassing.
- new secret achievement added.
- Disciplined characters no longer lose morale when ordered to participate in group practice; instead, they gain morale.
- close friends and lovers now have a stronger negative reaction when characters they like are dismissed from the team.
- somehow, the game's persistent dialogue file completely lost the third and recurring fourth chital events at some point following the release of version 0.2.10 in July. I recreated them to the best of my memory.
- fixed: promoted characters who reclassed to a new base class would learn a slew of the new class's skills upon leveling up once, as if their true level had been spent in that class. The game now tracks the character's level at the moment of their last promotion, resets it to zero upon changing to a new class, and uses this level for skill progression purposes.
- fixed: Sita's current portrait data was not in-game for some reason, leading to her eye placement looking messed up.
- fixed: ignoring the summons from Manbir the day after the festival and then undertaking a 1-time-unit activity would result in the messenger approaching the player a second time upon returning to town for their second activity.
- fixed: the current page of custom menus was not resetting upon switching between custom menus.
- fixed a localization typo.
- fixed: status effect descriptions were not showing up from localization files.
- right-clicking on objects now mirrors the behavior of bridges: if there are move tiles or attack tiles present onscreen, right-clicking them is now treated as a "cancel move or attack" command rather than a command to call up the object's character screen.
- new achievement added for becoming champions of the arena.
- added parameter count checks and error logging to a bunch more script actions.
- fixed: the game would throw a range error if a zero-length string was passed as the parameter for the SetNextScene or NewScene script actions.
- fixed: calling the SetValByEvent script action without its optional fourth parameter would produce a range error.
- fixed: recruitment broke when asked to generate pre-promotes due to a faulty detection mechanism for level ranges versus open-ended minimum levels in class data.
- fixed a typo in Snow Leopard League arena dialogue prior to the Tiger League Qualifier.
- fixed: you could keep throwing the switch in the Tiger League Qualifier to keep spawning explosive charges.
- fixed: reclassed characters could still sometimes end up learning duplicates of known skills.
- the XML saving class in the campaign editor now gives specific feedback on the error when an xml file fails to save.
- fixed: in the recruitment interface, the tooltip for equipment masteries could show up behind the skill buttons if a character came with enough skills.
- wrote more personality-specific variants on the Rest camp activity narration.
- finished the interrogation of Malatose scene.
- began the interrogation of Prince Ajit scene.
- reduced the Psy damage multiplier on each of the big four elemental AOE attacks by 20% for balance reasons.
- further increased the likelihood of friends and lovers choosing each other as partners for activities.
- increased the chance of a narrated Talk event instead of particularized dialogue from 25% to 40%.
- wrote some new generic Talk camp narrations.
- wrote a further 13 personality-specific variants on the Rest camp activity narration.
- added a new Sensitive talk narration with two variants.
- added localization support for the terrain inspector in battle.
- added localization support for the reserve supplies screen.
- added localization support for character class names.
- began adding localization support for the recruitment interface.
- new special characters: -CLASSID- and -CLASSID2-. These refer to class loadIDs, whereas the old -CLASS- and -CLASS2- special characters now refer to localized class names.
- added -CLASS2- documentation to the campaign editor's in-game reference.
- worked on Prince Ajit's interrogation dialogue.
- shadowlings and golems are now recruitable upon reaching Monkey League regardless of which events you've had.
- fixed: surrendering in (or simply losing) qualifier matches after reaching Monkey League would result in the game failing to reset to the correct battle, resulting in the arena no longer letting the player progress.
- fixed: the game was not resetting the "total battles won" variable when advancing to Snow Leopard or Tiger leagues, resulting in enemies being overleveled.
- fixed: in the event the game's custom integer value for the days passed ever got out of sync with the actual days passed in game, it could lead to the game failing to recognize victories in league matches as proper league match victories for purposes of advancing the player through the league.
- created a new side quest event and battle: Save the Travelers.
- fixed: when there is no good move other than staying still and using an item, the game would simply skip the character's turn instead of marking down a move where they used the item.
- when a premade unit has a class name not corresponding to any class in Classes.xml (such as "Villager"), the game now provides them with an empty class that has the provided name.
- fixed: in rare circumstances, an attack sequence could end with a pending counterattack left unexecuted. The game now performs a separate check for any such attacks before ending a sequence of attacks and counterattacks.
- fixed: the names of game's villager sprite sets were misformatted.
- fixed: predictive text results for the music input field in the map editor had gotten misaligned at some point.
- finished Prince Ajit's interrogation dialogue.
- fixed: Prince Ajit's portrait data was using an outdated name.
- added voice set data to the villager NPCs.
Pushed the version 0.4.0 update!
Time for working on the game is limited at the moment as I have to prepare to move to a new apartment. However, I'm making improvements here and there as I can. Today's:
- fixed in version 0.4.0b: the game was not accounting for skills like Sprint and Engine Boost when calculating where enemies could reach for purposes of determining unit placement in proc gen maps.
- fixed in version 0.4.0b: the game was hitting a range error due to a scripting mistake in the Strikebreaker event.
- fixed in version 0.4.0b: characters who were reclassed to a base class post-promotion would promote again upon gaining a level in their new base class.
- fixed in version 0.4.0b: the game could silently reject available promotion options without logging a reason.
- the AI now values the Enthralled status effect differently depending on the total level of the target, with higher-level targets deemed more valuable than lower-level targets.
- the AI now values Slowed status less. (Previously, it scored it identically to Immobilized.)
- refactored a bit of hacky AI code tracking whether the current AI-controlled unit had taken certain actions yet this turn and replaced it with a list that tracks this data for every character tied to their IDs.
- fixed: if an AI-controlled character used a consumable item, thereby destroying it, and then tried to move into a trap, if the game prevented the move from completing, it would queue up another move that could involve using the now-depleted item a second time, thereby producing a null error.
- fixed: the chests in the arena championship battle were empty.
- fixed a couple of typos: one in the level-up screen, and one in the arena pre-fighter area when at three wins in Tiger League.
As predicted, moving and setting up the new home have been eating up a lot of time I'd otherwise be spending on development, but things are finally starting to calm down a wee bit, so I was able to crank out some improvements today:
- when using repair kits (or any other consumable whose only function is to alter properties of equipment), the game now checks to confirm that a valid item is actually equipped before letting you use the item.
- when using repair kits, the game now checks to confirm that the equipped weapon is actually missing uses before letting you use the kit.
- jobs other than laboring no longer appear as options in the jobs board until the player has beaten at least two arena battles.
- fixed: the game was using an incorrectly formatted parameter to reset the days passed in memory when starting a new campaign.
- fixed: the AI mode tracker logic was causing infinite loops when a character used a non-turn-ending skill and then queued up another move with a different skill.
- fixed: due to an error in logic when deserializing character rosters, the game would inappropriately reinsert the first-recruited character into the default team roster when the entire team had been sent away on a guard mission. This, in turn, allowed the player to undertake inappropriate daytime actions (such as visiting the arena when no one remained to field).
- fixed: the unit spawning algorithm for caravan defense battles was inappropriately counting caravan guard groups toward the group number for enemy groups, resulting in enemies consistently clustering near the edges of the map.
- the food buttons in the shop now display the amounts of food each represents.
- fixed: the Edit Branch window in the dialogue editor was effectively maxing out at 6 actions due to failure to offer the player an option to turn to page 2 upon hitting that number of actions.
- fixed: when placing multiple characters onto the same space in the map editor, the Undo function would sometimes remove the wrong character from that space.
- gave the player more breathing room after completing a league qualifier; the first league match in the new league is now scheduled for 5-7 days out (instead of 2-4 days out).
- winning a league qualifier now boosts team morale by 3 instead of 2.
- made paying bonuses to characters more cost-effective in terms of morale gain relative to money spent.
- increased pay from league battles.
- when hiring out team members as guards, pay now scales with how many in-game days have passed.
- team leaders in arena fights now have a single, randomly chosen line of dialogue when they first attack the player.
- greatly increased the generosity of Ishita Svaamee's buy-out offers to make the choice harder.
- added localization to the scene transition screen ("Saving game").
- fixed localization setup for bonus proficiency text upon level-up.
- fixed a typo in equipment masteries introduced by adding localization support to the recruitment screen.
- fixed: the "Blocked!" pop-up from blocking an attack with Defensive Stance was missing localization support.
- fixed: a typo in the class data for kineticists was causing them to generate with wildly off-kilter stat growths.
- fixed: using one's last time point for the day in Training would kick the player back to Kalkerapur with full time points.
- fixed: characters sent to recover at the infirmary were sometimes returning to camp one day earlier than intended.
- fixed: sending a character to recover at the infirmary was not removing them from the list of characters you could leave at the infirmary during that visit, making it possible to pay to leave the same character multiple times.
- fixed: the introductory voice-over narration would start to play twice at the beginning of the Introduction scene, making it sound like it had aggressive reverb for the first few words.
- fixed: pure knockback attacks like Kinetic Gust and Shove were not triggering OnCharAttacked dialogue when used against enemies.
- fixed: characters would not counterattack after blocking an incoming attack with Defensive Stance.
- fixed: the AI was valuing any kind of straight stat buff as though it were healing, leading to characters using skills like Douse on injured allies in lieu of better moves.
- fixed: siblings and cousins of characters with region-specific names could have names not belonging to that same region.
- fixed: summoning the console when in the middle of dialogue would not feed the console the dialogue context, potentially causing it to throw an error when using dialogue navigation actions like GoTo.
- the game now always produces at least one healer during the initial recruitment for a run.
- once the player is scheduled for the Monkey League Qualifier, the game now grants access to the team overview and calendar buttons in the arena entrance area.
- reduced the commonality of practice weapons and rusty swords as drops in the arena.
- increased the rate of enemy level scaling in caravan guard battles somewhat, as well as overall enemy aggressiveness.
- increased the rate of enemy level scaling in the merchant-related bandit battles.
- increased the rate of enemy level scaling in the Save Grandpa fight, but also scaled up grandpa's health over time.
- increased the commonality of events where a character asks for a raise.
- moved the first possible day for the golem attack event back by six days.
- added a couple of greeting response lines for religious characters.
- fixed: the game displaying only half the actual pay from caravan guard battles.
- fixed: using Mind Control on an enemy could produce a null error.
- fixed: returning to camp after an evening event battle could trigger a second event.
- fixed: skipping the event-selection process upon returning to camp after a scene-changing evening event would cause the game not to show the army overview, calendar, or card deck buttons.
- fixed: upon returning to camp after a scene-changing evening event, the game would count down the days until training, working, and infirmary-bound units returned for a second time, resulting in those units returning one day earlier than scheduled.
- fixed: completing either of the merchant-related bandit battles would send the player to the calendar screen instead of returning them to camp.
- fixed: declining the recruitment duel would leave the player without enough time to throw a gathering.
- fixed: the AI was incorrectly predicting the knockback destination for pull skills, leading it to sometimes use skills like Pull under circumstances where doing so made little sense.
- the likelihood of receiving the letter in Nihal's bandit quest now increases with every passing day.
- improved the scripting in the battle in Nihal's bandit quest and wrote some new mid-battle dialogue.
- created a new skill button graphic for Twirl distinct from the skill button graphic for Trade.
- fixed: if the framerate dipped at the start of knockback or swap skills, the character(s) could appear to teleport onto their target squares.
- added a little glinting animation to the "next set of options" buttons in dialogue and the town menu to make them harder to miss.
- increased the base chance for Stunned to take effect via Mind Shock to 75%, making mentalists more reliable at lower levels (and making the Thoughteater promotion option more appealing).
- buffed Disarm: the skill now costs 2 energy instead of 4 and allows the user to move after using.
- characters can now continue moving after using Twirl.
- boosted the strength of experience scaling when attacking a lower-level opponent by 5% per level of difference to help keep characters within the correct level range.
- fixed: it was possible for the game to schedule a league match on the same day as the Manbir's Letter event, preventing that event from ever occurring.
- fixed: the "Leave" option on branch 0 at the Caravaneer's Guild simply reset the dialogue to branch 0 instead of returning the player to the middle of town.
- fixed: town menu "next set of options" buttons were using an outdated arrow graphic.
- fixed: the "coins" sound effect did not play when paying money in certain random events.
- fixed a typo in one of the narration variations for when no one cleans camp but no mess is left behind.
- interrogating Prince Ajit now schedules an event where the player receives a letter with a lead.
- began creating the first investigation mission.
- new unit tag supported: Inactive. Causes the AI to skip the unit's turn each round while the tag remains. (The only action a character tagged Inactive will take is to swim back to land if in water or lava.)
- fixed: shopkeeper portrait wasn't showing up when reacting to the restoration of steel weapons and armor to the shop.
More campaign editor changes:
- when auditioning music tracks within the map or cut scene editors, if music volume is set to 0, the game will now override this setting so you can hear the music in this one context.
- changing the operation for a bridge's Elev tag now updates its elevation in real-time in the editor.
- improved Guide documentation for the -NPC:Attribute Type|X- special character.
- fixed incomplete Guide documentation for the AggroGroup script action.
- fixed: particularly long topics in the Guide could overflow their text fields.
- fixed: when editing a branch in the dialogue editor, swapping action positions on the second page of actions was not functioning properly.
- fixed: in the dialogue editor, a range error could occur when changing the trigger for dialogue and then making further changes.
- finished the core part of battle portion of the first investigation mission.
- new script action: EndUnitTurn. Lets you forcibly end the named character's turn.
- fixed: Passive units could move to different locations as part of purely self-buffing moves.
- finished polishing up the Dissident's Den battle.
- created the interrogation scene following the Dissident's Den battle.
- fixed: the AreaPreference tag could cause AI-controlled units to inappropriately value moves where they move into the preferred area and then attack allies. The AI now detects when that is going to happen and discards the attack portion of such moves.
- fixed: if a character had multiple counterattack types to respond to an attack, they would queue up a counterattack with each of them instead of just one.
- fixed: the game was not taking weapon dependencies into account when determining viable skills to use for counterattacks (e.g. a character with a Bayonet counterattack would be able to use it even if not equipped with a crossbow).
- fixed: character names in camp interaction narrations would sometimes use the other character's nickname for that character instead of spelling out the character's full name.
- further increased character tendency to interact with existing friends and romantic partners.
- you can now always look ahead to the next month when in the calendar screen.
- new skill added: Unlock Door. Range 1; unlocks a locked door.
- Lockpicks now grant Unlock Door in addition to Pilfer.
- fixed a typo in the Skill Question evening event that would fail to exclude characters from the event who had only one skill remaining in their progression.
- fixed: if a map's music was changed mid-fight and a character promoted, the game would cross-fade back to the level's original music, not the track it was previously changed to.
- fixed: pushing enemies into lit campfires did not burn them unless it was specifically scripted for that map.
Changes for version 0.4.02:
- reduced the levels of several enemies in the Monkey League Qualifier (particularly the stone golem and axefighter) to make the fight less of a difficulty spike.
- items can now alter a character's base stats, allowing for permanent changes.
- new item: Salubrious Draught. One use; permanently increases the user's maximum health by 3.
- added an explanation for how to alter base stats to the Guide's Stats page.
- the initial qualifier bout is now skippable directly from the arena entryway if you've played through the tutorial fights (or skipped them) in a prior run, in which case the game will turn tutorials off and throw you right into the first fight (against the team with engineers).
- reduced the familiarity requirements for certain dialogue variations, making more varied character dialogue available earlier on.
- reduced the friendship threshold for characters with certain personality traits to give other characters nicknames, share secrets, and teach skills.
- added a new negative Talk interaction for characters who have a bad relationship.
Spent today's dev time improving the store page for Together in Battle, recutting the early access trailer to less than half its original length, reworking the small capsule to improve visibility in Steam's various lists, and uploading new screenshots. Annoying, but necessary.
- if you ignore Manbir Raksha's message, it is now possible to visit the palace at a later time to initiate the palace intrigue plot line. (Getting kicked out of the palace will still close it off forever, however.)
- improved awkward phrasing in some life skill-related dialogue variants.
- in camp, the game now warns you if camp is messy.
- removed a substantially duplicative reply option from the cut scene with the maharaja.
- new optional parameter for ClearPortraits; add any number of portrait reference names as parameters to have the game exempt them from being cleared.
- new special character supported: -PROJ:X-. In place of the 'X', type the name of an existing group project. Gets replaced with the numerical progress level of that group project (or zero, if no such project has been initiated).
- fixed an irritating visual glitch where a character's portrait would vanish for just a moment in between a camp narration and subsequent dialogue (e.g. when a character comes up to the player to ask if they'd like to give them money to gamble with).
- fixed: the Investigate button would not appear, grayed out, in the town menu during days with a league match scheduled.
- fixed: much of Gurdeep and the maharaja's dialogue during the Festival of the Ascendant Lights was missing babble sounds.
- improved Shadowling Grandpa's scaling to help keep up with enemy level scaling in the "save grandpa" random event.
- increased Grape Shot energy cost from 7 to 9 and decreased its damage scaling from 120% to 100% of strength.
- replaced the Thoughteater's flat +6 damage for Mind Shock with a 125% damage bonus, causing it to scale with Psy growth at the same rate as Mind Blast.
- replaced the Thoughteater's -1 energy cost reduction for Mind Shock with a +50 accuracy bonus, giving the skill's Stunned status a base 100% chance of taking effect.
- refactored some of the old portrait code to make it easier to modify the elements portraits are created from.
- fixed: one of the snow-sand transition tiles was missing.
- fixed: the ModSkillPower and ModSkillAccuracy tags were affecting skills unrelated to those tagged.
- fixed: the ModSkillRange tag could increase the range of skills with a max range of 0 (such as Whirlwind), leading to strange outcomes (such as potentially hitting oneself with Whirlwind).
- fixed: certain Duoterre weapons still required "brittle" masteries that appeared in Telepath Tactics Liberated, but which are not used in Together in Battle.
- fixed: the player's chosen death rules were being ignored by the golem attack random event.
- fixed: it was possible to get the event with Sita and the card game more than once.
- fixed: it was possible (albeit unlikely) for golems and spirits to have a morale-based reaction to teammate deaths.
- fixed: Stone Golems were not using the correct animation for Hurl.
- fixed: if a character's sibling appeared in an arena fight and they were killed without being recruited, the game would not save their data, leading to the character feeling depressed about "-MOODCHAR-" in subsequent scenes.
- fixed: wounded characters could still use items in their character screens.
- fixed: unequipping an item from a significantly older version of the game (or having it forcibly unequipped via Disarmed status) could sometimes cause a dictionary error and freeze the game.
- updated documentation with explanation for how to make a ModSkill tag affect all skills.
- adjusted the positioning of the spike trap holes so they no longer hang over the edge on transition tiles.
- non-scar, non-facial-hair accessories in character portraits now support a "glow" value independent of the rest of the portrait.
- fixed: hair accessories in character portraits were being tinted with lightness values intended for character hair itself, resulting in accessories in light-colored hair appearing much too bright.
- fixed: save slots for playthroughs on custom difficulty did not display the player's team name in the top-right.