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


-- 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 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, 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.

-- 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 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 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, 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.