News:

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

CraigStern

-- implemented the ItemDrop script action. Generates an item sack with 1 or more items inside and drops it at a random point on the map a certain minimum distance away from all character spawn points (with locations more distant from all spawn points, on average, receiving preference). 2 parameters minimum, but you can use more to add more than 1 item: (1) the minimum distance--can be set to below 0 to make the game calculate one on its own; and (2+) either the name of an item, or an integer commonality range (e.g. 10-22) representing a pool of possible items to choose from at random.

-- used ItemDrop to script an event where a fan throws a random item onto the battlefield during Battle at the Dry Mounds. (I expect I'll be reusing this one periodically!)

-- improved the tutorial at Battle at the Dry Mounds, tweaked enemy placement to make it easier to take advantage of elevation differences.

-- redesigned info bar to accommodate extra payroll text, and to avoid overlapping the dialogue window.

-- updated mouseover toolltips for aura and food icons in the info bar to explain what the values in parentheses indicate (monthly payroll projection and estimated daily food consumption).

-- added a bit to the list of combinatorial last name possibilities.

-- fixed a bug in the character generation process that would cause the game to freeze when an excluded class was detected among possible classes and more excluded classes remained to check.

-- fixed a typo in one of the Sensitive greeting lines.

-- fixed palette swapping on the Dese townsperson portraits.

CraigStern

Commissioned some new backgrounds (including Somnus and the Psy Academy!), plus some new portrait assets. Additionally:

-- the camera now pans around intelligently during AI-controlled turns to properly frame character moves and attacks.

-- you can now invoke MoveCam without parameters to make the game auto-pan over to the army whose turn it currently is; or else add a character name as the third parameter to pan the camera to center on the named character.

-- new script actions: IfStringContainsGoTo and IfStringContainsRun. These behave exactly like IfStringGoTo and IfStringRun, except that instead of checking for an exact match against a string value, they check for the existence of a given substring within the string variable. If it's found, the GoTo/Run portion of the action is executed.

For instance:

IfStringContainsGoTo/PlayerName,fuck,BRANCH[Naughty Word]

This will check the string variable PlayerName to see if the substring "fuck" appears anywhere within it--if it does, it'll proceed to the dialogue branch named "Naughty Word". (Note that this functionality is case-insensitive, so the above example will also return true for "FUCK", "Fuck", "fUcK", and so on.)

-- when mousing over units in army 0, the game now tells you in parentheses how much experience the character has, and how much total experience they need to level up.

-- got a variant to the throne room background with way less sinister lighting.

-- fixed a bug in which the game's AI routine would run before OnTurn dialogue, and thus not take account of any changes wrought during that dialogue (such as changes to Passive tags, addition or removal of characters, etc).

-- fixed a bug in which the Actions Menu would sometimes show up without displaying the control buttons (Settings, End Turn, etc.) at the start of a human player's turn.

-- fixed a bug in which the Escape key would not advance through dialogue or close a Level-up screen popping up during an AI-controlled player's turn.

CraigStern

#527
-- the money, payroll, food, and appetite counts in the info bar now animate counting up or down when you buy/recruit stuff.

-- character tooltips in the reserve supplies screen now display the unit's masteries on mouseover.

Bug fixes!

-- if a unit inventory sub-window is open in the reserve supplies screen, clicking the background of the reserve supplies screen now closes the sub-window instead of exiting the reserve supplies screen entirely.

-- fixed: when in the reserve supplies screen in cut scenes, the escape key didn't behave like clicking the background of the screen.

-- fixed: the recruitment screen didn't update with your group's new daily food consumption when you recruited units.

-- fixed: the factors weighing against aggressive short-term moves in the default AI were too high, leading enemies to sometimes run around instead of attacking when faced with an unfavorable counterattack.

-- fixed: the game wasn't bringing the Actions Window back onscreen after canceling an attack that would hit an ally/heal an enemy.

-- fixed: the game would reset character experience to 0 when entering a new battle. (Oops).

-- fixed: it wasn't showing the "Save Game" tooltip when mousing over the button to save mid-battle in the turn box.

-- fixed: it would play the "wood block" sound every time the AI selected a new unit (which got annoying pretty fast).

-- fixed: the dialogue menu now produces a "clicked" sound when selecting from among multiple replies.

-- fixed: mousing over units beyond the fifth character in the deployment screen would not produce tooltips.

-- fixed: it was possible to select a character during the fraction of a second between the start of a turn and the appearance of the turn box announcing the new turn, which would cause unwanted UI elements to show up behind OnTurn dialogue.

CraigStern

#528
Posted a (slightly belated) new year's update to the Telepath Tactics Kickstarter summarizing the past year's progress--and despite its length, I definitely left things out. It's satisfying to take a step back and see how much progress I've made, even if we remain some ways away from completion. :)

