Welcome to the new Sinister Design forums!

Main Menu

A new engine!

Started by CraigStern, June 05, 2016, 05:39:11 PM

Previous topic - Next topic


-- coded attack animations into the game! For now, I've got it set up much as it was in Telepath Tactics, but slightly improved: the game looks for an animation matching the skill name; if it doesn't find one, it looks for an animation matching the skill's dependsUpon name; and if it can't find that, then it uses the unit's default skill animation. When the attack concludes, the character reverts back to their rest pose.

I tested this out on axefighters, and it's working exactly as intended! With this now confirmed to be working, I'm proceeding with implementing the other classes' skill animations.

-- finished formatting and implementing the male and female skill animations for crossbowmen and barudit.


-- finished formatting and implementing the male and female skill animations for the cryokineticist, pyrokineticist, photokineticist, skiakineticist, psy healer, gasul, and spirit sprite sets, along with partial implementation of animations for the bowman sprite sets (the split shot and split shot 2 sprite sheets seem to have some patches of faulty framing, which will need to be fixed by hand before animations can be created from them).

-- adjusted the pivot point on various sprite sheets to ensure that animations remain consistent in their positioning.

-- added a new, optional anim attribute to skills so that animations can be assigned to skills that match neither the skill name nor the skill's dependsUpon value. Assigned a bunch of anim values to skills (such as Stunner and Cripple, which share Bonebreaker's animation; all the Build skills, which use the Build animation; etc.) so as to avoid hack-ily copy-pasting existing animations with variant names (as I did in Telepath Tactics).

-- made it so clicking an already-selected character in exploration mode does not toggle off movement spaces.


A happy Thanksgiving to you from myself and... *checks notes* ..."Baron Halfsquish."

-- Defeat Army no longer triggers an immediate victory if you wipe out an army with reinforcements coming on future turns.

-- formatted and implemented the shadowling and spearman sprite set animations.


-- formatted and implemented the mentalist and kineticist sprite set animations, and started on the swordsman set.


-- formatted and implemented the cavalier sprite set animations.

-- fixed: the BonusDmg tag wasn't working properly.

-- fixed: the crossbow animation wasn't displaying properly.

-- fixed: the game was skipping over the level-up display for subsequent characters when multiple characters leveled up simultaneously in camp.

-- fixed: text overlays were vanishing upon selecting a character in battle.

-- fixed: the functionality to toggle recruit info back on after clicking them again in the recruitment UI was broken.


-- formatted and implemented the engineer sprite set animations, as well as the majority of the assassin sprite set animations.

-- added a sound effect to the "drop item into reserve supplies" action in the reserve supplies screen.

-- increased the energy cost of Overhead Chop and Overhead Strike to 4.

-- a couple more small bug fixes.


-- formatted and implemented the stone and bronze golem sprite set animations, as well as the remaining swordsman and assassin sprite set animations.

-- UnitsToList now supports -ANY- as the character name for Familiarity, Friendship, and Romance stat conditionals; if used, -ANY- will cause the game to go with the highest Familiarity, Friendship, or Romance value that the named character possesses for any other character.

-- new script action: SocialUnitsToList. This creates a list with the name of all units who meet a certain familiarity, friendship, or romance threshold for the named character. Parameters: (1) list name, (2) character name, (3) army or roster number, (4) stat name (Familiarity, Friendship, or Romance), (5) comparison method, and (6) amount.

For example, this will compile a list of the names of all characters in army 0 (if in battle) or roster 0 (if in a cut scene) for whom Bob Vandalheart possesses a Friendship stat greater than 1; then, it will save that list under the name BobsFriends:

SocialUnitsToList/BobsFriends,Bob Vandalheart,0,Friendship,g,1

This will create a list called ActiveCrushes with the names of all characters in any army or roster whom Alice Wonderlander has a Romance value greater than 0 for:

SocialUnitsToList/ActiveCrushes,Alice Wonderlander,-1,Romance,g,0

-- used all of this to script an event wherein a character asks out another character whom they have a crush on. The other character can either accept or reject the proposition; if they accept, then the two characters spend the evening together.

-- fixed: specifying an activity partner in the ForceNextCampActivity tag did not force the game to skip choosing a separate individual activity for said partner that same evening.

-- fixed: specifying an activity partner in the ForceNextCampActivity tag did not force the game to actually choose a two-character narration for that activity.


-- formatted and implemented the dark spriggat, frost spriggat, golden spriggat, and red spriggat sprite set animations.

-- fixed: the "ask out on a first date" event scripted yesterday could occur with a character who already had a positive romance value with the character asking them out.

-- fixed: it was impossible for a character to get a crush on another character who would fail to reciprocate.

-- fixed: the last three frames of the male and female crossbowman's downward-facing Crossbow animation were positioned two pixels off from where they should have been.


-- received, implemented a new cut scene background.

