Welcome to the new Sinister Design forums!

Main Menu

Together in Battle Dev Log

Started by CraigStern, February 06, 2020, 05:37:30 PM

Previous topic - Next topic


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.