-- at the start the player's turn at the start of each battle, if there's no OnTurn/0 dialogue to preempt it, the game will check for a character who has deployment lines--the chosen character will then say one of their deployment lines, commenting on the coming fight.

-- added a little extra code into the character generator to prevent the game from selecting a first name that one of your existing characters already has, or that another character in that same recruitment set has.

-- generic units are now always generated with Morale of 0 by default (i.e. totally neutral, with no effect on combat performance). This can, of course, be altered later via script actions!

-- wrote a bunch of new lissit names.

-- fixed a graphical glitch in the treasure chest sprite.

-- fixed an AI bug that was causing the game to incorrectly weigh the effects of counterattacks when evaluating a move.

-- fixed a bug that was causing the game to not recognize when it had ended camp activities in a cut scene.

CraigStern

#529
-- added Undo button to the map editor.

-- the map editor now successfully supports undoing of Paint actions.

-- the map editor now successfully supports undoing of Fill actions.

-- the map editor now successfully supports undoing of Elev+ and Elev- actions.

-- the map editor now successfully supports undoing of New Unit and Delete Unit actions.

-- the map editor now successfully supports undoing of New Object and Delete Object actions.

-- the map editor now successfully supports undoing of Edit Unit/Object Properties actions.

-- the map editor now successfully supports undoing of New Light and Delete Light actions.

-- the map editor now successfully supports undoing of Edit Light Properties actions.

-- tweaked the Sunset global lighting preset to make it less aggressively orange-red; added new Dawn global lighting preset that's a bit more yellow in color.

-- fixed: changing the coordinate properties for a point light in the map editor did not result in the light moving positions.

-- fixed: clicking a light that had moved positions would not enable you to edit its properties.

CraigStern

Lots of artist feedback today! Beyond that:

-- created missing directional variants for the cave wall fill objects, cave wall tunnel objects, and lit cave wall tunnel objects.

-- added 'Z' as hotkey for Undo in the map editor; added the + and - keys as hotkey shortcuts for Elev+ and Elev- in the map editor.

-- added mouseover tooltips to the Undo, Elev+, and Elev- buttons displaying the new hotkey shortcuts.

-- fixed an out-of-range error in the map editor.

CraigStern

-- added a new battle to the game with tutorials on busting open treasure chests and grabbing item sacks.

-- spruced up a couple of the other, pre-existing battles to make them more interesting.

-- wrote more Arena dialogue.

-- created a save menu that lets you choose what slot to save your game in (instead of having to overwrite the slot you began the game in).

-- the mid-battle save button now opens the new save menu instead of just automatically overwriting your previous save from the start of the battle.

-- created a "check box" UI element for handling simple boolean values.

-- implemented the check box in the dialogue editor to enable the toggling on or off of (a) dialogue tree repeatability and (b) whether the input text field should be shown on a dialogue branch.

-- implemented the check box in the cut scene and map editors as a way to set scenes to "unsaveable," meaning that the game won't auto-save during them and the player won't be offered the option to save manually. Intended for use during "Game Over" scenes, end credits scenes, and other scenes that would render the save file unusable if the game were saved in them.

-- created a "number picker" UI element for allowing the player to increment and decrement integer values.