-- new script actions: IfAttributeGoTo and IfAttributeRun. Checks the specified character for a personality attribute, physical attribute, life skill, or like; if it matches (or it doesn't match and you set reverse match to true), the dialogue will go to the specified branch/the specified script(s) will run.

Each has five parameters: (1) character name, (2) attribute type (Personality/Physical/Life Skill/Like), (3) attribute value, (4) branch number/script name, and (5) reverse match (boolean, optional--set to false by default).

This, for example, will check for whether the character with script ID 1 has the personality trait Paranoid, and if he/she does, move to the conversation branch named Paranoid Response:

IfAttributeGoTo/ID[1],Personality,Paranoid,BRANCH[Paranoid Response]

-- used IfAttributeGoTo to create the first instance of personality-customized character dialogue within scripted evening events.

-- fixed: the map editor would sometimes produce errors when painting over terrain that had just been added using the Add Row or Add Column functionality.


-- added SlashAlt visual effect animations to the game (used for Axe attacks).

-- added a display to character tooltips for item sacks showing up to the first 5 items within the sack on mouseover.

-- added to item tooltips in the shop; on mouseover, the tooltip now includes showing the item's price instead of displaying it elsewhere in the interface.

-- added some new words to the dictionary of the lissit language. :)

-- fixed: the sword slash visual effect was not aligned with the direction of the up- and down-facing Swordsman attack animations.


Fixed a variety of bugs that crept into the game with the latest additions, as well as fixing an annoying issue with hypersensitive camera drag-panning during deployment.

With the issues cleared up, I'm submitting the game to SXSW Gaming 2020!


-- added a Test Campaign button the campaign editor; when clicked, it allows you to choose a scene, then immediately loads it in a (normally unusable) save slot in "normal game" mode so you can test it out. When you "return to title screen" after testing it out, the game instead returns to the campaign editor.

--in the process of implementing a "test roster" interface as part of the Test Campaign window to let you create a roster on the fly for jumping directly to testing out battles.


-- you can now hand-set all 10 rosters for test purposes when testing scenes directly from the campaign editor!

-- you can now specify set-up scripts to be run the first time you load a scene for testing. These, in turn, can set various values (or do whatever you like, really) to help simulate the state the player should be at in the point in the campaign you're testing.

-- the game will save your test rosters and named set-up scripts when you leave the editor to test a scene, and will reload them upon your return for further testing.

-- new status effect: Clarity. Boosts accuracy by 50% for 3 turns.

-- new skill: Clarify. 3 energy; buffs the target with Clarity status. Mentalists now learn either Stimulate or Clarify as part of their skill progressions.

-- increased the power of the Blindness status effect from 100 to 150, ensuring that it cannot be meaningfully counteracted by Clarity.

-- dropped the accuracy modifier on Overhead Chop (the axe skill) from -25 to -30; dropped the physical damage multiplier on Overhead Strike (the sword skill) from 1.5 to 1.4, and the cost from 4 to 3.

-- fixed a divide-by-zero error that could occur in battle when determining the coordinates to pan to when panning to an army.


-- broke the testing set-up scripts field into three separate fields, each with predictive text boxes that suggest the closest matching global script names as you type.

-- you can now drag-pan around in the map editor by right-clicking.

-- you can now drag-pan around in the dialogue editor.

-- the plus and minus keys now function as zoom-in and zoom-out hotkeys in the dialogue editor.

Added some much-needed display functionality to the dialogue editor, making it much easier to find things in scenes with lots of different dialogue trees and scripts:

-- there are now check boxes in the dialogue editor that let you filter out dialogue trees so you see only scripts, or filter out scripts so you see only dialogue trees.

-- there is now a search bar in the dialogue editor that narrows down the field of visible dialogue trees and scripts by matching conversation IDs and script names, respectively.


-- when you narrow the dialogue trees and scripts displayed in the dialogue editor, the camera now snaps you back to the default starting position so you can browse the results.

-- finally implemented the MovePortrait script action! This lets you move portraits around during cut scenes. I've changed it a bit, however: rather than requiring specific pixel coordinates, it now takes integers roughly corresponding to 1/20th of the screen, making it way easier to predict where the portraits will end up. Parameters: (1) Portrait reference name, (2) destination X, (3) destination Y, and (4) speed.

For destination X, 0 is the left edge of the screen and 20 is the right edge. For destination y, 0 is normal standing height and 20 is so low that the portrait is ducking down below the bottom edge of the screen. Speed is a decimal (with 100 being normal move speed). Everything after parameter 2 is optional.

This, for instance, will have the character portrait with reference name Bob move slowly toward the center of the screen:


This will have the character portrait with reference name Bob move quickly toward the right edge of the screen:


This will have the character portrait with reference name Bob move at normal speed toward the left edge of the screen:


(Note that you're almost never going to use the Destination Y parameter unless you're simulating a character ducking, laying down, falling over, etc.)

-- fixed: character portraits added via script actions weren't taking their reference names correctly.