-- redesigned the mechanism for switching between rosters in the Edit Rosters window using the number picker (unsurprisingly, testers had found the old design--which used a text field--to be unintuitive).

-- the game now saves a saveability attribute for scenes, and loads it when scenes are loaded. (If the game doesn't find the attribute, it just assumes the scene is saveable by default.)

-- updated the font on the input text field to match the font used everywhere else in the game.

-- changed the inventory input field in the Unit Properties window in the map editor to multiline.

-- fixed: when a cut scene with an active dialogue window was open in the cut scene editor and the player tried to load a new cut scene, the game would fail to refresh the cut scene preview in the editor.

-- fixed: the map editor would ignore your chosen facing when painting a generated unit onto the map.

-- fixed: the map editor would swap the values for each unit's inventory and triggers when first loading up a map.

CraigStern

-- implemented the Post-Battle Looting condition in-game! If set to true, all loose item sacks on the battlefield are gathered up and put into the player's reserve supplies after the player wins the battle.

-- added a new, optional 16th parameter to the script actions GenerateUnit and GenerateUnique: auto-recruit. Takes an integer from 0-9. If used, it recruits the generated unit to the specified roster as soon as the unit is generated.

-- GenerateUnit and GenerateUnique can now be used in cut scenes! The easiest way to make units generated in this fashion usable will be to auto-add them to a roster; however, when a unit is generated via GenerateUnique in a cut scene, the game will set the custom string _GeneratedUnit equal to their name, enabling you to easily reference the new character for other purposes (like dialogue and a subsequent AddSpeakerPortrait action, for instance).

-- the game will now no longer generate characters with the same first name as any other saved character (i.e. any character that's in the player's army), or as any other character in the same recruitment line-up.

-- fixed: the cut scene editor threw a null error when trying to add the "Click to continue" text at the bottom of cut scene narration in the preview pane.

-- fixed: you couldn't select empty save slots to save in mid-battle.

-- fixed: when, multiple pages into the new object window, you started typing to narrow down the listed objects, the game would display the same (usually blank) page of the narrowed results instead of showing you the first page of results.

CraigStern

-- improved the stat modification effects of "superb" and "peerless" quality on generated shields and main gauches by 1 and 2, respectively.

CraigStern

#534
-- I decided that RosterToList was not robust enough for all of my purposes, so I've created an additional script action that lets you drill down and create a List of units who meet a variety of specific criteria: UnitsToList! UnitsToList has 4 parameters: (1) the name of the list to populate with the results; (2) the army number (if in battle) or roster number (if not in battle) to draw from; (3) a list of stat conditionals all of the units have to meet to get on the list, delimited with bars (|); and (4) a list of attribute or tag conditions all of the units have to meet to get on the list, delimited with bars (|).

    -- each stat conditional in UnitsToList functions like the first 3 parameters in IfStatRun; each contains three parts (though in this case, delimited with colons): the name of the stat to check:the comparison method:the value to check it against. (To get units with Level greater than 5, for instance, you'd use Level:g:5). You can use string stats here as well, though the comparison method becomes true or false. (To get units whose Class is not Axefighter, for instance, you'd use Class:false:Axefighter).
    -- the attribute/tag conditionals in UnitsToList function similarly to the string stats in the stat conditionals; but instead of specifying a stat name, you'll use Personality, Physical, Life Skill, or Tag. (To get characters with a Serious personality trait, for instance, you'd use Personality:true:Serious.) Tags can take an additional part, for matching tags with a particular value assigned to them. (To get characters with a TargetValue,2 tag, for instance, you'd use Tag:true:TargetValue:2.)

So! Let's say that you've got a battle, and you want to run a custom event on turn 12 where a bunch of units are hit with a status effect due to some sort of crazy psy-related event. Suppose you need a List of every character in army 0 who has Mental Resistance less than or equal to 25, is not a Golem, and lacks the custom tag EventImmune. That's one army number, two stat conditionals, and one attribute conditional. Here's how you'd use UnitsToList to create that List of units to affect:

UnitsToList/AffectedUnits,0,Mental Res.:l=:25|Race:false:Golem,Tag:false:EventImmune

Given how complex UnitsToList can be to use, I've left RosterToList in the game as a quick-and-easy alternative for times we just need to quickly get a list of the player's characters outside of battle without being too picky about it.

CraigStern

-- when mousing over unit portraits in the deployment screen, the game now shows tooltips with more detailed unit information (such as current experience, health, and energy) of the sort shown when mousing over a unit during the battle.

-- you can now right-click each unit portrait in the deployment screen to open up the unit's character screen for detailed information on their stats, skills, and inventory.

-- fixed: units with 0 health (but no remaining wound levels) were included in deployment, even though they'd just poof off the battlefield the moment the first turn started.

-- fixed: a bug where an animation event at the conclusion of the pop-up damage "bounce" wasn't firing correctly.

CraigStern

-- the presence of an item sack on a space now impacts the AI's decision whether to move there (proportionately to how full of items the sack is).

-- ditched the morale report screen (and the ShowMoraleReport action) in favor of a generalized report screen that can be summoned via the new, more flexible ShowReport action. The new action takes two parameters: (1) report title and (2) report text. (You can break the report text into different pages using the verticle bar character as a delimiter.) ShowReport can summon a report screen in both cut scenes and battle.

-- implemented the objectives window in battle via the report screen. The objectives window can now be called up in battle via the Settings menu.

-- new special character, the double-semicolon (;;)! When this character is detected in text, the game swaps in a comma. This allows you to use commas in your script action parameters without totally screwing things up! (The game uses actual commas to delimit script action parameters--using the double-semicolon in script action parameters allows you to sidestep this effect.)

So, for instance, you can create an objective containing a comma using AddObjective in this fashion. This...

AddObjective/Experiment with the Undo button;; then end the turn.

...becomes what you see in the screenshot below.

-- new script action: ListToString. This joins together all the entries of a List, in order, to create a single custom string value. Three parameters: (1) list name, (2) connector, and (3) custom string name.

Suppose you had a list named Letters with three entries (A, B, and C)--if you did this...

ListToString/Letters,-,LtrString

...it would create a custom string LtrString with the value A-B-C. Or, if you used the new ;; special character...

ListToString/Letters,;; ,LtrString

...it would create a custom string LtrString which displays as A, B, C.

-- the RemoveObjective action no longer requires an exact match with the parameter--instead, it will check to see if the objective contains the parameter string as a substring. (For instance, to remove the objective "Find Nathalie," you can call RemoveObjective/Find or RemoveObjective/Nathalie.)

-- battle objectives now support special characters and custom variables; these are processed appropriately when displaying the Objectives Screen.

-- fixed: the game wasn't supplying a second character for purposes of processing special characters in Attacking and Healing combat barks.

CraigStern

-- created a new Army Overview interface that lays out all the units in a given roster in table format, displaying their name, species, class, level, experience, morale, current/max health, current/max energy, daily food consumption, and monthly salary. Mousing over a unit's row in the table highlights it; units that have 0 health remaining have their rows redded-out. Mousing over the icons at the top of the table offers an explanation of what the numbers mean.

-- new script action: ShowArmyOverview. Cut scene only; it displays the army overview interface for a given roster of units. One parameter, optional: roster number. (If not used, the game displays the current roster by default--which, at the moment, is always 0.)

-- implemented two new special characters offering support for • and ♥ in text. These, are, respectively:
[*]
-HEART-

CraigStern

-- music can now play continuously between scenes rather than automatically cutting out at every scene change! When changing from one scene to a second scene that uses the same background track (or has a blank musictrack attribute), the game continues playing the existing music from the initial scene.

CraigStern

-- for all combat barks except for deployment barks and defeat barks, the dialogue window now now auto-closes a couple of seconds after it finishes typing out the dialogue so as to render barks less obtrusive to the flow of battle.

-- created a little inspector window in both battle and in the map editor that tells you the coordinates, terrain type, and elevation of every tile as you mouse over it. (In battle, it's turned off by default, but can be toggled on with Shift + T.)